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 语句,你可以有效地对数据库进行定义、操作、查询和权限控制,从而满足各种应用场景的需求。
相关文章:
MySQL 中的 DDL、DML、DQL 和 DCL
文章目录 1. 数据定义语言(DDL)2. 数据操作语言(DML)3. 数据查询语言(DQL)4. 数据控制语言(DCL)总结 在 MySQL 数据库管理系统中,SQL 语句可以根据其功能分为不同的类别&…...
基础架构服务API:降低成本,提升业务效益
基础架构服务API的应用可以显著降低企业的成本,并提升业务效益。通过使用这些API,企业可以充分利用云计算、自动化部署和资源管理等功能,从而减少了传统基础设施所需的大量投资和维护成本。这些API还提供了弹性扩展和自动化功能,使…...
Redis IO多路复用
0、前言 本文所有代码可见 > 【gitee code demo】 本文涉及的主题: 1、BIO、NIO的业务实践和缺陷 2、Redis IO多路复用:redis快的主要原因 3、epoll 架构 部分图片 via 【epoll 原理分析】 1、BIO单线程版 1.1 业务代码 client client代码相同…...
如何在Vue中实现拖拽功能?
Vue.js是一款流行的JavaScript框架,用于构建用户界面。其中一个常见的需求是在Vue中实现拖拽功能,让用户可以通过拖拽元素来进行交互。今天,我们就来学习如何在Vue中实现这一功能。 首先,我们需要明白拖拽功能的基本原理…...
在Linux下使用Docker部署chirpstack
目录 一、前言 二、chirpstack 1、chirpstack是什么 2、chirpstack组件 3、为什么选择Docker部署 三、Linux下部署过程 四、web界面部署过程 一、前言 本篇文章我是在Linux下使用 Docker 进行部署chirpstack,chirpstack采用的是v4 版本,v4 版本 与…...
《昇思25天学习打卡营第14天|计算机视觉-ShuffleNet图像分类》
FCN图像语义分割&ResNet50迁移学习&ResNet50图像分类 当前案例不支持在GPU设备上静态图模式运行,其他模式运行皆支持。 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型,和MobileNet, SqueezeNet等一样主要应用在移动端…...
将字符串写入结构体变量中
将字符串写入结构体变量中,主要涉及到结构体中字符数组(或指针)的使用。 一、使用字符数组 假设你有一个结构体,它包含一个字符数组来存储字符串: #include <stdio.h> #include <string.h> // 用于st…...
iPhone 16 Pro系列将标配潜望镜头:已开始生产,支持5倍变焦
ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 7月6日消息,据DigiTimes最新报道,苹果将在iPhone 16 Pro中引入iPhone 15 Pro Max同款5倍光学变焦四棱镜潜望镜头。 报道称,目前苹果已经将模组订单交至大立光电和玉…...
PG在还没有pg_class的时候怎么访问基础系统表?
在没有pg_class的时候,数据库怎么访问系统表?这个问题可以分成两个阶段来看: 数据库簇初始化,此时一个database都没有,所以怎么构造和访问pg_class等系统表是一个问题私有内存初始化系统表。PG的系统表信息是放在back…...
UnityHub 无法添加模块问题
文章目录 1.问题描述2.问题解决 1.问题描述 在Hub中无法添加模块 2.问题解决 1、点击设置 2、设置版本安装位置 可以发现installs的安装位置路径设置不是unity安装位置,这里我们更改成自己电脑unity安装位置的上一级路径 添加模块正常:...
python04——类(基础new)
类其实也是一种封装的思想,类就是把变量、方法等封装在一起,然后可以通过不同的实例化对其进行调用操作。 1.类的定义 class 类名: 变量a def __init__ (self,参数2,参数2...):初始化函数!!&…...
【Python百日进阶-Web开发-Peewee】Day296 - 查询示例(五)聚合2、递归
文章目录 14.6.13 列出每个指定设施的预订总小时数 List the total hours booked per named facility14.6.14 列出每位会员在 2012 年 9 月 1 日之后的首次预订 List each member’s first booking after September 1st 201214.6.15 生成成员名称列表,每行包含成员总数 Produc…...
闲话银行家舍入法,以及在程序中如何实现
前言 相信对于四舍五入的舍入法,大家都耳熟能详,但对于银行家舍入法,可能就会比较少接触了! 可是在金融界,银行家舍入法可是大名鼎鼎的主角之一,主要应用于金融领域和涉及货币计算的场合。 那么…...
最短路径算法(算法篇)
算法之最短路径算法 最短路径算法 概念: 考查最短路径问题,可能会输入一个赋权图(也就是边带有权的图),则一条路径的v1v2…vN的值就是对路径的边的权求和,这叫做赋权路径长,如果是无权路径长就是单纯的路径上的边数。…...
昇思25天学习打卡营第11天 | LLM原理和实践:基于MindSpore实现BERT对话情绪识别
1. 基于MindSpore实现BERT对话情绪识别 1.1 环境配置 # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2…...
反向散射技术(backscatter communication)
智能反射表面辅助的反向散射通信系统研究综述(知网) 1 反向散射通信技术优势和应用场景 反向散射通信技术通过被动射频技术发送信号,不需要一定配有主动射频单元,被认为是构建绿色节能、低成本、可灵活部署的未来物联网规模化应用关键技术之一,是实现“…...
致远CopyFile文件复制漏洞
复现版本 V8.0SP2 漏洞范围 V5&G6_V6.1至V8.0SP2全系列版本、V5&G6&N_V8.1至V8.1SP2全系列版本。 漏洞复现 上传文件 POST /seeyon/ajax.do?methodajaxAction&managerNameportalCssManager&rnd57507 HTTP/1.1 Accept: */* Content-Type: applicatio…...
MySQL 创建数据库
MySQL 创建数据库 在当今的数据驱动世界中,数据库是任何应用程序的核心组成部分。MySQL,作为一个流行的开源关系数据库管理系统,因其可靠性、易用性和强大的功能而广受欢迎。本文将详细介绍如何在MySQL中创建数据库,包括基础知识和最佳实践。 什么是MySQL数据库? MySQL…...
AbyssFish单连通周期边界多孔结构2D软件
软件介绍 AbyssFish单连通周期边界多孔结构2D软件(以下简称软件)可用于生成具备周期性边界条件的单连通域多孔结构PNG图片,软件可设置生成模型的尺寸、孔隙率、孔隙尺寸、孔喉尺寸等参数,并且具备孔隙形态控制功能。 软件生成的…...
Linux驱动开发-03字符设备驱动框架搭建
一、字符设备驱动开发步骤 驱动模块的加载和卸载(将驱动编译模块,insmod加载驱动运行)字符设备注册与注销(我们的驱动实际上是去操作底层的硬件,所以需要向系统注册一个设备,告诉Linux系统,我有…...
拥抱 Kotlin Multiplatform (KMP):现代 Android 开发工程师的进阶之路与鸿蒙跨端实践
引言 移动应用生态正经历着深刻变革。用户期望在 Android、iOS 乃至新兴的鸿蒙 (HarmonyOS) 等不同平台上获得一致、流畅的体验。传统的原生开发模式(为每个平台单独开发)在实现这种一致性时,面临着开发效率低、维护成本高、代码复用率差等挑战。同时,Kotlin 语言凭借其简…...
FLUX.1-dev像素生成器实战:生成符合NES/SNES调色板限制的合法像素图
FLUX.1-dev像素生成器实战:生成符合NES/SNES调色板限制的合法像素图 1. 像素艺术生成新纪元 在数字艺术创作领域,像素艺术正经历一场由AI驱动的复兴。传统像素画创作需要艺术家手动放置每个像素,而现代AI技术可以智能生成符合经典游戏机调色…...
Python项目依赖管理:pipreqs vs pip freeze,哪个更适合你的项目?
Python项目依赖管理:pipreqs vs pip freeze,哪个更适合你的项目? 在Python开发中,依赖管理是项目维护的重要环节。一个清晰、准确的依赖清单不仅能确保项目在不同环境中稳定运行,还能简化团队协作和部署流程。面对pip…...
别再死磕EKF了!用ESKF搞定无人机姿态估计,避开‘大数吃小数’的坑
无人机姿态估计实战:用ESKF避开EKF的数值陷阱 四轴飞行器在高速翻滚时,IMU数据突然出现剧烈抖动——这是去年调试自主无人机时遇到的真实场景。当时使用传统EKF算法,姿态解算在极端机动下频繁发散,直到切换到误差状态卡尔曼滤波&a…...
别再用直方图了!用Python+OpenCV手把手教你提取图像纹理特征(GLCM实战)
别再用直方图了!用PythonOpenCV手把手教你提取图像纹理特征(GLCM实战) 当我们需要区分砂纸和丝绸的微观图像时,灰度直方图会给出完全相同的统计结果——这正是传统分析方法在纹理识别中的致命缺陷。本文将带您用OpenCV和scikit-im…...
NaViL-9B多模态能力解析:从图像主体识别到图文联合推理实操手册
NaViL-9B多模态能力解析:从图像主体识别到图文联合推理实操手册 1. 平台概览 NaViL-9B是当前领先的原生多模态大语言模型,能够同时处理文本和视觉信息。不同于传统单一模态模型,它实现了文本与图像的深度融合理解,为用户提供了更…...
Realistic Vision V5.1 虚拟摄影棚面试实战:解析Java八股文中的系统设计题
Realistic Vision V5.1 虚拟摄影棚面试实战:解析Java八股文中的系统设计题 最近在帮朋友准备后端开发的面试,发现一个挺有意思的现象。大家聊起Java八股文,尤其是系统设计题,总觉得有点枯燥,像是在背标准答案。什么“…...
vLLM推理服务搭建指南:从环境配置到模型上线,一步不漏
vLLM推理服务搭建指南:从环境配置到模型上线,一步不漏 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,以其出色的吞吐量和易用性在AI社区广受欢迎。这个最初由加州大学伯克利分校开发的框架,如今已…...
HunyuanVideo-Foley惊艳效果:AI生成的赛博朋克城市雨夜环境音效
HunyuanVideo-Foley惊艳效果:AI生成的赛博朋克城市雨夜环境音效 1. 效果展示:赛博朋克音效的沉浸式体验 HunyuanVideo-Foley 私有部署镜像带来的音效生成能力,让AI创作达到了专业音频工程师的水准。我们以"赛博朋克城市雨夜"为场…...
2026丨科学大百科:Java面试时问在项目开发时遇到最难的是什么问题,?怎么解决的?
2026科学大百科:Java面试难题破解指南 典型难点分类与解决方案 高并发场景下的数据一致性 分布式系统中使用Redis与数据库的双写一致性是常见痛点。通过实现延迟双删策略结合本地消息表,确保最终一致性。代码示例: // 伪代码:延迟双删 public void updateData(key, val…...
