当前位置: 首页 > 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 语句,你可以有效地对数据库进行定义、操作、查询和权限控制,从而满足各种应用场景的需求。

相关文章:

MySQL 中的 DDL、DML、DQL 和 DCL

文章目录 1. 数据定义语言&#xff08;DDL&#xff09;2. 数据操作语言&#xff08;DML&#xff09;3. 数据查询语言&#xff08;DQL&#xff09;4. 数据控制语言&#xff08;DCL&#xff09;总结 在 MySQL 数据库管理系统中&#xff0c;SQL 语句可以根据其功能分为不同的类别&…...

基础架构服务API:降低成本,提升业务效益

基础架构服务API的应用可以显著降低企业的成本&#xff0c;并提升业务效益。通过使用这些API&#xff0c;企业可以充分利用云计算、自动化部署和资源管理等功能&#xff0c;从而减少了传统基础设施所需的大量投资和维护成本。这些API还提供了弹性扩展和自动化功能&#xff0c;使…...

Redis IO多路复用

0、前言 本文所有代码可见 > 【gitee code demo】 本文涉及的主题&#xff1a; 1、BIO、NIO的业务实践和缺陷 2、Redis IO多路复用&#xff1a;redis快的主要原因 3、epoll 架构 部分图片 via 【epoll 原理分析】 1、BIO单线程版 1.1 业务代码 client client代码相同…...

如何在Vue中实现拖拽功能?

Vue.js是一款流行的JavaScript框架&#xff0c;用于构建用户界面。其中一个常见的需求是在Vue中实现拖拽功能&#xff0c;让用户可以通过拖拽元素来进行交互。今天&#xff0c;我们就来学习如何在Vue中实现这一功能。 首先&#xff0c;我们需要明白拖拽功能的基本原理&#xf…...

在Linux下使用Docker部署chirpstack

目录 一、前言 二、chirpstack 1、chirpstack是什么 2、chirpstack组件 3、为什么选择Docker部署 三、Linux下部署过程 四、web界面部署过程 一、前言 本篇文章我是在Linux下使用 Docker 进行部署chirpstack&#xff0c;chirpstack采用的是v4 版本&#xff0c;v4 版本 与…...

《昇思25天学习打卡营第14天|计算机视觉-ShuffleNet图像分类》

FCN图像语义分割&ResNet50迁移学习&ResNet50图像分类 当前案例不支持在GPU设备上静态图模式运行&#xff0c;其他模式运行皆支持。 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端…...

将字符串写入结构体变量中

将字符串写入结构体变量中&#xff0c;主要涉及到结构体中字符数组&#xff08;或指针&#xff09;的使用。 一、使用字符数组 假设你有一个结构体&#xff0c;它包含一个字符数组来存储字符串&#xff1a; #include <stdio.h> #include <string.h> // 用于st…...

iPhone 16 Pro系列将标配潜望镜头:已开始生产,支持5倍变焦

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 7月6日消息&#xff0c;据DigiTimes最新报道&#xff0c;苹果将在iPhone 16 Pro中引入iPhone 15 Pro Max同款5倍光学变焦四棱镜潜望镜头。 报道称&#xff0c;目前苹果已经将模组订单交至大立光电和玉…...

PG在还没有pg_class的时候怎么访问基础系统表?

在没有pg_class的时候&#xff0c;数据库怎么访问系统表&#xff1f;这个问题可以分成两个阶段来看&#xff1a; 数据库簇初始化&#xff0c;此时一个database都没有&#xff0c;所以怎么构造和访问pg_class等系统表是一个问题私有内存初始化系统表。PG的系统表信息是放在back…...

UnityHub 无法添加模块问题

文章目录 1.问题描述2.问题解决 1.问题描述 在Hub中无法添加模块 2.问题解决 1、点击设置 2、设置版本安装位置 可以发现installs的安装位置路径设置不是unity安装位置&#xff0c;这里我们更改成自己电脑unity安装位置的上一级路径 添加模块正常&#xff1a;...

python04——类(基础new)

类其实也是一种封装的思想&#xff0c;类就是把变量、方法等封装在一起&#xff0c;然后可以通过不同的实例化对其进行调用操作。 1.类的定义 class 类名&#xff1a; 变量a def __init__ (self,参数2&#xff0c;参数2...)&#xff1a;初始化函数&#xff01;&#xff01;&…...

【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…...

闲话银行家舍入法,以及在程序中如何实现

前言 相信对于四舍五入的舍入法&#xff0c;大家都耳熟能详&#xff0c;但对于银行家舍入法&#xff0c;可能就会比较少接触了&#xff01; 可是在金融界&#xff0c;银行家舍入法可是大名鼎鼎的主角之一&#xff0c;主要应用于金融领域和涉及货币计算的场合。 那么&#xf…...

最短路径算法(算法篇)

算法之最短路径算法 最短路径算法 概念&#xff1a; 考查最短路径问题&#xff0c;可能会输入一个赋权图(也就是边带有权的图)&#xff0c;则一条路径的v1v2…vN的值就是对路径的边的权求和&#xff0c;这叫做赋权路径长&#xff0c;如果是无权路径长就是单纯的路径上的边数。…...

昇思25天学习打卡营第11天 | LLM原理和实践:基于MindSpore实现BERT对话情绪识别

1. 基于MindSpore实现BERT对话情绪识别 1.1 环境配置 # 实验环境已经预装了mindspore2.2.14&#xff0c;如需更换mindspore版本&#xff0c;可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2…...

反向散射技术(backscatter communication)

智能反射表面辅助的反向散射通信系统研究综述&#xff08;知网&#xff09; 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软件&#xff08;以下简称软件&#xff09;可用于生成具备周期性边界条件的单连通域多孔结构PNG图片&#xff0c;软件可设置生成模型的尺寸、孔隙率、孔隙尺寸、孔喉尺寸等参数&#xff0c;并且具备孔隙形态控制功能。 软件生成的…...

Linux驱动开发-03字符设备驱动框架搭建

一、字符设备驱动开发步骤 驱动模块的加载和卸载&#xff08;将驱动编译模块&#xff0c;insmod加载驱动运行&#xff09;字符设备注册与注销&#xff08;我们的驱动实际上是去操作底层的硬件&#xff0c;所以需要向系统注册一个设备&#xff0c;告诉Linux系统&#xff0c;我有…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

深入理解 React 样式方案

React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…...