查询操作例题
一、 创建用到的表
create database S_C
go
use S_C
/*创建学生表*/
table student(
sno varchar(9) primary key,/*列级完整性条件*/
sname (20unique/*sname取惟一的值*/
ssex (2),
sage smallint)
)
/*创建课程表*/
table course(
cno (4(40 /*先修课*/
ccredit foreign (cpnoreferences course(cno/*表级完整性条件,cpno是外码,被参照的表示course,被参照的列是cno*/
/*创建学生选课表*/
table sc
grade (snoreferences student)
例【1】
查询全体学生的学号与姓名
select snofrom student
例【2】
查询全体学生的姓名、学号、所在系
select snamesdept from student
例【3】
查询全体学生的详细记录
select * from student
例【4】
查询全体学生的姓名及其出生年份
-sage birthyear from student
例【5】
查询全体学生的姓名、出生年份、和所在系,要求用小写字母表示所有系名
-sage YearOfBirthlower(sdept) sdept from student
例【6】
select distinct sno from sc
例【7】
查询计算机科学系全体学生的名单
select sname from student where sdept='cs'
例【8】
查询所有年龄在20岁以下的学生的学号
where sage<20
例【9】
查询考试成绩有不及格的学生的学号
distinct sno from sc where grade<60
例【10】
查询年龄在20~23岁(包含20岁和23岁)之间的学生的姓名、系别、和年龄
select snamesdeptsage student where sage between 20 and 30
例【11】
where not and 30
例【12】
查询计算机科学系(SC)、数学系(MA)、信息系(IS)学生的姓名和性别
ssex sdept in('is''ma''cs')
例【13】
查询既不是计算机科学系、数学系、也不是信息系的学生的姓名和性别
)
例【14】
查询学号为200215121的学生的详细情况
例【15】
查询所有姓刘的学生的姓名、学号和性别
snosname like '刘%'
例【16】
查询姓“欧阳”且全名为3个汉字的学生的姓名
例【17】
查询名字中第2个字为“阳”字的学生的姓名和学号
例【18】
查询所有不姓刘的学生的学号和姓名
'刘%'
例【19】
查询DB_Design课程的课程号和学分
select cno,ccredit course cname 'DB\_Design' escape '\'
例【20】
查询以“DB_”开头,且倒数第三个字符为i的课程的详细情况
'DB\_%i__' '\'
例【21】
某些学生选修课程后没有参加考试,所以有选修记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号
select cno grade is null /*这里的is不能用=代替*/
例【22】
查询所有有成绩的学生的学号和课程号
cno is null
例【23】
查询计算机科学系年龄在20以下的学生的姓名
'cs' and <20
例【24】
查询了选修3号课程的学生的学号及成绩,查询结果按分数的降序排序。
grade cno'3' order by desc
例【25】
查询全体学生的情况,查询结果按所在系的系号升序排序,同一系中的学生按年龄降序排列
desc
例【26】
查询学生总人数
select COUNT(*) NumOfStudent student
例【27】
查询选修了课程的学生的人数
select (sc
例【28】
计算1号课程的学生的平均成绩
AVGGradeOf_1 '1'
例【29】
查询选修1号课程的学生的最高分
MAXGradeMAXOf_1 '1'
例【30】
查询学生200215012选修课程的总学分数
方法一:
SUMccreditTheSumOfC sc'200215122' .=coursecno
cno in(
'200215122')
where exists(
)
例【31】
求各个课程号及相应的选课人数
)TheNumOfStu group cno
例【32】
查询选修了3门及三门以上课程的学生学号
having )>=3
例【33】
查询每个学生及其选修课程的情况(等值连接)
student.*,128)">.* sno
例【34】
对例【33】用自然连接完成(若在等值连接中把重复的属性去掉则为自然连接)
ssexsagesno
*******************************************************************************
出现的问题:
解决办法:指定student.sno 或者是sc.sno
*******************************************************************************
例【35】(自身连接)
查询每一门课的间接选修课(即先修课的先修课)
firstsecondcpno second cpnocno
例【36】
对例【33】用外连接做
grade from
student left join on)
例【37】
查询选修2号课程且成绩在90分以上的所有学生
方法一:
sno '2'
>=90
方法二:
'2' >=90)
方法三:
where exists (
)
例【38】
查询每个学生的学号、姓名、选修的课程名及成绩
方法一:
cnamecno
例【39】
方法一:
=(
sdept '刘晨') <>'刘晨'
方法二(自连接):
s1s2 where
s2'刘晨'
例【40】
查询选修了课程名为“信息系统”的学生学号和姓名
'信息系统'))
)
例【41】
找出每个学生超过他选修课程平均成绩的课程号
x >=(y xy)
例【42】
查询其它系中比计算机科学系某一学生年龄小的学生姓名和年龄
方法一:
<any(
'cs'
<)
'cs'
例【43】
查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄
方法一:
<all'cs'
方法二:
MIN'cs'
例【44】
查询所有选修了1号课程的学生姓名
方法一:
'1'
方法二:
'1'exists
)
例【45】
查询没有选修1号课程的学生的姓名
)
例【46】
查询选修了全部课程的学生姓名
))
例【47】
查询至少选修了学生200215122选修的全部课程的学生号码
sc1 sc2 sc2and sc3 sc3sc1))
【集合查询】
例【48】
查询计算机科学系学生与年龄不大于19岁的学生
'cs' UNION <=19)
例【49】
查询选修了课程1号或者选修了课程2的学生
'1' UNION '2'
例【50】
查询计算机科学系的学生与年龄不大于19岁的学生的交集
intersect <=19
方法二:
<=19
例【51】
查询既选修了课程1又选修了课程2的学生。(取交集)
方法一:
'2'
方法二:
'1' in('2')
*******************************************************************************
出现的问题:
改正:
当返回多个值的时候要用 关键字 IN
*******************************************************************************
例【52】
查询计算机科学系学生与年龄不大于19岁的学生的差集
except >19
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。