MySQL语法2

news/2025/2/16 6:06:05/

DQL语句介绍

DQL是数据查询语言,用来查询数据库中表的记录

DQL-基本查询语句

 SELECT

字段列表

 FROM

表名列表

 WHERE

条件列表

 GROUP BY

分组字段列表

 HAVIMG

分组后条件列表

 ORDER BY

排列字段列表

 LIMIT

分页参数

讲解过程:基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询

DQL-基本查询

  1. 查询多个字段

SELECT 字段1,字段2,字段3,... FROM表名;

SELECT name,wordno

FROM emp;

SELECT * FROM 表名;(查询返回所有字段)

SELECT *

FROM emp

  1. 设置别名

设置别名SELECT 字段1[AS 别名],字段2[AS 别名]。。。FROM 表名;

SELECT entrydate as '入职日期'

FROM emp;

  1. 去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

SELECT DISTINCT entrydate as '入职日期'

FROM emp;

DQL-条件查询

1.语法

SELECT * FROM 表名;(查询返回所有字段)

  1. 条件

比较运算符

功能

>

大于

>=

大于等于

<

小于

<=

小于等于

=

等于

<>或!=

不等于

BETWEEN...AND...

在某个范围之类(含最小值、最大值)

IN(...)

在in之后的列表中的值、多选一

LIKE占位符

模糊匹配(_匹配单个字符,%匹配日任意个字符)

IS NULL

是NULL

逻辑运算符

功能

AND或 &&

并且(多个条件同时成立)

OR或||

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

NOT或!

非,不是

实例代码:

查询年龄小于20的员工姓名:

SELECT name
FROM emp
WHERE age<20;

查询年龄小于等于20 的员工姓名:

SELECT *
FROM emp
WHERE age<=20;

查询身份证号为空的员工:

SELECT *
FROM emp
WHERE idcard is null;

查询15到20岁之间的员工(不包含):

SELECT *

FROM emp

WHERE 15<age AND age<20;(开区间)

查询15到20岁之间的员工(包含)SELECT *

FROM emp

WHERE age BETWEEN 15 AND 20(含最小值、最大值)

查询15岁、20岁、23岁的员工SELECT * FROM emp WHERE age=18 || age = 20 || age = 23; 与IN()替换效果相同:SELECT *  FROM emp  WHERE age IN(18,20,23);

查询姓名为三个字的员工信息:

SELECT *

FROM emp

WHERE name like '___';

查询身份证号最后一位为6的员工信息:

SELECT *

FROM emp

WHERE idcard like '%6';

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

DQL-聚合函数

  1. 聚合函数:将一列数据作为一个整体,进行纵向计算
  2. 常见聚合函数:

函数

功能

Count

统计数量

Max

最大值

Min

最小值

Avg

平均值

Sum

求和

  1. 语法:

SELECT 聚合函数(字段列表) FROM 表名;

实例:

求员工总人数:

SELECT COUNT(*) as'总人数'

FROM emp;

求员工平均年龄:

SELECT avg(age) AS '员工平均年龄'

FROM emp;

求员工中最大年龄:

SELECT max(age) as '最大年龄'

FROM emp;

求员工中最小年龄:

SELECT min(age) AS '最小年纪'

FROM emp;

求员工中男生年龄总和:

SELECT sum(age) AS '男生年龄之和'

FROM emp

WHERE gender = '男';

DQL-分组查询

  1. 语法:

SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];

实例:

按照性别分组,显示各个性别人数;

SELECT gender,COUNT(*) as '人数'

FROM emp

GROUP BY gender;

按照性别分组,显示各个性别平均年龄;

SELECT gender ,avg(age) as '平均年龄'

FROM emp

GROUP BY gender;

筛选年龄30以下,按照年龄分组,展示人数大于等于2的:

SELECT age , count(*)

FROM emp

WHERE age <30

GROUP BY age

HAVING count(*)>=2;

  1. WHERE和HAVING区别

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

>判断条件不同:WHERE不能对聚合函数进行判断,而HAVING可以。

注意:

  1. 执行顺序:WHERE>聚合函数>HAVING
  2. 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

DQL-排序字段列表

  1. 语法

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

  1. 排序方式:

>ASC:升序(默认值)

>DESC:降序

实例:

按员工年龄大小正序排列

SELECT *

FROM emp

ORDER BY age ;

按入职时间长短排序

SELECT *

FROM emp

ORDER BY entrydate;

按年龄大小排序,相同年龄按入职时间倒叙排列

SELECT *

FROM emp

ORDER BY age ,entrydate DESC;

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

DQL-分页查询(方言:不同数据库语法不同)

  1. 语法

SELECT 字段列表 FROM 表名LIMIT 起始索引,查询记录数;

实例:

查询第一页,每页展示3条数据

SELECT *

FROM emp

LIMIT 0,3;

查询第二页,每页展示3条数据

SELECT *

FROM emp

LIMIT 3,3;

查询第三页,每页展示3条数据

SELECT *

FROM emp

LIMIT 3,3;

注意:

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

分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT

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

DQL-练习:

查询性别为男,年龄为20,21,23的员工;

SELECT *

FROM emp

WHERE gender = '男' AND age IN (20,21,23);

查询年纪20到40之间,姓名为三个字的男生;

SELECT *

FROM emp

WHERE gender= '男'AND name like '___' AND age BETWEEN 20 and 40;

查询年龄小于60,的男女数量;

SELECT gender,count(*)

FROM emp

WHERE age <60

GROUP BY gender;

查询所有小于等于35岁员工的姓名和年纪,并对结果按年龄升序排序,如果年纪相同按入职时间降序排列;

SELECT *

FROM emp

WHERE age <= 35

ORDER BY age ASC, entrydate DESC;

查询性别男,且年龄在20-40岁(含)以内的五个员工,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。

SELECT *

FROM emp

WHERE age BETWEEN 20 and 40 AND gender = '男'

ORDER BY age ,entrydate

LIMIT 0,5;

DQL语句-执行顺序

 

 

MySQL-DCL语句

介绍:DCL数据控制语言,用来管理数据库用户、控制数据库的访问权限。

DCL-管理用户:

  1. 1.查询用户表

  USE mysql ;

  SELECT * FROM user;

  1. 创建用户:

CREATE USER 用户名@主机名 IDENTIFED BY 密码

  1. 修改用户密码:

 ALTER USER 用户名@主机名 IDEBTIFIED WITH mysql_native_passwoerd BY 新密码

  1. 删除用户:

DROP USER 用户名@主机名;

查询用户表:

USE mysql;

SELECT * FROM user;

创建用户:

CREATE user 'GUI1'@'%' identified by '123456';

修改用户密码:

ALTER USER 'GUI1'@'%' identified with mysql_native_password by '1234';

删除用户:

drop user 'GUI1'@'%';

DROP USER 'GUI'@'localhoust';

注意:

主机名可以使用%统配。

这类SQL开发人员操作的比较少,主要DBA数据库管理员使用;

DCL-权限控制

权限

说明

ALL,ALL PRIVILEGES

所有权限

SELECT

查询数据

INSERT

插入数据

UPDATE

修改数据

DELETE

删除数据

ALTER

修改表

DROP

删除数据库/表/视图

CREATE

创建数据库/表

其他权限描述及其含义,可以参考官方文档

  1. 查询权限:

SHOW GRANTS FOR 用户名@主机名;

  1. 授予权限:

GRANT 权限列表 ON 数据库名.表名 TO 用户名@主机名;

GRANT ALL on sjk01.* TO 'GUI1'@'%';

  1. 撤销权限:

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@主机名

revoke all on sjk01.* from 'GUI1'@'%';

查询权限:

SHOW GRANTS FOR GUI1;

授予权限

GRANT ALL on sjk01.* TO 'GUI1'@'%';

撤销权限:

revoke all on sjk01.* from 'GUI1'@'%';


http://www.ppmy.cn/news/1002116.html

相关文章

2023年华数杯数学建模B题思路代码分析 - 不透明制品最优配色方案设计

# 1 赛题 B 题 不透明制品最优配色方案设计 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此&#xff0c;不透明 制品的配色对其外观美观度和市场竞争力起着重要作用。然而&#xff0c;传统的人工配色 存在一定的局限性&#xff0c;如主观性强、效率低下等。因此…

消息队列项目(1)

概念 这里的消息队列, 大致上就是一个生产者消费者模型. 我这个消息队列是仿照 RabbitMQ 的实现原理来进行编写的 需求分析 有几个核心的概念: 生产者(Producer)消费者(Consumer)中间人(Broker)发布(Publish) :生产者向中间人投递消息的过程订阅(Subcribe) :记录哪些消费者…

kube-state-metrics暴露k8s中的监控指标

kube-state-metrics 是一个用于从 Kubernetes 集群中生成各种资源对象状态指标的工具。 通过Deployment等配置完成安装 https://github.com/kubernetes/kube-state-metrics/tree/main/examples/standard 根据官方给定的配置添加至k8s上 注意需要RBAC授权 启动项 要使 kube…

%eax and printf

if a function has variable arguments then AL (which is part of EAX) is expected to hold the number of vector registers used to hold arguments to that function.printf(“%f\n”,(float)x); use: .LFB0:.cfi_startprocpushq %rbp #.cfi_def_cfa_offset 16.cfi_o…

IIC子系统-实现si7006温湿度传感器采集温湿度功能

1.将IIC核心层和总线驱动层配置进内核 *********************配置核心层*************************1.找到核心层代码目录&#xff1a;内核顶层目录/drivers/i2c2. 内核顶层目录执行make menuconfig3. > Device Drivers > I2C support ->-*-I2C support4.保存退出***…

poium测试库之JavaScript API封装原理

为什么要封装JavaScript的API&#xff1f; 因为有些场景下Selenium提供的API并不能满足我们需求。比如&#xff0c;滑动浏览滚动条&#xff0c;控制元素的显示/隐藏&#xff0c;日历控件的操作等&#xff0c;都可以通过JavaScrip实现&#xff0c;而且Selenium为我们提供了 exe…

在中国人民大学与加拿大女王金融硕士项目的岁月,不会负了每个有心人

学习&#xff0c;就像是一场战争&#xff0c;有时你觉得在这拼命撕杀的战场上&#xff0c;你是孤独与无助的&#xff0c;但你殊不知&#xff0c;你其实并不是孤身奋战的&#xff01;学习路上会遇见很多有心人&#xff0c;在中国人民大学与加拿大女王金融硕士项目的岁月&#xf…

2023天猫休闲零食市场分析(天猫数据分析软件)

基于较大的人口基数以及人们对休闲零食的需求&#xff0c;我国的休闲零食市场始终保持着稳健的增长趋势&#xff0c;行业整体的规模也比较大。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;2023年1月份至4月份&#xff0c;天猫平台上休闲零食行业的销量为6亿&#xff…