微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLServer中的查询

查询操作例题

一、 创建用到的表

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

查询选修了课程的学生学号(distinct 重复行)

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】

查询年龄不在20~23岁之间的学生的姓名、系别和年龄

where  not and 30

例【12】

查询计算机科学系(SC)、数学系(MA)、信息系(IS)学生的姓名和性别

ssex sdept in('is''ma''cs')

例【13】

查询既不是计算机科学系、数学系、也不是信息系的学生的姓名和性别

)

例【14】

查询学号为200215121的学生的详细情况

例【15】

查询所有姓刘的学生的姓名、学号和性别

snosname like '%' 

例【16】

查询姓“欧阳”且全名为3个汉字的学生的姓名

sname '欧阳_'     /*一个短横线代表一个汉字*/

例【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') 

方法三:(exists谓词子查询

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] 举报,一经查实,本站将立刻删除。

相关推荐