SQL Server学习笔记——单表查询
Posted Aiden_Zhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server学习笔记——单表查询相关的知识,希望对你有一定的参考价值。
SQL Server学习笔记——单表查询
已知数据库中存在四个表:
- major:
- stu:
- cou
- sc
1. 无条件查询
(1) 查询学生的全部信息(全部字段查询)
--*则代表查询表的所有字段
select * from stu
查询结果为:
(2) 查询全部学生的姓名和出生年份(部分字段查询)
stu表中无学生出生年份,则可通过学生年龄求其出生年份
select sname, 2021-age as birth_date from stu
查询结果为:
(3) 查询有选修课程的学号(distinct去重)
select sno from sc
查询结果为:
上述查询结果中’2020004’和’2020005’均出现多次,可通过distinct进行去重操作,改写为:
select distinct sno from sc
查询结果为:
可见,结果已无重复。
2. 有条件查询
(1) 查询姓名是”小十“的学生的全部信息
select * from stu where sname='小十'
或者可写为:
select * from stu where sname like '小十'
查询结果为:
注:如果like后面的字符串不含有通配符(%,_用于模糊查询),那么like等价于”=“
(2) 查询课号是’20201’且学生成绩高于80的学生学号(and)
select sno from stu where cno='20201' and grade>80
--或者
select sno from stu where cno like '20201' and grade>80
查询结果为:
(3) 查询年龄在18到19岁之间的学生的姓名(between)
select sname from stu where age>=18 and age<=19
上述语句可看利用between(between可用于表示某字段的取值范围)改写为:
select sname from stu where age between 18 and 19
查询结果为:
(4) 查询专业号01 02 04的学生信息(in)
select * from stu where mno='1' or mno='2' or mno='4'
上述语句可看利用in(in也可用于表示某字段的取值范围,但不同于between,in相当于多个or)语句改写为:
select * from stu where mno in ('1', '2', '4')
查询结果为:
(5) 查询专业号01 02 04的学生信息(not in)
select * from stu where mno!='1' and mno!='2' and mno!='4'
--或者
select * from stu where mno<>'1' and mno<>'2' and mno<>'4'
上述语句可看利用not in语句改写为:
select * from stu where mno not in ('1', '2', '4')
查询结果为:
(6) 查询有选课记录但没有考试成绩的学生信息
select * from sc where grade=null
查询结果为空:
当表示某一字段为NULL时,则用is,而不是"=",即
select * from sc where grade is null
查询结果为:
3. 模糊查询
(1) 查询所有姓 彭 的学生的信息(%)
姓彭,则姓名的第一个字为彭,名字随意,且可长可短。
select * from stu where sname like '彭%'
查询结果为:
注:字符串中含有通配符时,只能用like。
(2) 查询名字中带有 小 的学生的信息
名字中带有小,则小可以在名字中的任意位置。
select * from stu where sname like '%小%'
查询结果为:
(3)查询第二个字为 小 的学生信息(_)
小之前仅有一个字,后边可有可无。
select * from stu where sname like '_小%'
注:模糊查询中”%“代表多个字符(包含0个),而”_“仅可代表一个字符。
以上是关于SQL Server学习笔记——单表查询的主要内容,如果未能解决你的问题,请参考以下文章