东北大学数据库实验报告2014.doc
《东北大学数据库实验报告2014.doc》由会员分享,可在线阅读,更多相关《东北大学数据库实验报告2014.doc(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 数据库实验报告班级:计算机1105班学号:20113263姓名:张少杰 时间:2014年6月19日实验(一): 熟练掌握SQL语言实验目的:熟悉上机环境,创建数据库,在数据库上建立关系模式,插入数据,进行相应的查询操作。实验内容:具体包括如下三部分。一、 熟悉上机环境。客户/服务器结构,数据库服务器在一台NT服务器上,同学们通过客户机(操作系统为Windows 2000)上安装的SQL Server客户端程序, 使用SQL Server数据库服务器。具体包括:1. 了解SQL Server 环境。鼠标点击开始,进入“Microsoft SQL Server企业管理器”,点击SQL Serve
2、r组下的数据库服务器(服务器名称为NEUC-201S(Windows NT)), 可以看到服务器上的圆形标志变为绿色,说明客户端程序已与服务器连接成功。点击服务器(NEUC-201S(Windows NT))下的数据库,可以看到服务器上已建立的数据库,你可访问你有权访问的数据库,并进行相应的操作功能。因为,数据库服务器上建有许多数据库, 每个数据库都有一些合法的用户。2. 鼠标点击开始,进入“Microsoft SQL Server查询分析器”,输入用户名和口令,进入SQL查询分析器。如:你登录的客户机为27号,那么请以用户名user27,口令为user27登录,登录后缺省连到数据库user2
3、7上,user27/user27是数据库user27的创建者,因此用户user27/ user27具有在数据库user27上创建表等一切权力。3. 在SQL查询分析器环境下,你就可进行SQL命令语句操作了。二、 在数据库useri上创建学生选课有关关系模式,并插入相应的数据,实现有关查询。1. 描述学生、课程情况的E-R图如下,请将其转化为用关系数据模型描述的关系模式学生课程选修学号姓名年龄所在系成绩课号课程名学时学分先行课号根据E-R图按如下代码建立三个表:CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) UNIQUE,S
4、sex CHAR (2),Sage SMALLINT,Sdept CHAR(20);CREATE TABLE Course(Cno CHAR(4) PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4),Credit SMALLINT,FOREIGN KEY (Cpno) REFERENCES Course(Cno);CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno) REFERENCES Student(Sno),FOREIGN KEY
5、(Cno) REFERENCES Course(Cno);在Course 表中插入学时字段alter table Course add Ctime smallint NULL运行后建表成功。2. 在数据库中定义这些关系模式,并向基本表中插入如下数据:INSERTINTO Student(Sno,Sname,Ssex,Sdept,Sage)VALUES(201100001,张一,男,IS,18);INSERTINTO Student(Sno,Sname,Ssex,Sdept,Sage)VALUES(201100002,张二,女,IS,18);INSERTINTO Student(Sno,Snam
6、e,Ssex,Sdept,Sage)VALUES(201100003,张三,男,IS,18);INSERTINTO Student(Sno,Sname,Ssex,Sdept,Sage)VALUES(201100004,张四,女,IS,18);INSERTINTO Student(Sno,Sname,Ssex,Sdept,Sage)VALUES(201100005,张五,男,IS,18); INSERTINTO Student(Sno,Sname,Ssex,Sdept,Sage)VALUES(201100006,张六,女,IS,18);INSERTINTO Course(Cno,Cname,Cp
7、no,Credit)VALUES(1,数据库原理,NULL,2);INSERTINTO Course(Cno,Cname,Cpno,Credit)VALUES(2,数据结构,NULL,2);INSERTINTO Course(Cno,Cname,Cpno,Credit)VALUES(3,C语言,NULL,2);INSERTINTO Course(Cno,Cname,Cpno,Credit)VALUES(4,算法,NULL,2);INSERTINTO Course(Cno,Cname,Cpno,Credit)VALUES(5,高等数学,NULL,2);INSERTINTO SC(Sno,Cno)
8、VALUES(201100001,1);INSERTINTO SC(Sno,Cno)VALUES(201100002,2);INSERTINTO SC(Sno,Cno)VALUES(201100003,3);INSERTINTO SC(Sno,Cno)VALUES(201100004,4);INSERTINTO SC(Sno,Cno)VALUES(201100005,5);3. 插入相应的数据,试着插入重复的元组,结果如何?INSERTINTO SC(Sno,Cno)VALUES(201100005,5);4. 在已建立的关系模式之上(已插入一些数据)建立主键约束,参照约束和用户定义的约束(要
9、求学生年龄不小于14岁,不大于35岁),如果约束不能建立,请分析原因,修改后建立上述约束。alter table student add check (Sage between 14 and 35)在建立主键约束前如果存在数据不满足将要建立的主键约束条件,则不能建立主键约束。先将相关数据修改为满足主键约束条件再建立主键约束则操作成功。5. 如果约束建立后,请试着插入重复元组,结果如何?试着插入重复元组,无法插入:INSERTINTO Student(Sno,Sname,Ssex,Sage,Sdept)VALUES(201100005,张五,男,18,IS); 实验(二): 熟练掌握SQL语言用
10、SQL完成下列查询1. 求选修了课程的学生的学号,要求:(1) 不使用distinct语句,写出其SQL语句Select Sno from SC(2) 使用distinct语句,消除重复元组,写出其SQL语句select distinct Sno from SC(3) 如果该查询写成: select Student.Sno from Student, SC where Student.Sno=SC.Sno 请问该查询结果和上面哪个结果是相同的?(3) 和(1)的结果相同2. 求开设的课程号、课程名、学时和学分,要求对查询结果的列重新命名。select Cno MyCno ,Cname MyCn
11、ame,Ctime MyCtime,Credit MyCredict from Course3. 求计算机系和数学系的学生学号、姓名和年龄。select Sno,Sname,Sage from Student where Sdept=CS or Student =Math4. 求不是数学系、计算机系的学生的情况,要求select后写*代替列出所有的列名。select * from Student where Student.Sdept!=CS and Student.Sdept!=Math5. 求全体学生的信息,要求按年龄升序排列。select * from Student order by
12、Sage asc6. 求计算机系年龄在1820岁之间的学生姓名和年龄。select Sname,Sage from Student where Sage=18 and Sage804求计算机系每个学生的姓名,选修的课程名和成绩。select Student.Sname,SC.Cno,SC.Grade from Student,SC where Student.Sdept=CS and Student.Sno=SC.Sno5求每个学生的学号及平均成绩。select Sno,AVG(Grade) from SC group by Sno6求男学生每一年龄组中超过1人的年龄组及人数。select S
13、age,Count(Sno) from Student group by Sage having Count(Sno)17求每一门课程的间接先行课号。select C1.Cno,C2.Cpno from Course C1,Course C2 where C1.Cpno=C2.Cno 8. 求选修了全部课程的学生的学号。select Sno from Student where not exists (select * from Course where not exists(select * from SC where Sno=Student.Sno and Cno=Course.Cno);
14、实验(四):数据库的安全性实验目的:了解和使用安全子系统和检查。实验内容:具体包括如下二部分。一熟练掌握SQL(续)1. 修改表Students,在其中加入一个字段性别sex char(1)CREATE TABLE Student(Sno CHAR(9) ,Sname CHAR(20) ,Sage SMALLINT,Sdept CHAR(20);CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT);INSERTINTO Student(Sno,Sname,Sdept,Sage)VALUES(201100003,张一,IS,18);INS
15、ERTINTO Student(Sno,Sname, Sdept,Sage)VALUES(201100002,张二,CS,18);INSERTINTO Student(Sno,Sname,Sdept,Sage)VALUES(201100001,张三,CS,18);INSERTINTO Student(Sno,Sname,Sdept,Sage)VALUES(201100004,张四,CS,18);INSERTINTO Student(Sno,Sname,Sdept,Sage)VALUES(201100005,张五,CS,18);INSERTINTO Student(Sno,Sname,Sdept
16、,Sage)VALUES(201100006,张六,IS,18);INSERTINTO SC(Sno,Cno,Grade)VALUES(201100002,2,88);INSERTINTO SC(Sno,Cno,Grade)VALUES(201100002,1,98);INSERTINTO SC(Sno,Cno,Grade)VALUES(201100001,2,77);INSERTINTO SC(Sno,Cno,Grade)VALUES(201100001,1,80);INSERTINTO SC(Sno,Cno,Grade)VALUES(201100005,2,92);alter table
17、Student add sex char(1);2. 创建索引:在Students表的Sno上创建唯一聚簇索引, 在SC表的(Sno, Cno)上创建唯一索引. 查询Students表的内容, 记录的顺序有变化吗? 查询SC表的内容, 记录的顺序有变化吗?Create unique clustered index Student_sno on Student(Sno);create unique index Sno_cno on SC(Sno,Cno);3. 创建视图 创建计算机系学生视图CS_Students,其中包括学号、年龄和性别。带with check opition子句不带with
18、check opition子句时各插入一计算机系学生记录,通过视图查询插入的记录,结果如何?通过表Students查询插入的记录,查看所在系字段上的值?create view CS_students1 as select Sno,Sage,sex from Student where Sdept=CS with check optionINSERT INTO CS_students1VALUES(201100005,18,m);create view CS_students2 as select Sno,Sage,sex from Student where Sdept=CSINSERT IN
19、TO CS_students2VALUES(201100007,18,m);创建一视图,表示学生的平均成绩,其中包括Sno,avgGrade。通过该视图插入一学生姓名和平均成绩,结果如何?通过该视图查找平均成绩在90分以上的学生的学号和平均成绩,结果又如何?create view Stuavggrade(sno,avggrade)as select Sno,avg(Grade)from SC group by SC.snoInsert into Stuavggradevalues(201100003,87)select sno,avggradefrom Stuavggradewhere avg
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 数据库 实验 报告 2014
限制150内