%代表任意多个字符_代表一个字符
如果我就真的要查%或者_,怎么办呢?使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用
select username from gg_user where username like'%xiao_%'escape'';
select username from gg_user where username like'%xiao%%'escape'';
A as B,就是给A起个别名叫B
select a.* from table_1 as a就是给table_1起个别名叫a,因此前面就可以使用a.*了
比如name as 姓名这样的话,查询出来的列就是写姓名
select中distinct一、单表查询练习
1、查询<;学生信息表>,查询学生"张三"的全部基本信息
Select *
from A_studentinfo
where sname='张三'
2、查询<;学生信息表>,查询学生"张三"和”李四”的基本信息
Select *
from A_studentinfo
where sname='张三'
or sname='李四'
3、查询<;学生信息表>,查询姓"张"学生的基本信息
Select *
from A_studentinfo
where sname like '张%'
4、查询<;学生信息表>,查询姓名中含有"四"字的学生的基本信息
Select *
from A_studentinfo
where sname like '%四%'
5、查询<;学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。
select *
from A_studentinfo
where sname like '李_强'
6、查询<;学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。
Select *
from A_studentinfo
where sname like '张%'
or sname like '李%'
7、查询<;学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息
Select *
from A_studentinfo
where sname like '张%'
and province='北京'
8、查询<;学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息
Select *
from A_studentinfo
where province in ('北京','上海','新疆','山东')
9、查询<;学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息
Select *
from A_studentinfo
where sname like '张%'
and province !='北京'
10、查询<;学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序
select *
from A_studentinfo
order by sex,province,class
11、查询<;学生信息表>,查询现有学生都来自于哪些不同的省份
select distinct province as 省份
from A_studentinfo
12、查询<;学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩
Select *
from A_studentcourse
where score is null
13、查询<;学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序Select *
from A_studentcourse
where score is not null
order by score desc
二、聚合函数练习
1、统计<;学生信息表>,统计共有多少个学生
Select count (*) as 学生数量
from A_studentinfo
2、统计<;学生信息表>,统计年龄大于20岁的学生有多少个
Select count(*)  as 学生数量
from A_studentinfo
where (2008-yearofbirth)>20
3、统计<;学生信息表>,统计入学时间在1980年至1982年的学生人数
select count(*) as 学生数量
from A_studentinfo
where enrollment between '1998-01-01' and '2003-12-30'
对比以下查询方式,看看有何不同,为什么?
select count(*) as 学生数量
from A_studentinfo
where enrollment between '1998' and '2003'
4、统计<;学生选修信息表>,统计学号为"S001"的学生的平均成绩
Select  avg(score)  as 平均成绩
from A_studentcourse
where sno='S001'
5、统计<;学生选修信息表>,统计学号为"S001"的学生的总成绩
select  sum(score)  as 总成绩
from A_studentcourse
where sno ='S001'
6、统计<;学生选修信息表>,查询课程号为”C001”的课程的最高成绩
select max(score)  as 最高成绩
from A_studentcourse
where cno='C001'
7、统计<;学生信息表>,查询所有学生中的最大年龄是多少
select  2008-min(yearofbirth) as 最大年龄
from  A_studentinfo
三、分组查询练习
1、统计<;学生选修信息表>,统计每个课程的选修人数
select cno,count(*)  as 学生数量
from A_studentcourse
group by cno
2、统计<;学生选修信息表>,统计每个同学的总成绩
select sno,sum(score) as 总成绩
from A_studentcourse
group by sno
3、统计<;学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序select class as 班级,sex as 性别, count(*) as 人数
from A_studentinfo
group by class,sex
order by class
4、统计<;学生选修信息表>,统计每门课程的平均成绩,并按照成绩降序排序
Select cno,avg(score) as 平均成绩
from A_studentcourse
group by cno
order by avg(score) desc
5、统计<;学生选修信息表>,显示有两门以上课程不及格的学生的学号
Select  sno as 不及格学生学号
from A_studentcourse
where score<60
group by sno
having count(*)>1
(1. Group By 语句简介:
Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
2. Group By 的使用:
2.1 Group By [Expressions]:
这个恐怕是Group By语句最常见的用法了,Group By + [分组字段](可以有多个)。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。比如有如下数据集,其中水果名称(FruitName)和出产国家(ProductPlace)为联合主键:
FruitName ProductPlace Price
Apple China$1.1
Apple Japan$2.1
Apple USA$2.5
Orange China$0.8
Banana China$3.1
Peach USA$3.0
如果我们想知道每个国家有多少种水果,那么我们可以通过如下SQL语句来完成:
SELECT COUNT(*) AS水果种类,ProductPlace AS出产国
FROM T_TEST_FRUITINFO
GROUP BY ProductPlace
这个SQL语句就是使用了Group By + 分组字段的方式,那么这句SQL语句就可以解释成“我按照出产国家(ProductPlace)将数据集进行分组,然后分别按照各个组来统计各自的记录数量。”
2.2 Group By All [expressions] :
其中有这么一句话“如果使用ALL关键字,那么查询结果将包含由Group By子句产生的所有组...没有ALL关键字,那么不显示不符合条件的行组。”这句话听起来好像挺耳熟的,对了,好像和LEF T JOIN 和RIGHT JOIN 有点像。其实这里是类比LEFT JOIN来进行理解的。还是基于如下这样一个数据集:
FruitName ProductPlace Price
Apple China$1.1
Apple Japan$2.1
Apple USA$2.5
Orange China$0.8
Banana China$3.1
Peach USA$3.0
首先我们不使用带ALL关键字的Group By语句:
SELECT COUNT(*)AS水果种类,ProductPlace AS出产国
FROM T_TEST_FRUITINFO
WHERE(ProductPlace<>'Japan')
GROUPBY ProductPlace
那么在最后结果中由于Japan不符合where语句,所以分组结果中将不会出现Japan。
现在我们加入ALL关键字:
SELECT COUNT(*)AS水果种类,ProductPlace AS出产国
FROM T_TEST_FRUITINFO