MySQL 中的 DDL、DML、DQL 和 DCL

在 MySQL 数据库管理系统中,SQL 语句可以根据其功能分为不同的类别,主要包括 DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)和 DCL(数据控制语言)。每一类语句都有其特定的用途和操作对象。本文将详细介绍这四类 SQL 语句及其常用的命令。

1. 数据定义语言(DDL)

DDL(Data Definition Language)用于定义和管理数据库结构或模式。这类语句主要包括创建、修改和删除数据库对象(如数据库、表、索引等)。

命令 描述 示例
CREATE 创建数据库或表 CREATE DATABASE mydatabase;
CREATE TABLE users (id INT, username VARCHAR(50));
ALTER 修改数据库对象 ALTER TABLE users ADD COLUMN age INT;
DROP 删除数据库或表 DROP DATABASE mydatabase;
DROP TABLE users;
TRUNCATE 清空表数据 TRUNCATE TABLE users;
  • CREATE:用于创建数据库和表。

    -- 创建数据库
    CREATE DATABASE mydatabase;
    
    -- 创建表
    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(50) NOT NULL,
        email VARCHAR(100)
    );
    
  • ALTER:用于修改已有的数据库对象。

    -- 修改表,添加新列
    ALTER TABLE users ADD COLUMN age INT;
    
    -- 修改表,修改列数据类型
    ALTER TABLE users MODIFY COLUMN username VARCHAR(100);
    
  • DROP:用于删除数据库或表。

    -- 删除数据库
    DROP DATABASE mydatabase;
    
    -- 删除表
    DROP TABLE users;
    
  • TRUNCATE:用于清空表中的所有数据,但不删除表结构。

    TRUNCATE TABLE users;
    

2. 数据操作语言(DML)

DML(Data Manipulation Language)用于对表中的数据进行操作,包括插入、更新和删除数据。
DML(Data Manipulation Language)用于对表中的数据进行操作,包括插入、更新和删除数据。

命令 描述 示例
INSERT 插入数据 INSERT INTO users (username, email) VALUES ('Alice', 'alice@example.com');
UPDATE 更新数据 UPDATE users SET email = 'alice_new@example.com' WHERE username = 'Alice';
DELETE 删除数据 DELETE FROM users WHERE username = 'Alice';
  • INSERT:用于向表中插入数据。

    -- 插入单行数据
    INSERT INTO users (username, email, age) VALUES ('Alice', 'alice@example.com', 30);
    
    -- 插入多行数据
    INSERT INTO users (username, email, age) VALUES 
        ('Bob', 'bob@example.com', 25),
        ('Charlie', 'charlie@example.com', 35);
    
  • UPDATE:用于更新表中的数据。

    -- 更新单行数据
    UPDATE users SET email = 'alice_new@example.com' WHERE username = 'Alice';
    
    -- 更新多行数据
    UPDATE users SET age = age + 1 WHERE age < 30;
    
  • DELETE:用于删除表中的数据。

    -- 删除单行数据
    DELETE FROM users WHERE username = 'Alice';
    
    -- 删除多行数据
    DELETE FROM users WHERE age > 40;
    

3. 数据查询语言(DQL)

DQL(Data Query Language)主要用于查询数据库中的数据。最常用的 DQL 命令是 SELECT。

命令 描述 示例
SELECT 查询数据 SELECT * FROM users;
SELECT username, email FROM users;
SELECT * FROM users WHERE age > 30;
  • SELECT:用于从表中查询数据。
    -- 查询所有列
    SELECT * FROM users;
    
    -- 查询特定列
    SELECT username, email FROM users;
    
    -- 带条件的查询
    SELECT * FROM users WHERE age > 30;
    
    -- 排序查询
    SELECT * FROM users ORDER BY age DESC;
    
    -- 分组查询
    SELECT age, COUNT(*) FROM users GROUP BY age;
    
    -- 联合查询
    SELECT users.username, orders.order_id FROM users
    JOIN orders ON users.id = orders.user_id;
    

4. 数据控制语言(DCL)

DCL(Data Control Language)用于控制数据库的访问权限和安全性。这类语句包括授予和撤销用户的权限。

命令 描述 示例
GRANT 授予权限 GRANT SELECT ON mydatabase.* TO 'username'@'host';
REVOKE 撤销权限 REVOKE SELECT ON mydatabase.* FROM 'username'@'host';
  • GRANT:用于授予用户权限。

    -- 授予用户读取数据库的权限
    GRANT SELECT ON mydatabase.* TO 'username'@'host';
    
    -- 授予用户所有权限
    GRANT ALL PRIVILEGES ON mydatabase.* TO 'username'@'host';
    
  • REVOKE:用于撤销用户权限。

    -- 撤销用户读取数据库的权限
    REVOKE SELECT ON mydatabase.* FROM 'username'@'host';
    
    -- 撤销用户所有权限
    REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'username'@'host';
    

总结

理解和熟练运用 DDL、DML、DQL 和 DCL 是管理和操作 MySQL 数据库的基础。通过这些 SQL 语句,你可以有效地对数据库进行定义、操作、查询和权限控制,从而满足各种应用场景的需求。

相关推荐

  1. DQLDCL mysql常用函数

    2024-07-11 04:02:01       43 阅读
  2. MysqlDML

    2024-07-11 04:02:01       26 阅读
  3. MySQL:DDLDML语句

    2024-07-11 04:02:01       31 阅读
  4. SQLDMLDDL以及DCL是什么?

    2024-07-11 04:02:01       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 04:02:01       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 04:02:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 04:02:01       43 阅读
  4. Python语言-面向对象

    2024-07-11 04:02:01       54 阅读

热门阅读

  1. Appium+Python自动化脚本的APK打包探索

    2024-07-11 04:02:01       20 阅读
  2. C++学习笔记(一):入门概念的疑问与解答

    2024-07-11 04:02:01       20 阅读
  3. 容器之docker compose

    2024-07-11 04:02:01       19 阅读
  4. 55、定义浅层神经网络架构和算法(matlab)

    2024-07-11 04:02:01       17 阅读
  5. FastApi+WebSocket 解析

    2024-07-11 04:02:01       16 阅读