当前位置:文档之家› 数据库实验报告总结

数据库实验报告总结

数据库实验报告刘皓冰实验(一): 熟练掌握SQL 语言实验目的:熟悉上机环境,创建数据库,在数据库上建立关系模式,插入数据,进行相应的查询操作。

实验内容:具体包括如下三部分。

一、熟悉上机环境。

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

具体包括:1. 了解SQL Server 环境。

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

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

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

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

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

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

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

1. 描述学生、课程情况的E-R 图如下,请将其转化为用关系数据模型描述的关系模式学生 课程 选修 学号 姓名 年龄所在系 成绩 课号 课程名 学时 学分先行课号drop table Students;drop table Courses;drop table SC;create table Students(Sno nchar(10),Sname nchar(20),Sage int,Sdept nchar(20),primary key(Sno),);create table Courses(Cno nchar(4),Cname nchar(50),Ctime int,Ccredit int,Cpno nchar(4)primary key(Cno),foreign key(Cpno) references Courses,);create table SC(Sno nchar(10),Cno nchar(4),Grade int,primary key(Sno,Cno),foreign key(Sno) references Students,foreign key(Cno) references Courses,);2.在数据库中定义这些关系模式,并向基本表中插入如下数据:insert into Students values ('20134017','刘皓冰',19,'计算机学院'); insert into Students values ('20134028','袁堃皓',20,'计算机学院'); insert into Students(Sno,Sname,Sage,Sdept) values ('20130000','范冰冰',22,'表演学院');insert into Students values ('20130011','黄晓明',23,'表演学院'); insert into Students values ('20130012','王一',23,'表演学院'); insert into Students values ('20130013','李天一',23,'表演学院'); insert into Students values ('20130014','李二麻',23,'表演学院'); delete from Students where Sno='20130015';insert into Students values ('20130015','李白',23,'计算机学院') insert into Students values ('20134018','王妮娜',21,'计算机学院') insert into Students values ('20134019','刘十',20,'计算机学院')insert into Courses values('1001','C++语言',30,3,null)insert into Courses values('1002','编译原理',30,3,'1008')insert into Courses values('1003','算法设计',40,4,'1001')insert into Courses values('1004','离散数学',30,3,null)insert into Courses values('1005','线性代数',20,2,null)insert into Courses values('1006','Java语言',30,3,'1001')insert into Courses values('1007','Python语言',20,2,'1009')insert into Courses values('1008','计算机组成原理',40,4,null)insert into Courses values('1009','操作系统',20,2,'1008')insert into Courses(Cno,Cname,Ctime,Ccredit,Cpno) values('1000','数据库',30,3,'1009')insert into SC(Sno,Cno,Grade) values('20134017','1000',100)insert into SC values('20134017','1001',97)insert into SC values('20134017','1002',95)insert into SC values('20134028','1000',100)insert into SC values('20134028','1004',95)insert into SC values('20130000','1005',91)insert into SC values('20130011','1001',87)insert into SC values('20130011','1002',90)insert into SC values('20130000','1003',97)insert into SC values('20134019','1007',99)3.插入相应的数据,试着插入重复的元组,结果如何?由于在定义关系模式时,已经添加主键约束(primary key(Sno),primary key(Cno),primary key(Sno,Cno)),所以不可以再插入重复的元组4.在已建立的关系模式之上(已插入一些数据)建立主键约束,参照约束和用户定义的约束(要求学生年龄不小于14岁,不大于35岁),如果约束不能建立,请分析原因,修改后建立上述约束。

由于在定义关系模式时,已经添加主键约束(primary key(Sno),primary key(Cno),primary key(Sno,Cno))和参照约束(foreign key(Sno) references Students,foreign key(Cno) references Courses, foreign key(Cpno) references Courses),现添加用户定义的约束(要求学生年龄不小于14岁,不大于35岁):alter table Students add check (Sage>=14 and Sage<=35)5.如果约束建立后,请试着插入重复元组,结果如何?试着插入重复元组,无法插入:因为约束已经建立,所以现象和3相同。

但是如果没有主键约束,重复元组是可以插入的实验(二): 熟练掌握SQL语言用SQL完成下列查询1.求选修了课程的学生的学号,要求:(1)不使用distinct语句,消除重复元组,写出其SQL语句select Sno from SC group by SNo(2) 使用distinct语句,消除重复元组,写出其SQL语句select distinct Sno from SC(3) 如果该查询写成:select Student.Sno from Student, SC where Student.Sno=SC.Sno 请问该查询结果和上面哪个结果是相同的?这样可能会有重复元组2.求开设的课程号、课程名、学时和学分,要求对查询结果的列重新命名。

select o 课程号,ame 课程名,Courses.Ctime 学时, redit 学分from Courses3.求计算机系和数学系的学生学号、姓名和年龄。

相关主题