数据库上机实验报告
实验⼀:建⽴数据库及基本表⼀、实验⽬的
1、了解SQL Server数据库的逻辑结构和物理结构;2、了解SQL Server的基本数据类型;3、学会在企业管理器中创建数据库和表;
4、使⽤SQL查询分析器⽤CREATE、DROP、ALTER语句创建和删除数据库,创建、删除、更新基本表。⼆、实验内容
1、创建数据库和查看数据库属性。2、创建表。
3、查看和修改表结构。
4、熟悉企业管理器和查询分析器⼯具的使⽤⽅法三、实验步骤
1、在企业管理器中创建数据库和数据表。
(1) 使⽤企业管理器建⽴图书管理数据库,数据库名为BM,初始⼤⼩为10MB,最⼤为50MB,数据库⾃动增长,增长⽅式是按5%⽐例增长;⽇志⽂件初始为2MB,最⼤可增长到5MB,按1MB增长。数据库的逻辑⽂件名和物理⽂件名均采⽤默认值。详细步骤:
(2) 在企业管理器中查看图书管理数据库的属性,并进⾏修改,使之符合要求。
(3) 通过企业管理器,在建好了图书管理数据库BM中建⽴图书(book)、读者(reader)和借阅(borrow)3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价);读者(编号,姓名,单位,性别,电话);借阅(书号,读者编号,借阅⽇期)。
(4) 利⽤企业管理器向表中输⼊数据。2、在查询分析器中创建数据库和数据表(1) 创建数据库S-C 的sql语句:create database s_c
(2) 在数据库S-C下,创建基本表学⽣表student(sno,sname,ssex,sage,sdept)的sql语句:create table student( sno c(8),sname c(10),ssex c(2),sage(4),sdept c(8) )创建基本表课程表course(cno,cname, ccredit)的sql语句:create table course( cno c(4),cname c(10),ccredit c(2) )
创建基本表成绩表sc(sno,cno,grade)的sql语句:create table sc( sno c(8),cno c(4),grade n(4) )
(3) 在窗⼝下分别键⼊DROP TABLE Student及DROP TABLE SC命令,运⾏后观察结果。再重新运⾏student.sql和sc.sql,并观察结果。
(4) 利⽤查询分析器编写SQL语句修改表。
①在student表中增加⼀个新的字段“smerit”(特长),数据类型为char(30);该sql语句:alter table student add smerit c(30)②修改student表中sdept字段的数据类型为varchar(20),其sql语句alter table student alter sdept varchar(20)实验⼆:数据查询⼀、实验⽬的
1、掌握查询分析器的使⽤⽅法,加深对SQL的语句的理解;2、使⽤查询分析器⽤SELECT语句进⾏数据查询;
3、熟练掌握简单表的数据查询、数据排序和数据连接查询的操作⽅法。⼆、实验内容
1、完成简单查询操作。该实验包括投影、选择条件表达,数据排序,使⽤临时表等。2、完成连接查询、嵌套查询、组合查询和统计查询等操作。三、实验步骤
1、熟悉pubs数据库中的三个⽤户表:
employee(emp_id,fname,minit,lname,job_id,job_lvl,pub_id,hire_date),
job(job_id,job_desc,min_lvl,max_lvl),publishers(pub_id,pub_name,city,state,country)。他们分别是关于雇员、职务和出版社的基本表。
2、在查询分析器在窗⼝下⽤SELECT语句完成单表查询:①查询全体出版社的详细记录;Sql语句:
select * from publishers
②查询所有⼯作的job_id为7的职⼯的职⼯编号;Sql语句:
select emp_id from employee where job_id = 7③查询⼯作的job_id⼩于7的职⼯的职⼯编号;Sql语句:
select emp_id from employee where job_id < 7
④查询在Germany和France的出版社的名字和所在城市;Sql语句:
select pub_name,city from publishers where country in (Germany ,France)⑤查询lname为Jablonski的雇员的fname、job_id和hire_date;Sql语句:
select fname ,job_id ,hire_date from employee where lname = “Jablonski”⑥查询lname的前两个字符为cr的职员的编号和fname;Sql语句:
select emp_id ,fname from employee where lname like “cr %”3、在查询分析器在窗⼝下⽤SELECT语句完成连接(嵌套)查询:①查询各个⼯作号与相应的⼯作⼈数;Sql语句:
select job .job_id ,count(*) as ⼈数from employee ,job
where employee.job_id=job.job_idgroup by job.job_id
②查询每个职⼯及其⼯作的描述(job_desc)的情况;Sql语句:
select employee .emp_id ,job_descfrom employee ,job
where employee.job_id=job.job_id
4、在查询分析器在窗⼝下⽤SELECT语句完成集合查询:
查询job_id为5和job_id为6的职⼯的姓名和职⼯所在出版社的名字Sql语句:(select fname ,pub_name from employee ,publisherswhere employee.pub_id=publishers.pub_id and job_id=5)union
(select fname ,pub_name from employee ,publisherswhere employee.pub_id=publishers.pub_id and job_id=6)实验三:数据更新、视图的创建与修改⼀、实验⽬的
1、学会使⽤INSERT、UPDATE、DELETE等SQL语句进⾏数据更新;2、学会使⽤CREATE、DROP等SQL语句创建和删除视图。⼆、实验内容
1、在查询分析器中使⽤INSERT、UPDA TE、DELETE语句进⾏数据更新。2、在查询分析器中使⽤CREATE、DROP语句创建和删除视图。三、实验步骤1:
课程表course:
成绩表sc:
2、在查询分析器中:
(1)选择数据库S-C,⽤INSERT语句向学⽣表student中插⼊⼀个新⽣记录(学号:95020;姓名:陈东;性别:男;所在系:IS;年龄:18)。Sql语句:insert into student
values (“9520”,”陈东”,”男”,18,“IS”)
(2)在数据库S-C中建⽴⼀个新表deptage,其中⼀个字段存放系名,另⼀个字段存放相应的学⽣平均年龄;然后对学⽣表student按系分组求平均年龄,再把系名和平均年龄存⼊新表中。Sql语句:
create table deptage(sdept c(4) ,avga n(4))
select sdept ,avg(sage) from student group by sdept3、在查询分析器中⽤UPDA TE语句更改表中数据。(1)将所有学⽣的年龄都增加1岁。update student set sage=sage+1(2)将IS系全体学⽣的成绩置零。
update sc set grade=0
where sno in ( select sno from student where sdept=”IS”)(3) 分别运⾏SQL语句,观察运⾏结果。
4、在查询分析器中⽤DELETE语句删除表中数据。(1)删除学号为“95020”的学⽣记录。delete from student where sno=”95020”(2)删除IS系所有学⽣的成绩记录。delete from student where sdept=”IS”(3) 分别运⾏SQL语句,观察运⾏结果。5、在查询分析器中⽤CREATE语句建⽴视图。建⽴IS系学⽣的视图IS_student。create view IS_student
as select * from student where sdept=”IS”实验四:数据完整性⼀、实验⽬的
在课程结束时,使⽤SQL查询分析器⽤PRIMARY KEY、CHECK、FOREIGN KEY……REFERENCES、NOT NULL、UNIQUE等关键字验证SQL2000的实体完整性、参照完整性及⽤户定义完整性。⼆、实验内容
1、在查询分析器中⽤PRIMARY KEY⼦句保证实体完整性;
2、在查询分析器中⽤FOREIGN KEY……REFERENCES⼦句保证参照完整性;
3、在查询分析器中⽤短语NOT NULL、UNIQUE、CHECK、DEFAULT保证⽤户定义完整性。三、实验步骤
1、在企业管理器中为图书管理数据库BM各表加完整性约束:(1)定义每个表的主键;详细步骤:
ALTER TABLE book
ADD CONSTRAINT bk PRIMARY KEY(书号)ALTER TABLE reader
ADD CONSTRAINT rk PRIMARY KEY(编号)ALTER TABLE borrow
ADD CONSTRAINT bk PRIMARY KEY(书号,读者编号)
(2)借阅表与图书表间、借阅表与读者表之间的ForeignKey(外码)约束;详细步骤:
ALTER TABLE borrow
ADD CONSTRAINT bK_ow FOREIGN KEY(书号) REFERENCES book(书号) ALTER TABLE borrow
ADD CONSTRAINT rK_ow FOREIGN KEY(读者编号) REFERENCES reader(编号) (3)实现借阅表的书号和读者编号的
UNIQUE(惟⼀性)约束;详细步骤:
ALTER TABLE borrow
ADD CONSTRAINT U_bh UNIQUE NONCLUSTERED(书号)ALTER TABLE borrow
ADD CONSTRAINT U_dh UNIQUE NONCLUSTERED(读者编号)(4)实现读者性别只能是“男”或“⼥”的check(检查)约束;详细步骤:
ALTER TABLE reader
ADD CONSTRAINT br CHECK(性别IN(’男’,’⼥’))(5)图书表的定价字段的缺省值为0详细步骤:
ALTER TABLE reader
ALTER SET DEFAULT d1 0 FOR book(定价)实验五:数据库应⽤系统的设计⼀、实验⽬的
1、通过完成从⽤户需求分析、数据库设计到上机编程、调试和应⽤等全过程,进⼀步了解和掌握本书中所讲解的内容;2、提⾼学⽣分析能⼒和抽象能⼒的⽬的。⼆、实验内容
1、设计⼀个简单的图书管理系统的数据库。
2、⽤SQL实现数据库的设计,并在SQLServer上调试通过。三、实验步骤
三个表各个字段的数据类型:
1、图书管理系统的E—R图:
2、图书管理系统的关系模式:
book(书号,类别,出版社,作者,书名,定价)reader(编号,姓名,单位,性别,电话)borrow(书号,读者编号,借阅⽇期)各关系模式之间的相互关系:.
book与borrow之间是⼀对多关系reader与borrow之间是⼀对多关系3、图书管理系统的视图及其作⽤:read_book(读者姓名,书名,借阅⽇期)
4、数据库的定义sql语句:create database rb
基本表定义的sql语句(包含约束):
create table book(书号c(5), 类别c(2), 出版社c(20), 作者c(10), 书名c(10), 定价n(6),PRIMARY KEY(书号))
create table reader(编号c(4), 姓名c(10), 单位c(20), 性别c(2), 电话c(10),PRIMARY KEY(编号))
Create table borrow(书号c(5), 读者编号c(4), 借阅⽇期d(8),PRIMARY KEY(书号,读者编号),
FOREIGN KEY(书号) REFERENCES book(书号),FOREIGN KEY(读者编号) REFERENCES reader(编号))
视图定义的sql语句:
create view read_book(读者姓名,书名,借阅⽇期)as select 姓名,书名,借阅⽇期from book,reader,borrow
where book.书号=borrow.书号and borrow.读者编号=reader.编号5、在SQLServer上进⾏调试。