注册
SQL命令根据功能可分为 DQL(数据查询语言)、DDL(数据定义语言) 和 DML(数据操作语言)
培训园地/ 文章详情 /

SQL命令根据功能可分为 DQL(数据查询语言)、DDL(数据定义语言) 和 DML(数据操作语言)

DM_381026 2025/04/24 326 0 0

以下是具体分类及特点说明:

  1. 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开销。
  1. 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)可能引发锁表,建议在低峰期操作。
  1. 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命令,可高效管理达梦数据库结构与数据。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服