MySQL 技术文档
目次[*]简介
[*]安装与设置
[*]根本概念
[*]数据范例
[*]表结构计划
[*]SQL 命令
[*]数据定义语言 (DDL)
[*]数据操纵语言 (DML)
[*]数据查询语言 (DQL)
[*]索引管理
[*]事务处理
[*]视图
[*]存储过程
[*]触发器
[*]备份与恢复
[*]性能优化
[*]安全性和权限管理
[*]常见问题与解决方案
简介 <a name="简介"></a>
MySQL 是一个开源的关系型数据库管理体系,广泛应用于各种规模的应用步伐中。它以其高性能、可靠性和易用性而闻名。
安装与设置 <a name="安装与设置"></a>
安装
[*]Linux 1sudo apt-get update
2sudo apt-get install mysql-server
[*]Windows 下载安装包并按照领导提示进行安装。
设置
[*]设置文件 (my.cnf 或 my.ini) 1
2datadir=/var/lib/mysql
3log-error=/var/log/mysqld.log
根本概念 <a name="根本概念"></a>
数据范例 <a name="数据范例"></a>
MySQL 支持多种数据范例,比方:
[*]INT - 整数
[*]VARCHAR - 可变长度字符串
[*]DATE - 日期值
表结构计划 <a name="表结构计划"></a>
计划表时需要考虑字段范例、主键、外键等。
1CREATE TABLE employees (
2 id INT AUTO_INCREMENT PRIMARY KEY,
3 first_name VARCHAR(50) NOT NULL,
4 last_name VARCHAR(50),
5 hire_date DATE
6); SQL 命令 <a name="sql-命令"></a>
数据定义语言 (DDL) <a name="数据定义语言-ddl"></a>
用于定义数据库结构,比方创建表、修改表等。
创建表
1CREATE TABLE departments (
2 dept_no CHAR(4) PRIMARY KEY,
3 dept_name VARCHAR(40) NOT NULL
4); 修改表
1ALTER TABLE departments ADD COLUMN location VARCHAR(100); 数据操纵语言 (DML) <a name="数据操纵语言-dml"></a>
用于插入、更新和删除数据。
插入数据
1INSERT INTO employees (first_name, last_name, hire_date)
2VALUES ('John', 'Doe', '2020-01-01'); 更新数据
1UPDATE employees SET last_name = 'Smith' WHERE id = 1; 删除数据
1DELETE FROM employees WHERE id = 1; 数据查询语言 (DQL) <a name="数据查询语言-dql"></a>
用于检索数据。
根本查询
1SELECT * FROM employees; 条件查询
1SELECT * FROM employees WHERE hire_date > '2020-01-01'; 索引管理 <a name="索引管理"></a>
索引可以提高查询服从。
创建索引
1CREATE INDEX idx_last_name ON employees(last_name); 删除索引
1DROP INDEX idx_last_name ON employees; 事务处理 <a name="事务处理"></a>
确保数据的一致性和完整性。
开始事务
1START TRANSACTION; 提交事务
1COMMIT; 回滚事务
1ROLLBACK; 视图 <a name="视图"></a>
简化复杂的查询语句。
创建视图
1CREATE VIEW employee_details AS
2SELECT e.first_name, e.last_name, d.dept_name
3FROM employees e JOIN departments d ON e.dept_no = d.dept_no; 存储过程 <a name="存储过程"></a>
封装了一组 SQL 语句,可以被重复调用。
创建存储过程
1DELIMITER //
2CREATE PROCEDURE GetEmployeeDetails(IN emp_id INT)
3BEGIN
4 SELECT e.first_name, e.last_name, d.dept_name
5 FROM employees e JOIN departments d ON e.dept_no = d.dept_no
6 WHERE e.id = emp_id;
7END //
8DELIMITER ; 调用存储过程
1CALL GetEmployeeDetails(1); 触发器 <a name="触发器"></a>
在特定变乱发生时主动执行。
创建触发器
1DELIMITER //
2CREATE TRIGGER UpdateHireDate
3AFTER INSERT ON employees
4FOR EACH ROW
5BEGIN
6 UPDATE departments SET num_employees = num_employees + 1 WHERE dept_no = NEW.dept_no;
7END //
8DELIMITER ; 备份与恢复 <a name="备份与恢复"></a>
定期备份数据库以防止数据丢失。
备份
1mysqldump -u root -p database_name > backup.sql 恢复
1mysql -u root -p database_name < backup.sql 性能优化 <a name="性能优化"></a>
通过合理的索引计划和查询优化提升性能。
查询优化
使用 EXPLAIN 分析查询计划。
索引优化
合理计划索引减少 I/O 操作。
安全性和权限管理 <a name="安全性和权限管理"></a>
保护数据库免受未经授权的访问。
创建用户
1CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 授予权限
1GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost'; 常见问题与解决方案 <a name="常见问题与解决方案"></a>
[*]慢查询 - 使用 EXPLAIN 分析,优化索引。
[*]连接数过多 - 调解 max_connections 参数。
以上是一个扼要的技术文档框架
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]