东北大学数据库实验.docx

上传人:b****6 文档编号:8704617 上传时间:2023-02-01 格式:DOCX 页数:57 大小:3.53MB
下载 相关 举报
东北大学数据库实验.docx_第1页
第1页 / 共57页
东北大学数据库实验.docx_第2页
第2页 / 共57页
东北大学数据库实验.docx_第3页
第3页 / 共57页
东北大学数据库实验.docx_第4页
第4页 / 共57页
东北大学数据库实验.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

东北大学数据库实验.docx

《东北大学数据库实验.docx》由会员分享,可在线阅读,更多相关《东北大学数据库实验.docx(57页珍藏版)》请在冰豆网上搜索。

东北大学数据库实验.docx

东北大学数据库实验

实验

(一):

熟练掌握SQL语言

实验目的:

熟悉上机环境,创建数据库,在数据库上建立关系模式,插入数据,进行相应的查询操作。

实验内容:

具体包括如下三部分。

一、熟悉上机环境。

客户/服务器结构,数据库服务器在一台NT服务器上,同学们通过客户机(操作系统为Windows2000)上安装的SQLServer客户端程序,使用SQLServer数据库服务器。

具体包括:

1.了解SQLServer环境。

鼠标点击开始,进入“MicrosoftSQLServer企业管理器”,点击SQLServer组下的数据库服务器(服务器名称为NEUC-201S(WindowsNT)),可以看到服务器上的圆形标志变为绿色,说明客户端程序已与服务器连接成功。

点击服务器(NEUC-201S(WindowsNT))下的数据库,可以看到服务器上已建立的数据库,你可访问你有权访问的数据库,并进行相应的操作功能。

因为,数据库服务器上建有许多数据库,每个数据库都有一些合法的用户。

2.鼠标点击开始,进入“MicrosoftSQLServer查询分析器”,输入用户名和口令,进入SQL查询分析器。

如:

你登录的客户机为27号,那么请以用户名user27,口令为user27登录,登录后缺省连到数据库user27上,user27/user27是数据库user27的创建者,因此用户user27/user27具有在数据库user27上创建表等一切权力。

3.在SQL查询分析器环境下,你就可进行SQL命令语句操作了。

二、在数据库useri上创建学生选课有关关系模式,并插入相应的数据,实现有关查询。

1.描述学生、课程情况的E-R图如下,请将其转化为用关系数据模型描述的关系模式

 

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,'计算机')

insertintoStudentsvalues('20123842','赵二',22,'电子')

insertintoStudentsvalues('20123843','赵三',23,'通信')

insertintoStudentsvalues('20123844','赵四',24,'自动化')

insertintoStudentsvalues('20123845','赵五',25,'软件')

insertintoStudentsvalues('20123846','赵六',26,'数学')

insertintoStudentsvalues('20123847','赵七',27,'物联网')

insertintoStudentsvalues('20123848','赵八',28,'生物')

insertintoStudentsvalues('20123849','赵九',29,'计算机')

insertintoStudentsvalues('20123840','赵十',20,'机械')

insertintoCoursesvalues('0000','数据库',4,60,null)

insertintoCoursesvalues('0001','C语言',4,60,null)

insertintoCoursesvalues('0002','C++语言',4,60,null)

insertintoCoursesvalues('0003','JAVA',4,60,null)

insertintoCoursesvalues('0004','数据结构',4,60,null)

insertintoCoursesvalues('0005','高数',4,60,null)

insertintoCoursesvalues('0006','离散数学',4,60,null)

insertintoCoursesvalues('0007','计算原理',4,60,'0005')

insertintoCoursesvalues('0008','算法设计',4,60,null)

insertintoCoursesvalues('0009','文本',4,60,null)

insertintoCoursesvalues('0010','信息安全',4,60,'0009')

insertintoSCvalues('20123840','0001',1)

insertintoSCvalues('20123841','0001',2)

insertintoSCvalues('20123842','0001',3)

insertintoSCvalues('20123843','0001',4)

insertintoSCvalues('20123844','0003',3)

insertintoSCvalues('20123845','0001',2)

insertintoSCvalues('20123846','0001',1)

insertintoSCvalues('20123847','0001',2)

insertintoSCvalues('20123848','0001',3)

insertintoSCvalues('20123849','0001',4)

insertintoSCvalues('20123849','0002',3)

3.插入相应的数据,试着插入重复的元组,结果如何?

输入重复数据:

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

4.在已建立的关系模式之上(已插入一些数据)建立主键约束,参照约束和用户定义的约束(要求学生年龄不小于14岁,不大于35岁),如果约束不能建立,请分析原因,修改后建立上述约束。

altertableStudentsaddcheck(Sage>=14andSage<=35)

altertableStudentsaddprimarykey(Sno)不能建立

原因:

数据库中已存在学号相同的多个数据

解决:

deletefromStudentswhereStudents.Sno='20123843'

altertableStudentsaddprimarykey(Sno)

altertableCoursesaddprimarykey(Cno)

deletefromCourseswhereCourses.Cno='0001'

altertableCoursesaddprimarykey(Cno)

altertableCoursesaddForeignkey(Cpno)referencesCourses(Cno)

altertableSCaddForeignkey(Sno)referencesStudents(Sno)

altertableSCaddForeignkey(Cno)referencesCourses(Cno)

 

altertableSCaddprimarykey(Sno,Cno)

 

设想原因:

SC表中已存在相同学号和课程的多个数据

解决:

deletefromSCwhereSC.Cno='0001'andSC.Sno='20123843'

altertableSCaddprimarykey(Sno,Cno)

还是未能创建约束。

解决:

重新建表,直接在表中创建约束。

createtableSC

(Snochar(11),

Cnochar(4),

Gradeint,

primarykey(Sno,Cno),

foreignkey(Sno)referencesStudents(Sno),

foreignkey(Cno)referencesCourses(Cno))

5.如果约束建立后,请试着插入重复元组,结果如何?

试着插入重复元组,无法插入:

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

insertintoStudentsvalues('20123843','赵一',20,'计算机')

违反了PRIMARYKEY约束'PK__Students__4D2CD54C'。

不能在对象'Students'中插入重复键。

语句已终止。

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

insertintoCoursesvalues('0001','数据库',4,60,'0000')

服务器:

消息547,级别16,状态1,行1

INSERT语句与COLUMNFOREIGNKEYSAMETABLE约束'FK__Courses__Cpno__716A35C2'冲突。

该冲突发生于数据库'db45',表'Courses',column'Cno'。

语句已终止。

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

insertintoSCvalues('20123843','0001',3)

服务器:

消息547,级别16,状态1,行1

INSERT语句与COLUMNFOREIGNKEY约束'FK__SC__Cno__70761189'冲突。

该冲突发生于数据库'db45',表'Courses',column'Cno'。

语句已终止。

实验

(二):

熟练掌握SQL语言

用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.求计算机系每个学生的姓名,选修的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1