SQL 语言分类

SQL 语言分类学习笔记

SQL(Structured Query Language)是用于管理和操作关系型数据库的标准语言。根据功能不同,SQL 可以分为以下几类:

1. DQL(数据查询语言)

  • 定义:用于从数据库中查询数据。
  • 主要命令
    • SELECT:查询数据。
  • 示例
    1
    2
    3
    4
    5
    -- 查询所有员工信息
    SELECT * FROM emp;

    -- 查询部门编号为 10 的员工
    SELECT * FROM emp WHERE deptno = 10;

2. DDL(数据定义语言)

  • 定义:用于定义或修改数据库结构(如表、索引、视图等)。
  • 主要命令
    • CREATE:创建数据库对象(如表、索引、视图等)。
    • ALTER:修改数据库对象。
    • DROP:删除数据库对象。
  • 示例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -- 创建表
    CREATE TABLE emp (
    empno NUMBER PRIMARY KEY,
    ename VARCHAR2(50),
    deptno NUMBER
    );

    -- 修改表结构
    ALTER TABLE emp ADD (salary NUMBER);

    -- 删除表
    DROP TABLE emp;

3. DML(数据操作语言)

  • 定义:用于操作数据库中的数据(如插入、更新、删除)。
  • 主要命令
    • INSERT:插入数据。
    • UPDATE:更新数据。
    • DELETE:删除数据。
  • 示例
    1
    2
    3
    4
    5
    6
    7
    8
    -- 插入数据
    INSERT INTO emp (empno, ename, deptno) VALUES (1, '张三', 10);

    -- 更新数据
    UPDATE emp SET deptno = 20 WHERE empno = 1;

    -- 删除数据
    DELETE FROM emp WHERE empno = 1;

4. CCL(普通命令语言)

  • 定义:用于控制 SQL*Plus 或其他客户端工具的行为。
  • 主要命令
    • SET:设置 SQL*Plus 的环境变量。
  • 示例
    1
    2
    3
    4
    5
    -- 设置每页显示的行数
    SET PAGESIZE 20;

    -- 设置每行的宽度
    SET LINESIZE 100;

5. DCL(数据控制语言)

  • 定义:用于控制数据库的访问权限。
  • 主要命令
    • GRANT:授予用户权限。
    • REVOKE:撤销用户权限。
  • 示例
    1
    2
    3
    4
    5
    -- 授予用户 scott 查询 emp 表的权限
    GRANT SELECT ON emp TO scott;

    -- 撤销用户 scott 查询 emp 表的权限
    REVOKE SELECT ON emp FROM scott;

6. TCL(事务控制语言)

  • 定义:用于控制数据库事务。
  • 主要命令
    • COMMIT:提交事务,保存对数据库的修改。
    • ROLLBACK:回滚事务,撤销对数据库的修改。
    • SAVEPOINT:设置保存点,用于部分回滚。
  • 示例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    -- 开始事务
    BEGIN
    -- 插入数据
    INSERT INTO emp (empno, ename, deptno) VALUES (2, '李四', 20);

    -- 设置保存点
    SAVEPOINT sp1;

    -- 更新数据
    UPDATE emp SET deptno = 30 WHERE empno = 2;

    -- 回滚到保存点
    ROLLBACK TO SAVEPOINT sp1;

    -- 提交事务
    COMMIT;
    END;

7. 综合示例

(1)创建表并插入数据

1
2
3
4
5
6
7
8
9
10
11
-- 创建表
CREATE TABLE emp (
empno NUMBER PRIMARY KEY,
ename VARCHAR2(50),
deptno NUMBER
);

-- 插入数据
INSERT INTO emp (empno, ename, deptno) VALUES (1, '张三', 10);
INSERT INTO emp (empno, ename, deptno) VALUES (2, '李四', 20);
COMMIT;

(2)查询并更新数据

1
2
3
4
5
6
-- 查询数据
SELECT * FROM emp;

-- 更新数据
UPDATE emp SET deptno = 30 WHERE empno = 1;
COMMIT;

(3)删除数据并回滚

1
2
3
4
5
-- 删除数据
DELETE FROM emp WHERE empno = 2;

-- 回滚删除操作
ROLLBACK;

(4)授予权限

1
2
3
4
5
-- 授予用户 scott 查询 emp 表的权限
GRANT SELECT ON emp TO scott;

-- 撤销用户 scott 查询 emp 表的权限
REVOKE SELECT ON emp FROM scott;

8. 总结

  1. DQL:用于查询数据,主要命令是 SELECT
  2. DDL:用于定义或修改数据库结构,主要命令是 CREATEALTERDROP
  3. DML:用于操作数据,主要命令是 INSERTUPDATEDELETE
  4. CCL:用于控制 SQL*Plus 的行为,主要命令是 SET
  5. DCL:用于控制数据库权限,主要命令是 GRANTREVOKE
  6. TCL:用于控制事务,主要命令是 COMMITROLLBACKSAVEPOINT

SQL 语言分类
https://blog.pangcy.cn/2018/09/14/数据库相关/数据库理论/SQL 语言分类/
作者
子洋
发布于
2018年9月14日
许可协议