数据库开发必备:深入理解DDL、DML、DQL和DCL

打印 上一主题 下一主题

主题 1836|帖子 1836|积分 5508

在学习数据库的过程中,理解数据库操纵的基本分类及其功能至关重要。数据库操纵通常被分为四大类: DDL(数据定义语言)DML(数据操纵语言)DQL(数据查询语言)DCL(数据控制语言)。这些分类不仅帮助我们更好地理解数据库的操纵机制,还能在实际应用中公道高效地管理数据库。本文将深入分析这四类语言的作用,并结合实际操纵,详细介绍其中的内容。
一、数据库操纵分类概述

1. DDL(数据定义语言)

DDL(Data Definition Language),数据定义语言,用来定义数据库布局,包括创建、修改和删除数据库对象,如数据库、表、索引和视图。常用的 DDL 操纵包括:


  • 创建数据库和表
  • 修改数据库布局
  • 删除数据库和表
  • 设置表的约束和字段的类型
2. DML(数据操纵语言)

DML(Data Manipulation Language),数据操纵语言,主要用于对数据库中的数据举行增、删、改操纵。常见的 DML 操纵包括:


  • 插入数据(INSERT)
  • 更新数据(UPDATE)
  • 删除数据(DELETE)
3. DQL(数据查询语言)

DQL(Data Query Language),数据查询语言,主要用于从数据库中查询数据,通常使用 SELECT 语句来获取所需的信息。DQL 是数据库操纵中最常用的操纵之一,可以或许帮助开发职员获取必要的数据。
4. DCL(数据控制语言)

DCL(Data Control Language),数据控制语言,用于控制数据库的访问权限,主要包括授权、打消权限和管理数据库用户。通过 DCL,数据库管理员可以控制谁可以访问数据库以及实行哪些操纵。
分类全称说明DDLData Definition Language数据定义语言,用来定义数据库对象(数据库、表、字段)DMLData Manipulation Language数据操纵语言,用来对数据库表中的数据举行增、删、改操纵DQLData Query Language数据查询语言,用来查询数据库中表的记载DCLData Control Language数据控制语言,用来创建数据库用户,控制数据库的访问权限 二、DDL:数据定义语言

DDL的英文全称是Data Definition Language(数据定义语言),用来定义数据库对象(数据库、表、字段)
1.DDL - 数据库操纵



  • 查询所有数据库
    1. SHOW DATABASES;
    复制代码
  • 查询当前数据库
    1. SELECT DATABASE();
    复制代码
  • 创建数据库
    1. CREATE DATABASE [IF NOT EXISTS] 数据库名字 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
    复制代码
  • 删除数据库
    1. DROP DATABASE [IF EXISTS] 数据库名;
    复制代码
  • 选择当前使用的数据库
    1. USE 数据库名;
    复制代码
2. DDL -表操纵

2.1 查询


  • 查询所有表:
    1. SHOW TABLES;
    复制代码
  • 查询表布局:
    1. DESC 表名;
    复制代码
  • 查询指定表的建表语句:
    1. SHOW CREATE TABLE 表名;
    复制代码
2.2创建


  • 创建表:
    1. CREATE TABLE 表名 (
    2.     字段1 类型 [COMMENT '字段注释'],
    3.     字段2 类型 [COMMENT '字段注释'],
    4.     字段3 类型 [COMMENT '字段注释'],
    5.     ...
    6.     字段n 类型 [COMMENT '字段注释']
    7. ) [COMMENT '表注释'];
    复制代码
   留意:末了一个字段后面没有逗号 ,
  2.3数据类型
数值类型
类型大小有符号范围无符号范围描述TINYINT1 byte-128到1270到255小整数值SMALLINT2 bytes-32768到327670到65535大整数值MEDIUMINT3 bytes-8388608到83886070到16777215大整数值INT / INTEGER4 bytes-2147483648到21474836470到4294967295大整数值BIGINT8 bytes-2^63到 2^63-10到2^64-1极大整数值FLOAT4 bytes-2^128到 2^1280到2^128单精度浮点数DOUBLE8 bytes-2^1024到 2^10240到2^1024双精度浮点数DECIMAL根据精度和标度定义精确定位的小数值精确定位的小数值小数值(精确定位) 字符串类型
类型大小描述CHAR0-255 bytes定长字符串VARCHAR0-65535 bytes变长字符串TINYBLOB0-255 bytes二进制数据TINYTEXT0-255 bytes短文本字符串BLOB0-65535 bytes长文本数据TEXT0-65535 bytes长文本数据MEDIUMBLOB0-16777215 bytes中等长度的二进制数据MEDIUMTEXT0-16777215 bytes中等长度文本数据LONGBLOB0-4294967295 bytes极大二进制数据LONGTEXT0-4294967295 bytes极大文本数据 日期类型
类型大小范围格式描述DATE3 bytes1000-01-01至9999-12-31YYYY-MM-DD日期值TIME3 bytes-838:59:59至838:59:59HH:MM:SS时间值或连续时间YEAR1 byte1901至2155YYYY年份值DATETIME8 bytes1000-01-01 00:00:00至9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值TIMESTAMP4 bytes1970-01-01 00:00:01至2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳 2.4修改


  • 添加字段:
    1. ALTER TABLE 表名 ADD 字段名 数据类型 [COMMENT '注释'] [约束];
    复制代码
  • 修改数据类型:
    1. ALTER TABLE 表名 MODIFY 字段名 新数据类型;
    复制代码
  • 修改字段名和字段类型:
    1. ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [COMMENT '注释'] [约束];
    复制代码
  • 删除字段:
    1. ALTER TABLE 表名 DROP 字段名;
    复制代码
  • 修改表名:
    1. ALTER TABLE 表名 RENAME TO 新表名;
    复制代码
  • 删除表:
    1. DROP TABLE [IF EXISTS] 表名;
    复制代码
  • 删除表并重新创建:
    1. TRUNCATE TABLE 表名;
    复制代码
三、DML:数据操纵语言

DML的英文全称是Data Manipulation Language(数据操纵语言),用来对数据库表中的数据举行增、删、改操纵
1. DML - 添加数据



  • 给指定字段添加数据:
    1. INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
    复制代码
  • 给全部字段添加数据:
    1. INSERT INTO 表名 VALUES (值1, 值2, ...);
    复制代码
  • 批量添加数据:
    1. INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);
    复制代码
    1. INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);
    复制代码
2. DML - 修改数据



  • 更新数据:
    1. UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, ... [WHERE 条件];
    复制代码
   注:修改语句的条件可以有,也可以没有,若没有条件则修改整张表数据。
  3. DML - 删除数据



  • 删除数据:
    1. DELETE FROM 表名 [WHERE 条件];
    复制代码
   注:1.DELETE语句的条件可以有,也可以没有,若没有条件则删除整张表数据。
  ​ 2.DELETE语句不能删除某一个字段的值(可以使用UPDATE)。
  四、DQL:数据查询语言

DQL的英文全称是Data Query Language(数据查询语言),用来查询数据库中表的记载
1.DQL - 基本查询

1. 1查询多个字段


  • 查询指定字段:
    1. SELECT 字段1, 字段2, 字段3, ... FROM 表名;
    复制代码
  • 查询所有字段:
    1. SELECT * FROM 表名;
    复制代码
1. 2设置别名


  • 给字段设置别名:
    1. SELECT 字段1 [AS 别名1], 字段2 [AS 别名2], ... FROM 表名;
    复制代码
1.3去除重复记载


  • 查询去重后的字段值:
    1. SELECT DISTINCT 字段列表 FROM 表名;
    复制代码
2.DQL - 条件查询

2.1语法
  1. SELECT 字段列表 FROM 表名 WHERE 条件列表;
复制代码
2.2比力运算符
运算符功能>大于>=大于等于<小于<=小于等于=等于!= 或 <>不等于BETWEEN ... AND ...在某个范围之内(包含最小、最大值)IN (...)在之后的列表中的值,多选LIKE含糊匹配(_匹配单个字符,%匹配任意字符)IS NULL是 NULL 2.3逻辑运算符
运算符功能AND 或 &&而且(多个条件同时创建)OR 或 `NOT 或 !非(不是) 3.DQL - 聚合函数

3.1介绍
将一列数据作为一个整体,举行统计盘算。
3.2. 常见聚合函数
函数功能count统计数量max最大值min最小值avg平均值sum求和 3.3语法
  1. SELECT 聚合函数(字段列表) FROM 表名;
复制代码
4.DQL - 分组查询

4.1 语法
  1. SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段 [HAVING 分组后过滤条件];
复制代码
4.2 WHERE 与 HAVING 区别
   

  • 实行时机不同:
    WHERE 是在分组之前举行过滤,不能与聚合函数一起使用。
    HAVING 是在分组之后对效果举行过滤,可以与聚合函数一起使用。
  • 判定条件不同:
    WHERE 不能对聚合函数举行判定,而 HAVING 可以。
  好的,按照您提供的格式,下面是 DQL - 排序查询 的详细信息:
5. DQL - 排序查询

5.1 语法
  1. SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
复制代码
5.2 排序方式


  • ASC:升序(默认值)
  • DESC:降序
   留意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段举行排序。
  根据您提供的图片内容,下面是 DQL - 分页查询 的详细信息:
6. DQL - 分页查询

6.1 语法
  1. SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;
复制代码
6.2 留意事项
   1.起始索引 从 0 开始,起始索引 = (查询页码 - 1)* 每页表现记载数。
  2.分页查询是数据库的通用功能,不同的数据库有不同的实现,MySQL 中使用 LIMIT。
  3.如果查询的是第一页数据,起始索引可以省略,直接写 LIMIT 10。
  7. DQL - 实行顺序

在 SQL 查询中,固然我们按照一定的语法顺序写出查询语句,但实际上数据库引擎实行这些查询的顺序是固定的。理解 SQL 查询的实行顺序有助于优化查询并避免逻辑错误。下面是 DQL 查询的实行顺序:

  • FROM:起首从指定的表中选择数据。
  • WHERE:接下来,数据库引擎会过滤符合条件的记载,确保查询只返回满足条件的行。
  • GROUP BY:在过滤之后,数据会根据指定的字段举行分组。
  • HAVING:对于分组后的数据,数据库会应用 HAVING 子句的条件,进一步筛选符合要求的分组。
  • SELECT:数据库引擎末了会选择要返回的列。留意,只管 SELECT 是 SQL 查询的第一个关键字,但它是在其他操纵完成后才会实行。
  • ORDER BY:接下来,数据会按指定的排序规则举行排序。
  • LIMIT:末了,如果存在分页查询的需求,LIMIT 会限制返回的记载数量。

五、DCL:数据控制语言

DCL的英文全称是Data Control Language(数据控制语言),用来创建数据库用户,控制数据库的访问权限
1.DCL - 管理用户

1. 1查询用户
  1. USE mysql;
  2. SELECT * FROM user;
复制代码
1. 2 创建用户
  1. CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
复制代码
1. 3修改用户暗码
  1. ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
复制代码
1.4.删除用户
  1. DROP USER '用户名'@'主机名';
复制代码
根据您提供的信息,继承仿照写 DCL - 权限控制 相关操纵:
2. DCL - 权限控制

2.1 查询权限
  1. SHOW GRANTS FOR '用户名'@'主机名';
复制代码
2.2 授权权限
  1. GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
复制代码
2.3 打消权限
  1. REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
复制代码
  留意:
  

  • 多个权限之间,使用逗号分隔:在授予用户多个权限时,必须用逗号 , 来分隔每个权限。
  • 授权时,数据库名和表名可以使用 \* 举行通配,代表所有:可以使用星号 * 来代替具体的数据库名和表名,表示对所有数据库或表举行授权。
  2.4 常见权限
权限说明ALL, ALL PRIVILEGES所有权限SELECT查询数据INSERT插入数据UPDATE修改数据DELETE删除数据ALTER修改表布局DROP删除数据库/表/视图CREATE创建数据库/表 小结

通过本文的详细讲授,我们深入了解了数据库操纵语言的四个主要分类:DDLDMLDQLDCL。每一类操纵都有其独特的作用和功能,掌握它们是我们举行数据库设计、管理和开发的基础。在实际应用中,我们常常会结合这些操纵举行综合应用,以满足不同的业务需求。
通过本篇博客的学习,盼望能帮助你更好地理解和使用数据库操纵语言,从而提高数据库管理和开发的效率。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

欢乐狗

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表