《SQL数据库系统实验报告(共36页).doc》由会员分享,可在线阅读,更多相关《SQL数据库系统实验报告(共36页).doc(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上设有一学籍管理系统,其数据库名为“EDUC”。初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:sql_data”(注意:此文件名必须已经建立的前提下才可以此操作)。日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:sql_data”。四实验步骤1使用SQL Server Management Studio
2、(简称SSMS)创建数据库。(1)启动SSMS 在开始菜单中:所有程序SQL Server 2005 SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。如果身份验证选择的是“混合模式”,则要输入sa的密码。(2)建立数据库在“对象资源管理器”窗口,建立上述数据库EDUC。在数据库节点上右击选择新建。同时建立一个同样属性的数据库EDUC1。2. 使用向导删除上面建立的数据库。用SSMS删除建立的数据库EDUC。3、数据库的分离将刚建好的数据库分离出来,即点击新建的EDUC任务分离,将删除连接和更新
3、打一个钩,然后点击确定。如图所示:4、数据分离出来之后可以附加进去。即右击数据库附加点击添加按钮,找到数据库文件.mdf所存放的路径,然后点击确定,即可以将我们刚所创建的文件添加回去。五 实验总结 通过本次实验,我熟悉了SQL Server 中SQL Server Management Studio的环境,了解了SQL Server 数据库的逻辑结构和物理结构,掌握使用向导创建和删除数据库的方法。加深了对数据库的认识和理解。实验二 使用SQL语句创建和删除数据库SQL 语句的创建、删除和修改数据库。三. 实验内容使用SQL语句创建数据库userdb1。四实验步骤1创建数据库userdb1的SQ
4、L语句,create database userdb1on(name=userdb1_data,filename=g:xygluserdb1.mdf ,size=5,maxsize=10,filegrowth=1)log on( name=userdb1_log, filename=g:xygluserdb1.ldf , size=2 , maxsize=5 , filegrowth=1)执行上述语句建立数据库userdb12. 根据步骤1的sql语句,写出创建实验1中数据库EDUC的sql语句,并建立数据库EDUC.初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5比例增长
5、;日志文件初始为2MB,最大可增长到5MB,按1MB增长。create database EDUCon(name=EDUC_data,filename= E:sql_dataEDUC.mdf ,size=10,maxsize=50,filegrowth=5%)log on( name=EDUC_log, filename= E:sql_dataEDUC.ldf , size=2 , maxsize=5 , filegrowth=1)3. 用SQL语句删除步骤1建立的数据库userdb1。drop database userdb1或者直接语句use master drop database us
6、erdb14、在查询分析器中还可以实现对数据库的修改操作,Alter DATABASE 数据库名ADD FILE 新增数据文件 |ADD LOG FILE 新增数据日志文件 | REMOVE FILE 逻辑文件名 删除指定文件|ADD FILEGROUP 文件组名 新增文件组|REMOVE FILEGROUP 文件组名 删除文件组|MODIFY FILE 修改文件属性|MODIFY NAME=新数据库名 数据名更改(1)、 将文件名EDUC改为EDUC1ALTER DATABASE EDUCMODIFY NAME=EDUC1;(2)、增加一个日志文件,文件名为EDUC_LOG,初始大小为10m
7、b,最大为20MB,增加为1MBALTER DATABASE EDUC1 ADD LOG FILE (NAME=EDUC_LOG, FILENAME=E:sql_dataEDUC_LOG.LDF, SIZE=10MB, MAXSIZE =20MB, FILEGROWTH=1MB五 实验总结 通过本次实验,我进一步了解了数据库的逻辑结构和物理结构。初步掌握使用SQL 语句创建、删除和修改数据库。对相关语句的应用也更加得心应手。实验三 使用SQL语句创建和删除表一实验目的1了解表的结构特点。2了解SQL Server的基本数据类型。3学会使用T-SQL语句创建表。二实验要求1. 完成SQL语句创建
8、、修改、删除基本表。2. 完成实验报告。三. 实验内容在数据库EDUC中,创建如下几个表: 表3.1 class表(班级信息表)字段名称类 型允许空值主 键说 明ClsNOChar(6)NOT NULL是班号ClsNameVarchar(16)NOT NULL班名DirectorVarchar(10)NULL辅导员SpecialtyVarchar(30)NULL专业表3.2 student表(学生信息表)字段名称类 型允许空值主 键说 明SnoChar(8)NOT NULL是学号SnameVarchar(10)NOT NULL姓名SCsexChar(2)性别:男、女ClsNOChar(6)NU
9、LL班级的编号,(外键)参照表ClassSaddrVarchar(20)住址Sagenumeric(3, 0)年龄,大于10,但小于30岁HeightDecimal(4,2)身高表3.3 course表(课程信息表)字段名称类 型允许空值主 键说 明CnoChar(4)NOT NULL是主键CnameVarchar(16)NOT NULL课程的名称Cpnochar(4)NULL先修课程的课程号(外键),参照cnoCcreditTinyint学分表3.4 sc表(学生选课成绩表)字段名称类 型允许空值主 键说 明SnoChar(8)NOT NULL是学号,参照Student,与Cno组成主键CN
10、OChar(4)NOT NULL是课程号,参照CoursegradeNumeric(4,1)NULL成绩四实验步骤1. 打开查询窗口,输入创建基本表的sql语句,点击“执行”按钮,完成表的创建。创建class表如下:CREATE TABLE class(ClsNO CHAR(6) PRIMARY KEY NOT NULL, ClsName VARCHAR(16)NOT NULL, Director VARCHAR(10)NULL, Specialty VARCHAR(30)NULL);2. 用上述方法创建其他表。创建student表如下:CREATE TABLE student(Sno CHA
11、R(8) PRIMARY KEY NOT NULL, Sname VARCHAR(10)NOT NULL, SCsex CHAR(2)check(scsex=男or scsex=女), CLsNO CHAR(6) NULL, Saddr VARCHAR(20), Sage NUMERIC(3,0)check(10Sage and sage30), Height DECIMAL(4,2) FOREIGN KEY(CLsNO) REFERENCES class(CLsNO);创建course表如下:CREATE TABLE course(Cno CHAR(4) PRIMARY KEY NOT NU
12、LL, Cname VARCHAR(16)NOT NULL, Cpno CHAR(4) NULL, Ccredit TINYINT, foreign key(Cpno) references cno);创建SC表如下:CREATE TABLE sc(PRIMARY KEY(sno,cno), sno char(8) not null, cno char(4) not null, foreign key (Sno) references student(sno) , foreign key (CNO) references course(cno), grade NUMERIC(4,1) NULL
13、);3. 按照student的要求创建表student1,修改基本表student1向student1 表增加“入学时间”列s_entrance,其数据类型为日期型。ALTER TABLE student1 ADD S_ENTRANCE DATETIME;4. 按照student的要求创建表student2,并将年龄的数据类型由字符型改为整数。Alter table student2 alter column sage int;(报错:因为sage上有check约束,删除check约束后再修改类型)Alter table student2drop CK_student2_Sage_689D83
14、92;Alter table student2 alter column sage int;5. 将student2表中sage改回smallint型。Alter table student2 alter column sage smallint;6. 删除sage后再增加新列和新的完整性约束Alter table student2 drop column sage ;alter table student2 add sage char check(10sage);7. 按照student的要求创建Student1,然后删除Ssex完整性约束。CREATE TABLE student2(Sno
15、 CHAR(8) PRIMARY KEY NOT NULL, Sname VARCHAR(10)NOT NULL, SCsex CHAR(2)check(scsex=男or scsex=女), CLsNO CHAR(6) NULL, Saddr VARCHAR(20), Sage NUMERIC(3,0)check(10Sage and sage30), Height DECIMAL(4,2) FOREIGN KEY(CLsNO) REFERENCES class(CLsNO);alter table student2drop CK_student2_SCsex_76EBA2E9;8 删除基本
16、表student1。drop table student1;9. 将以上创建表的SQL语句以 .SQL文件的形式保存在磁盘上。10、将在sudent1中新加入的列名s_entrance修改为Sentranceexecsp_renamestudent1.S_entrance,sentrancealter table student1add s_entrance char;exec sp_rename student1.S_entrance,sentrance;11、将student2表名改为student1execsp_renamestudent2,student1exec sp_rename
17、student2,student1;五实验总结通过这次实验,我了解了SQL Server的常用数据类型,学会创建数据库的表。掌握了SQL创建基本表的方法、SQL修改基本表的方法,以及SQL删除基本表的方法。实验四 数据更新操作一. 实验目的1 熟悉使用UPDATE/INSERT/DELETE语句进行表操作;2 能将这些更新操作应用于实际操作中去;二. 实验要求1 完成下面的实验内容,并提交实验报告;2 在实验报告中附上相应的代码;三. 实验内容(1)向表(Class)中插入数据ClsNOClsNameDirectorSpecialtyCS01计算机一班张宁计算机应用CS02计算机二班王宁计算机
18、应用MT04数学四班陈晨数学PH08物理八班葛格物理GL01地理一班张四应用地理插入数据之后使用命令:Select * from Class; 检查插入数据的正确性(2) 向表(Student)中插入数据SnoSnameSsexClsNOSaddrSageHeight王军男CS01下关40#201.76李杰男CS01江边路96#221.72王彤女MT04中央路94#191.65吴杪女PH08莲化小区74#181.60插入数据之后使用命令:Select * from Student; 检查插入数据的正确性(3)向表(Course )中插入数据CnoCnameCpnoCredit0001高等数学N
19、ull60003计算机基础000130007物理00014插入数据之后使用命令:Select * from Course; 检查插入数据的正确性(4)向表(SC )中插入数据SNOCNOGrade000190000786000187000376000187000393000785000790(5) 对于student表,将所有班级号为CS01的,并且年龄小于20岁的学生的班级号改为CS02。(6) 对于student表,删掉所有年龄不小于20岁,并且专业号为CS02的学生的记录。对于student表,插入一条新记录,它的具体信息为,学号:、姓名:张三、性别:男、年龄:19、班级编号:CS01。
20、(7) 对于student表,将年龄最小的学生的家庭地址去掉。(8) 对于student表,将平均年龄最小的一个班级编号改为GL01四、实验步骤:1.向class表插入数据如下:insertinto class(clsno,clsname,director,specialty)values(cs01,计算机一班,张宁,计算机应用);insertinto class(clsno,clsname,director,specialty)values(cs02,计算机二班,王宁,计算机应用);insertinto class(clsno,clsname,director,specialty)value
21、s(mt04,数学四班,陈晨,数学);insertinto class(clsno,clsname,director,specialty)values(ph08,物理八班,葛格,物理);insertinto class(clsno,clsname,director,specialty)values(gl01,地理一班,张四,应用地理);2.向Student表插入数据如下:insertinto student(sno,sname,scsex,clsno,saddr,sage,height)values(,王军,男,cs01,下关40#,20,1.76);insertinto student(sn
22、o,sname,scsex,clsno,saddr,sage,height)values(,李杰,男,cs01,江边路96#,22,1.72);insertinto student(sno,sname,scsex,clsno,saddr,sage,height)values(,王彤,女,mt04,中央路94#,19,1.65);insertinto student(sno,sname,scsex,clsno,saddr,sage,height)values(,吴杪,女,ph08,莲化小区74#,18,1.60);3. 向course表插入数据如下:insertinto course(cno,c
23、name,cpno,ccredit)values(0001,高等数学,null,6);insertinto course(cno,cname,cpno,ccredit)values(0003,计算机基础,0001,3);insertinto course(cno,cname,cpno,ccredit)values(0007,物理,0001,4);4.向表SC 中插入数据insertinto sc(sno,cno,grade)values(,0001,90);insertinto sc(sno,cno,grade)values(,0007,86);insertinto sc(sno,cno,gr
24、ade)values(,0001,87);insertinto sc(sno,cno,grade)values(,0003,76);insertinto sc(sno,cno,grade)values(,0001,87);insertinto sc(sno,cno,grade)values(,0003,93);insertinto sc(sno,cno,grade)values(,0007,85);insertinto sc(sno,cno,grade)values(,0007,90);5.对于student表,将所有班级号为CS01的,并且年龄不大于20岁的学生的班级号改为CS02updat
25、e studentset clsno = cs02where clsno = cs01 and sage= 20;对于student表,插入一条新记录,它的具体信息为,学号:、姓名:张三、性别:男、年龄:19、班级编号:CS01。insertinto student(sno,sname,scsex,clsno,saddr,sage,height)values(,张三,男,cs01,null,19,null);7. 对于student表,将年龄最小的学生的家庭地址去掉。update studentset saddr = nullwhere sage in (select min(sage) fr
26、om student)8.对于student表,将平均年龄最小的一个班级编号改为GL01update studentset clsno = gl01where sage (select gradefrom sc,studentwhere student.sname = 张三 and student.sno = sc.sno and o = 0001);5) 查询没有选修“0002”课程的学生姓名;select distinct snamefrom student,scwhere student.sno = sc.sno and o 0002;五、 实验总结 通过本次实验,我掌握了成功建立了基本
27、表的方法。了解了SELECT语句的用法。熟悉了查询分析器的工作原理。实验七 使用聚集函数的SELECT语句一 实验目的1. 熟练掌握数据查询中的分组、统计、计算和组合的操作方法。2. 进一步掌握SQL Server 查询分析器的使用,加深对SQL语言的嵌套查询语句的理解。二 实验要求c1.在实验之前做好准备。2.完成实验,并验收实验结果提交实验报告。三 实验内容在数据库EDUC中用SQL语句实现如下查询:1)求学生的总人数。2)求选修了课程的学生人数。3)求课程的课程号和选修该课程的人数。4)求选修课程超过2 门课的学生学号。四. 实验步骤1) 求学生的总人数.select count(*)f
28、rom student;2) 求选修了课程的学生人数。select count(distinct sno)from sc;3)求课程的课程号和选修该课程的人数。select cno,count(sno)from scgroup by cno;4) 求选修课程超过2 门课的学生学号select snofrom scgroup by snohaving count(*)2;五、 实验总结通过本次实验,我了解了SELECT语句的GROUP BY和ORDER BY子句的作用。掌握了统计函数和分组统计函数的使用方法。熟悉了查询分析器的运行环境。 实验八 视图的定义与使用一 实验目的1. 熟悉和掌握对数据
29、表中视图的查询操作和SQL命令的使用;2. 熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系;3. 学习灵活熟练的进行视图的操作,认识视图的作用。二实验要求1. 在实验开始之前做好准备工作。2. 实验之后提交实验报告,思考视图和基本表的区别三实验内容1.定义视图在EDUC数据库中,已Student、Course 和SC表为基础完成一下视图定义:1) 将Student, Course 和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_SC_G;2) 定义一个反映学生出生年份的视图V_YEAR;3) 将各位学生选修课程的门数及平均成绩定义为视
30、图V_AVG_S_G;4) 将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G;5) 在原来的V_SC_G中增加一个属性列班级号2.使用视图1) 查询以上所建的视图结果。2) 查询平均成绩为90分及以上的学生学号、姓名和成绩;3) 查询科目成绩大于平均成绩的学生学号、课程号、成绩和平均成绩;4) 查询1994年出生的学生学号和姓名。5) 查询班级号为CS01选修了0001号课程的学生学号,姓名和成绩四 实验步骤1.定义视图1)将Student, Course 和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_SC_G.create view v_sc_g(sno,sname
31、,cno,cname,grade)asselect sc.sno,sname,o,cname,gradefrom student,course,scwhere student.sno = sc.sno and o = o;2) 定义一个反映学生出生年份的视图V_YEAR. create view v_year(sname,year) as select sname,2013-sage from student;3) 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G. create view v_avg_s_g(sno,cnono,avggrade) as select sno,c
32、ount(cno),avg(grade) from sc group by sno;4) 将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G。 create view v_avg_c_g(cno,cnono,avggrade) as select o,count(o),avg(grade) from sc,course where o = o group by o;5)在原来的V_SC_G中增加一个属性列班级号2.使用视图1)查询以上所建的视图结果。2) 查询平均成绩为90分及以上的学生学号、姓名和成绩; select v_sc_g.sno,sname,grade from v_sc_
33、g where sno in (select v_avg_s_g.sno from v_avg_s_g where v_sc_g.sno = v_avg_s_g.sno and v_avg_s_g.avggrade90);3) 查询科目成绩大于其科目平均成绩的学生学号、课程号、成绩和平均成绩; select sc.sno ,o,sc.grade,savggrade from v_avg_c_g,sc,v_avg_s_g where o = v_avg_c_o and sc.grade v_avg_c_g.avggrade and sc.sno=v_avg_s_g.sno;4)查询1994年出生
34、的学生学号和姓名。 select sno,student.sname from student,v_year where student.sname = v_year.sname and year = 1994; 5)查询班级号为CS01选修了0001号课程的学生学号,姓名和成绩 select student.sno,v_sc_g.sname,v_sc_g.grade from v_sc_g,studentwhere student.sno = v_sc_g.sno and v_sc_o = 0001 and student.clsno = cs01;五、 实验总结 通过本次实验,我掌握了对数
35、据表中视图的查询操作和SQL命令的使用;熟悉了对数据表中视图的更新操作和SQL命令的使用,体会到了视图的作用。实验九 触发器的创建与使用一、实验目的本实验的目的是使学生进一步掌握SQL Server触发器的创建及使用方法,加深SQL触发器的理解。通过对数据的更新操作体会其触发器的作用。二、实验要求1. 在实验之前做好准备2. 试验之后提交实验报告,并验收实验结果三、实验内容1. 在班级表class中增加班级人数(c_total)字段Alter table class 2. 创建INSERT触发器t_inst_stu3. 创建DELETE触发器t_dele_stu:在学生表(student)中删除一名