【MySQL基础篇】SQL指令:DQL及DCL
1、DQL
· DQL - 介绍
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据表中的记录。(在MySQL中应用是最为广泛的)
查询关键字:SELECT
· DQL - 语法
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP UP
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
· DQL - 基础查询
1、查询多个字段
SELECT 字段1,字段2,字段3,... FROM 表名;
SELECT * FROM 表名;
2、设置别名(增强字段可读性)
SELECT 字段1 [AS 别名1],字段2[AS 别名2] .... 表名;
3、去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
insert into staff_table values(1,001,'张无忌','男','123456789000000000','大理','2000-12-31'),(2,002,'赵敏','女','123456789000000001','北京','2000-01-01'),(3,003,'韦小宝','男','123456789000000002','上海','2001-03-04'),(4,004,'郭峰','男','123456789000000003','天津','2004-02-19'),(5,005,'黄蓉','女','123456789000000004','广东','2006-11-12'),(6,006,'杨过','男','123456789000000005','佛山','2004-02-14'),(7,007,'狗蛋','男','','上海','2011-01-01');
#1、查询指定字段name,worknumber,dress,返回
select name,worknumber,dress from staff_table;
#2、查询返回所有字段
select * from staff_table;
#尽量不要去写*第一不直观,第二会影响效率,遵循开发规范
#也可以这样写
select id,worknumber,name,gender,idcard,dress,staff_date from staff_table;
#3、查询所有员工的工作地址,起别名
select dress as '工作地址' from staff_table;
#4、查询员工的上班地址(不要重复)
select distinct dress '工作地址' from staff_table;
· DQL - 条件查询
1、语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2、条件
| 比较运算符 | 功能 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| = | 等于 |
| <> 或 != | 不等于 |
| BETWEEN ...AND ... | 在某个范围值之内(含最小、最大值) |
| IN(...) | 在in之后的列表中的值,多选一 |
| LIKE (占位符) | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
| IS NULL | 是NULL |
| 逻辑运算符 | 功能 |
| AND 或 && | 并且(多个条件同时成立) |
| OR 或 || | 或者(多个条件任意一个成立) |
| NOT 或 ! | 非,不是 |
#1、查询编号等于4的员工
select * from staff_table where id=4;
#2、查询编号大于3的员工
select * from staff_table where id>3;
#3、查询编号大于等于3的员工
select * from staff_table where id>=3;
#4、查询没有身份证号的员工信息
select * from staff_table where idcard is null;
#5、查询有身份证号的员工信息
select * from staff_table where idcard is not null;
#6、查询编号不等于4的员工信息
select * from staff_table where id!=4;
#7、查询编号在2(包含)到6(包含)之间的信息
select * from staff_table where id between 2 and 6;
select * from staff_table where id>=2&&id<=6;
#8、查询性别为女且编号小于等于5的员工信息
select * from staff_table where gender='女'&&id<=5;
#9、查询编号为2或8或10的员工信息
select * from staff_table where id=2||id=8||id=10;
select * from staff_table where id(2,8,10);
#10、查询姓名为两个字的员工信息
select * from staff_table where name like '__';
#11、查询身份证最后一位为X的信息
select * from staff_table where idcard like '%X';
· DQL - 聚合函数
1、聚合函数是将一列数据作为一个整体,进行纵向计算。
2、常见聚合函数
| 函数 | 功能 |
| count | 统计数量 |
| max | 最大值 |
| min | 最小值 |
| avg | 平均值 |
| sum | 求和 |
3、语法
SELECT 聚合函数(字段列表) FROM 表名;
#1、统计该企业员工数量
select count(*) from staff_table;
#2、统计该企业员工编号的平均值
select avg(id) from staff_table;
#3、统计该企业员工最晚入职时间
select max(staff_date) from staff_table;
#4、统计该企业员工最早入职时间
select min(staff_date) from staff_table;
#5、统计上海地区员工编号之和
select sum(id) from staff_table where dress='上海';
注意:null值不参与运算
· DQL - 分组查询
1、语法
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
2、where与having的区别:
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤;
判断条件不同:where不能对聚合函数进行判断,而having可以。
#分组查询
#1、根据性别分组,统计男员工和女员工的数量
select gender,count(*) from staff_table group by gender;
#2、根据性别分组,统计男员工与女员工的平均编号
select gender,avg(id) from staff_table group by gender;
#3、查询编号小于5的员工,并根据工作地址分组,获取员工数量小于等于3的工作地址
select dress,count(*) from staff_table where id<5 group by dress having count(*)<=3;
注意:
执行顺序:where>聚合函数>having
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
· DQL - 排序查询
1、语法
SELECT 字段列表 FROM ORDER BY 字段1 排序方式1,字段2 排序方式2;
2、排序方式
ASC:升序(默认值)
DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
#1、根据根据性别对公司员工进行升序排序
select * from staff_table order by gender;
#2、根据入职时间对员工进行降序排序
select * from staff_table order by staff_date desc;
#3、根据根据性别对员工进行升序排序,性别相同,再按照入职时间进行降序排序
select * from staff_table order by gender,staff_date desc;
· DQL - 分页查询
1、语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
注意:
起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数;
分页查询是数据库的方言,不同的数据库有不同的实现方式MySQL是LIMIT;
如果查询的是第一页的数据,起始索引可以省略,直接简写为limit 10。
#1、查询第一页的员工数据,每页展示3条记录
select * from staff_table limit 3;
#2、查询第二页员工数据,每页展示3条记录
select * from staff_table limit 3,3;
#3、查询第三页员工信息
select * from staff_table limit 6,3;
例题分析:
#1、查询编号为2,3,4的女员工信息
select * from staff_table where id in(2,3,4)&&gender='女';
#2、查询性别为男,并且编号在2~6(含)以内姓名为三个字的员工
select * from staff_table where gender='男'&&id between 2 and 6&&name like '___';
#3、统计员工表中,编号小于4的,男性员工与女性员工的人数
select gender,count(*) from staff_table where id<4 group by gender;
#4、查询所有编号小于5的员工的姓名和编号,并对查询结果按性别升序排序,如果性别相同按入职时间降序排序
select name,id from staff_table where id<5 order by gender,staff_date desc;
#5、查询性别为男,且编号在2~5(含)以内的前两个员工信息,查询结果按性别升序排序,如果性别相同按入职时间降序排序
select * from staff_table where gender='男'&&id between 2 and 5 order by gender,staff_date desc limit 2;
· DQL - 执行顺序
首先执行FROM来决定要查询的是哪张表的数据紧接着通过where来指定查询条件第三步通过group by以及having来指定分组以及分组以后的条件第四步决定我们查询要返回哪些字段,执行SELECT,再往下就是order by以及limit。
2、DCL
1、介绍
DCL英文全称是Date Control Language(数据控制语句),用来管理数据库用户、控制数据库的访问权限。
· DCL - 用户管理
1、查询用户
USE mysql;
SELECT * FROM user;
2、创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
3、修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
4、删除用户
DROP USER '用户名'@'主机名';
#1、创建用户名为test,只能在主机localhost访问,密码123456
create user 'test'@'localhost' identified by '123456';
#2、创建用户xiaodu,可以在任意主机访问密码为123456
create user 'xiaodu'@'%' identified by '123456';
#3、修改用户xiaodu的访问密码为 1234
alter user 'xiaodu'@'%' identified with mysql_native_password by '1234';
#4、删除test@localhost用户
drop user 'xiaodu'@'%';

注意:
主机名可以用%通配;
这类SQL开发人员操作的比较少,主要是DBA(数据库管理员)使用。
· DCL - 权限控制
| 权限 | 说明 |
| ALL,ALL PRIVILEGES | 所有权限 |
| SELECT | 查询数据 |
| INSERT | 插入数据 |
| UPDATE | 修改数据 |
| DELETE | 删除数据 |
| ALTER | 修改表 |
| DROP | 删除数据库/表/视图 |
| CREATE | 创建数据库/表 |
1、查询权限
SHOW GRANTS FOR '用户名'@'主机名';
2、授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
3、撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
#查询权限
show grants for 'test'@'localhost';
#授予权限
grant all on test.* to 'test'@'localhost';
#撤销权限
revoke all on test.* from 'test'@'localhost';
相关文章:
【MySQL基础篇】SQL指令:DQL及DCL
1、DQL DQL - 介绍 DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据表中的记录。(在MySQL中应用是最为广泛的) 查询关键字:SELECT DQL - 语法 SELECT 字段列表 FROM 表名列表 WHER…...
[C++][设计模式][适配器模式]详细讲解
目录 1.动机2.模式定义3.要点总结4.代码感受 1.动机 在软件系统中,由于应用环境的变化,常常需要将”一些现存的对象“放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足如何应对这些”迁移的变化“?如何既能利用现…...
8080时序驱动TFT显示屏 驱动IC GC9307
8080时序总共有控制线 CS片选线 DC(命令数据控制线) RD读控制线 WR写控制线 和N条数据线。 控制底层代码如下; 写读代码,读的代码反过来就行 inline void TFT8080WriteDat(unsigned char dat) {CS_L;//开始片选DC_H;//写数据 // RD_H;//禁止读WR_H;//禁止写WR_L;//写入…...
K8S 集群节点缩容
环境说明: 主机名IP地址CPU/内存角色K8S版本Docker版本k8s231192.168.99.2312C4Gmaster1.23.1720.10.24k8s232192.168.99.2322C4Gwoker1.23.1720.10.24k8s233(需下线)192.168.99.2332C4Gwoker1.23.1720.10.24 1. K8S 集群节点缩容 当集群中有…...
Web-HTML-事件
1 需求 2 语法 3 示例 4 参考资料 HTML 事件 | 菜鸟教程...
Installed Build Tools revision xxx is corrupted. Remove and install again 解决
1.在buildTools文件下找到对应的sdk版本,首先将版本对应目录下的d8.bat改名为dx.bat。 2.在lib文件下将d8.jar改名为dx.jar。 3.重新编译工程即可...
AI 与 Python 实战干货:基于深度学习的图像识别
《AI 与 Python 实战干货:基于深度学习的图像识别》 今天咱不啰嗦,直接上干货! 在 AI 领域,特别是图像识别方面,Python 简直是一把利器。咱就以手写数字识别为例,来看看怎么用 Python 实现一个深度学习模…...
万字长文详解数据结构:树 | 第6章 | Java版大话数据结构 | 二叉树 | 哈夫曼树 | 二叉树遍历 | 构造二叉树 | LeetCode练习
📌本篇分享的大话数据结构中🎄树🎄这一章的知识点,在此基础上,增加了练习题帮助大家理解一些重要的概念✅;同时,由于原文使用的C语言代码,不利于学习Java语言的同学实践,…...
NPOI入门指南:轻松操作Excel文件的.NET库
目录 引言 一、NPOI概述 二、NPOI的主要用途 三、安装NPOI库 四、NPOI基本使用 六、性能优化和内存管理 七、常见问题与解决方案 八、结论 附录 引言 Excel文件作为数据处理的重要工具,广泛应用于各种场景。然而,在没有安装Microsoft Office的…...
【高性能服务器】服务器概述
🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 服务器概述 服…...
003 SSM框架整合
文章目录 整合web.xmlapplicationContext-dao.xmlapplicationContext-service.xmlspringmvc.xmldb.propertieslog4j.propertiespom.xml 测试sqlItemController.javaItemMapper.javaItem.javaItemExample.javaItemService.javaItemServiceImpl.javaItemMapper.xml 整合 将工程的…...
web刷题记录(7)
[HDCTF 2023]SearchMaster 打开环境,首先的提示信息就是告诉我们,可以用post传参的方式来传入参数data 首先考虑的还是rce,但是这里发现,不管输入那种命令,它都会直接显示在中间的那一小行里面,而实际的命令…...
【单片机毕业设计选题24037】-基于STM32的电力系统电力参数无线监控系统
系统功能: 系统上电后,OLED显示“欢迎使用电力监控系统请稍后”,两秒后显示“Waiting..”等待ESP8266初始化完成, ESP8266初始化成功后进入正常页面显示, 第一行显示电压值(单位V) 第二行显示电流值&am…...
Python使用彩虹表来尝试对MD5哈希进行破解
MD5是一种散列算法,它是不可逆的,无法直接解密。它的主要作用是将输入数据进行散列,生成一个固定长度的唯一哈希值。 然而,可以使用预先计算好的MD5哈希值的彩虹表(Rainbow Table)来尝试对MD5进行破解。彩…...
数据恢复篇: 如何在数据丢失后恢复照片
数据丢失的情况并不少见。如果您曾经遇到过图像丢失的情况,您可能想过照片恢复工具是如何工作的?可能会丢失多少数据图像?即使是断电也可能导致照片和媒体文件丢失。 话虽如此,如果你认为删除的照片无法恢复,那你就错…...
c++ 引用第三方库
文章目录 背景编写cmake代码里引用测试 背景 遇到一个c项目,想跑一些示例。了解下如何直接引用第三方库。 编写cmake 项目结构 myprojectincludexx.hmain.cppCMakeLists.txt CMakeLists.txt cmake_minimum_required(VERSION 3.28) project(velox_demo)set(CM…...
[数据集][目标检测]猪只状态吃喝睡站检测数据集VOC+YOLO格式530张4类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):530 标注数量(xml文件个数):530 标注数量(txt文件个数):530 标注类别…...
Redis中设置验证码
限制一分钟内最多发送5次,且每次有效时间是5分钟! String 发送验证码(phoneNumber) {key "shortMsg:limit:" phoneNumber;// 设置过期时间为 1 分钟(60 秒)// 使⽤ NX,只在不存在 key 时才能设置成功bool…...
使用hadoop进行数据分析
Hadoop是一个开源框架,它允许分布式处理大数据集群上的大量数据。Hadoop由两个主要部分组成:HDFS(Hadoop分布式文件系统)和MapReduce。以下是使用Hadoop进行数据分析的基本步骤: 数据准备: 将数据存储在HDF…...
架构师篇-7、企业安全架构设计及实践
摘要: 认识企业安全架构企业安全案例分析及实践 内容: 为什么做企业安全架构怎么做好安全架构设计案例实践分析&随堂练 为什么要做企业安全架构 安全是麻烦制造者? 整天提安全需求增加开发工作增加运维要求增加不确定性延后业务上线…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
