![b817e178dae039628438ff212bb5fc09.png](https://i-blog.csdnimg.cn/blog_migrate/1fe0a68c76c9b6ca1cb79afaca6b39e8.jpeg)
1、精确(条件)查询
select into 列名 from 表名 where 条件 order by 排序的列名 [asc升序或者 desc降序]
1.查询空值行
select Name from Teacher where Salary is null
![d5c3386b1840ea4cc3aa6fd9fdf74b69.png](https://i-blog.csdnimg.cn/blog_migrate/bcbdf3616bea953832e6c8ce1de6b4aa.jpeg)
2.查询返回限制行数(关键字:top percent)
显示Name列的前三行 top 为关键字
select top 3 Name from Teacher
![d279a1718246e447e348af5c66a1f88f.png](https://i-blog.csdnimg.cn/blog_migrate/862022084dbbed76e1f0f341963ace19.jpeg)
3.显示Name列的60% ,percent 为关键字
select top 60 percent Name from Teacher
![018d1bc8dfe50d5541aa8fa3b2061339.png](https://i-blog.csdnimg.cn/blog_migrate/70a3443f823fb586661a0f8a711dd6c9.jpeg)
![f0ad20cbcd800ec274f89a66533e2f66.png](https://i-blog.csdnimg.cn/blog_migrate/a0a431574065dd74bbdd18d8cf3d3d4c.jpeg)
2、模糊(条件)查询
1.使用like类型查询
说明:like运算符只用于字符串,所以仅与char和varchar数据类型联合使用
select * from Teacher where Name like 'a%'
![ba8a63dff3b1b59306b3f3e5ef9d5445.png](https://i-blog.csdnimg.cn/blog_migrate/166a18cf3bcb2d1158ad699e866b2504.jpeg)
2.between范围查询
select * from Teacherwhere Age between 21 and 23
![1fb134b33c9a914583f4aa9d84f7eee5.png](https://i-blog.csdnimg.cn/blog_migrate/df3efbf7a511529e9ac4f50ff45668c0.jpeg)
3.in类型 在列举值内进行查询
select * from Teacher where Age in(18,20,22)
![6fc781c9de269e4a8ab94b49cceaf6ba.png](https://i-blog.csdnimg.cn/blog_migrate/8350f1f16b4943baf4c7183e01bfa3bd.jpeg)
4、group by 分组查询
select Name as 姓名,AVG(Age) as 平均年龄 from Teacher group by Name
![4adb80d4649e5b49869335fc50926192.png](https://i-blog.csdnimg.cn/blog_migrate/35de632c0f4d3e865f7a16ee4cb83ba5.jpeg)
5.使用having 子句进行筛选
select Name as 姓名,AVG(Age) as 平均年龄 from Teacher group by Name having count(Age)>1
![36356e995c732b3f00e62444a716edab.png](https://i-blog.csdnimg.cn/blog_migrate/0d1c48baa4b705f9cc4895a56e12b5bb.jpeg)
having条件查询 和 where条件查询的区别:
where只能在没有分组时使用;
分组后只能使用having来限制条件。
![05043d786ea3ec0de883c6ca285f28fc.png](https://i-blog.csdnimg.cn/blog_migrate/9688850245731b05111800f3538d72a6.jpeg)
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
![4135c19e2f97bb8323f82353642617f1.png](https://i-blog.csdnimg.cn/blog_migrate/70861ccc0b9d5cc3730d4e52b2b55b82.jpeg)
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)
![c155b85913a1e50ddd4185881e90fc15.png](https://i-blog.csdnimg.cn/blog_migrate/576f8fb70537b4ada47051c10aa5e3a2.jpeg)
外连接查询
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
![77317b99441d455b1e668f49e814cb9b.png](https://i-blog.csdnimg.cn/blog_migrate/f6256716952f980134548a4113f2f830.jpeg)
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
![09758c13819c5f47c788792cec8442bd.png](https://i-blog.csdnimg.cn/blog_migrate/272dc6a84f0b62391dc85eddcd10aad3.jpeg)
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
![01c33df00bf8d9eac7d247d6e7e7ab2b.png](https://i-blog.csdnimg.cn/blog_migrate/5289397ed9ec2fb003a4b3dd53c5d96b.jpeg)