《太原理工数据库实验报告一类参考》由会员分享,可在线阅读,更多相关《太原理工数据库实验报告一类参考(21页珍藏版)》请在金锄头文库上搜索。
1、 本科实验报告课程名称: 数据库系统原理B 实验项目: 交互式SQL、数据完整性 实验地点: 专业班级: 学号: 学生姓名: 指导教师: 2015年 6 月 24 日实验二:交互式 SQL语句的使用一、实验目的(1)掌握数据库对象的操作过程,包括创建、修改、删除。(2)熟悉表的各种操作,包括插入、修改、删除、查询(3)熟练掌握常用 SQL语句的基本语法二、实验内容和要求选择如下一个应用背景之一:学生选课系统其它你熟悉的应用(1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。(2)要求认真进行实验,记录各实验用例及执行结果。(3)深入了解各个操作的功能。实验要
2、求包括如下方面的内容:3.1 数据定义1 基本表的创建、修改及删除2 索引的创建3 视图的创建3.2 数据操作完成各类更新操作包括:1 插入数据2 修改数据3.删除数据3.3 数据查询操作完成各类查询操作1 单表查询2 分组统计3. 连接查询4. 嵌套查询5. 集合查询3.4 数据操作1 创建视图2 视图查询三、主要仪器设备操作系统:Windows 7 Windows 2003 Server 数据库管理系统: SQL Server。四、操作方法与实验步骤1.创建,修改及删除基本表(1)创建 Student表CREATE TABLE Student( Sno CHAR(8) PRIMARY KE
3、Y, Sname CHAR(8) , Ssex CHAR(2) NOT NULL, Sage INT, Sdept CHAR(20);(2)创建 Course表CREATE TABLE Course( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40) NOT NULL, CpnoC HAR(4), Ccredit SMALLINT,);(3)创建 SC表Create table SC(Sno char(8), Cno char(4), Grade smallint,Primary key(Sno,Cno),Foreign key(Sno)references St
4、udent(Sno),Foreign key(Cno)references Course(Cno); (4)创建员工表EmployeeCREATE TABLE Employee(编号 CHAR(8) PRIMARY KEY,姓名 VARCHAR(8) not null部门 CHR(40),工资 numeric(8,2),生日 datetime,职称 char(20),);指出该语句中的错误并改正后执行。(5)检查表是否创建成SELECT * FROM StudentSELECT * FROM CourseSELECT * FROM SCSELECT * FROM Employee(6) 修改表
5、结构及约束增加班级列ALTER TABLE Student ADD Sclass char(4)修改年龄列ALTER TABLE Student ALTER COLUMN Sage smallint增加约束ALTER TABLE Course ADD UNIQUE(Cname)(7)删除表DROP TABLE Employee2创建索引(1)为 Course表按课程名称创建索引CREATE INDEX iCname On Course(Cname)(2)为 Student表按学生姓名创建唯一索引CREATE UNIQUE INDEX iSname ON Student(Sname)(3)为 S
6、C表按学号和课程号创建聚集索引CREATE CLUSTERED INDEX iSnoCno On SC(Sno,Cno desc)(4)为 Course表按课程号创建唯一索引CREATE UNIQUE INDEX iCno ON Course(Cno)3创建视图建立信息系学生的视图:CREATE VIEW IS_StudentASSELECT Sno,Sname,Sage FROM StudentWHERE Sdept= IS3.2数据操作1. 插入数据(1)插入到Student表INSERT INTO Student VALUES(20100001,李勇,男,20,CS,1001)INSER
7、T INTO Student VALUES(20100002,刘晨,女,19,CS,1001)INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,Sclass) VALUES(20100021,王敏,女,18,MA,1002)INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,Sclass) VALUES(20100031,张立,男,19,IS,1003)INSERT INTO Student(Sno,Sname,Ssex,Sclass) VALUES(20100003,刘洋,女,1001)INSERT INTO
8、Student(Sno,Sname,Ssex,Sage,Sdept,sclass) VALUES(20100010,赵斌,男,19,IS,1005)INSERT INTO Student VALUES(20100022,19,张明明,男,CS,1002)(2) 插入到Course表insert into Course(Cno,Cname,Cpno,Ccredit)values(1,数据库系统原理,5,4) insert into Course(Cno,Cname,Cpno,Ccredit)values(2,高等数学,null,2)insert into Course(Cno,Cname,Cpn
9、o,Ccredit)values(3,管理信息系统,1,4)insert into Course(Cno,Cname,Cpno,Ccredit)values(4,操作系统原理,6,3)insert into Course(Cno,Cname,Cpno,Ccredit)values(5,数据结构,7,4)insert into Course(Cno,Cname,Cpno,Ccredit)values(6,数据处理,null,2)insert into Course(Cno,Cname,Cpno,Ccredit)values(7,C语言,null,4)(3) 插入到Sc表insert into S
10、c values(20100001,1,92)insert into Sc values(20100001,2,85)insert into Sc(Sno,Cno)values(20100003,1)insert into Sc(Sno,Cno,Grade)values(20100010,3,null)insert into Sc values(20100001,3,88)insert into Sc values(20100002,1,90)insert into Sc values(20100002,2,80)(4) 多行插入到表中create table cs_Student( 学号 c
11、har(8), 姓名 char(8), 年龄 smallint);insert into cs_Student select Sno,Sname,Sagefrom Student where Sdept=CS;(5) 检查插入到表中的数据SELECT * FROM StudentSELECT * FROM CourseSELECT * FROM SC2. 修改数据(1)将学生 20100001的年龄改为22岁。UPDATE student SET Sage = 22 WHERE Sno=20100001;(2)将所有学生的年龄增一岁。UPDATE Student SET Sage = Sage
12、 +1(3)填写赵斌同学的管理信息系统课程的成绩UPDATE SC SET Grade = 85WHERE Sno=20100010 AND Cno=3(4)将计算机科学系全体学生的成绩加5分UPDATE sc SET Grade=Grade + 5WHERE CS=(select Sdept from student where student.Sno=sc.Sno);(5)请自己完成如下操作将刘晨同学的2号课程成绩修改为80update SC set Grade=80 where Sno=20100002AND Cno=2将“20100021”同学的学号修改为“20100025”updat
13、e Student set Sno=20100025 where Sno=20100021;(6)检查数据是否修改3.删除数据(1)删除学号为 201000022的学生记录DELETE FROM Student WHERE Sno=20100022(2)删除学号 20100001学生的 1号课程选课记录将选课信息复制到一个临时表tmpSC中:SELECT * INTO tmpSC FROM SC在 tmpSC中执行删除操作:DELETE FROM tmpSC WHERE Sno=20100001 and Cno=1(3)删除临时表中 20100002学生的全部选课记录delete from t
14、mpSC where Sno=20100002;(4)删除计算机科学系所有学生的选课记录DELETE FROM tmpSC WHERE CS=(select Sdept from student where student.Sno=tmpSC.Sno );(5)删除全部选课记录DELETE FROM tmpSC(6) 检查数据是否删除3.3 数据查询操作完成如下查询操作:1单表查询(1)按指定目标列查询查询学生的详细记录:SELECT* FROM Student;查询学生的学号、姓名和年龄SELECT Sno,Sname,Sage FROM Student;(2)目标列包含表达式的查询查询全体学生的姓名、出生年份和所在系,要求用小写字母表示所有系名。SELECT Sname,Ye