SQL(Structured Query Language)是用于管理关系数据库的标准语言,其命令可分为五大类:DDL(数据定义语言)、DQL(数据查询语言)、DML(数据操作语言)、DCL(数据控制语言) 和 TCL(事务控制语言)。以下是每类命令的详细解释及示例:
一、DDL(Data Definition Language)数据定义语言
用途:定义和管理数据库对象(如表、视图、索引、序列等)的结构。
核心命令:
-
CREATE
- 作用:创建数据库对象。
- 示例:
-- 创建表 CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(100), age INT, hire_date DATE ); -- 创建索引 CREATE INDEX idx_name ON employees(name); -- 创建视图 CREATE VIEW high_salary_employees AS SELECT id, name FROM employees WHERE salary > 5000;
-
ALTER
- 作用:修改现有数据库对象的结构。
- 示例:
-- 添加列 ALTER TABLE employees ADD COLUMN salary DECIMAL(10, 2); -- 修改列类型 ALTER TABLE employees ALTER COLUMN age TYPE VARCHAR(3); -- 重命名表 ALTER TABLE employees RENAME TO staff;
-
DROP
- 作用:删除数据库对象。
- 示例:
-- 删除表 DROP TABLE employees; -- 删除索引(谨慎使用!) DROP INDEX idx_name;
-
TRUNCATE
- 作用:快速清空表数据(保留表结构)。
- 示例:
TRUNCATE TABLE employees;
-
COMMENT
- 作用:为数据库对象添加注释。
- 示例:
COMMENT ON TABLE employees IS '存储员工信息的核心表';
二、DQL(Data Query Language)数据查询语言
用途:从数据库中检索数据。
核心命令:
- SELECT
- 作用:查询数据。
- 示例:
-- 查询所有列 SELECT * FROM employees; -- 查询特定列 SELECT id, name, salary FROM employees WHERE age > 30; -- 聚合查询(如计算平均薪水) SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department; -- 排序查询结果 SELECT * FROM employees ORDER BY hire_date DESC; -- 连接查询(JOIN) SELECT e.name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.id;
三、DML(Data Manipulation Language)数据操作语言
用途:操作数据库中的数据(增、删、改)。
核心命令:
-
INSERT
- 作用:插入数据。
- 示例:
-- 插入单行数据 INSERT INTO employees (id, name, age) VALUES (1, '张三', 30); -- 插入多行数据 INSERT INTO employees (id, name, age) VALUES (2, '李四', 25), (3, '王五', 35);
-
UPDATE
- 作用:更新数据。
- 示例:
-- 更新特定列 UPDATE employees SET salary = 5000 WHERE id = 1; -- 更新多列 UPDATE employees SET salary = 6000, age = 31 WHERE id = 1;
-
DELETE
- 作用:删除数据。
- 示例:
-- 删除特定行 DELETE FROM employees WHERE id = 1; -- 删除所有行(谨慎使用!) DELETE FROM employees;
-
MERGE
- 作用:合并数据(根据条件插入、更新或删除)。
- 示例:
MERGE INTO target_table t USING source_table s ON t.id = s.id WHEN MATCHED THEN UPDATE SET t.name = s.name WHEN NOT MATCHED THEN INSERT (id, name) VALUES (s.id, s.name);
四、DCL(Data Control Language)数据控制语言
用途:控制数据库访问权限。
核心命令:
-
GRANT
- 作用:授予权限。
- 示例:
-- 授予查询权限 GRANT SELECT ON employees TO user1; -- 授予所有权限 GRANT ALL PRIVILEGES ON employees TO user2;
-
REVOKE
- 作用:撤销权限。
- 示例:
-- 撤销查询权限 REVOKE SELECT ON employees FROM user1; -- 撤销所有权限 REVOKE ALL PRIVILEGES ON employees FROM user2;
五、TCL(Transaction Control Language)事务控制语言
用途:管理数据库事务(确保数据一致性)。
核心命令:
-
COMMIT
- 作用:提交事务(永久保存更改)。
- 示例:
BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; -- 提交事务
-
ROLLBACK
- 作用:回滚事务(撤销未提交的更改)。
- 示例:
BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; -- 发现错误,回滚事务 ROLLBACK;
-
SAVEPOINT
- 作用:设置事务保存点(部分回滚)。
- 示例:
BEGIN TRANSACTION; INSERT INTO orders VALUES (1001, 'Laptop'); SAVEPOINT sp1; INSERT INTO orders VALUES (1002, 'Mouse'); -- 回滚到保存点 sp1 ROLLBACK TO SAVEPOINT sp1; COMMIT;
总结
| 分类 | 核心命令 | 主要用途 |
|---|---|---|
| DDL | CREATE, ALTER, DROP | 定义/修改数据库结构 |
| DQL | SELECT | 查询数据 |
| DML | INSERT, UPDATE, DELETE | 操作数据(增删改) |
| DCL | GRANT, REVOKE | 控制用户权限 |
| TCL | COMMIT, ROLLBACK | 管理事务(提交/回滚) |
注意事项
- 数据库差异:不同数据库(如 MySQL、PostgreSQL、Oracle)的语法可能略有差异,需参考具体文档。
- 权限管理:DCL 命令需谨慎使用,避免误授或误删权限。
- 事务管理:TCL 命令确保数据一致性,尤其在金融等关键场景中不可或缺。
通过掌握这五类命令,您可以高效地操作和管理数据库系统。
2411

被折叠的 条评论
为什么被折叠?



