东北大学数据库实验Word下载.docx
- 文档编号:21840807
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:57
- 大小:3.53MB
东北大学数据库实验Word下载.docx
《东北大学数据库实验Word下载.docx》由会员分享,可在线阅读,更多相关《东北大学数据库实验Word下载.docx(57页珍藏版)》请在冰豆网上搜索。
2.在数据库中定义这些关系模式,并向基本表中插入如下数据:
CREATEtableStudents
(Snochar(11)primarykey,
Snamechar(20),
Sageint,
sdeptchar(20))
createtableCourses
(Cnochar(4),
Cnamechar(40),
Ccreditint,
Ctimeint,
Cpnochar(4),
primarykey(cno),
Foreignkey(Cpno)referencesCourses(Cno))
createtableSC
(Snochar(11),
Cnochar(4),
Gradeint,
primarykey(Sno,Cno),
foreignkey(Sno)referencesStudents(Sno),
foreignkey(Cno)referencesStudents(Cno))
insertintoStudentsvalues('
20123841'
'
赵一'
21,'
计算机'
)
20123842'
赵二'
22,'
电子'
20123843'
赵三'
23,'
通信'
20123844'
赵四'
24,'
自动化'
20123845'
赵五'
25,'
软件'
20123846'
赵六'
26,'
数学'
20123847'
赵七'
27,'
物联网'
20123848'
赵八'
28,'
生物'
20123849'
赵九'
29,'
20123840'
赵十'
20,'
机械'
insertintoCoursesvalues('
0000'
数据库'
4,60,null)
0001'
C语言'
0002'
C++语言'
0003'
JAVA'
0004'
数据结构'
0005'
高数'
0006'
离散数学'
0007'
计算原理'
4,60,'
0008'
算法设计'
0009'
文本'
0010'
信息安全'
insertintoSCvalues('
1)
2)
3)
4)
3.插入相应的数据,试着插入重复的元组,结果如何?
输入重复数据:
4.在已建立的关系模式之上(已插入一些数据)建立主键约束,参照约束和用户定义的约束(要求学生年龄不小于14岁,不大于35岁),如果约束不能建立,请分析原因,修改后建立上述约束。
altertableStudentsaddcheck(Sage>
=14andSage<
=35)
altertableStudentsaddprimarykey(Sno)不能建立
原因:
数据库中已存在学号相同的多个数据
解决:
deletefromStudentswhereStudents.Sno='
altertableStudentsaddprimarykey(Sno)
altertableCoursesaddprimarykey(Cno)
deletefromCourseswhereCourses.Cno='
altertableCoursesaddForeignkey(Cpno)referencesCourses(Cno)
altertableSCaddForeignkey(Sno)referencesStudents(Sno)
altertableSCaddForeignkey(Cno)referencesCourses(Cno)
altertableSCaddprimarykey(Sno,Cno)
设想原因:
SC表中已存在相同学号和课程的多个数据
deletefromSCwhereSC.Cno='
andSC.Sno='
还是未能创建约束。
重新建表,直接在表中创建约束。
foreignkey(Cno)referencesCourses(Cno))
5.如果约束建立后,请试着插入重复元组,结果如何?
试着插入重复元组,无法插入:
违反了PRIMARYKEY约束'
PK__Students__4D2CD54C'
。
不能在对象'
Students'
中插入重复键。
语句已终止。
服务器:
消息547,级别16,状态1,行1
INSERT语句与COLUMNFOREIGNKEYSAMETABLE约束'
FK__Courses__Cpno__716A35C2'
冲突。
该冲突发生于数据库'
db45'
,表'
Courses'
column'
Cno'
INSERT语句与COLUMNFOREIGNKEY约束'
FK__SC__Cno__70761189'
实验
(二):
用SQL完成下列查询
1.求选修了课程的学生的学号,要求:
(1)不使用distinct语句,消除重复元组,写出其SQL语句
SelectSnofromSC
(2)使用distinct语句,消除重复元组,写出其SQL语句
selectdistinctSnofromSC
(3)如果该查询写成:
selectStudent.SnofromStudent,SCwhereStudent.Sno=SC.Sno
请问该查询结果和上面哪个结果是相同的?
和1相同
2.求开设的课程号、课程名、学时和学分,要求对查询结果的列重新命名。
selectCnoMyCno,CnameMyCname,CtimeMyCtime,CCreditMyCredictfromCourses
3.求计算机系和数学系的学生学号、姓名和年龄。
selectSno,Sname,SagefromStudentswhereSdept='
orSdept='
4.求不是数学系、计算机系的学生的情况,要求select后写*代替列出所有的列名。
select*fromStudentswhereStudents.Sdept!
='
andStudents.Sdept!
5.求全体学生的信息,要求按年龄升序排列。
select*fromStudentsorderbySageasc
6.求计算机系年龄在18~20岁之间的学生姓名和年龄。
selectSname,SagefromStudentswhereSage>
=18andSage<
=20andSdept='
7.求姓名是以张开头的计算机系学生。
select*fromStudentswhereSnamelike'
张%'
andSdept='
8.求选修了C2课程的学生的学号、姓名、成绩。
selectStudents.Sno,Students.Sname,SC.GradefromStudents,SC,CourseswhereSC.Sno=Students.SnoandSC.Cno=Courses.CnoandCourses.Cname='
C2'
9.求学号为95开头的学生的学号和所选修的课程的学分。
selectStudents.Sno,Courses.Cname,Courses.CCreditfromStudents,SC,CourseswhereStudents.Snolike'
95%'
andStudents.Sno=SC.SnoandSC.Cno=Courses.Cno
10.求选修C1课程且成绩为80分以上的学生的学号、姓名和成绩。
selectStudents.Sno,Students.Sname,SC.GradefromStudents,SC,CourseswhereStudents.Sno=SC.SnoandSC.Cno=Courses.CnoandCourses.Cname='
C1'
andSC.Grade>
80
11.求计算机系每个学生的姓名,选修的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 数据库 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)