当前位置: 首页 > news >正文

MySQL 中的 DDL、DML、DQL 和 DCL

文章目录

    • 1. 数据定义语言(DDL)
    • 2. 数据操作语言(DML)
    • 3. 数据查询语言(DQL)
    • 4. 数据控制语言(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 语句,你可以有效地对数据库进行定义、操作、查询和权限控制,从而满足各种应用场景的需求。

http://www.lryc.cn/news/396879.html

相关文章:

  • 基础架构服务API:降低成本,提升业务效益
  • Redis IO多路复用
  • 如何在Vue中实现拖拽功能?
  • 在Linux下使用Docker部署chirpstack
  • 《昇思25天学习打卡营第14天|计算机视觉-ShuffleNet图像分类》
  • 将字符串写入结构体变量中
  • iPhone 16 Pro系列将标配潜望镜头:已开始生产,支持5倍变焦
  • PG在还没有pg_class的时候怎么访问基础系统表?
  • UnityHub 无法添加模块问题
  • python04——类(基础new)
  • 【Python百日进阶-Web开发-Peewee】Day296 - 查询示例(五)聚合2、递归
  • 闲话银行家舍入法,以及在程序中如何实现
  • 最短路径算法(算法篇)
  • 昇思25天学习打卡营第11天 | LLM原理和实践:基于MindSpore实现BERT对话情绪识别
  • 反向散射技术(backscatter communication)
  • 致远CopyFile文件复制漏洞
  • MySQL 创建数据库
  • AbyssFish单连通周期边界多孔结构2D软件
  • Linux驱动开发-03字符设备驱动框架搭建
  • Zynq系列FPGA实现SDI视频编解码+图像缩放+多路视频拼接,基于GTX高速接口,提供8套工程源码和技术支持
  • VS2019使用C#写窗体程序技巧(1)
  • Python爬虫-requests模块
  • 适用于PyTorch 2.0.0的Ubuntu 22.04上CUDA v11.8和cuDNN 8.7安装指南
  • 使用conda安装openturns
  • Chameleon:动态UI框架使用详解
  • 7.10飞书一面面经
  • [数据结构] 归并排序快速排序 及非递归实现
  • 面试题 12. 矩阵中的路径
  • 钉钉扫码登录第三方
  • 多GPU系统中的CUDA设备不可用问题