加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer中的查询

发布时间:2020-12-12 16:07:30 所属栏目:MsSql教程 来源:网络整理
导读:查询操作例题 一、?创建用到的表 create ? database ?S_C go use ?S_C /* 创建学生表 */ table ?student ( sno? varchar ( 9 ) ? primary ? key , /* 列级完整性条件 */ sname? ( 20 unique /*sname 取惟一的值 */ ssex? ( 2 ), sage? smallint sdept? ) ) /

查询操作例题

一、?创建用到的表

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读