MySQL 篇-深入了解 DML、DQL 语言(二)

 🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍

 

文章目录

        1.0 DML、DQL 语言说明

        2.0 使用 DML 实现对数据管理和操作 

        2.1 DML - 增添数据 insert

        2.2 DML - 修改数据 update

        2.3  DML - 删除数据 delete

        3.0 使用 DQL 实现对数据管理和操作 

        3.1 DQL - 基本查询

        3.2 DQL - 条件查询

        3.3 DQL - 分组查询

        3.4 DQL - 排序查询

        3.5 DQL - 分页查询

        4.0 补充相关的函数


        1.0 DML、DQL 语言说明

        DML (Data Manipulation Language) 是用于管理数据库中数据的语言,用于对数据库中的数据进行增加、删除、修改。常见的 DML 操作包括 INSERT、UPDATE、DELETE 。

        DQL (Data Query Language) 是用于查询数据库中数据的语言,用于从数据库中检索所需的数据。常见的 DQL 操作是 SELECT,用于从数据库中检索数据并返回结果集。

        简单来说,DML、DQL 是对表中的数据进行操作,其中 DML 对表中的数据操作有:增添、删除、修改操作,而 DQL 对表中的数据操作有:查询操作。 两者结合使用可以实现对数据库的完整管理和操作。

        

        2.0 使用 DML 实现对数据管理和操作 

        常见的 DML 操作包括 INSERT、UPDATE、DELETE 。

        2.1 DML - 增添数据 insert

一、添加表中数据的 SQL 语句:

-- 指定字段添加数据:
insert into 表名 (字段名1,字段名2) values (值1,值2);

-- 全部字段添加数据:
insert into 表名 values (值1,值2,...);

-- 批量添加数据 (指定字段):
insert into 表名 (字段名1,字段名2) values (值1,值2),(值1,值2);

-- 批量添加数据 (全部字段):
insert into 表名 values (值1,值2,...),(值1,值2,...);

二、实际需求操作:

1)

-- 指定字段增添数据
insert into tb_user (id,username,name) values (2,'张三','李四');

操作结果为:

2)

-- 全部字段增添数据
insert into tb_user values (3,'呆呆','王五',18,'女');

操作结果为:

3)

-- 批量增添指定字段数据
insert into tb_user (id,username,name) values (5,'白白','天天'),(6,'红红','火火');

操作结果为:

4)

-- 批量增添全部字段数据
insert into tb_user values (9,'恍恍','忽忽',20,'男'),(10,'吱吱','喳喳',30,'男');

操作结果为:

三、注意事项:

        1)插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

        2)字符串和日期数据应该包含在引号中。

        3)插入的数据大小,应该在字段的规定范围内。

        2.2 DML - 修改数据 update

一、修改表中数据的 SQL 语句:

-- 修改数据:
update 表名 set 字段名1 = 值1,字段名2 = 值2,...[where 条件];

二、实际需求操作:

1)

-- 修改表中的指定的数据:
update tb_user set name = '恐龙' where id = 2;

该操作结果为:

2)

-- 修改表中的全部数据:
update tb_user set gender = '女';

该操作结果为:

三、注意事项:

        修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

        2.3  DML - 删除数据 delete

一、删除表中数据的 SQL 语句:

-- 删除数据:
delete from 表名 [where 条件];

二、实际需要操作:

1)

-- 删除表中的指定数据:
delete from tb_user where id = 2;

该操作结果为:

2)

-- 删除表中全部数据;
delete from tb_user;

该操作结果为:

三、注意事项:

        - delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

        - delete 语句不能单独删除某一个字段的值(如果要操作,可以使用 update , 将该字段的值置为 null )。

        3.0 使用 DQL 实现对数据管理和操作 

        对表中的数据进行查询操作,主要的操作方式有:基本查询、条件查询、分组查询、排序查询、分页查询。

        3.1 DQL - 基本查询

一、对表中数据进行基本查询的 SQL 语句:

-- 查询多个字段:
select 字段名1,字段名2,字段名3 from 表名;

-- 查询所有字段(通配符):
select * from 表名;

-- 设置别名:
select 字段1 [as 别名1], 字段2 [as 别名2] from 表名;

-- 去除重复记录:
select distinct 字段列表 from 表名;

二、实际需求操作:

1)

-- 基本查询:查询表中全部数据
select  id, username, name, age, gender from tb_user;
-- 也可以用 * 来替代 id, username, name, age, gender
select * from tb_user;

该操作结果为:

2)

-- 设置别名
select  name as 姓名,gender as 性别 from tb_user;

该操作结果为:

3)

-- 去除重复记录
select distinct gender from tb_user;

该操作结果为:

三、注意事项:

        * 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。

        3.2 DQL - 条件查询

一、对表中数据进行条件查询的 SQL 语句:

-- 条件查询:
select 字段列表 from 表名 where 条件列表;

 

比较运算符:

        >:大于

        >=:大于等于

        <:小于

        <=:小于等于

        =:等于

        <> 或者 !=:不等于

        between...and...:在某个范围之内(含最小、最大值)

        in(...):在 in 之后的列表中的值,多选一

        like 占位符:模糊匹配(_匹配单个字符,% 匹配任意个字符)

        is null:是 null

逻辑运算符:

        and 或 &&:并且(多个条件同时成立)

        or 或 || :或者(多个条件任意一个成立)

        not 或 ! :非,不是

二、实际需求操作:

-- 条件查询:查询表中指定的数据
select id, username, name, age, gender from tb_user where id = 2;
-- 同样可以用 * 来替代 id, username, name, age, gender
select * from tb_user where id = 2;

-- 查询 age 为 null 的数据
select * from tb_user where age is null;

-- 查询姓李的数据
select * from tb_user where name like '李%';

-- 查询姓名为两个字的数据
select * from tb_user where name like '__';

-- 查询id为:2,3的数据
select * from tb_user where id in (2,3);

-- 查询姓名为李四且年龄为null的数据
select * from tb_user where age is null and name = '李四';

        具体操作结果就不过多赘述了。

        3.3 DQL - 分组查询

一、对表中数据进行分组查询的 SQL 语句:

-- 分组查询:
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

补充聚合函数说明:        

        聚合函数介绍:将一列数据作为一个整体,进行纵向计算。

        语法:select 聚合函数(字段列表) from 表名;

        主要的聚合函数:

                - count:统计数量

                - max:最大值

                - min:最小值

                - avg:平均数

                - sum:求和

二、实际需求操作:

1)

-- 根据性别分组,分别统计男、女人数总量
select gender '性别' , count(gender) '数量' from tb_user group by gender;

该操作结果为:

2)

-- 对分完组之后的表进行过滤 having
select gender '性别' , count(gender) '数量' from tb_user group by gender having count(gender) > 2;

该操作结果为:

三、注意事项:

        分组之后,查询的字段一般为聚合函数与分组字段,查询其他字段无任何意义。

        执行顺序:where > 聚合函数 > having 。

        where 与 having 区别:

        (1)执行时机不同:where 是分组之前进行过滤,不满足 where 条件,不参与分组;而 having 是分组之后对结果进行过滤。

        (2)判断条件不同:where 不能对聚合函数进行判断,而 having 可以。

        3.4 DQL - 排序查询

一、对表中数据进行排序的 SQL 语句:

-- 排序查询:
select 字段列表 from 表名 [where 条件列表] [group by 分组字段] order by 字段1 排序方式1,字段2 排序方式2...;

排序方式:

        升序为:asc(默认值)

        降序为:desc

二、实际需求操作:

1)

​
-- 按照 id 进行降序排序
select * from tb_user order by id desc;

​

该操作结果为:

2)

-- 按照年龄进行降序排序,若年龄相同则按照id降序排序
select * from tb_user order by name desc, id desc;

该操作结果为:

三、注意事项:

        如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

        3.5 DQL - 分页查询

一、对表中数据进行分页查询的 SQL 语句:

-- 分页查询
select 字段列表 from 表名 limit 起始索引,查询记录数;

        默认起始索引为 0 ,即从 0 开始,公式:起始索引 = (页码 - 1)* 记录数 。

二、实际需求操作:

-- 查询第2页数据,则该起始索引为 3
select * from tb_user limit 3,3;

该操作结果为:

三、注意事项:

        (1) 起始索引从 0 开始,起始索引 = (查询页码 - 1) * 每页显示记录数。

        (2) 分页查询时数据库的方言,不同的数据库有不同都实现,MySQL 中是 limit 。

        (3) 如果查询的是第一页,起始索引可以省略,直接简写为 limit 10 。

        4.0 补充相关的函数

        

if (表达式,tvalue,fvalue):当表达式为 true 时,取值 tvalue;
                          当表达式为 false 时,取值 fvalue


case 表达式 when value1 then result1 [when value2 then result2] [else result] end

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/414884.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用.NET 升级助手工具将.net framework4.8 MVC项目升级到net6

1 新建.net framework4.8 MVC项目 随便添加一个可以访问的界面用于测试 2 对当前项目进行升级 注意&#xff1a;若要进行升级&#xff0c;首先确保本地已安装相应的sdk&#xff0c;例如&#xff1a;dotnet-sdk-6.0.402-win-x64.exe1.运行cmd命令窗口&#xff0c;进入项目所在…

【蓝桥杯】快读|min和max值的设置|小明和完美序列|​顺子日期​|星期计算|山

目录 一、输入的三种方式 1.最常见的Scanner的输入方法 2.数据多的时候常用BufferedReader快读 3.较麻烦的StreamTokenizer快读&#xff08;用的不多&#xff09; StreamTokenizer常见错误&#xff1a; 二、min和max值的设置 三、妮妮的翻转游戏 四、小明和完美序列 五…

Docker之数据卷自定义镜像

目录 一、数据卷 ​二、自定义镜像 2.1自定义centos 一、数据卷 在docker中&#xff0c;数据卷是宿主机的一个可以供一个或多个容器使用的特殊目录&#xff0c;它可以在容器之间共享和重用&#xff0c;本地与容器间传递数据更高效&#xff1b;对数据卷的修改会立马有效&#…

CSS——PostCSS简介

文章目录 PostCSS是什么postCSS的优点补充&#xff1a;polyfill补充&#xff1a;Stylelint PostCSS架构概述工作流程PostCSS解析方法PostCSS解析流程 PostCSS插件插件的使用控制类插件包类插件未来的CSS语法相关插件后备措施相关插件语言扩展相关插件颜色相关组件图片和字体相关…

代码库管理工具Git介绍

阅读本文同时请参阅-----免费的Git图形界面工具sourceTree介绍 Git是一个分布式版本控制系统&#xff0c;它可以帮助开发者跟踪和管理代码历史。Git的命令行工具是使用Git的核心方式&#xff0c;虽然它可能看起来有些复杂&#xff0c;但是一旦掌握了基本命令&#xff0c;你…

基于MQTT协议实现微服务架构事件总线

一、场景描述 昨天在博客《客户端订阅服务端事件的实现方法》中提出了利用websocket、服务端EventEmitter和客户端mitt实现客户端订阅服务端事件&#xff0c;大大简化了客户端对服务端数据实时响应的逻辑。上述方案适用于单服务节点的情形。 对于由服务集群支撑的微服务架构&…

招聘系统架构的设计与实现

在当今竞争激烈的人才市场中&#xff0c;有效的招聘系统对企业吸引、筛选和管理人才至关重要。本文将探讨招聘系统的架构设计与实现&#xff0c;帮助企业构建一个高效、可靠的人才招聘平台。 ## 1. 系统架构设计 ### 1.1 微服务架构 招聘系统通常采用微服务架构&#xff0c;将…

Java JVM虚拟机面试题

Java JVM虚拟机面试题 前言1、ThreadLocal的底层原理和应用&#xff1f;2、Java中的锁池和等待池&#xff1f;3、wait()&#xff0c;yield()&#xff0c;join()&#xff0c;sleep()的区别&#xff1f;4、你们项⽬如何排查JVM问题&#xff1f;5、YGC和FGC发生时间&#xff1f;6、…

11.vue学习笔记(组件生命周期+生命周期应用+动态组件+组件保持存活)

文章目录 1.组件生命周期2.生命周期应用2.1通过ref获取元素DOM结构2.2.模拟网络请求渲染数据 3.动态组件3.1.A&#xff0c;B两个组件 4.组件保持存活&#xff08;销毁期&#xff09; 1.组件生命周期 每个Vue组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置…

探索AI视频模型的无限可能:OpenAI的Sora引领创新浪潮

文章目录 &#x1f4d1;前言一、技术解析二、应用场景三、未来展望四、伦理与创意五、用户体验与互动&#x1f324;️总结 &#x1f4d1;前言 随着人工智能技术的蓬勃发展&#xff0c;AI视频模型正逐渐成为科技领域的新宠。在这个变革的浪潮中&#xff0c;OpenAI推出的首个AI视…

Spring中 Unsupported class file major version 61 报错

初学Spring时遇到的一个错误&#xff1a;Unsupported class file major version 61 &#xff0c;如图所示&#xff1a; 网上查了一下大概是JDK的版本与Spring的版本不一致导致的错误&#xff1b;刚开始我用的Spring版本是&#xff1a; <dependencies><dependency>…

(全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF

研究生英语读写教程基础级教师用书PDF 研究生英语读写教程提高级教师用书PDF pdf下载&#xff08;完整版下载&#xff09; &#xff08;1&#xff09;研究生英语读写教程基础级教师用书PDF &#xff08;2&#xff09;研究生英语读写教程基提高级教师用书PDF

【Pytorch深度学习开发实践学习】Pytorch实现LeNet神经网络(1)

1.model.py import torch.nn as nn import torch.nn.functional as F引入pytorch的两个模块 关于这两个模块的作用&#xff0c;可以参考下面 Pytorch官方文档 torch.nn包含了构成计算图的基本模块 torch,nn.function包括了计算图中的各种主要函数&#xff0c;包括&#…

linux gdb 调试工具

1.写程序 首先&#xff0c;我们先写出一个 .c 或者.cpp程序 如 然后 gcc -g hello.c -o hello 或者 g -g hello.cpp -o hello &#xff08;-g&#xff09;要加 2. gdb调试 用 gdb &#xff08;可执行程序&#xff0c;如hello&#xff09; 进入之后&#xff0c;有…

Window系统安装USB Redirector结合cpolar实现远程访问本地USB设备

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 USB Redirector是一款方便易用的USB设备共享服务应用程序&#xff0c;它提供了共享和访问本地或互联网上的U…

物业智能水电抄表管理系统

物业智能水电抄表管理系统是物业管理行业的关键技术之一&#xff0c;其结合了智能化、远程监控和数据分析等功能&#xff0c;为物业管理公司和业主提供了高效、精准的水电抄表管理解决方案。该系统具有多项优势&#xff0c;能够提升物业管理效率&#xff0c;降低成本&#xff0…

[计算机网络]--MAC/ARP/DNS协议

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、认识以…

UnityWebGL UGUI中文不显示问题

这是Unity编辑中效果 打包成webgl后的效果&#xff08;中文没有显示出来&#xff09; 解决方法 将Unity默认使用的Arial替换成中文字体。 1.找到电脑字体库&#xff08;win电脑字体库路径&#xff1a;C:\Windows\Fonts &#xff1b;Mac电脑搜索“字体册”&#xff09;。 2.将…

TC3xx SMU、PMIC和Tranceiver的功能安全闭环

目录 1.TLF35584安全状态输出响应对象 1.1 响应ERR 收集到的错误信号 1.2 响应监控功能引发的ROT 1.3 响应看门狗引发的错误 1.4 环境过温引发的错误状态 1.5 为什么设计SSx&#xff1f; 2. 安全状态输出给谁 3.小结 在之前文章里&#xff0c;我们简述了TC3xx SMU如何…

js 面试题--事件循环event loop--宏任务和微任务

1 事件循环event loop概念&#xff1a; js 是非阻塞单线程语言&#xff0c;js在执行过程中会产生执行环境&#xff0c;执行环境会按顺序添加到执行栈中&#xff0c;先执行同步栈中的任务&#xff0c;当遇到异步任务时会添加到task队列中&#xff0c;同步栈执行完后&#xff0c…