Mysql-DQL查询

目录

1.DQL

基本语法

基本查询

条件查询

聚合函数

分组查询

排序查询

分页查询


1.DQL

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

查询关键字:select

基本语法

SELECT    

        字段列表
FROM    

        表名列表
WHERE    

        条件列表
GROUP  BY    

        分组字段列表
HAVING    

        分组后条件列表
ORDER BY    

        排序字段列表
LIMIT    

        分页参数

基本查询

1.查询多个字段

select  字段1, 字段2, 字段3 ...  from 表名 ;

select  * from 表名;

2.设置别名

select  字段1  [ AS  别名1 ] , 字段2  [ AS  别名2 ]   ...  from 表名;

select  字段1  [ 别名1 ] , 字段2  [ 别名2 ]   ...  from 表名;

3.去除重复记录

select  distinct 字段列表  from 表名;

条件查询

关键字:where

  • 用于检索数据表中符合条件的记录
  • 搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假
  • 搜索条件的组成
    • 逻辑操作符
    • 比较操作符

语法:

select  字段列表  from 表名   where  条件列表 ;

条件:

比较运算符:

操作符名称

语法

描述

IS NULL

a IS NULL

若操作符为NULL,则结果为真

IS NOT NULL

a IS NOT NULL

若操作符不为NULL,则结果为真

BETWEEN

a BETWEEN b AND c

a范围在bc之间则结果为真

LIKE

a LIKE b

SQL模式匹配,若a匹配b,则结果为真

IN

a IN (a1,a2,a3,….)

a等于a1a2…中的某一个,则结果为真

逻辑运算符:

操作符名称

语法

描述

AND&&

a AND b a && b

逻辑与,同时为真,结果才为真

OR||

a OR b a||b

逻辑或,只要一个为真,则结果为真

NOT或!

NOT a !a

逻辑非,若操作数为假,结果则为真

between  and 范围查询

select 字段列1,字段2 ,…from 表名 where  字段x  between  值1 and  值2 

like 模糊查询

  • 与 “ % ” 一起使用,表示匹配 或任意多个字符
  • 与 “ _  ” 一起使用,表示匹配单个字符

eg:

select  *  from user where idcard  like "%X";

in 范围查询

select  字段列1,字段2 ,… from  表名  where  字段x  in ( 1,2,3…) 

NULL空值条件查询

  • NULL代表”无值"
  • 区别于零值0和空符串 ""
  • 只能出现在定义允许为 NULL 的字段
  • 需使用 is null 或 is not null 比较操作符去比较

聚合函数

        将一列数据作为一个整体,进行纵向计算。

常见的聚合函数

函数 功能
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和

语法:

select  聚合函数(字段列表)from 表名;

注意:null值不参与计算

分组查询

关键字:group by

select 字段列表  from 表名 [where  条件 ] group by  分组字段名  [ having 分组后过滤条件 ];

 where与having区别:

  1. 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  2. 判断条件不同:where不能对聚合函数进行判断,而having可以。

注意:

  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
  • 执行顺序:where > 聚合函数 > having 
  • 支持多字段分组, 具体语法为 : group by columnA,columnB

eg:

根据性别分组,统计男,女员工数量

select  gender, count(*)  from  emp group by gender ;

根据性别分组 , 统计男性员工 和 女性员工的平均年龄

select  gender, avg(age) from emp group by gender ;

查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址

select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;

排序查询

关键字:order by

语法:

select  字段列表  from  表名  order by  字段1  排序方式1 , 字段2  排序方式2 ;

排序方式:

  • ASC :升序(默认值)
  • DESC :降序

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

eg:根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序

select * from emp order by age asc , entrydate desc;

分页查询

关键字:limit (mysql)

语法:

select 字段列表  from  表名  limit  起始索引, 查询记录数 ;

注意事项

  • 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。

eg:

查询第1页员工数据, 每页展示10条记录

select * from emp limit 0,10;

select * from emp limit 10;

查询第2页员工数据, 每页展示10条记录 --------> (页码-1)*页展示记录数

select * from emp limit 10,10;

你可能感兴趣的:(Mysql,mysql,数据库,sql)