赞
踩
续上一期
(9)带or的多条件查询
语法:条件表达式1 or 条件表达式2 […or 条件表达式n]
示例1:我们用or关键字来查询employee表中d_id为1001,或者sex为’男’的记录
select * from employee where d_id=1001 or sex =’男’;
示例2:使用or关键字查询employee中的记录。条件为num取值在{1,2,3}这个集合中,或者age从24~25这个范围,或者或者homeaddr的取值中包含’北京市’。
注:or 和 and 可以一起使用,and要比or先运算。
select * from employee where num in(1,2,3) or age between 24 and 25 or homeaddr like ‘%北京市%’;
示例3:下面同时使用or和and查询employee表中的记录。
select * from employee where num in(1,2,3) and age =25 or sex =’女’;
说明:and和or关键字可以连接表达式。这些表达式中可以使用”=”,”>”,”
(10)查询结果不重复
在表中某些字段上没有唯一性约束,这些字段旧可能存在重复的值。我们看一下employee表。
select * from employee;
在查询数据的过程中,d_id中有重复值,我们使用distinct关键字来消除重复值。
语法:select distinct 属性名
注:属性名指要消除重复记录的字段的名词。
示例:我们使用distinct关键字消除表中的重复记录。
select distinct d_id from exployee;
(11)对查询结果排序
一般情况下,查询出来的数据是无序的,我们可以使用order by关键字来排序
语法:order by 属性名 [ASC|DESC]
我们查询employee表,按照age字段进行排序。
先查看一下age的原始结果
示例:select * from employe order by age;
注:不加ASC或者DESC时,默认按照升序排序。
我们使用order by desc 进行降序排序
mysql中可以指定多个字段进行排序;我们尝试将employee表中的d_id字段和age字段进行排序。排序过程中先按照d_id字段进行排序,遇到d_id字段的值相等时,再把d_id值相等的记录按照age字段进行排序。
(12)分组查询
group by可以将查询结果按某个字段或多个字段进行分组。字段中值相等的为一组。
语法:group by 属性名 [having 条件表达式][with rollup]
属性名:指按照该字段的值进行分组;
having条件表达式:用来限制分组后的显示,满足条件的表达式将被显示;
with rollup:关键字将会在所有记录的最后加上一条记录。该记录是上面所有记录的总和。
group by关键字可以和group_concat()函数一起使用。group_concat()函数会把每个分组中
指定字段的值都显示出来。同事,group by关键字通常与集合函数一起使用。集合函数包括count()、sum()、avg()、max()、和min()。其中:
count()用来统计记录的条数;
sum()用来计算字段的值得总和;
avg()用来计算字段的值得平均值;
max()用来查询字段的最大值;
min()用来查询字段的最小值;
1. 单独使用group by关键字来分组
下面按employee表的sex字段进行分组查询,查询结果与分组前结果进行对比。
分组前:select * from employee;
分组后:select * from employee group by sex;
2. group by关键字与group_concat()函数一起使用
group by关键字与group_concat()函数一起使用时,每个分组中指定字段都会显示出来。
下面我们employee表中sex字段进行分组,使用group_concat()函数将每个分组的name字段的值显示出来。
示例:select sex,group_concat(name) from employee group by sex;
3. group by关键字与集合函数一起使用
group by关键字与集合函数一起使用时,可以通过集合函数计算分组中的总记录,最大值,最小值等。
我们按employee表的sex字段进行分组查询。sex字段取值相同的为一组,然后使用集合函数进行计算,求出记录数。
select sex,count(sex) from employee group by sex;
注:通常,group by关键字与集合函数一起使用。集合函数包括count()、sum()、max()、min()、avg()。通常先使用group by关键字将记录分组,然后每组都使用集合函数进行计算。
4. group by关键字与having一起使用
“having”关键字,可以限制输出结果
下面按employee表中的sex字段进行分组查询,然后显示记录大于等于3的记录。
select sex,count(sex) from employee group by sex having count(sex)>=3;
结果只显示了取值为“男”的记录数。分组中男的记录数是5,刚好满足having count>3的条件。
5. 按多个字段进行分组
示例:employee表按照d_id字段和sex字段进行分组。分组过程中,先按照d_id字段的值进行分组。遇到d_id字段的值相等的情况是,再把d_id值相等的记录按照sex字段分组。
select * from employee group by d_id,sex;
6. group by关键字与with rollup一起使用
使用with rollup时,将会在所有记录的最后加上一条记录。这条记录是上面所有记录的总和。
我们employee表中的sex字段进行分组查询,使用count()函数计算每组的记录数。
select sex,count(sex) from employee group by sex with rollup;
示例:按employee表的sex字段进行分组查询。使用group_concat()函数查看每组name字段的值。并加上with rollup。
select sex,group_concat(name) from employee group by sex with rollup;
(13)用limit限制查询结果的数量
1.不指定初始位置
limit不指定初始位置,记录从第一天开始显示,显示记录条数有关键字limit指定。
语法:limit 记录数
下面我们查询employee表的记录,只显示3条
select * from employee limit 3;
2.指定初始位置
语法:limit 初始位置,记录数
初始位置:指参数从那条记录开始显示
记录数:参数表示显示记录的条数。
select * from employee limit 0,2;
注:limit关键字是mysql中特有的。limit关键字可以指定需要显示的记录的初始位置,0表示第一天记录。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。