前面两篇文章中,SqlServer 建库建表(SqlServer系列 : 篇一)-CSDN博客、SqlServer 增、删、改(SqlServer系列 : 篇二)-CSDN博客,我们分别针对建表建库,增、删、改分别做了代码演示和基本讲解,在这一篇章中,我们主要针对查询进行学习,我们将以六种查询方法进行讲解(基本查询、条件查询、聚合查询、模糊查询、分组查询、多表查询)。
1.基本查询
基本查询语法 : select 查询的字段名 from 表名
基本查询使用select关键字,如果查询字段名使用 * 则将会查询全部信息,如果写字段名称则会查询字段名相对应的数据。下面以两个案例演示
案例一 : 使用 * 进行查询
--查询所有班级
select * from Class
--查询所有学生
select * from Student
--查询所有老师
select * from Teacher
此案例中,我们使用*进行了查询,所以展示出来了全部数据
案例二 : 指定查询字段
--查询学生表中的姓名,性别,年龄三个字段,并且使用对应中文在表头展示
select name as 姓名,sex as 性别,age as 年龄 from Student
此案例中,我们指定查询了name,sex,age字段,并且使用as关键字对其表头添加了别名。
2.条件查询
SqlServer中常用的查询关键字
=:等于,比较是否相等及赋值
!=:比较不等于
>:比较大于
<:比较小于
>=:比较大于等于
<=:比较小于等于
IS NULL:比较为空
IS NOT NULL:比较不为空
in:比较是否在其中
like:模糊查询
BETWEEN...AND...:比较是否在两者之间
and:逻辑与(两个条件同时成立表达式成立)
or:逻辑或(两个条件有一个成立表达式成立)
not:逻辑非(条件成立,表达式则不成立;条件不成立,表达式则成立)case when ... then ... end : 类似于java中的swith语句
条件查询语法结构
select 查询的字段名 from 表名 where 条件
条件查询在基本查询的基础上面添加了where关键字,可以where后面添加查询条件,当然在查询字段名称中也可以使用case条件查询,但是case查询只是针对显示进行条件判断,无法对查询条件条件判断。
案例一 : 条件查询语法演示
--查询年年龄为25岁的学生信息
select * from Student where age=25
案例二 : 单条件查询和多条件查询
--查询年龄大于26岁的学生信息(单条件)
select * from Student where age>26
--查询年龄大于一百岁且性别为男的老师(多条件查询)
select * from Teacher where age>100 and sex='男'
多条件查询使用and进行连接
案例三 : case关键字使用
--根据性别另起一列显示出他的称呼
select name,age,
case(sex)
when '男' then '先生'
when '女' then '女士'
else '同学'
end
as 称呼
from Student
3.聚合查询
聚合查询其实就是使用聚合函数进行查询,常用的聚合函数如下
count:求数量
max:求最大值
min:求最小值
sum:求和
avg:求平均值
案例一 : 统计有几个老师
--统计有有几个老师
select COUNT(*) as 老师人数 from Teacher
案例二 : 查询年龄最大和最小教师的个人信息
--求年龄最大的老师
select * from Teacher where age=(select Max(age) from Teacher )
--求年龄最小的学生
select * from Student where age=(select Min(age) from Student )
案例三 : 查询所有学生年龄总和和年龄平均值
--计算班级所有学生年龄总和
select SUM(age) 年龄总和 from Student
--求班级所有学生年龄平局值
select avg(age) 年龄总和 from Student
4.模糊查询
模糊查询通常使用like关键字+通配符使用,下面是常用的通配符
%:代表匹配0个字符、1个字符或多个字符。
_:代表匹配有且只有1个字符。
[]:代表匹配范围内
[^]:代表匹配不在范围内
模糊查询基本语法
select 查询字段名称 from 查询表名称 where 条件字段名称 like '模糊查询条件'
案例一 : %的使用
-- 查询姓张的老师信息
select * from Teacher where name like '张%'
案例二 : _ 的使用
--查询名字最后一个字叫做一的老师信息,且名字是三个字
select * from Teacher where name like '__一'
案例三 : [ ] 和 [^ ] 的使用
--查询电话号码第三位是0或者一,且最后一位不为2或3的老师信息
select * from Teacher where GuardiansPhone like '___[0,1]%[^2,3]'
5.分组查询
在进行分组查询之前,我们给学生数据库添加两名学生信息(直接执行即可)
insert into Student(ClassID,TeacherId,name,sex,age,DateOfBirth)
values(1,1,'雪莉杨','女',26,'2021-1-1')
insert into Student(ClassID,TeacherId,name,sex,age,DateOfBirth)
values(2,2,'阿宁','女',25,'2022-1-1')
分组查询基本语法
select 查询字段名称 from 查询表名 group by 分组关键字名
实现案例
--根据性别分组,查询出学院中最大年龄,最小年龄,平均年龄
select sex as 性别, max(age) as 最大年龄 ,
min(age) as 最小年龄,avg(age) as 平均年龄
from Student
group by sex
6.多表查询
多表查询又分为内连接基本多表查询、外连接多表查询、左外连接(左连接)、右外查询(右连接),
多表查询应该以主外键为关系进行表链接。
基本多表查询
基本多表查询基本语法
select 查询字段名称 from 表一名称,表二名称,表三名称
where表一名称.表一字段 = 表二名称.二字段 ....
案例演示
--查询学生信息,同时显示课程信息和老师信息
select * from Student,Class,Teacher
where Student.ClassID=Class.ClassId and Student.TeacherId=Teacher.TeacherId
此案例中,我们通过通过多表查询查询出了对应的课程信息和老师信息
内连接多表查询
内连接基本语法
select * from 表名词
inner join 添加表名称一 on 连接条件
inner join 添加表名称二 on 连接条件1
连接案例
--查询学生信息,同时显示课程信息和老师信息
select * from Student
inner join Class on Student.ClassID=Class.ClassId
inner join Teacher on Student.TeacherId=Teacher.TeacherId
左外连接(左连接)
左外联接:以左表为主表显示全部数据,主外键关系找不到数据的地方null取代。
内连接基本语法
select 查询字段名称 from 表名称 left join 左查询表名称 on 连接条件
--查询学生信息,并且显示课程信息(左外链接)
select * from
Student left join Class on Student.ClassID=Class.ClassId
右外查询(右连接)
右外连接(right join):右外连接和左外连接类似,A left join B == B right join A
内连接基本语法
select 查询字段名称 from 表名称 right join 左查询表名称 on 连接条件
代码案例
--查询学生信息,并显示老师信息(右外链接)
select * from Student
right join Teacher on Student.TeacherId=Teacher.TeacherId
至此我们已经完成了Sql Server 入门学习,接下来将进入Sql Server高级阶段学校。