版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE4课程编号:D04400050学号:201540410126据库系统(双语)实验报告教学院计算机学院课程名称数据库系统(双语)专业班级计算机科学与技术2015(1)班姓名甘全中指导教师卫锋2016年12月15日实验一创建数据库和表一、实验目的及要求:1.了解SQLSERVER数据库的逻辑结构和物理结构2.了解表的结构特点3.了解SQLSERVER的基本数据结构二、实验任务:1.学会在企业管理器中创建数据库和表2.学会在T-SQL语句创建数据库和表三、操作要点:1.启动企业管理器,并创建数据库和表2.启动SQL查询分析器3.掌握创建数据库和表分别是CREATEDATABASE和CREATETABLE四、注意事项:1.在MicrosoftSQLServer2000的查询分析器(QueryAnalyzer)中使用单条SQL语句,其末尾不需要分号“;”作为命令结尾标记。2.通常,SQLServer2000对大多数末尾带有分号的SQL命令都能顺利执行,但对少数的SQL命令,末尾若带分号,则SQLServer2000会给出错误信息提示。五、实验学时:2学时六、实验重点及难点:1.列级完整性约束条件2.空值的概念3.CREATEDATABASE和CREATETABLE的用法七、实验步骤:企业管理器创建数据库和表启动企业管理器;1.打开所有程序,找到MicrosoftSQLServer2008打开。SQLServerManagementStudio打开。输入服务器名称(即完整计算机名称B005(本机))。完成启动企业管理。3.建立表5.3所示的学生表Students,各属性为Sno-学号、Sname-姓名、Ssex-性别、Sage-年龄、Sdept-所在系。要求Sno和Sname不能为空值,且取值唯一,Sno为键码。1.首先创建Students表。使用SQL语句:createtableStudents(Snochar(9)primarykey,Snamechar(20)unique,Ssexchar(2),Sagesmallint,Sdeptchar(20));用select*fromStudents语句;查询已建表:插入表5.3中的数据。使用SQL语句:insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S01','王建平','男',21,'自动化');insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S02','刘华','女',19,'自动化');insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S03','范林军','女',18,'计算机');insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S04','李伟','男',19,'数学');insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S05','黄河','男',18,'数学');insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S06','长江','男',20,'数学');再次使用查询语句select*fromStudents;运行结果:4.建立表5.4所示的课程表Courses,各属性为Cno-课程号,Cname-课程名,Pre_Cno-先修课程号,Credits-学分,要求Cno和Cname不能为空值,Cno取值唯一,且为键码。首先创建Courses表。使用SQL语句:createtableCourses(Cnochar(9)notnullprimarykey,Cnamechar(20)uniquenotnull,Pre_Cnochar(4),Creditssmallint,);使用insertinto语句插入数据,如图所示:insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C01','英语','null',4);insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C02','数据结构','C05',2);insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C03','数据库','C02',2);insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C04','DB_设计','C03',3);insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C05','C++','null',3);insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C06','网络原理','C07',3);insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C07','操作系统','C05',3);查询结果:select*fromCourses;5.建立表5.5所示的成绩表Reports。各属性名为Sno-学号,Cno-课程号和Grade-考试成绩,要求Sno和Cno不能为空,且取值唯一,Sno+Cno为键码。使用SQL语句创建表Reports:createtableReports(Snochar(9)notnull,Cnochar(9)notnull,Gradesmallint,primarykey(Sno,Cno),foreignkey(Sno)referencesStudents(Sno),foreignkey(Cno)referencesCourses(Cno));使用SQL语句插入数据:insertintoReports(Sno,Cno,Grade)values('S01','C01',92);insertintoReports(Sno,Cno,Grade)values('S01','C03',84);insertintoReports(Sno,Cno,Grade)values('S02','C01',90);insertintoReports(Sno,Cno,Grade)values('S02','C02',94);insertintoReports(Sno,Cno,Grade)values('S02','C03',82);insertintoReports(Sno,Cno,Grade)values('S03','C01',72);insertintoReports(Sno,Cno,Grade)values('S03','C02',90);insertintoReports(Sno,Cno,Grade)values('S04','C03',75);查询结果:在相关表上建立索引。创建各个表的索引:createuniqueindexStusnoonStudents(Sno);createuniqueindexCoucnoonCourses(Cno);createuniqueindexCSnoonReports(Sno,Cno);Students、Courses、Reports表的创建查询结果:实验二SQL基本表的插入、修改和删除一、实验目的及要求:熟练掌握基本表的插入、修改和删除,为后继学习作准备。二、实验任务:1.了解并掌握SQL查询分析器及企业管理器的使用;2.掌握基本表的插入、删除与修改。三、操作要点:1.启动SQL查询分析器2.掌握进行插入、删除与修改分别是INSERT、DROP和UPDATE四、注意事项:1.注意每次对表的修改,命令执行完后要查看表的变动刷新表。2.特别注意在执行插入、删除与修改等更新操作时,要保证数据的完整性。3.SQLServer2000增加了删除属性的命令。五、实验学时:2学时六、实验重点及难点1.T-SQL语句对基本表的定义进行删除与修改,并插入基本表数据。2.T-SQL语句对数据库操作的灵活控制功能。七、实验步骤:1.启动SQL查询分析器;2.选择SQLSERVER后,按确认;表5.4关系CoursesCno表5.4关系CoursesCnoCnamePre_CnoCreditsC01C02C03C04C05C06C07英语数据结构数据库DB_设计C++网络原理操作系统C05C02C03C07C0542233334.验证如下例题:表表5.3关系StudentsSnoSnameSsexSageSdeptS01S02S03S04S05S06王建平刘华范林军李伟黄河长江男女女男男男211918191820自动化自动化计算机数学数数学4.1修改基本表=1\*GB3①向基本表Students中增加“入学时间”属性列,其属性名为Sentrancedate,数据类型为DATETIME型。使用SQL语句:altertableStudentsADDSentrancedatedatetime;在Students表中增加属性列Sentrancedate=2\*GB3②将Sage(年龄)的数据类型改为SMALLINT型。SQL语句:altertableStudentsaltercolumnSagesmallint;将STudents表中的Sage的数据类型改为smallint。=3\*GB3③删除Sname(姓名)必须取唯一值的约束。SQL语句:altertableStudentsdropconstraintUQ__Students__52723D276262D465;说明:=1\*GB2⑴为了保证后面例子能够顺利运行,请大家一定将属性列Sentrancedate从Students表中删除。=2\*GB2⑵为了调试SQL语句方便,这里没有在表Reports中增加参照完整性约束,甚至没有定义主键。4.2删除Students表。因为Students表中有Reports表的外码,故只有删除Repors表后才能删除Students表。SQL语句:droptableReports;droptableStudents;说明:此表删除后,请立即将其建立起来,以便后面的例子使用。4.3向表中添加元组=1\*GB3①将一个学生元组(S01,王建平,男,21,计算机)添加到基本表Students中。SQL语句:insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S01','王建平','男',21,'自动化');=2\*GB3②请同学们用这个命令,按表5.3提供的数据,将其余5个学生的元组也添加到基本表Students中。SQL语句:insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S02','刘华','女',19,'自动化');insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S03','范林军','女',18,'计算机');insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S04','李伟','男',19,'数学');insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S05','黄河','男',18,'数学');insertintoStudents(Sno,Sname,Ssex,Sage,Sdept)values('S06','长江','男',20,'数学');执行结果:=3\*GB3③向Courses表插入元组(‘C01’,’英语’,’’,4)。SQL语句:insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C01','英语','',4);运行结果:=4\*GB3④请同学们用这个命令,按表5.4提供的数据,将其余6门课程的信息插入Courses表中。SQL语句:insert intoCourses(Cno,Cname,Pre_Cno,Credits)values('C02','数据结构','C05',2);InsertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C03','数据库','C02',2);insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C04','DB_设计','C03',3);insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C05','C++','null',3);insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C06','网络原理','C07',3);insertintoCourses(Cno,Cname,Pre_Cno,Credits)values('C07','操作系统','C05',3);运行结果:=5\*GB3⑤将学习成绩的元组(‘S01’,’C01’,92)添加到基本表Reports中。SQL语句:insertintoReports(Sno,Cno,Geade)values('S01','C01',92);运行结果:实验三数据库的查询一、实验目的及要求1.熟练掌握SELECT查询语句的使用2.掌握无条件、有条件查询及查询结果排序与分组二、实验任务1.掌握查询语句的一般格式。2.掌握无条件、有条件查询及查询结果排序与分组三、操作要点1.进行查询时先进入查询分析器2.明白了解无条件、有条件查询及查询结果排序与分组四、注意事项SELECT语句的基本语法格式SELECT语句的执行方法SELECT语句和ORDERBY子句的作用和用法SELECT语句和GROUPBY子句的作用和用法五、实验学时:4学时六、实验重点及难点1.SELECT语句的基本语法2.掌握数据汇总的方法七、实验步骤1.启动SQL查询分析器;2.选择SQLSERVER后,按确认;3.选择数据库University,验证如下例题:3.1查询全体学生的详细记录。这是一个无条件的选择查询,其命令为:selectSno,Sname,Ssex,Sage,SdeptfromStudents;运行结果为:3.2查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。这是一个无条件的投影查询,其命令为:selectSname,Sno,SdeptfromStudents;运行结果为:3.3查询选修了课程的学生学号。其命令为:selectCnofromCourses;运行结果为:3.4查询数学系全体学生的学号(Sno)和姓名(Sname)。其命令为:selectSno,SnamefromStudentswhereSdept='数学';运行结果为:3.5查询所有年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。其命令为:selectSname,SagefromStudentswhereSagebetween18and22;运行结果为:3.6查询年龄不在18-22岁之间的学生姓名(Sname)及年龄(Sage)。其命令为: selectSname,Sage fromStudents whereSagenotbetween18and22;运行结果为:3.7查询自动化系、数学和计算机系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。其命令为:selectSno,Sname,SagefromStudentswhereSdeptin('自动化','数学','计算机');运行结果为:3.8查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。其命令为:selectSname,Sno,Ssex fromStudents whereSnamelike'刘%'; 运行结果为:3.9查询课程名为“DB_设计”的课程号(Cno)和学分(Credits)。其命令为:selectCno,CreditsfromCourses whereCname='DB_设计';运行结果为:3.10查询以"DB_"开头,且倒数第2个汉字字符为“设”的课程的详细情况。其命令为:select*fromCourses whereCnamelike'DB\_设_'escape'\';运行结果为:3.11假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。其命令为:select*fromReportswhereGradeisnull;运行结果为:3.12查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。其命令为:select*fromStudentsorderbySdept,Sagedesc;运行结果为:3.13查询学生总人数。其命令为:selectcount(*)'学生总人数'fromStudents;运行结果为:3.14查询选修了课程的学生人数。其命令为:selectcount(distinctSno)'选修课总人数'fromReports;运行结果为:3.15计算选修C01号课程的学生平均成绩。其命令为:selectavg(Grade)'C01号课程平均分'fromReportswhereCno='C01';运行结果为:3.16查询选修C01号课程的学生最高分数。其命令为:selectmax(Grade)'C01号课程最高分'fromReportswhereCno='C01';运行结果为:3.17对课本的select案例3.16~3.42进行实现课本的Student_Course数据库各表为: 案例1:查询全体学生的学号与姓名 命令为:selectSno,SnamefromStudent;运行结果为:案例2:查询全体学生的姓名、学号、所在系命令为:selectSname,Sno,SdeptfromStudent; 运行结果为:案例4:查询全体学生的姓名及其出生年份命令为:selectSname,2016-Sage'2016-Sage'fromStudent;运行结果为: 案例5:查询全体学生的姓名、出生年份和所在院系,要求用小写字母表示系名命令为:selectSname,'YearofBirth''YearofBirth',2014-Sage'YearofBirth',LOWER(Sdept)'LOWER(Sdept)'fromStudent;运行结果为:案例6:查询选修了课程的学生学号命令为:selectSnofromSC;运行结果为:案例7:查询计算机系全体学生的名单命令为:selectSnamefromStudentwhereSdept='CS';运行结果为:案例8:查询所有年龄在20岁以下的学生姓名及其年龄命令为:selectSname,SagefromStudentwhereSage<20;运行结果为:案例9:查询考试成绩不及格的学生的学号 命令为:selectdistinctSnofromSCwhereGrade<60; 运行结果为:案例10:查询年龄在20~23岁(包含20岁和23岁)之间的学生的姓名、系别和年龄 命令为:selectSname,Sdept,SagefromStudentwhereSagebetween20and23; 运行结果为: 案例11:查询年龄不在20~23岁之间的学生的姓名、系别和年龄 命令为:selectSname,Sdept,SagefromStudentwhereSagenotbetween20and23; 运行结果为: 案例12:查询计算机系、数学系和信息系的学生的姓名和性别 命令为:selectSname,SsexfromStudentwhereSdeptin('CS','MA','IS');运行结果为: 案例13:查询不是计算机系、数学系和信息系的学生的姓名和性别 命令为:selectSname,SsexfromStudentwhereSdeptnotin('CS','MA','IS');运行结果为: 案例14:查询学号为201212121的学生的详细情况 命令为:select*fromStudentwhereSno='201215121';运行结果为: 案例15:查询所有姓刘的学生的姓名、学号和性别 命令为:selectSname,Sno,SsexfromStudentwhereSnamelike'刘%';运行结果为: 案例16:查询姓“欧阳”且全名为三个汉字的学生的姓名 命令为:selectSnamefromStudentwhereSnamelike'欧阳_'; 运行结果为: 案例17:查询名字中第二个字为“阳”的学生的姓名和学号命令为:selectSname,SnofromStudentwhereSnamelike'_阳%';运行结果为:案例18:查询所有不姓刘的学生的姓名、学号和性别 命令为:selectSname,Sno,SsexfromStudentwhereSnamenotlike'刘%';运行结果为:案例19:查询DB_设计课程的课程号和学分 命令为:selectCno,CcreditfromCoursewhereCnamelike'DB\_设计'escape'\';运行结果为:案例20:查询以“DB_”开头,且倒数第三个字符为设的课程详细情况 命令为:selectCno,CcreditfromCourse whereCnamelike'DB\_%设__'escape'\';运行结果为:案例21:某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。其命令为:命令为:selectSno,CnofromSCwhereGradeisnull;运行结果为:案例22:查询所有有成绩的学生学号和课程号命令为:selectSno,CnofromSCwhereGradeisnotnull;运行结果为:案例23:查询计算机系年龄在20岁以下的学生姓名命令为:selectSnamefromStudentwhereSdept='CS'andSage<20;运行结果为:案例24:查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。其命令为:命令为:select*fromStudentorderbySdept,Sagedesc;运行结果为:案例25:查询学生总人数命令为:selectcount(*)'学生总人数'fromStudent; 运行结果为:案例26:查询选修了课程的学生人数命令为:selectcount(distinctSno)'选修课总人数'fromStudent;运行结果为:实验四连接、嵌套和集合查询一、实验目的及要求:1.熟练掌握连接、嵌套和集合查询的使用。2.学习各种连接、嵌套和集合查询方法。二、实验任务1.掌握连接、嵌套和集合查询语句的一般格式。2.掌握连接、嵌套和集合查询的各种使用方法。三、操作要点1.创建表时候,在查询分析器中输入程序,编译时查看附录的出错信息再进行修改。2.函数除了系统函数以外也可以自定义函数。3.为了避免程序丢失,把程序保存在到规定的目录中去。四、注意事项1.注意T-SQL各种运算符、控制语句的功能及使用方法。2.注意各种系统函数的调用方法。五、实验学时:4学时六、实验重点及难点1.明白两个表之间的联系是通过公共属性实现的。2.连接、嵌套和集合查询的各种使用方法。3.多重嵌套的使用。七、实验步骤(1)启动SQL查询分析器;(2)选择SQLSERVER后,按确认;(3)选择数据库Univisity;(4)进行以下查询:1.查询每个学生及其选修课程的情况。命令为:selectStudents.*,Reports.*fromStudents,Reports whereStudents.Sno=Reports.Sno;运行结果为:2.查询每一门课的间接先修课(即先修课的先修课)。命令为:selectfirst.Cno,second.Pre_CnofromCoursesfirst,Coursessecond wherefirst.Pre_Cno=second.Cno; 运行结果为:3.查询与“李伟”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。命令为:selectSno,Sname,SdeptfromStudentswhereSdeptin(selectSdeptfromStudentswhereSname='李伟');运行结果为:4.查询选修了课程名为“数据结构”的学生学号(Sno)和姓名(Sname)。命令为:selectSno,SnamefromStudentswhereSnoin(selectSnofromReportswhereCnoin(selectCnofromCourseswhereCname='数据结构'))运行结果为:5.查询与“S04”号学生在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。命令为:selectSno,Sname,SdeptfromStudentswhereSdeptin(selectSdeptfromStudentswhereSno='S04');运行结果为:6.查询非自动化系的不超过自动化系所有学生的年龄的学生姓名(Sname)和年龄(Sage)。命令为:selectSname,SagefromStudentswhereSage<all(selectSagefromStudentswhereSdept='自动化')andSdept<>'自动化';运行结果为:7.查询所有选修了编号为“C01”课程的学生姓名(Sname)和所在系(Sdept)。命令为:selectSname,SdeptfromStudentswhereSnoin(selectSnofromReportswhereCno='C01');或:selectSname,SdeptfromStudentswhereexists(select*fromReportswhereSno=Students.SnoandCno='C01');运行结果为:8.查询选修了所有课程的学生姓名(Sname)和所在系。命令为:selectSname,SdeptfromStudentswherenotexists(select*fromCourseswherenotexists(select*fromReportswhereSno=Students.SnoandCno=Courses.Cno));运行结果为:9.查询计算机科学系的学生或年龄不大于20岁的学生信息。命令为:select*fromStudentswhereSdept='计算机'unionselect*fromStudentswhereSage<='20';运行结果为:10.对课本的select案例49~66进行实现课本Student_Course数据库的各表为:例1查询每个学生及其选修课程的情况。命令为:selectStudent.*,SC.*fromStudent,SCwhereStudent.Sno=SC.Sno;运行结果为:例2查询选修2号课程且成绩在90分以上的所有学生学号和姓名命令为:selectStudent.Sno,SnamefromStudent,SCwhereStudent.Sno=SC.SnoandSC.Cno='2'andGrade>90;运行结果为:例3查询每一门课的间接先修课(即先修课的先修课)。命令为:selectfirst.Cno,second.CpnofromCoursefirst,Coursesecond wherefirst.Cpno=second.Cno;运行结果为:例4查询每个学生的学号,姓名,选修的课程名及成绩命令为:selectStudent.Sno,Sname,Cname,GradefromStudent,SC,Course whereStudent.Sno=SC.SnoandSC.Cno=Course.Cno;运行结果为:例5查询与“刘晨”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。命令为:selectSno,Sname,SdeptfromStudentwhereSdeptin(selectSdeptfromStudentwhereSname='刘晨');运行结果为:例6查询选修了课程名为“数据结构”的学生学号(Sno)和姓名(Sname)。命令为:selectStudent.Sno,SnamefromStudent,SC,CoursewhereStudent.Sno=SC.SnoandSC.Cno=Course.CnoandCourse.Cname='数据结构';运行结果为:例7找出每个学生超过他自己选修课程的平均成绩的课程号命令为:select*fromSCxwhereGrade>=(selectavg(Grade)fromSCywherey.Sno=x.Sno);运行结果为:例8查询非计算机体系中比计算机系任意一个学生年龄小的学生姓名和年龄命令为:selectSname,SagefromStudentwhereSage<any(selectSagefromStudentwhereSdept='CS')andSdept<>'CS';运行结果为:例9查询非计算机系中比计算机所有学生年龄都小的学生姓名及年龄命令为:selectSname,SagefromStudentwhereSage<all(selectSagefromStudentwhereSdept='CS') andSdept<>'CS';运行结果为:例10查询所有选修了编号为“1”课程的学生姓名(Sname)和所在系(Sdept)。命令为:selectSname,SdeptfromStudentwhereSnoin(selectSnofromSCwhereCno='1');或:selectSname,SdeptfromStudentwhereexists(select*fromSCwhereSno=Student.SnoandCno='1');运行结果为:例11查询没有选修了编号为“1”课程的学生姓名(Sname)。命令为:selectSname,SdeptfromStudentwhereSnonotin(selectSnofromSCwhereCno='1');或:selectSname,SdeptfromStudentwherenotexists(select*fromSCwhereSno=Student.SnoandCno='1');运行结果为:例12查询选修了所有课程的学生姓名(Sname)和所在系。命令为:selectSname,SdeptfromStudentwherenotexists(select*fromCoursewherenotexists(select*fromSCwhereSno=Student.SnoandCno=Course.Cno));运行结果为:例13查询至少选修了学生S01选修的全部课程的学生学号命令为:selectdistinctSnofromSCSCXwherenotexists(select*fromSCSCYwhereSCY.Sno='201515122'andnotexists(select*fromSCSCZ whereSCZ.Sno=SCX.SnoandSCZ.Cno=SCY.Cno));运行结果为:例14查询计算机系的学生及年龄不大于19岁的学生命令为:select*fromStudentwhereSdept='CS'unionselect*fromStudentwhereSage<='19';运行结果为:例15查询选修了课程1或者选修了课程2的学生命令为:select*fromStudentwhereSnoin(selectSnofromSCwhereCno='1')unionselect*fromStudentwhereSnoin(selectSnofromSCwhereCno='2');运行结果为:例16查询计算机系的学生与年龄不大于19岁的学生的交集命令为:select*fromStudentwhereSdept='CS'intersectselect*fromStudentwhereSage<='19';运行结果为:例17查询既选修了课程1又选修了课程2的学生命令为:select*fromSCwhereCno='1'andSnoin(selectSnofromSCwhereCno='2');运行结果为:例18查询计算机系的学生与年龄不大于19岁的学生的差集命令为:select*fromStudentwhereSdept='CS'exceptselect*fromStudentwhereSage<=19;或:select*fromStudentwhereSdept='CS'andSage>19;运行结果为:实验五数据库应用程序的设计一、实验目的及要求1、综合运用数据库系统理论知识构建数据库。2、在SQLServer2000环境中实现数据库及相关功能。二、实验任务设计一个简单的设备管理数据库系统(不限),参考课本218页。物资管理1.仓库:属性有(仓库号、面积、电话号码);2.零件:属性有(零件号、名称、规格、单价、描述);3.供应商:属性有(供应商号、姓名、地址、电话号码、账号);4.项目:属性有(项目号、预算、开工日期);5.职工:属性有(职工号、姓名、年龄、职称);三、操作要点1、建立一个设备数据库来完成本次实验。2、建立符合BCNF范式的数据库表。3、创建索引、视图、存储过程、触发器等。4、对数据进行插入、修改、删除、查询。四、注意事项特别注意创建数据库中数据的完整性约束。五、实验学时:8学时六、实验重点及难点1.整个数据库结构的设计。2.数据库中表的确定及表属性的确定。3.灵活运用索引、视图、存储过程、触发器等。实验步骤基本步骤为:数据库概念结构设计、逻辑结构设计和物理结构设计。利用一种数据库设计工具自动生成数据库模式SQL语句(本实验使用PowerDesign工具),能够在数据库管理系统中执行相应的SQL语句,创建所设计的数据库。在PowerDesign中创建E-R图建立实体属性图仓库:(仓库号、面积、电话号码);零件:(零件号、名称、规格、单价、描述);供应商:(供应商号、姓名、地址、电话号码、账号);项目:(项目号、预算、开工日期);职工:(职工号、姓名、年龄、职称);建立实体联系图建立各实体之间的联系建立完整的E-R图建立概念模型后,用powerdesign的工具生成逻辑模型和物理模型。逻辑模型:物理模型:建立好完整的物理模型后,可以用工具(数据库)生成SQL代码:物资管理数据库的SQL代码如下:/*==============================================================*//*DBMSname:MicrosoftSQLServer2008*//*Createdon:2016/11/514:19:34*//*==============================================================*/ifexists(select1fromsysobjectswhereid=object_id('仓库')andtype='U')droptable仓库goifexists(select1fromsysobjectswhereid=object_id('供应')andtype='U')droptable供应goifexists(select1fromsysobjectswhereid=object_id('供应商')andtype='U')droptable供应商goifexists(select1fromsysobjectswhereid=object_id('库存')andtype='U')droptable库存goifexists(select1fromsysobjectswhereid=object_id('职工')andtype='U')droptable职工goifexists(select1fromsysobjectswhereid=object_id('零件')andtype='U')droptable零件goifexists(select1fromsysobjectswhereid=object_id('项目')andtype='U')droptable项目goifexists(select1fromsysobjectswhereid=object_id('领导')andtype='U')droptable领导go/*==============================================================*//*Table:仓库*//*==============================================================*/createtable仓库(仓库号char(10)notnull,职工号char(10)notnull,面积float(30)null,仓库电话号码char(15)null,constraintPK_仓库primarykeynonclustered(仓库号))go/*==============================================================*//*Table:供应*//*==============================================================*/createtable供应(零件号char(20)notnull,项目号char(20)notnull,供应商号char(20)notnull,供应量char(20)null,constraintPK_供应primarykeynonclustered(零件号,项目号,供应商号))go/*==============================================================*//*Table:供应商*//*==============================================================*/createtable供应商(供应商号char(20)notnull,地址char(20)null,账号char(20)null,供应商姓名char(20)null,供应商电话号码char(15)null,constraintPK_供应商primarykeynonclustered(供应商号))go/*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024太阳能组件安装工程光伏电站建设与运营合同3篇
- 2024年物联网技术应用与平台开发合同
- 医疗转运服务合同范例
- 建材公司用人合同范例
- 建委借款合同范例
- 移动真空厕所合同范例
- 设计拆除改造合同范例
- 蔬菜异地配送合同范例
- 灌溉排涝合同范例
- 舍离授权合同范例
- 国家开放大学电大《建筑制图基础》机考三套标准题库及答案3
- 降低故障工单回复不合格率
- 可涂色简笔画打印(共20页)
- 灯光架介绍及使用说明
- 十一学校行动纲要
- GB 1886.6-2016 食品安全国家标准 食品添加剂 硫酸钙(高清版)
- 关于房屋征收及土地收储过程中的税收政策(仅供参考)
- 唯一住房补贴申请书(共2页)
- 单面多轴钻孔组合机床动力滑台液压系统课程设计
- 中医养生脾胃为先PPT文档
- 门窗工程成品保护方案(附图)
评论
0/150
提交评论