1、精确(条件)查询
select into 列名 from 表名 where 条件 order by 排序的列名 [asc升序或者 desc降序]
1.查询空值行
select Name from Teacher where Salary is null
2.查询返回限制行数(关键字:top percent)
显示Name列的前三行 top 为关键字
select top 3 Name from Teacher
3.显示Name列的60% ,percent 为关键字
select top 60 percent Name from Teacher
2、模糊(条件)查询
1.使用like类型查询
说明:like运算符只用于字符串,所以仅与char和varchar数据类型联合使用
select * from Teacher where Name like 'a%'
2.between范围查询
select * from Teacherwhere Age between 21 and 23
3.in类型 在列举值内进行查询
select * from Teacher where Age in(18,20,22)
4、group by 分组查询
select Name as 姓名,AVG(Age) as 平均年龄 from Teacher group by Name
5.使用having 子句进行筛选
select Name as 姓名,AVG(Age) as 平均年龄 from Teacher group by Name having count(Age)>1
having条件查询 和 where条件查询的区别:
where只能在没有分组时使用;
分组后只能使用having来限制条件。
3、多表连接查询
内连接查询
1.在where子句中指定连接条件
语法:
select 表1字段,表2字段,... from 表1,表2 where 表1字段=表2字段
例如:
select Teacher.Name,Teacher.Age,TCourse.KPS from Teacher,TCourse where Teacher.Name=TCourse.Name
2.在from子句中使用 inner join...on
语法:
select 表1字段,表2字段,... from 表1 inner join 表2 on 表1字段=表2字段
例如:
select Teacher.Name,TCourse.Course from Teacher inner join TCourse on (Teacher.Name=TCourse.Name)
外连接查询
1.左外连接查询 left (outer) join ...on
语法:
select 字段1,字段2,... from 表1 left join 表2 on 条件(表1字段=表2字段)
说明:在此条件约束下,以表1所需查询字段为主,用表2所需字段内容填充,如果没有,则填充null或者默认值。
例如:
select Teacher.Name,TCourse.Ranks from Teacher left join TCourse on Teacher.Name =TCourse.Name
2.右外连接查询 right (outer) join ...on
语法:
select 字段1,字段2,字段3,... from 表1 riht join 表2 on 条件(表1字段=表2字段)
说明:在此条件约束下,以表2所需查询字段为主,用表1所需字段内容填充,如果没有,则填充null或者默认值。
例子:
select Teacher.Name,TCourse.Ranks from Teacher right join TCourse on Teacher.Name =TCourse.Name
3.全外连接查询 full (outer) join ...on
语法:
select 字段1,字段2,字段3,... from 表1 full join 表2 on 条件(表1字段=表2字段)
说明:在此条件约束下,表1所需查询字段和表2所需查询字段的集合,空缺字段 则填充null或者默认值。
例如:
select Teacher.Name ,TCourse.Ranks from Teacher full join TCourse on Teacher.Name =TCourse.Name