order by:
语法结构1:
select 字段名1,字段名2...from 表名 order by 字段名1,字段名2... asc|desc;
示例:
select id from info order by desc;
语法结构2:
select 字段名1,字段名2...from 表名 where 字段名 >60 order by 字段名 desc,字段名 asc;
示例:
select socre from info where socre >60 order by socre desc;
对 group by 结果进行分组
使用 group by 语句来实现分组
通常结合聚合函数一起使用
可以按一个或者多个字段对结果进行分组
group by:
语法结构1:
select 聚合函数(根据这个字段名),被统计字段名 from 表名 where 被统计字段名 >=70 group by 被统计字段名;
示例:
select count(name),socre from info where socre >=70 group by socre;
group by 结合 order by
示例:
select count(name),socre from info where socre >=70 group by socre order by count(name) desc;
as :
结构语法1:给字段设置别名
select 字段名 as 新设的字段名,字段名 as 新设的字段名 from 表名;
示例:
select name as 姓名,socre as 成绩 from info;
select count(*)as cc from info;
语法结构2:给表设别名
select name 姓名,score 成绩 from info as i;
示例:
select name 姓名,score 成绩 from info as i; ###原字段或表名在库内不会被改变;as 可以省略
语法结构:
select *from 表名 where 字段名 like '字符%';
示例:
select *from info where name like 'z%'; ###匹配多个带有 z 字的字段
select *from info where name like 'l_s_'; ###匹配一个带有l和s的字段
子查询
也称作 内查询 或 嵌套查询
先于主查询被执行,其结果将作为外层主查询的条件
在增删改查中都可以使用子查询
支持多层嵌套
in 语句是用来判断某个值是否在给定的结果集中
语法结构:
select *from 表名 where 字段名1in(select 字段名1from 表名 where 字段名2in(select 字段名 from 表名));
示例:
select *from info where id in(select id from tmp where name in(select name from aba)); ###嵌套查询,先读括号里的值作为结果,给外层作为条件,由内而外
括号中的字段类型要与外层的字段类型匹配,才能被执行,否则不会被执行!
select a.id from(select id,name from info) a; ####这种嵌套也是可以的,不过得设置一个别名
示例:
select 'a'in('a','b','c'),'a' not in('a','b','c'); ###返回值 in :为1,成立 ;not in :0,不成立
select 97in('a','b','c'),'a' not in('a','b','c'); ###返回值 in :为0,不成立,不能与ASCII码相比 ;not in :0,不成立
like 、 not like
like :用来匹配字符串,如果匹配成功则返回1,否则为0。支持两种通配符:’%‘用于匹配任意数目的字符,而’_'只能匹配一个字符
not like :和 like 相反,如果没有匹配成功则返回1,否则为0。
示例:
select 'libai' like 'li%'; ### 返回值为1
select 'libai' like 'li___'; ### 返回值为0
select 'libai' not like 'li___'; ###返回值为1
select *from info where name like 'li__'; ###用于模糊查询info表中name字段中 带有li字符后面跟三位 的人名