实验1 SQL语言初步.docx
- 文档编号:24324825
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:16
- 大小:233.54KB
实验1 SQL语言初步.docx
《实验1 SQL语言初步.docx》由会员分享,可在线阅读,更多相关《实验1 SQL语言初步.docx(16页珍藏版)》请在冰豆网上搜索。
实验1SQL语言初步
实验一
实验项目:
建立数据库及基本表,数据查询。
实验目的:
使用SQL查询分析器用CREATE语句创建基本表,使用SQL查询分析器用SELECT语句进行数据查询。
步骤:
1、利用查询分析器创建学生课程数据库。
用鼠标单击“开始”后,将鼠标分别指向程序、microsoftSQLserver,在microsoftSQLserver下单击“查询分析器”;以Windows身份验证
在窗口下键入
CREATEDATABASES_C
用鼠单击任务栏的绿色向右箭头运行该命令。
这样,S-C数据库就建成了。
2、利用查询分析器创建基本表
student(sno,sname,ssex,sage,sdept)
course(cno,cname,ccredit)
sc(sno,cno,grade)
在查询分析器任务栏的数据库选为S_C。
在窗体下键入如下命令:
CREATETABLEStudent(snoCHAR(10)NOTNULLUNIQUE,
snameCHAR(8),
ssexCHAR
(2),
sageINT,
sdeptCHAR(20))
保存,文件名为student.sql.用鼠单击任务栏的绿色向右箭头运行在窗体下键入如下命令:
CREATETABLECourse(cnoCHAR(10)NOTNULL,
cnameCHAR(20),
CcreditINT)
用鼠单击任务栏的绿色向右箭头运行,观察结果。
CREATETABLESC(snoCHAR(10)NOTNULL,
cnoCHAR(10)NOTNULL,
gradeINT)
保存,文件名为sc.sql,用鼠单击任务栏的绿色向右箭头运行.这样在S-C数据库中建成了三个表:
Student,Course,SC.
3、利用企业管理器向表中输入数据。
Student表
sno
sname
ssex
Sage
Sdept
200101
张明
男
19
计算机系
200102
王强
男
20
信息系
200103
李华
女
18
数学系
200104
秦永
男
19
计算机系
course表
Cno
Cname
Ccredit
Cno
1
数据库
3
1
2
数学
4
2
3
信息系统
3
3
4
操作系统
3
4
5
数据结构
4
5
6
PASCAL语言
3
6
S_c表
Sno
Cno
Grade
200101
1
92
200101
2
85
200101
3
88
200102
2
90
200102
3
80
4、使用SQL查询分析器用SELECT语句进行数据查询
(1).简单查询
例1查询全体学生的姓名、学号、所在系。
Selectsname,sno,sdept
FROMstudent
本例查询结果为:
SnameSno
张明200101计算机系
王强200102信息系
李华200103数学系
秦永200104计算机系
例2查询学生的详细记录
Select*fromstudent
本例查询结果为
SnoSnameSageSsexSdept
200101张明19男计算机系
200102王强18一男信息系
200103李华20女数学系
200104秦永19男计算机系
例3查询学校有哪些系。
Selectdistinctsdept
Fromstudent;
本例查询结果为:
Sdept
计算机系
数学系
例4查询计算机系全体学生的学号与姓名
SELECTsno,sname
Fromstudent
Wheresdept=’计算机系’
本例查询结果为:
SnoSname
200101张明
200104秦永
例5查询选修一号课程且成绩90分以上的学生的学号
Selectsno
Fromsc
Wheregrade>90andcno=’1’
本例查询结果为:
Sno
200101
(2)连接查询
等值与非等值连接查询
例6查询每个学生及其选修课程的情况
Selectstudent.*,sc.*
Fromstudent,sc
Wherestudent.sno=sc.sno
执行结果为:
SnoSnameSageSsexSdeptSno
20010l张明19男计算机系200lOl
20010l张明19男计算机系20010l
200101张明19男计算机系20010l
200102王强18男信息系200102
200102王强18男信息系200102
复合条件连接
例7查询每个学生的学号、姓名、选修的课程名及成绩。
Selectstudent.sno,sname,cname,grade
Fromstudent,sc.course
Wherestudent.sno=sc.sno
Ando=o
执行结果为:
SnoSnameCnameGrade
200101张明数据库92
200101张明数学85
200101张明信息系统88
200102王强数学90
200102王强信息系统80
例8查询计算机系同学的各科成绩,要求输出姓名、课名和成绩
Selectsname,cname,grade
Fromstudent,course,sc
Wherestudent.sno=sc.sno
Ando=o
Andstudent.sdept=’计算机系’
执行结果为:
SnameCnameGrade
张明数据库92
张明数学85
张明信息系统88
例9查询选修了数学课且成绩及格的所有学生的学号、姓名和成绩
Selectstudent.sno,sname,grade
Formstudent,sc,course
Wherestudent.sno=sc.sno
And=o
Andame=’数学’
Andsc.grade>60
执行结果为:
SnosnameGrade
200101张明85
200102王强90
自身连接
例10查询和张明在同一个系的学号和姓名
selects1.sno,s1.sname
fromstudents1,students2
wheres1.sdept=s2.sdept
ands2.sname='张明'
执行结果为:
Snosname
200101张明
200104秦永
外连接
如例10的结果中没有200103和200104两个学生的信息,原因在于他们没有选课,在SC表中没有相应的元组。
但是有时我们想以Student表为主体列出每个学生的基本情况及其选课情况,当然要反映出学生选修了什么课或是否没有选课。
若某个学生没有选课,只输出其基本情况信息,其选课信息为空值即可,这时就需要使用外连接(OuterJoin)。
可以将例6改写为
Selectstudent.sno,sname,ssex,sage,sdept,cno,grade
Fromstudent,sc
Wherestudent.sno*=sc.sno
执行结果如下:
SnoSnameSsexSageSdeptCnoGrade
20010l张明男19计算机系192
200101张明男19计算机系285
20010l张明男19计算机系388
200102王强男18信息系290
200102王强男18信息系380
200103李华女20数学系NULLNULL
200104秦永男19计算机系NULLNULL
(3)嵌套查询
例11查询与“张明”在同一个系的学生学号与姓名
SELECTSno,Sname,Sdept
FROMStudent
WHERESdeptIN
(SELECTSdept
FROMStudent
WHERESname=‘张明’)
执行结果如下:
SnoSnameSdept
200101张明计算机系
200104秦永计算机系
例12查询选修了信息系统学生学号与姓名
SELECTSno,Sname
FROMStudent
WHERESNOIN
(SELECTSno
FROMSc
WHEREcnoin
(selectcno
Fromcourse
Wherecname='信息系统'))
执行结果如下:
Snosname
200101张明
200102王强
(4)谓词查询
between….and…..
例13查询选修了2号课程,成绩在80-90之间学生学号
SELECTSno
FROMSc
WHEREcno='2'
andgradebetween80and90
执行结果如下:
Sno
200101
200102
In、notin
例14查询数学系和计算机系学生的姓名和性别
selectsname,ssex
fromstudent
wheresdeptin('数学系','计算机系')
执行结果为:
SnameSsex
张明男
李华女
秦永男
Like,notlike
例15查询学号为200l0l的学生的详细情况。
Select*
Fromstudent
Wheresnolike‘200101’
执行结果为:
SnoSnameSageSsexSdept
200101张明19男计算机系
例16查询所有姓李的学生的姓名、学号和性别。
Selectsname,sno,ssex
Fromstudent
Wheresnamelike'李%'
本例查询结果为:
SnameSnoSsex
李华200103女
例17查询名字中第2个字为“明”字的学生的姓名和学号。
Selectsname,sno
Fromstudent
Wheresnamelike'_明%'
本例查询结果为:
SnoSname
20010l张明
Isnull,Isnotnull
例18查询缺少成绩的学生的学号和相应的课程号
selectsno,cno
fromsc
wheregradeisnull
本例查询结果为空值
例19查询所有有成绩的学生学号和课程号
selectsno,cno
fromsc
wheregradeisnotnull
本例查询结果为
SnoCnO
20010ll
2001012
2001013
2001022
2001023
谓词ANY和ALL及比较运算符
例20查询其他系中比计算机系某一学生年龄小的学生姓名和年龄。
selectsname,sage
fromstudent
wheresdept<>'计算机系'
andsage (selectsage fromstudent wheresdept='计算机系') 执行结果为: SnameSage 王强18 例21查询其他系中比计算机系所有学生年龄都小的学生姓名及年龄。 selectsname,sage fromstudent wheresdept<>'计算机系' andsage (selectsage fromstudent wheresdept='计算机系') 本例执行结果。 SnameSage 王强18 谓词EXISTS和NOTEXISTS 例22查询所有选修了3号课程的学生姓名 selectsname fromstudent whereEXISTS (select* fromSC whereSNO=STUDENT.SNO ANDCNO='3') 本例执行结果 SNAME 张明 王强 例22查询没有选修l号课程的学生姓名。 selectsname fromstudent wherenotEXISTS (select* fromSC whereSNO=STUDENT.SNO ANDCNO='1') 执行结果为: Sname 王强 李华 (5)查询结果排序 例23查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列 selectsno,grade fromsc wherecno='3' orderbygradedesc 执行结果为: Sn0Grade 200lUl88 20010280 例24查询全体学生情况,查询结果按所在系的系名升序排列,同一系中的学生按年龄降序排列. select* fromstudent orderbysdept,sagedesc 执行结果为: snosnamessexsagesdept 200101张明男19计算机系 200104秦永男19计算机系 200103李华女18数学系 200102王强男20信息系 (6)统计查询 例25查询学生总人数 selectcount(*) fromstudent 执行结果为: 4 例26查询选修了课程的学生人数 selectcount(distinctsno) fromsc 执行结果为: 2 例27计算数学课的学生平均成绩 selectavg(grade) fromsc wherecnoin (selectcno fromcourse wherecname='数学') 执行结果为: 87 例28计算数学课的学生最高分 selectmax(grade) fromsc wherecnoin (selectcno fromcourse wherecname='数学'). 执行结果为: 90 例29计算各门课的平均成绩 selectcno,avg(grade) fromsc groupbycno 执行结果为: CNO无列名 192 287 384
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验1 SQL语言初步 实验 SQL 语言 初步