标签:空字符串 指定字段 包含 group by min 通配 不同 off 包括
一、简单查询
select语句:
指定所有字段:select 字段1,字段2,··· from 表名;
使用星号(*)通配符代替所有字段:select * from 表名; (一般情况下最好不使用星号通配符,虽然查询数据多但是效率低)
查询指定字段:select 字段1,字段2,··· from 表名;
按条件查询:
select 字段1,字段2,··· from 表名 where 条件表达式;
关系运算符 如:<> 和 != 表示不等于
**带 in 关键字的查询 (in表示判断某个元素是否在指定集合中)
select 字段1,字段2,··· from 表名 where 条件表达式 [not] in (元素1,元素2,···);
如:查询student表中id的值为1,2,3的记录,(student表中有id,grade,name,gender字段)语句如下:
select id,grade,name,gender from student where id in(1,2,3)
**带between and 关键字查询 (值1表示起始值,值2表示结束值 between and 表示的是闭区间,而not between and表示的开区间)
select 字段1,字段2,··· from 表名 where 条件表达式 [not] between 值1 and 值2;
**空值查询(空值不同于0,也不同于空字符串)
select 字段1,字段2,··· from 表名 where 字段名 is [not] null;
**带distinct 关键字查询(字段名表示要过滤重复记录的字段)
select distinct 字段名 from 表名; (当要查询的字段有两个及两个以上时,只有要查询的字段全部相同才会被过滤掉)
如:select distinct gender from student;
返回结果 gender
男
女
NULL
(student表中不止一个男、女,distinct表示有区别的,不同种类的,所以该条语句返回的是没有重复值的)
**带like关键字的查询(模糊查询)
select *|{字段1,字段2,···} from 表名 where 字段名 [not] like ‘匹配字符串‘;
‘匹配字符串‘指定用来匹配的字符串,其值可以是一个普通字符串,也可以时包含百分号(%)和下划线(_)的通配字符串
1.百分号(%)通配符:匹配任意长度的字符串,包括空字符串 s%、%s、s%s 分别表示以s开头,以s结尾,包含s的字符串
2.下划线(_)通配符:只匹配单个字符,一个‘_‘代表一个字符。如果使用多个下划线匹配多个连续的字符,下划线之间不能有空格
3.如果要匹配字符串中的下划线或百分号,就需要通配符字符串中使用右斜线("\")对百分号或下划线进行转义。如“\%”匹配百分号字面值,“\_”匹配下划线字面值
**带and关键字的多条件查询
select *|{字段1,字段2,···} from 表名 where 条件表达式1 and 条件表达式2 [··· and 条件表达式n];
**带or关键字的多条件查询
select *|{字段1,字段2,···} from 表名 where 条件表达式1 or 条件表达式2[··· or 条件表达式n];
or 和 and 关键字可以一起使用,但是 and 的优先级高于 or ,所以当两者一起使用时,应该先运算and两边的条件表达式,再运算or两边的条件表达式
二、高级查询
**聚合函数
1.count()函数 ——返回某列的行数
select count(*) from 表名;
2.sum函数 ——返回某列值的和
select sum(字段名) from 表名;
3.avg()函数 ——返回某列的平均值
select avg(字段名) from 表名;
4.max函数 ——返回某列的最大值
select max(字段名) from 表名;
5.min()函数 ——返回某列的最小值
**对查询结果进行排序
select 字段名1,字段名2, ··· from 表名 order by 字段名1 [asc|desc], 字段名2[asc|desc]···
(先按字段1排序,若字段1相同再按字段2排序,null值被认为是在最小值)
** 分组查询
select 字段名1,字段名2,··· from 表名 group by 字段名1,字段名2,··· [having 条件表达式];
1.单独使用group by 分组
如:查询student表中,按照gender字段值进行分组
select * from student group by gender;
2.group by 和聚合函数一起使用
如:将student表按照gender字段值进行分组查询,计算出每个分组中各有多少名学生
select count(*) gender from student group by gender;
3.group by 和 having关键字一起使用
如:将student表按照gender字段进行分组查询,查询出grade字段值之和小于300的分组
select sum(grade),gender from student group by gender having sum (grade)<300;
**使用limit限制查询结果的数量
select 字段名1,字段名2, ··· from 表名 limit [offset,] 记录数
(第一个参数offset表示偏移量,如果偏移量为0则从查询结果的第一条记录开始,偏移量为1,则从查询结果中的第二条记录开始,以此类推。offset为可选值,如果不指定其默认值是0.第二个参数记录数表示返回查询记录的条数)
**函数
条件判断函数
if(expr,v1,v2) ——如果expr表达式为true返回v1,否则返回v2
ifnull(v1,v2) ——如果v1不为null返回v1,否则返回v2
case expr when v1 then r1 [when v2 then r2 ··· ][else rn] end ——如果expr值等于v1、v2等,则返回对应位置then后面的结果,否则返回else后面的结果
三、为表和字段取别名
1.为表取别名
select * from 表名 [as] 别名;
2.为字段取别名
select 字段名 [as] 别名[, 字段名 [as] 别名,···] from 表名;
标签:空字符串 指定字段 包含 group by min 通配 不同 off 包括
原文地址:https://www.cnblogs.com/xfx-n/p/13943099.html