MySQL语句(一)
MySQL语句(一)
@
目录
DQL(数据查询语言)
DQL:数据表记录的查询,关键字select
1.无条件查询
-- 查询指定数据表中指定列数据
select 字段1,字段2,.... from 表名;
-- 查询所有字段时,字段名可以用 * 代替,查询具体字段时,需要声明字段名
select * from 表名;
select(选定):查询关键字,用来指定查询的字段
from(来自):表示从指定表中获取数据
别名查询
-- 查询时给指定列或者表取别名,使用as关键字
select 字段1 as 别名,字段2 as 别名 from 表名;
select 字段1 as 别名,字段2 as 别名 from 表名 as 表别名;
AS关键字是给字段,数据表,以及查询结果取别名,也可以省略不写
select name as '姓名',age as '年龄' from student;
--省略as关键字(中文引号也可以省略)
select name as '姓名',age '年龄' from student;
字段去重
--查询指定列并且返回结果是不重复数据
select distinct 字段1,字段2,... from 表名;
--当distinct后跟多个字段时,必须这些字段值都相同,才会去重
查询结果简单运算
select 字段1[+ - * / %]字段2/固定值 from 表名;
--查询test表中id,name列与math+englis的和并取别名'总成绩'
select id,name,math+english as 总成绩 from test;
2.条件查询
比较运算符和逻辑运算符
1.比较运算符:
大于: >
小于: <
小于等于: <=
大于等于: >=
等于: =
不等于: <> , !=
--查询test表中id大于3的所有数据
select * from test where id > 3;
2.逻辑运算符
and(&&):多个条件同时满足 一假即假 开发中用的最多个
or(||):多个条件其中一个满足 一真即真
not(!):不满足 取反
--查询test表中id大于3且年龄大于35的所有数据
select * from test where id > 3 and age >35;
in,between,and关键字
in关键字:括号里面的每个数据都作为一次查询条件,只要满足的就会显示;
select * from 表名 where 字段 in(值1,值2,值3,.....);
between and范围查询
--表示在值1到值2范围内,包含边界值(值1要小于值2)
between 值1 and 值2;
--语法格式
select * from 表名 where 字段 between 值1 and 值2;
3.模糊查询
通配符
%:表示任意个字符
_:表示一个字符
like(就像)关键字
--语法格式
select * from 表名 where 字段 like '通配符字符串';
name like '%张%'; --表示只要有张字就会满足
name like '张_' --表示名字姓张并且两字的;
4.查询排序
order by:将查询结果进行排序
select 字段1,字段2,字段3,... from 表名 where 条件语句 order by 字段 [asc/desc];
asc:升序排序(语法默认,可以省略)
desc:降序排序
--单列排序
select * from test order by id desc;
多列排序
1.排列规则:
先按第一个字段排序,若第一个字段相同就依次按其他字段排序,若第一个字段不同,其他字段就不参与排序
5.聚合函数
count:在根据指定的列统计的时候,**如果这一列中有null的行,该行不会被统计在其中**。按照列去统计有多少行数据。count(字段)
sum(): 计算指定列的数值和,如果不是数值类型,那么计算结果为0
max(): 计算指定列的最大值
min(): 计算指定列的最小值
avg(): 计算指定列的平均值
SELECT 聚合函数(字段) FROM 表名 where 条件;
6.分组查询
--按照某一列或者某几列,把相同的数据,进行合并输出(默认输出每组第一个记录数据)
select * from 表名 group by 字段1,字段2,....;
--分组后数据使用having过滤
select * from 表名 group by 字段 having 条件;
where与having区别:
1.where用于group by之前的数据过滤,having用于之后;
2.where后不能使用聚合函数,having可以
3.where可以单独使用,having建议和group by联用

浙公网安备 33010602011771号