DQL(重点,查询)
数据库在执行dql的时候,不会对数据进行任何的改变,仅仅是看看,看查询的结果也是一张表
查询表中所有列的数据
select * from 表名;
(能不用就不用select ,因为select * 在数据多时效率低,花费时间大)
查询所有,select * from 表名;
查询指定列的数据
select 列名1,列名2,……from 表名;
写那几列查哪几列
条件查询(重点)
where查询条件
关系运算符:> < = != >= <=
区间:between A and B(A和B之间)包含A和B
and &&:和 并且
or ||:或
not : 非,取反
where语法:
select 列名 from 表名 where 条件;
like模糊查询(这里很多我也不知道该怎么说QAQ):
%:代表多个关键字,一般用于以什么开头或以什么结尾,以及一段数据中包含什么;
_:单个关键字,一般用于直接查询指定多少个字符的一个数据;
标题在当前数据库查看其它数据库中的表:
show tables in 数据库名;
查看非当前数据库下表的数据:
select 列名(*) from 数据库.数据表名;
聚合函数
mysql中提供了对字段进行计算的聚合函数:
sum():对一整列数据进行求和;
count():统计个数 null不计数;
max/min:最大值/最小值;
avg():平均值
round():四舍五入
count 语法:
select count(想要查询的列名或*) from 表名;
sum 语法:
select sum(想要计算的列名) from 表名;
avg 语法:
select avg(想要计算的列名) from 表名;
round语法:
select round(想要计算的列名,小数点保留几位) from 表名;
case分段查询
case语法:
select 字段名 case when … end from 表名 …
下面是几个小例子
-----------------------------------手动分割线---------------------------------------------------
例题一:
例题二
例题结束
------------------------------手动分割线--------------------------------------------------------
group by分组查询
group by语法:
select 列名 from 表名 group by 查询条件的列名
例题一
order by分组查询
order by语法:
select 列名 from 表名 … order by 根据什么条件排序 asc/desc
(acs升序/desc降序)
having:分组之后再过滤
having 和 where的区别:
where是过滤源数据,分组之前的过滤
having是分组之后过滤
表参考上文group by例题表
limit限制:
limiti语法:
select 列名 from 表名 … limit 5;(从头开始取5个数据)
select 列名 from 表名 … limit 1,5;(从1开始取5个数据)
limit限制结果数量
取一定数量的记录,一般和order by联用