【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';

 

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

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

相关文章

1262. 可被三整除的最大和(leetcode)

1262. 可被三整除的最大和&#xff08;leetcode&#xff09; 题目描述 给你一个整数数组 nums&#xff0c;请你找出并返回能被三整除的元素 最大和。 示例1 输入&#xff1a;nums [3,6,5,1,8] 输出&#xff1a;18 解释&#xff1a;选出数字 3, 6, 1 和 8&#xff0c;它们的和…

Redisson框架

1. Redisson锁与Redis订阅与发布模式的联系&#xff1a; Redisson锁中&#xff0c;使用订阅发布模式去通知等待锁的客户端&#xff1a;锁已经释放&#xff0c;可以进行抢锁。 publish channel_name message&#xff1a;将消息发送到指定频道 解锁时&#xff0c;在Lua解锁脚本…

Python: PyCharm 2023.1 调试

1.设断点 &#xff08;行号对应的红色点&#xff0c;在需要设置断点的代码行与行号之间鼠标点击即可以设置&#xff09; 2.shiftF9,或 altshiftf9 选择文件 或是在菜单 Run->debug "main" 或是在菜单Run->debug 选择文件 &#xff08;鼠标光标放在设置第一个…

Linux下安装RocketMQ:从零开始的消息中间件之旅

感谢您阅读本文&#xff0c;欢迎“一键三连”。作者定会不负众望&#xff0c;按时按量创作出更优质的内容。 ❤️ 1. 毕业设计专栏&#xff0c;毕业季咱们不慌&#xff0c;上千款毕业设计等你来选。 RocketMQ是一款分布式消息中间件&#xff0c;具有高吞吐量、低延迟、高可用性…

环回接口处理 IP 数据报的过程及 Loopback 接口的主要作用

环回接口处理 IP 数据报的过程 IPv4 中 传给环回地址&#xff08;127.0.0.1&#xff09;的任何数据均作为 IP 输入&#xff0c;直接送到环回接口&#xff08;环回&#xff1a;IP 输入队列&#xff09;。 传给广播地址或多播地址的数据报&#xff0c;会复制一份传给环回接口&…

GPT-5:AI新时代的领航者与我们的未来

一、引言&#xff1a;GPT-5的崭新时代 在科技的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;领域正迎来一个崭新的纪元。GPT-5&#xff0c;作为OpenAI的最新成果&#xff0c;无疑将成为这个新时代的领航者。从GPT-1到GPT-4&#xff0c;我们见证了AI在自然语言处理领域…

科普文:贝叶斯

概叙 贝叶斯推断&#xff08;Bayesian inference&#xff09;是一种统计学方法&#xff0c;用来估计统计量的某种性质。 它是贝叶斯定理&#xff08;Bayes theorem&#xff09;的应用。英国数学家托马斯贝叶斯&#xff08;Thomas Bayes&#xff09;在1763年发表的一篇论文中&am…

FreeBSD虚拟化解决之道:高效、安全、灵活的虚拟解决方案全览

FreeBSD下的虚拟化技术 虚拟化软件可让一台计算机同时运行多个操作系统。这种用于个人电脑的系统软件通常涉及一个运行虚拟化软件的宿主机&#xff08;host&#xff09;操作系统&#xff0c;并支持任何数量的客户机&#xff08;guest&#xff09;操作系统。 FreeBSD下的虚拟解…

在高并发场景下,怎样避免 PostgreSQL 的死锁问题?

文章目录 &#xff08;一&#xff09;不当的事务设计&#xff08;二&#xff09;不正确的锁使用&#xff08;三&#xff09;并发操作冲突&#xff08;一&#xff09;优化事务设计&#xff08;二&#xff09;正确使用锁&#xff08;三&#xff09;调整数据库参数&#xff08;四&…

热管的原理和棒芯的加工

当热管的一端受热时&#xff0c;毛细芯中的液体蒸发汽化&#xff0c;蒸汽在微小的压差下流向另一端&#xff0c;放出热量凝结成液体&#xff0c;液体再靠毛细力&#xff08;或重力&#xff09;的作用&#xff0c;沿多孔材料流回蒸发段。如此循环不已&#xff0c;热量便从一端传…

Nginx 通过代理服务器访问目标接口

需求&#xff1a;某Nginx需要通过一个http代理服务来访问目标URL。 如果下图所示&#xff1a; 服务器B仅提供一个代理出来&#xff0c;不允许在该服务器上安装和进行任何其他配置操作。 在这种需求场景下&#xff0c;网络请求过程和域名解析的工作流程大致如下&#xff1a; 1…

【软件测试】白盒测试(知识点 + 习题 + 答案)

《 软件测试基础持续更新中》 最近大家总是催更……&#xff0c;我也是百忙之中给大家详细总结了白盒测试的重点内容&#xff01; 知识点题型答案&#xff0c;让你用最短的时间&#xff0c;学到最高效的知识&#xff01; 整理不易&#xff0c;求个三连 ₍ᐢ..ᐢ₎ ♡ 目录 一、…

pp 学习一 生产模块主数据

生产成本&#xff1a;原材料是什么&#xff0c;价格多少&#xff0c;人工耗费时间&#xff0c;以及其他的费用 离散制造&#xff1a;有生产订单。工序是分开的&#xff08;可以停&#xff09; 重复制造&#xff1a;没有生产订单&#xff08;可能有客户下达的任务单或者计划订…

Unity扩展编辑器功能的特性

1.添加分组标题 用于在Unity的Inspector视图中为属性或变量组创建一个自定义的标题或头部&#xff0c;有助于在Inspector中组织和分类不同的属性&#xff0c;使其更易于阅读和管理。 [Header("Common Properties")] public float MouseSensitivity 5; public float…

STM32自己从零开始实操07:电机电路原理图

一、LC滤波电路 其实以下的滤波都可以叫低通滤波器。 1.1倒 “L” 型 LC 滤波电路 1.1.1定性分析 1.1.2仿真实验 电感&#xff1a;通低频阻高频的。仿真中高频信号通过电感&#xff0c;因为电感会阻止电流发生变化&#xff0c;故说阻止高频信号 电容&#xff1a;隔直通交。…

汽车电子工程师入门系列——AUTOSAR通信服务框架(中)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

vue使用scrollreveal和animejs实现页面滑动到指定位置后再开始执行动画效果

效果图 效果链接&#xff1a;http://website.livequeen.top 介绍 一、Scrollreveal ScrollReveal 是一个 JavaScript 库&#xff0c;用于在元素进入/离开视口时轻松实现动画效果。 ScrollReveal 官网链接&#xff1a;ScrollReveal 二、animejs animejs是一个好用的动画库…

python课程设计作业-TCP客户端-服务端通信

说明文档 目录 小组成员分工 作品功能介绍 使用的工具和方法 设计的步骤 课程设计中遇到的问题 结论 1. 小组成员分工 本次课程设计由以下小组成员完成&#xff1a; xxx 2. 作品功能介绍 本次课程设计的作品是一个简单的基于 TCP 协议的客户端-服务端通信示例。通过这个示…

什么是等级保护2.0?

等保的全称是信息安全等级保护&#xff0c;是《网络安全法》规定的必须强制执行的&#xff0c;保障公民、社会、国家利益的重要工作。 官方定义&#xff1a;等级保护是对信息和信息载体按照重要性等级分级别进行保护的一种工作&#xff0c;指对国家重要信息、法人和其他组织及公…

GuLi商城-商品服务-API-三级分类-删除-逻辑删除

注意&#xff1a;官方文档说logic配置可以省略&#xff0c;代码中直观些&#xff0c;配上吧 逻辑删除注解&#xff1a; 实体类字段上加逻辑删除注解&#xff1a; 启动nacos&#xff1a; 启动商品服务&#xff1a; postman测试&#xff1a; 数据库字段值改成了0&#xff0c;说明…