SQL命令根据功能可分为 DQL(数据查询语言)、DDL(数据定义语言) 和 DML(数据操作语言)
DM_381026
2025/04/24
332
0
0
摘要
以下是具体分类及特点说明:
DQL(Data Query Language,数据查询语言)
定义:
用于从数据库中检索数据,不修改数据本身,仅用于数据读取和分析。
常见命令:
SELECT:查询数据,支持复杂条件、聚合函数、多表连接等。
特点:
只读操作:不会对数据产生修改。
支持复杂逻辑:嵌套子查询、窗口函数、分析函数等。
性能优化:可通过索引、执行计划调优提升查询效率。
达梦数据库示例:
-- 查询执行时间超过1秒的SQL(结合动态视图)
SELECT SESS_ID, SQL_TEXT, EXEC_TIME
FROM V$SQL_STATS
WHERE EXEC_TIME > 1000
ORDER BY EXEC_TIME DESC;
注意事项:
频繁全表扫描可能引发性能问题,建议结合执行计划优化。
联机分析场景避免使用SELECT *,明确指定列以减少I/O开销。
DDL(Data Definition Language,数据定义语言)
定义:
用于定义或修改数据库对象(如表、索引、视图等)的结构。
常见命令:
CREATE:创建表、索引、视图等。
ALTER:修改表结构(如添加列、修改约束)。
DROP:删除数据库对象。
TRUNCATE:清空表数据(保留结构)。
特点:
隐式提交:执行DDL后自动提交事务,无法回滚。
原子性:操作成功则生效,失败则自动回滚。
权限要求:通常需要DBA角色或特定对象权限。
达梦数据库示例:
-- 创建分区表(达梦支持范围、列表、哈希等多种分区)
CREATE TABLE SALES (
SALE_ID INT,
SALE_DATE DATE
) PARTITION BY RANGE(SALE_DATE) (
PARTITION P2023 VALUES LESS THAN ('2024-01-01'),
PARTITION P2024 VALUES LESS THAN ('2025-01-01')
);
注意事项:
生产环境慎用DROP/TRUNCATE,避免误删数据。
修改大表结构(如ALTER TABLE)可能引发锁表,建议在低峰期操作。
DML(Data Manipulation Language,数据操作语言)
定义:
用于对数据库中的数据进行增、删、改操作。
常见命令:
INSERT:插入新数据。
UPDATE:更新现有数据。
DELETE:删除数据。
MERGE:合并数据(插入或更新)。
特点:
显式事务控制:需通过COMMIT提交或ROLLBACK回滚。
锁机制:操作期间可能持有行锁或表锁,需注意事务时长。
批量处理:支持批量插入(如INSERT INTO ... SELECT)。
达梦数据库示例:
-- 使用MERGE同步数据(达梦特有语法)
MERGE INTO TARGET_TABLE t
USING SOURCE_TABLE s
ON (t.id = s.id)
WHEN MATCHED THEN
UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN
INSERT (id, value) VALUES (s.id, s.value);
注意事项:
高频UPDATE/DELETE可能导致UNDO表空间膨胀,需监控清理。
未提交的DML会阻塞其他会话,建议事务尽快提交。
扩展补充
• DCL(Data Control Language):
控制数据访问权限,如GRANT(授权)、REVOKE(回收权限)。
• TCL(Transaction Control Language):
事务控制,如COMMIT、ROLLBACK、SAVEPOINT。
达梦数据库特殊场景
• MPP集群环境:
DDL操作需在控制节点执行,DML可分布到各数据节点并行处理。
• 锁冲突处理:
通过V$TRXWAIT、V$LOCK等视图定位阻塞源,结合KILL SESSION解决。
通过合理使用这三类SQL命令,可高效管理达梦数据库结构与数据。
赞