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

 

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

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

相关文章

【人工智能学习之图像操作(六)】

【人工智能学习之图像操作&#xff08;六&#xff09;】 Hough变换直线检测圆检测 图像分割 Hough变换 在图像处理中&#xff0c;霍夫变换用来检测任意能够用数学公式表达的形状&#xff0c;即使这个形状被破坏或者有点扭曲 直线检测 import cv2 import numpy as np image …

利用微信开放标签<wx-open-launch-weapp>在H5中跳转微信小程序报错完美的解决方案

一、报错&#xff1a; [WXTAG] [JSCORE] The slot <template> or <script type"text/wxtag-template"> of <wx-open-launch-weapp> is missing 二、源码 官方源代码如下&#xff0c;<script type"text/wxtag-template"></sc…

美团外卖搜索基于Elasticsearch的优化实践--图文解析

美团外卖搜索基于Elasticsearch的优化实践–图文解析 前言 美团在外卖搜索业务场景中大规模地使用了 Elasticsearch 作为底层检索引擎&#xff0c;随着业务量越来越大&#xff0c;检索速度变慢了&#xff0c;CPU快累趴了&#xff0c;所以要进行优化。经过检测&#xff0c;发现…

gcop:简化 Git 提交流程的高效助手 | 一键生成 commit message

&#x1f496; 大家好&#xff0c;我是Zeeland。Tags: 大模型创业、LangChain Top Contributor、算法工程师、Promptulate founder、Python开发者。&#x1f4e3; 个人说明书&#xff1a;Zeeland&#x1f4e3; 个人网站&#xff1a;https://me.zeeland.cn/&#x1f4da; Github…

[SAP ABAP] 数据字典

ABAP数据字典是定义和管理数据库对象的工具 系统的所有全局数据类型以及数据库表结构等都需要在数据字典中创建和维护(数据字典中的对象对所有ABAP程序都是全局的) 通过数据字典&#xff0c;我们可以把数据库对象管理好&#xff0c;后续才能顺利的进行功能开发&#xff0c;SA…

华为面试题及答案——大数据

(1)namenode内存满了,如何进行扩容,调什么参数。 1. 增加 NameNode 的内存 在 hadoop-env.sh 文件中,可以增加 JVM 分配给 NameNode 的内存。通常是在 HADOOP_NAMENODE_OPTS 中增加 -Xmx 参数来增加最大堆内存。 export HADOOP_NAMENODE_OPTS="-Xmx8g -Xms4g ${HA…

集合,Collection接口

可动态保存任意多个对象&#xff0c;使用比较方便 提供了一系列方便操作对象的方法&#xff1a;add&#xff0c;remove&#xff0c;set&#xff0c;get等 使用集合添加删除新元素&#xff0c;代码简洁明了 单列集合 多列集合 Collection接口 常用方法 List list new Arra…

设计模式详解(一)——策略模式

策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型的设计模式&#xff0c;它允许你定义一系列算法&#xff0c;然后将它们封装起来&#xff0c;使它们可以相互替换。这样做的好处是&#xff0c;你可以动态地选择要使用的算法&#xff0c;而不必在运行时进行检查或…

多媒体基础

笔者按&#xff1a; 昨日复习的信息网络安全约莫是挂了&#xff0c;常言道&#xff1a;知耻而后勇。诚如斯言 于是决心多媒体是不能再挂了&#xff0c;不然直接变成xxx之流&#xff0c;自增笑耳 语雀链接&#xff1a;多媒体基础 一.多媒体计算机概述 媒体&#xff1a;承载信息…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-21多输入多输出通道

21多输入多输出通道 import torch from d2l import torch as d2ldef corr2d(X, K):"""计算二维互相关运算"""h, w K.shapeY torch.zeros((X.shape[0] - h 1, X.shape[1] - w 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,…

go语言DAY7 字典Map 指针 结构体 函数

Go中Map底层原理剖析_go map底层实现-CSDN博客 目录 Map 键值对key,value 注意&#xff1a; map唯一确定的key值通过哈希运算得出哈希值 一、 map的声明及初始化&#xff1a; 二、 map的增删改查操作&#xff1a; 三、 map的赋值操作与切片对比&#xff1a; 四、 通用所有…

[leetcode hot 150]第一百二十二题,买卖股票的最佳时机Ⅱ

题目&#xff1a; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得的 最大…

【C++】初识C++(一)

一.什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度 的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; 20世纪80年代&#xff0c; 计算机界提出了OOP(object o…

图形处理单元(GPU)在现代计算中的应用与挑战(研究论文框架)

摘要:随着高性能计算需求的日益增长,图形处理单元(GPU)已从专业的图形渲染处理器转变为具有高性能并行处理能力的多功能计算平台。本文将探讨GPU的核心优势、编程模型、在不同领域的应用以及面临的挑战和限制。此外,还将讨论GPU技术的未来发展趋势和潜在的研究机会。 关键…

mongodb 查询语句学习笔记

基础查询 正则查询 {status: A,$or: [{ qty: { $lt: 30 } }, { item: { $regex: ^p } }] }AND 查询 { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" }OR 查询 { $or: [ { status: "A" }, { qty: { $lt: 30 } …

2024年机动车签字授权人题库,助你冲刺!绝对不会让你后悔!

61.&#xff08;&#xff09;使汽车按驾驶人选定的方向行驶。 A.传动系统 B.行驶系统 C.转向系统 D.制动系统 答案&#xff1a;C 62.&#xff08;&#xff09;使汽车各总成及部件安装在适当的位置&#xff0c;对全车起支承作用以保证汽车正常行驶。 A.传动系统 B.行驶系…

01.计算机图形学概述

01.计算机图形学概述 从技术的角度上看&#xff0c;什么是一个好的画面&#xff1f; 直接看这个画面是不是足够亮&#xff0c;这体现了渲染中的一个技术叫全局光照。 应用范围 游戏&#xff08; Video Games&#xff09;电影/特效&#xff08; Movies&#xff09;动漫/动画&…

如何让Linux系统变得更安全?

本文尝试从linux安全加固、漏洞利用及防御措施、安全意识三个方面思考如何让linux系统变得更加安全. 一、linux常见安全加固操作 对Linux系统进行详细的安全加固操作,可以从多个方面进行,包括系统更新和补丁管理、用户和权限管理、网络安全配置、文件和系统安全、日志和审计…

Qt代码分析

要使用代码分析工具&#xff0c;请在Analyze菜单或(Start Debugging of Startup Project)按钮的下拉菜单中选择它。当您处于调试模式时&#xff0c;您可以通过在调试器工具栏上的菜单中选择工具来切换工具。 您可以将调试模式下的视图拖放到屏幕上的新位置。意见的大小和立场将…

c++关键字default,delete

文章目录 概述defaultdelete 小结 概述 在看一些开源项目的源码的时候&#xff0c;经常会看到default和delete。这2个关键字究竟什么意思呢&#xff1f;这篇文章就来一点一点拆解下。 default 默认构造函数、拷贝构造函数、移动构造函数、拷贝赋值运算符、移动赋值运算符和析…