Skip to main content

SQL

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

SQL语句分类总结

  1. DDL(Data Definition Language)

    • 作用:定义和修改数据库结构。
    • 常见语句:CREATEALTERDROPTRUNCATE
    • 特点:自动提交,不可回滚,影响数据库对象。
  2. DML(Data Manipulation Language)

    • 作用:操作数据库表中的数据。
    • 常见语句:INSERTUPDATEDELETE
    • 特点:可回滚,频繁使用,影响数据内容。
  3. DQL(Data Query Language)

    • 作用:查询和检索数据库中的数据。
    • 常见语句:SELECT
    • 特点:只读操作,灵活性高,可组合使用多种子句。
  4. DCL(Data Control Language)

    • 作用:控制数据库的访问权限。
    • 常见语句:GRANTREVOKE
    • 特点:影响数据库安全,由DBA执行。
  5. TCL(Transaction Control Language)

    • 作用:管理数据库事务。
    • 常见语句:COMMITROLLBACKSAVEPOINTSET TRANSACTION
    • 特点:确保数据一致性和完整性,控制提交和回滚。

数据定义语言(DDL - Data Definition Language)

功能

DDL用于定义和管理数据库结构和对象,如表、索引、视图和存储过程。

常见语句

  • CREATE:创建数据库对象(如表、索引、视图等)。
    CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    salary DECIMAL(10, 2)
    );
  • ALTER:修改已有的数据库对象。
    ALTER TABLE employees ADD COLUMN address VARCHAR(255);
  • DROP:删除数据库对象。
    DROP TABLE employees;
  • TRUNCATE:删除表中所有记录,但保留表结构。
    TRUNCATE TABLE employees;

特点

  • 影响数据库结构。
  • 通常自动提交(不能回滚)。
  • 结构性的操作,通常不涉及数据内容。

数据操作语言(DML - Data Manipulation Language)

功能

DML用于对数据库表中的数据进行查询和操作(增、删、改)。

常见语句

  • SELECT:查询数据。
    SELECT * FROM employees;
  • INSERT:插入数据。
    INSERT INTO employees (id, name, salary) VALUES (1, 'Alice', 50000.00);
  • UPDATE:更新数据。
    UPDATE employees SET salary = 60000.00 WHERE id = 1;
  • DELETE:删除数据。
    DELETE FROM employees WHERE id = 1;

特点

  • 操作数据库中的数据内容。
  • 可回滚(事务控制)。
  • 常用语句在应用程序中频繁使用。

数据控制语言(DCL - Data Control Language)

功能

DCL用于定义数据库的访问权限和安全级别。

常见语句

  • GRANT:授予用户权限。
    GRANT SELECT, INSERT ON employees TO user_name;
  • REVOKE:撤销用户权限。
    REVOKE SELECT, INSERT ON employees FROM user_name;

特点

  • 控制用户访问和权限。
  • 影响数据库安全性。
  • 通常由数据库管理员(DBA)执行。

事务控制语言(TCL - Transaction Control Language)

功能

TCL用于管理数据库事务,确保数据的一致性和完整性。

常见语句

  • COMMIT:提交事务,保存所有变更。
    COMMIT;
  • ROLLBACK:回滚事务,撤销所有未提交的变更。
    ROLLBACK;
  • SAVEPOINT:设置保存点,允许部分回滚。
    SAVEPOINT savepoint_name;
  • SET TRANSACTION:设置事务特性。
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

特点

  • 管理事务的原子性、一致性、隔离性和持久性(ACID特性)。
  • 控制数据的提交和回滚。
  • 确保数据操作的安全和完整。

数据定义语言(DDL - Data Definition Language)

功能

DQL用于查询和检索数据库中的数据,是数据库操作中最常用的部分。

常见语句

  • SELECT:查询数据,这是DQL中唯一且最主要的语句。通过SELECT语句,可以从一个或多个表中检索数据。

SELECT 语句的基本用法

SELECT column1, column2, ...
FROM table_name;

示例

SELECT name, salary FROM employees;

特点

  • 查询数据:用于从数据库中提取数据。
  • 灵活性高:可以使用各种子句、运算符和函数来过滤、排序和分组数据。
  • 只读操作SELECT语句不修改数据,只读取数据。
  • 组合其他子句
    • WHERE:条件过滤
      SELECT name, salary FROM employees WHERE salary > 50000;
    • ORDER BY:排序
      SELECT name, salary FROM employees ORDER BY salary DESC;
    • GROUP BY:分组
      SELECT department, AVG(salary) FROM employees GROUP BY department;
    • HAVING:过滤分组结果
      SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 50000;
    • JOIN:连接多个表
      SELECT employees.name, departments.name 
      FROM employees
      JOIN departments ON employees.department_id = departments.id;