在 MySQL 中,SQL(结构化查询语言)被用来执行对数据库的各种操作。根据功能的不同,SQL 操作可以分为四类:DDL(数据定义语言)、DML(数据操作语言)、DCL(数据控制语言)和 DQL(数据查询语言)。下面详细介绍这四种操作类型:
1. DDL (数据定义语言)
DDL 用于定义数据库中的数据结构,如数据库、表、索引、视图等。常见的 DDL 命令包括:
- CREATE:用于创建数据库或表。
- ALTER:用于修改已有的数据库对象(如表)。
- DROP:用于删除数据库或表。
- TRUNCATE:用于删除表中的所有数据,但不删除表结构。
- RENAME:用于重命名数据库或表。
示例:
- CREATE DATABASE: 创建数据库
CREATE DATABASE my_database;
- CREATE TABLE: 创建表
CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, position VARCHAR(100), salary DECIMAL(10, 2) );
- ALTER TABLE: 修改表结构
ALTER TABLE employees ADD COLUMN hire_date DATE; ALTER TABLE employees MODIFY COLUMN salary DECIMAL(12, 2);
- DROP TABLE: 删除表
DROP TABLE employees;
- TRUNCATE TABLE: 清空表数据
TRUNCATE TABLE employees;
2. DML (数据操作语言)
DML 用于操作数据库中的数据。常见的 DML 命令包括:
- INSERT:向表中插入数据。
- UPDATE:更新表中的数据。
- DELETE:删除表中的数据。
- MERGE:将数据从一个表合并到另一个表(通常在 SQL Server 中使用,MySQL 中没有直接的
MERGE
命令,通常通过INSERT ... ON DUPLICATE KEY UPDATE
或REPLACE INTO
来实现)。
示例:
- INSERT INTO: 向表插入数据
INSERT INTO employees (name, position, salary, hire_date) VALUES ('John Doe', 'Manager', 60000, '2023-01-01');
- UPDATE: 更新表中的数据
UPDATE employees SET salary = 65000 WHERE name = 'John Doe';
- DELETE: 删除表中的数据
DELETE FROM employees WHERE name = 'John Doe';
- INSERT … ON DUPLICATE KEY UPDATE: 插入数据或在已有记录时更新数据
INSERT INTO employees (id, name, position, salary) VALUES (1, 'Jane Smith', 'Developer', 50000) ON DUPLICATE KEY UPDATE salary = 55000;
3. DCL (数据控制语言)
DCL 用于定义数据库的访问权限和控制。常见的 DCL 命令包括:
- GRANT:授予用户权限。
- REVOKE:撤销用户权限。
示例:
- GRANT:授予权限
GRANT SELECT, INSERT, UPDATE ON my_database.* TO 'username'@'localhost' IDENTIFIED BY 'password';
- REVOKE:撤销权限
REVOKE ALL PRIVILEGES ON my_database.* FROM 'username'@'localhost';
- SHOW GRANTS:查看某个用户的权限
SHOW GRANTS FOR 'username'@'localhost';
4. DQL (数据查询语言)
DQL 主要用于查询数据库中的数据。最常见的 DQL 命令是 SELECT,用于从数据库中检索数据。
示例:
- SELECT: 查询数据
SELECT * FROM employees;
- SELECT with WHERE: 使用条件查询数据
SELECT * FROM employees WHERE salary > 50000;
- SELECT with JOIN: 使用连接查询数据
SELECT employees.name, departments.name FROM employees JOIN departments ON employees.department_id = departments.id;
- SELECT with GROUP BY: 使用分组查询数据
SELECT department_id, AVG(salary) AS average_salary FROM employees GROUP BY department_id;
- SELECT with ORDER BY: 排序查询结果
SELECT * FROM employees ORDER BY salary DESC;
- SELECT with LIMIT: 限制查询返回的结果数量
SELECT * FROM employees LIMIT 10;
总结
类型 | 操作 | 示例 |
---|---|---|
DDL | 数据定义语言,定义数据库对象(如数据库、表) | CREATE , ALTER , DROP |
DML | 数据操作语言,操作数据(如插入、更新、删除) | INSERT , UPDATE , DELETE |
DCL | 数据控制语言,控制用户权限 | GRANT , REVOKE |
DQL | 数据查询语言,查询数据 | SELECT |
这四种 SQL 操作覆盖了从数据定义、数据操作到数据控制和查询的方方面面,是数据库管理和操作的核心。通过掌握这些操作,可以高效地进行数据库设计和管理。
发表回复