0
点赞
收藏
分享

微信扫一扫

mysql基础-DQL操作

infgrad 2022-04-08 阅读 67
mysql

DQL

date query language 数据库查询语言,关键字 select


# select 字段列表 from 表名 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数



1. 基本查询

查询多个字段


# 查询指定字段
select  字段1,字段2... from 表名

# 全部字段
select * from 表名

# 别名

select name as '名称' from test;

# as 可以省略

select name '名称' form test;

# 去重

select distinct name '名称' from test;

2. 条件查询

比较运算符


>   大于

>= 大于等于

<   小于

<= 小于等于

=  等于

<> 或 !=  不等于

between ... and ... 在某个范围内   between 后是最小值,and后跟最大值,包含最大值与最小值

in(...)  在in之后的列表中,多选一

like  模糊匹配(_ 代表单个字符,%匹配任意字符)

# 查询name只有两个字符的数据
select * from test where name like '--'

# 产险name以a结尾的数据
select form test where name like '%a'

is null 是null

逻辑运算符

and 或 &&   并且

or 或 ||    或者

not 或 !   不是


3.聚合函数

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

null 值不参与聚合函数运算


count()  总数

max()  最大值

min()   最小值

avg()   平均值

sum()   总和


select count(id) from test;


select avg(age) from test;

4. 分组查询

语法: select 字段列表 form 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]

  • where 与 having 区别

    • where 是分组之前进行过滤,不满足 where 条件不参与分组,having 是对分组之后结果进行过滤;

    • where 不能对聚合函数进行判断,而 having 可以


# 查询status =0 数据根据 category_id进行分组,统计各个分类的数据
# 5.7 版本启用严格模式,如果要同事查询分类名称,需要在group by 里面传入
SELECT category_id, category_name, COUNT(category_id) as nums  FROM app_subject  WHERE `status` = 0  GROUP BY  category_id,category_name

# 根据categroy_id 分组并且 category_id >7 的数量, as 可省略
SELECT category_id, category_name, count(category_id) nums  FROM app_subject    GROUP BY  category_id,category_name HAVING category_id>7


# 查询分组内数量大于7的
SELECT category_id, category_name, count(category_id) nums  FROM app_subject    GROUP BY  category_id,category_name HAVING count(category_id)>7

5. 排序

order by 字段 1 排序方式 1,字段 2,排序方式 2。。。

asc 升序(默认)

desc 降序

排序规则,先按照字段 1 排序,如果字段 1 一样,再按照字段 2 进行排序



# 先根据category_id 降序排序,categroy_id 一样时按照id降序排;
SELECT * from app_subject ORDER BY category_id desc, id desc ;



6. 分页查询

语法: select 字段 from 表 limit 起始索引,查询记录数;

起始索引从 0 开始


SELECT * from app_subject LIMIT 0,5;

# 第二页

SELECT * from app_subject LIMIT 5,5;

举报

相关推荐

0 条评论