DQL、DDL、DML、DCL的区别与理解

本文详细介绍了SQL语言的四个主要类别:数据查询语言DQL、数据操纵语言DML、数据定义语言DDL和数据控制语言DCL。对于每种类型都列举了主要的操作指令,并解释了它们的功能。

SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

1.数据查询语言DQL

数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>

WHERE <查询条件>

2.数据操纵语言DML

数据操纵语言DML主要有三种形式:
1) 插入:INSERT
2) 更新:UPDATE
3) 删除:DELETE(删除表中的数据不删除表结构,可以回滚)

4)CALL - call a PL/SQL or Java subprogram 
5) EXPLAIN PLAN - explain access path to data 

6) LOCK TABLE - control concurrency 锁,用于控制并发

3.数据定义语言DDL

CREATE:创建
ALTER:修改表结构
RENAME:修改表名或列名
DROP:删除表中的数据和结构,删除后不能回滚
TRUNCATE:删除表中的数据不删除表结构,删除后不能回滚,效率比DELETE高

COMMENT:注释

4.数据控制语言DCL

1) GRANT:授权

2) REVOKE :回收权限

**还有事务控制语句TCL:

SAVEPOINT:保存点
ROLLBACK:回退到某点

COMMIT:提交事务
SET TRANSACTION:设置当前事务的特性,它对后面的事务没有影响

### DDL(数据定义语言) DDL(Data Definition Language)用于定义或修改数据库结构。常见的 DDL 语句包括 `CREATE`、`ALTER` 和 `DROP`。这些语句用于创建、修改或删除数据库对象,如表、索引、视图等。例如,使用 `CREATE TABLE` 创建一个新表,使用 `ALTER TABLE` 修改表结构,使用 `DROP TABLE` 删除表[^1]。 ### DML(数据操作语言) DML(Data Manipulation Language)用于操作数据库中的数据,主要包括 `INSERT`、`UPDATE` 和 `DELETE` 语句。这些语句用于向表中插入新数据、更新现有数据或删除数据。DML 操作不会影响表的结构,仅涉及表中的数据[^1]。 ### DQL(数据查询语言) DQL(Data Query Language)主要用于查询数据库中的数据,最常用的语句是 `SELECT`。通过 `SELECT` 语句,可以从一个或多个表中检索数据,并根据需要进行过滤、排序等操作。例如,`SELECT * FROM users` 会返回 `users` 表中的所有数据[^3]。 ### DCL(数据控制语言) DCL(Data Control Language)用于管理数据库的权限和事务控制,常见的语句包括 `GRANT`、`REVOKE` 和 `COMMIT` 等。这些语句用于授予或撤销用户对数据库对象的访问权限,以及控制事务的提交和回滚。例如,`GRANT SELECT ON users TO user1` 用于授予用户 `user1` 对 `users` 表的查询权限[^2]。 ### 区别使用 - **DDL** 主要用于定义或修改数据库结构,例如创建、修改或删除表、索引等对象。这些操作通常需要较高的权限,并且会影响数据库的整体结构。 - **DML** 用于操作数据库中的数据,包括插入、更新和删除数据。这些操作仅影响表中的数据,而不涉及表的结构[^1]。 - **DQL** 主要用于查询数据,最常见的语句是 `SELECT`。通过 `SELECT` 可以从一个或多个表中检索数据,并根据需要进行过滤、排序等操作[^3]。 - **DCL** 用于管理数据库的权限和事务控制,例如授予或撤销用户对数据库对象的访问权限,以及控制事务的提交和回滚[^2]。 ### 示例代码 #### DDL 示例 ```sql -- 创建表 CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100) ); -- 修改表 ALTER TABLE users ADD COLUMN email VARCHAR(100); -- 删除表 DROP TABLE users; ``` #### DML 示例 ```sql -- 插入数据 INSERT INTO users (id, name, email) VALUES (1, 'Alice', 'alice@example.com'); -- 更新数据 UPDATE users SET name = 'Bob' WHERE id = 1; -- 删除数据 DELETE FROM users WHERE id = 1; ``` #### DQL 示例 ```sql -- 查询数据 SELECT * FROM users; -- 带条件查询 SELECT * FROM users WHERE name = 'Alice'; -- 聚合查询 SELECT COUNT(*) FROM users; ``` #### DCL 示例 ```sql -- 授予权限 GRANT SELECT ON users TO user1; -- 撤销权限 REVOKE SELECT ON users FROM user1; -- 提交事务 COMMIT; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值