对比:
分类 | 英文全称 | 中文全称 | 作用 | 常见命令 |
---|---|---|---|---|
DDL | Data Definition Language | 数据定义语言 | 定义和修改数据库结构 | CREATE, DROP, ALTER, TRUNCATE |
DML | Data Manipulation Language | 数据操作语言 | 操作表中的数据(增、删、改) | INSERT, UPDATE, DELETE |
DQL | Data Query Language | 数据查询语言 | 查询数据库中的数据 | SELECT, DISTINCT, GROUP BY, HAVING |
DCL | Data Control Language | 数据控制语言 | 控制用户权限和数据库安全 | GRANT, REVOKE, CREATE USER, DROP USER, SET PASSWORD |
1. DDL(Data Definition Language,数据定义语言)
功能:
用于定义数据库对象(如数据库、表、视图、索引等)的结构。DDL 命令通常会改变数据库的结构,而不仅仅是修改数据。
常见命令:
-
CREATE:用于创建数据库或表等对象。
- 示例:
CREATE DATABASE my_database; CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),email VARCHAR(100) );
- 示例:
-
DROP:删除数据库或表。
- 示例:
DROP DATABASE my_database; DROP TABLE users;
- 示例:
-
ALTER:修改现有表的结构,例如添加、删除或修改列。
- 示例:
ALTER TABLE users ADD age INT; ALTER TABLE users MODIFY name VARCHAR(100);
- 示例:
-
TRUNCATE:清空表中的所有数据,但保留表结构。
- 示例:
TRUNCATE TABLE users;
- 示例:
2. DML(Data Manipulation Language,数据操作语言)
功能:
DML 主要用于操作表中的数据,包括插入、更新、删除数据。DML 操作一般需要提交(COMMIT)或回滚(ROLLBACK)事务才能生效。
常见命令:
-
INSERT:向表中插入数据。
- 示例:
INSERT INTO users (name, email, age) VALUES ('Alice', 'alice@example.com', 25);
- 示例:
-
UPDATE:更新表中已有数据。
- 示例:
UPDATE users SET age = 30 WHERE name = 'Alice';
- 示例:
-
DELETE:删除表中的数据。
- 示例:
DELETE FROM users WHERE age > 30;
- 示例:
3. DQL(Data Query Language,数据查询语言)
功能:
用于从数据库中查询数据。DQL 实际上只有一个主要的命令:SELECT。通过 SELECT 语句,可以从表中提取所需的数据,并进行排序、过滤、分组等操作。
常见命令:
-
SELECT:查询数据。
- 示例:
SELECT * FROM users; -- 查询所有列的所有数据 SELECT name, email FROM users WHERE age > 20 ORDER BY age DESC; SELECT COUNT(*) FROM users; -- 聚合查询,统计用户数
- 示例:
-
DISTINCT:去重查询。
- 示例:
SELECT DISTINCT name FROM users; -- 查询不重复的用户名
- 示例:
-
GROUP BY 和 HAVING:分组查询并对分组结果进行条件筛选。
- 示例:
SELECT age, COUNT(*) AS total_users FROM users GROUP BY age HAVING total_users > 1;
- 示例:
4. DCL(Data Control Language,数据控制语言)
功能:
用于控制数据库中的访问权限和用户管理。DCL 命令主要涉及数据库安全,管理用户权限等。
常见命令:
-
GRANT:赋予用户权限。
- 示例:
GRANT SELECT, INSERT ON my_database.users TO 'user1'@'localhost';
- 示例:
-
REVOKE:收回用户权限。
- 示例:
REVOKE INSERT ON my_database.users FROM 'user1'@'localhost';
- 示例:
-
CREATE USER:创建新用户。
- 示例:
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';
- 示例:
-
DROP USER:删除用户。
- 示例:
DROP USER 'new_user'@'localhost';
- 示例:
-
SET PASSWORD:修改用户密码。
- 示例:
SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('new_password123');
- 示例: