八卦阵 发表于 2024-9-7 02:53:31

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]
查看完整版本: MySQL 技术文档