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 时,取值 fvaluecase 表达式 when value1 then result1 [when value2 then result2] [else result] end

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据界的达克摩斯之剑----深入浅出带你理解网络爬虫(Forth)

目录 3.爬虫身份识别 4.用户爬虫的例子 4.1 开源爬虫 网络爬虫的组成 控制器 解析器 资源库 3.爬虫身份识别 网络爬虫通过使用http请求的用户代理&#xff08;User Agent&#xff09;字段来向网络服务器表明他们的身份。网络管理员则通过检查网络服务器的日志&#xff0…

77. 组合(力扣LeetCode)

文章目录 77. 组合题目描述回溯算法组合问题的剪枝操作 77. 组合 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [ [2,4], [3,4],…

ArcgisForJS如何将ArcGIS Server发布的点要素渲染为热力图?

文章目录 0.引言1.ArcGIS创建点要素2.ArcGIS Server发布点要素3.ArcgisForJS将ArcGIS创建的点要素渲染为热力图 0.引言 ArcGIS For JS 是一个强大的地理信息系统&#xff08;GIS&#xff09;工具&#xff0c;它允许开发者使用 JavaScript 语言来创建各种 GIS 应用。ArcGIS Ser…

DolphinScheduler——介绍及架构设计

目录 一、DolphinScheduler介绍 1.1 概述 1.2 特性 1.2.1 简单易用 1.2.2 丰富的使用场景 1.2.3 High Reliability 1.2.4 High Scalability 1.3 名词解释 1.3.1 名词解释 1.3.2 模块介绍 二、DolphinScheduler架构原理 2.1 系统架构图 2.2 架构说明 2.2.1 Maste…

音频混音算法的实现

最近项目有用到混音算法&#xff0c;这里用比较常见的一种&#xff0c;就是简单的加和之后做一下归一化。 是参考这个博主实现的&#xff1a; 音频混音的算法实现 下面直接贴代码&#xff1a; #include <stdio.h> #include <stdlib.h> #include <math.h&…

Python学习 day05(异常、模块导入)

异常 为什么要捕获异常 当程序遇到了BUG&#xff0c;如果不对BUG进行手动捕获&#xff0c;那么整个程序就会因为一个BUG而停止运行&#xff0c;这在有些情况下是会造成很大的损失&#xff0c;但是如果我们进行了手动捕获&#xff0c;那么整个程序会继续运行捕获异常的作用在于&…

vue-router4 (六) 命名视图

命名视图可以使得同一级&#xff08;同一个组件&#xff09;中展示更多的路由视图&#xff0c;而不是嵌套显示&#xff0c; 命名视图可以让一个组件中具有多个路由渲染出口&#xff0c;这对于一些特定的布局组件非常有用。 应用场景&#xff1a; 比如点击login切换到组件A&am…

vue3第三节(v-model 执行原理)

特殊说明&#xff1a; 以下vue3语法是基于 3.4之前版本进行使用的&#xff0c;3.4之后的版本 引入了 defineModel 宏&#xff0c;后续会介绍defineModel 1、vue3 与vue2 中v-model区别 vue3 中v-model绑定的不再是value&#xff0c;而是modelValue&#xff0c;接收的方法也不再…

2024-02-28(Kafka,Oozie,Flink)

1.Kafka的数据存储形式 一个主题由多个分区组成 一个分区由多个segment段组成 一个segment段由多个文件组成&#xff08;log&#xff0c;index&#xff08;稀疏索引&#xff09;&#xff0c;timeindex&#xff08;根据时间做的索引&#xff09;&#xff09; 2.读数据的流程 …

论文精读--GPT3

不像GPT2一样追求zero-shot&#xff0c;而换成了few-shot Abstract Recent work has demonstrated substantial gains on many NLP tasks and benchmarks by pre-training on a large corpus of text followed by fine-tuning on a specific task. While typically task-agnos…

Day04:APP架构小程序H5+Vue语言Web封装原生开发Flutter

目录 常见APP开发架构 APP-开发架构-原生态-IDEA APP-开发架构-Web封装-平台 APP-开发架构-H5&Vue-HBuilderX WX小程序-开发架构-Web封装-平台 WX小程序-开发架构-H5&Vue-HBuilderX 思维导图 章节知识点&#xff1a; 应用架构&#xff1a;Web/APP/云应用/三方服…

Leetcode—82. 删除排序链表中的重复元素 II【中等】

2024每日刷题&#xff08;117&#xff09; Leetcode—82. 删除排序链表中的重复元素 II 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val…

在Golang中简化日志记录:提升性能和调试效率

最大化效率和有效故障排除&#xff1a;在Golang中简化日志记录 日志记录是软件开发的一个基本方面&#xff0c;有助于调试、监控和理解应用程序的流程。在Golang中&#xff0c;有效的日志记录实践可以显著提高性能并简化调试过程。本文探讨了优化Golang日志记录的技术&#xf…

服务器数据恢复-异常断电导致服务器硬盘离线的数据恢复案例

服务器数据恢复环境&#xff1a; dell某型号服务器中有一组通过raid卡组建的raid10&#xff0c;该raid阵列中一共有4块磁盘。上层部署XenServer虚拟化平台&#xff0c;作为网站服务器使用。 服务器故障&#xff1a; 服务器异常断电导致服务器上的一台虚拟机不可用。需要恢复这…

Java Web(八)--Servlet(二)

Servlet API Servlet API 包含以下4个Java包&#xff1a; 1. javax.servlet&#xff1a;其中包含定义Servlet和Servlet容器之间契约的类和接口。 2. javax.servlet.http&#xff1a;主要定义了与HTTP协议相关的HttpServlet类&#xff0c;HttpServletRequest接口和HttpServl…

C语言第三十二弹---自定义类型:联合和枚举

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 目录 1、联合体 1.1、联合体类型的声明 1.2、联合体的特点 1.3、相同成员的结构体和联合体对比 1.4、联合体大小的计算 1.5、联合的⼀个练习 2、枚举类型 …

网络初识(概念入门)

目录 1.局域网VS广域网 1.1局域网 1.2广域网 2.五元组 2.1 IP和端口 2.1.1 IP 2.1.2端口号 2.2协议 3.协议分层 4. TCP/IP五层模型 5.封装和分用 5.1封装 5.2分用 1.局域网VS广域网 1.1局域网 简单介绍&#xff1a;指在某一特定区域内由多台计算机组成的互联网组…

springboot-基础-添加model和controller的简单例子+常用注解含义

备份笔记。所有代码都是2019年测试通过的&#xff0c;如有问题请自行搜索解决&#xff01; 上一篇&#xff1a;springboot-基础-eclipse配置helloword示例 目录 添加model和controller的例子注解开发使用RestController 大坑 Model ModelMap和ModelAndView的区别 添加model和c…

only office-用着确实很省心

小程一言 最近一直在使用各种办公软件进行学习笔记整理&#xff0c;但是在使用过程中&#xff0c;总感觉不是自己想要的一款软件&#xff0c;想要一款真正懂自己的软件&#xff0c;是一个选择的过程。最近在网上闲逛发现一款宝藏软件&#xff0c;好奇心驱使我去进行适用&#…

Apache POl

介绍 Apache POl是一个处理Miscrosoft Ofice各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作,一般情况下&#xff0c;POI都是用于操作 Excel 文件。 Apache POl 的应用场景 1.银行网银系统导出交易…