实验一数据定义与简单查询实验
一、实验目的及要求
1、熟练掌握用SQL、SQL Server企业管理器创建数据库、表索引和修改表结构,并学会使用SQL Server 查询分析器接收Transact-SQL语句和进行结果分析。
2、掌握查看、修改数据库和表的属性的方法和学会如何实现基于单表的简单查询。
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版
三、实验内容
1、用SQL Server 2000企业管理器和查询分析器工具创建一个“图书读者数据库”;
2、使用企业管理器查看Book_Reader_DB的数据库属性,并进行修改;
3、使用企业管理器和在查询分析器中用Transact-SQL语句的两种方法建立图书、读者和借阅三个表,其结构为:图书(书号,类别,出版社,作者,书名,定价,备注);读者(编号,姓名,单位,性别,电话);借阅(书号,读者编号,借阅日期)。
4、实现相关约束:①使用企业管理器来建立上述三个表的联系,实现:借阅表与图书表之间、借阅表与读者表之间的外码约束;②实现读者性别只能是“男”或“女”的约束。
5、分别用企业管理器和查询分析器修改表的结构。在“图书”表中,增加两个字段,分别为“数量”和“购买日期”。在“借阅”表中增加一个“还书日期”字段。
6、用企业管理器在上述三个表中输入部分虚拟数据。
7、在查询分析器中实现基于单个表的查询
① select * from Book
② select * from book where style =’计算机’
③ select count(*) from book group by style
④ select * from Reader
⑤ select * from Borrow
⑥ select reader_id, count(book_id) from Borrow Group By reader_id Order by reader_id
⑦ select book_id, count(reader_id) from Borrow group by book_id order by book_id
三、实验设计
1.在企业管理器中,展开,找到数据库结点,选中,单击右键,再点击“新建数据库”,在弹出的数据库
属性框中输入数据库名称Book_Reader_DB,选择存放数据库的地址,单击“确定”即可。
2.在数据库Book_Reader_DB上点击右键,在弹出的菜单中选择“属性”,设置相应的属性。
3.在查询分析器,输入以下Transact-SQL语句
use Book_Reader_DB
go
create table Book
(Book_id int primary key,
style char(20),
Publishing_House char(40),
Author char(40),
BookName char(40),
Price float,
Note char(100)
)
go
create table Reader
(ID int primary key,
Name char(20),
Wokeplace char(40),
sex char(2),
telephone char(20)
)
go
create table Borrow
(Book_id int not null foreign key references Book(Book_id),
Reader_id int not null foreign key references Reader(Reader_id),
BorrowDate datetime)
Go
4.在数据库关系图中,右键单击将包含该约束的表,再从快捷菜单中选择“CHECK 约束”。
在 CHECK 约束表达式中输入: Sex =’男’or Sex =‘女’
5.在企业资源管理器中,右键单击要修改的表,弹出的菜单中选择“修改”。在弹出的对话框中增加需要
加入的字段即可。或者在查询分析器中写入以下语句:
alter Table Book
add Number int,BuyDate datetime
go
alter table Borrow
add BackDate datetime
go
6.右键单击要插入数据的表,在弹出的菜单中选择打开表,然后在打开的表中插入数据。
7、①运行结果:
②运行结果:
③运行结果:
④运行结果:
⑤运行结果:
⑥运行结果:
⑦运行结果:
总结:查询时要注意代码要与字段名一样,同时要注意查询的对象是不是要查的数据库。
实验二表的连接和嵌套查询实验
一、实验目的及要求
1、熟练掌握SQL Server查询分析器的使用方法
2、掌握多表的连接查询与嵌套查询语句的正确写法和实验操作方法。
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版三、实验内容
在“图书读者数据库”中,用连接查询的方法完成下列查询任务:
①查询借阅了类别为“环境”类图书的所有读者编号、姓名及单位;
②查询借阅过图书的读者编号、姓名及单位;
③查询姓名为“李明”的读者目前借阅的图书书号和书名;
④查询借书过期的所有读者姓名及所借图书名(假定借阅期为60天);
⑤查询没有借阅过图书的所有读者姓名;
⑥查询借出次数超过10次的所有图书的书号和书名;
⑦查询除已还的书以外,目前借了5本或以上图书的读者编号和姓名;
四、实验设计
① select distinct reader.reader_ID,name,workplace
from Reader,Book,borrow
where reader.reader_id=borrow.reader_id and Borrow.Book_I的 = Book.Book_ID and book.style='环境';
运行结果:
②select distinct Reader.reader_ID,name,workplace
from Reader,Borrow
where Reader.reader_ID=Borrow.Reader_ID;
运行结果:
③select distinct Borrow.Book_ID , Book.bookname
From Borrow,Book,Reader
where Book.Book_ID=Borrow.Book_ID and Reader.Reader_ID=Borrow.Reader_ID and https://www.sodocs.net/doc/2a9457409.html,='张红';
运行结果:
④select distinct https://www.sodocs.net/doc/2a9457409.html,,Book.bookname
from Book,Borrow,Reader
where Book.book_ID=Borrow.book_ID and Reader.reader_ID=Borrow.reader_ID and returndate-borrowdate>60;
运行结果:
⑤select distinct https://www.sodocs.net/doc/2a9457409.html,
from reader ,borrow
where not exists
(select *
from borrow
where reader_id=reader.reader_id);
运行结果:这题的运行结果是空白的,因为数据库里的读者都借阅过图书。
⑥ select Book.bookID,Book.bookname
from Book ,Borrow
where Book.bookID=Borrow.bookID
group by Book.bookname,Book.bookID
having count(borrow.readerID)>10;
运行结果:
⑦select reader.readerID,name
from reader
where exists (select borrow.readerID,count(bookID)
from borrow
where borrow.returndate is not null and reader.readerID=borrow.readerID
group by readerID
having count(readerID)>=5);
运行结果:
总结:注意代码中标点符号是否符合要求。
实验三表的集合查询
一、实验目的及要求
掌握SQL Server查询分析器的使用方法和查询中的集合查询方法。
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版三、实验内容
在“图书读者数据库”(Book_Reader_DB)中,用集合查询的方法完成下列查询任务:
①查询计算机类和机械工业出版社出版的图书;
②查询清华大学出版社出版的书中与机械工业出版社出版的所有不相同的图书号与书名;
③查询清华大学出版社出版的书与环境类图书的交集;
④查询借阅过清华大学出版社出版的“数据结构”图书和西安电子工业出版社出版的“算法与数据结构”图书的读者号的并集;
四、实验设计
①SELECT *
FROM Book
WHERE style='计算机'
UNION ALL
SELECT *
FROM Book
WHERE Publishing_House='机械工业出版社';
运行结果:
②SELECT BookID,BookName
FROM Book
WHERE PublishHouse='清华大学出版社'
AND BookName NOT IN(SELECT BookName
FROM Book
WHERE PublishHouse='机械工业出版社');
运行结果:
③SELECT *
FROM Book
WHERE Publishing_House='清华大学出版社'
AND Bookname IN(SELECT Bookname
FROM Book
WHERE style='环境');
运行结果:
④ SELECT Reader_ID
FROM Borrow INNER JOIN Book ON Book.Book_ID=Borrow.Book_ID
WHERE BookName='数据结构' AND Publishing_House='清华大学出版社'
UNION
SELECT Reader_ID
FROM Borrow INNER JOIN Book ON Book.Book_ID=Borrow.Book_ID
WHERE BookName='算法与数据结构' AND Publishing_House='电子工业出版社';
运行结果:
总结:由于sql2000不支持集合查询中的INTERSECT和 EXCEPT操作,所以就用T-SQL语句来完成。
实验四表的集合查询
一、实验目的及要求
掌握SQL Server查询分析器的使用方法和查询中的分组、统计、计算方法。
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版
三、实验内容
在“图书读者数据库”(Book_Reader_DB)中,用组、统计与计算的方法完成下列查询任务:
①查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍;
②求机械工业出版社出版的各类图书的平均定价,用Group by来实现;
③列出计算机类图书的书号、名称及价格,最后求出册数和总价格;
④列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册数和总价格;
⑤查询订购图书最多的出版社及订购图书的数量;
⑥查询2000年以后购买的图书总册数;
⑦计算各类图书的总册数;
⑧查询每本图书的平均借阅次数;
四、实验设计
①Select style
FROM Book
GROUP BY style
HAVING Max(Price)>=2*AVG(Price);
运行结果:
②SELECT style,AVG(Price) AS AvgPrice
FROM Book
WHERE Publishing_House='机械工业出版社'
GROUP BY style;
运行结果:
③ SELECT Book_ID , Bookname , Price ,number ,Price*number AS sumPrice
FROM Book
WHERE style='计算机'
运行结果:
④SELECT Book_ID , Bookname ,Price,Price*number as grossprice FROM Book
WHERE style='计算机'
select publishing_house,style,sum(Price*number)as zongjia
From book
Where style='计算机'
group by publishing_house,style
select SUM(Price*number) AS sumPrice, SUM(number) AS sumnumber from Book
where style='计算机';
运行结果:
⑤ SELECT TOP 1 Publishing_House , SUM(number) AS 订书量
FROM Book
GROUP BY Publishing_House
ORDER BY 订书量 DESC;
运行结果:
⑥SELECT SUM(number) AS 总册数
FROM Book
WHERE BuyDate>'2000-1-1';
运行结果:
⑦SELECT style,SUM(number) AS 总册数
FROM Book
GROUP BY style;;
运行结果:
⑧SELECT Book_ID,COUNT(Reader_ID)
FROM Borrow
GROUP BY Book_ID;
运行结果:
总结:通过实验对GROUP BY、order by 和一些聚集函数有了更深刻的认识。
实验五视图、数据控制与嵌入式SQL语言实验
一、实验目的及要求
1、掌握用查询分析器和视图创建向导的方法创建视图。
2、学会使用SQL数据控制语句来进行授权控制和权限回收。
3、了解高级语言中用SQL语句来连接和访问数据库的方法
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版
三、实验内容
1、视图定义与查询实验
①在“图书读者数据库”(Book_Reader_DB)中,先用视图创建向导的方法创建视图View1和View2。其中View1包括书号、书名、定价、数量等属性。View2包括读者号、读者姓名、单位、电话、书号、书名、借阅日期、应归还日期、实际还书日期和过期天数等属性,其条件是所有借书已过期的读者和借书情况(假定借阅期为60天);
②根据上述定义的视图,在查询分析器中用语句完成如下查询:
A:通过视图View1查询书库中藏书的情况;
B:通过视图View2查询借书过期的读者和借书情罚款金额(假定超期罚款标准为1元/天);
③在查询分析器中用SQL语句来创建视图View3和视图View4,视图View3的要求与View1相同,视图View4与视图View2的条件相同。
2、数据控制实验
①假定系统有U1、U2、U3 、U4、U5、U6六个登录用户,试将查询图书表的权限由管理员授权给U1,以U1用户的身份重新登录系统后,再把权限授予给U2;
②系统管理员把插入数据给借阅表的权限授予给U3;
③系统管理员把添加图书数据的权限授予给U4;
④系统管理员把修改读者数据信息的权限授予给U5;
⑤将U1访问图书表的权限收回;
3、嵌入式SQL语言实验
①用VB建立一个工程,在对话框Form1上添加一些访问数据库和显示数据的控件,并通过ODBC建立与数据库Book_Reader_DB的连接;
②在Form1上添加一个按钮Button1,对Button1添加一个点击事件(双击按钮Button1即可进入源代码输入界面),在事件上添加一些访问数据库中表对象或视图对象的SQL语句,运行工程,即可将满足要求的记录显示在界面的显示数据的控件上。换用不同的SQL语句,检查其执行结果。
四、实验设计
1.视图定义与查询
①打开企业管理器,展开Book_Reader_DB数据库,右击“视图” “新建视图”。在新视图对话框中,
在列中依次输入书号、书名、定价、数量,在表中输入book, 保存时将视图的名取为View1. View2的建立大体一样.
②A代码: select * from view1
B代码: SELECT 读者姓名,过期天数*1 AS 罚款金额
FROM VIEW2
WHERE 过期天数 IS NOT NULL AND 过期天数>0;
③创建视图VIEW3: CREATE VIEW VIEW3
AS
SELECT Book_ID AS 书号, BookName AS 书名, Price AS 定价, number AS 数量
FROM Book;
创建视图VIEW4:CREATE VIEW VIEW4
AS
SELECT Reader.Reader_ID AS 读者号, https://www.sodocs.net/doc/2a9457409.html, AS 读者姓名, Reader.WorkPlace AS 单位, Borrow.Book_ID AS 书号, Book.BookName AS 书名,Borrow.BorrowDate AS 借阅日期, Borrow.ReturnDate AS 实际还书日期, DATEADD(dd, 20, dbo.Borrow.BorrowDate) AS 应归还日期,DATEDIFF(dd, DATEADD(dd, 20, Borrow.BorrowDate), Borrow.ReturnDate) AS 过期天数
FROM Borrow INNER JOIN Book ON Borrow.Book_ID = Book.Book_ID INNER JOIN
Reader ON Borrow.Reader_ID = Reader.Reader_ID
2.数据控制实验
① GRANT SELECT
ON TABLE Borrow
TO U1
WITH GRANT OPTION
GRANT SELECT
ON TABLE Borrow
TO U2
②GRANT INSERT
ON TABLE Borrow
TO U3
③GRANT INSERT
ON TABLE Book
TO U4
④GRANT UPDATE
ON TABLE Reader
TO U5
⑤REVOKE SELECT
ON TABLE Book
FROM U1
3.嵌入式sql语言
首先用VB建立一个工程,在对话框Form1上添加一个DataGridView控件,然后新建数据源->选择数据库,在数据源配置向导中选择要操作的表,点击完成即可。
实验六数据库的建立和维护实验
一、实验目的及要求
使学生熟练掌握使用SQL、Transact-SQL和SQL Server企业管理器向数据库中定义的表和视图输入数据、修改数据和删除数据的操作。
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版
三、实验内容
1、使用SQL Server 2000企业管理器对三个表进行数据插入、修改和删除。
借阅表
2、用查询分析器的输入Transact-SQL语句对三个表进行数据插入、修改和删除。图书表
读者表
借阅表
四、实验设计
1.打开企业资源管理器,展开book_reader_DB, 点击“表”结点对应的表,然后单击右键中的“打开表”→“返回所有行”。在显示对应表中的所有数据的表中对数据进行插入、修改和删除。
2.用查询分析器插入一条READER表记录(’9’,’王荣’,’建筑学院’,’男’,’010********’)insert
into READER
values ('9','王荣','建筑学院','男','010********');
用查询分析器将图书表中高等教育出版社的环境化学数量改为30
UPDATE BOOK
SET NUMBER=30
WHERE PUBLISHING_HOUSE=’高等教育出版社’ AND BOOKNAME=’环境化学’;
用查询分析器删除一条READER表记录(’9’,’王荣’,’建筑学院’,’男’,’010********’)Delete
From reader
Where reader_id=9;
总结:通过实验,能熟练掌握用企业管理器和查询分析器来对表中数据进行插入、删除和修改操作。实验七数据库的设计实验
一、实验目的及要求
掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实验方法,并加深对数据库系统概念和特点的理解。
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版三、实验内容
对学生学籍管理系统进行系统分析和数据库设计
四、实验设计
仓库管理系统
一、需求分析
功能需求
(1) 管理员功能:产品入库登记、确认入库信息、删除库内信息、产品分类管理、查询库内信息。
(2) 信息安全功能:人员权限区分、事件记录、数据警告、计划备份、即时备份、数据恢复;
(3) 一般用户功能:查询库内信息、查询出库信息、查询入库信息、修改本用户密码;
数据字典:
二、概念模式设计 局部视图:
1
2)入库实体E-R
3)出库实体E-R
4)部门需求实体
5)计划采购实体E-R图:Array
6
三、逻辑结构设计
E-R图转化成关系模型:
1、仓库表(仓库号,已用库存,库存总量,负责人,电话号码)
2、零件表(零件名,单价,计量单位)
3、供应商表(供应商,电话)
4、部门表(部门名,电话)
7、部门需求表(部门名,零件名,需求数量,开始时间,结束时间)
8、零部件采购计划表(零件名,采购量,供应商名,采购时间,采购员)
9、入库表(零件名,仓库号,入库数量,供应商名,入库时间,经手人)
10、出库表(零件名,仓库号,出库数量,使用者,出库时间,经手人,领取人)
四、数据库物理设计
建立索引
各表索引设计如下:
确定数据的存放位置
该数据库的数据文件都存放在MySQL的安装目录的/data/warehouse文件夹下.
总结:通过设计仓库管理数据库,让我对数据库系统有关知识点有了更深刻的理解,懂得了应如何设计数据库。
实验八 SQL Server 2000的备份与恢复实验
一、实验目的及要求
了解SQL Server 2000的数据备份与恢复机制,并掌握其数据库备份与恢复的方法。
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版
三、实验内容
用企业管理器创建、查看和删除一个备份设备;备份和恢复数据库
四、实验设计
1、创建备份设备: 在企业管理器中,在“管理”文件夹结点中找到备份文件夹,右键单击该文件夹后,选择“新建备份设备”项,在备份属性对话框中,执行下列操作:输入备份设备的逻辑名称,确定备份设备的文件名,单击“确定”按钮。
2、查看备份设备的相关属性:在企业管理器中,选择管理和备份文件夹,在“细节”窗口中找到要查看的备份设备;并单击右键,选择“属性”项,在弹出的备份设备属性对话框,单击该设备名称右边的“查看内容”按钮,可弹出备份设备的信息框,从中可以得到备份数据库及备份创建的日期等信息。
3、删除备份设备:如果要删除一个不需要的备份设备,首先,在企业管理器中选中该备份设备,并右键单击,在弹出的菜单中选择“删除”项,在确认删除对话框中,单击“确认”按钮即可。
4、备份数据库:在企业管理器中,右键单击要备份的数据库,在弹出的菜单中选择”所有任务”->”备份数据库”,弹出的备份对话框中设置备份的相关的参数
5、数据库恢复:在数据库上点击右键,在弹出的菜单中选择”所有任务”->”还原数据库”,在弹出的数据库恢复对话框中,选择还原的目标数据库和源数据库,点确定即可还原.
实验九 SQL Server 2000的并发控制实验
一、实验目的及要求
了解SQL Server 2000提供的3种并发控制(封锁)机制,并掌握SQL Server 2000如何使用Select语句来完成并发控制中的封锁操作。
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版。
三、实验内容
用SQL Server 2000完成对Book_Reader_DB数据库并发控制中的封锁操作。
四、实验设计
基于Book_Reader_DB数据库,分别实现下列操作:
①对Book实施一个共享锁,并且保持到事务结束时再释放封锁
相应的命令是:SELECT * FROM BOOK (TABLOCK HOLDLOCK)commit transaction
②代码:DECLARE @Book_id char(6),@Reader_id char(6),@Bookname char(20),@Borrowdate datetime,@Bcount
BEGIN TRANSACTION T1 WITH MARK
SELECT @Bcount=number FROM Book(UPDLOCK) WHERE Bookname =@Bookname or Book_id,=@Book_id,
IF @Bcount>0 THEN
Begin
UPDATE Book SET number=number-1 WHERE Bookname=@Bookname or Book_id=@Book_id
INSERT INTO BorrowBook WITH(TABLOCKX) (Book_id,Reader_id,Borrowdate)
VALUES(@Book_id, @Reader_id, @Borrowdate)
COMMIT TRANSACTION T1
end
ELSE
ROLLBACK TRANSACTION T1
实验十数据的导入
一、实验目的及要求
1.掌握SQL Server 2000导入数据的功能和操作方法
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版
三、实验内容
把一个Excel数据表导入数据表中
四、实验设计
打开企业管理器,从根菜单“操作”中选择‘导入数据’菜单。在弹出的对话框中选择数据源和要导入Excel数据表的文件名,点击“下一步”,选择数据导入目标,依照向导往下,选择好数据要导入的表,依向导往下,即完成了数据的导入。
总结:通过实验,知道怎样快速导入数据,不用一个一个输入。
实验十一分离/附加数据库
一、实验目的及要求
掌握使用企业管理器分离和附加数据库
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版
三、实验内容
将Book_Reader_DB数据库进行分离和附加操作
四、实验设计
1、数据库的分离:打开企业管理器,右键单击要分离的数据库Book_Reader_DB,在弹出的快捷菜单中选
择“所有任务”→“分离数据库”选项,单击“确定”即完成了数据库的分离。
2、数据库的附加:在企业管理器中,右键单击“数据库”文件夹,在快捷菜单中选择“所有任务”→“附
加数据库”选项。打开“附加数据库”对话框。点击输入框右侧的“…”按纽,用来选择源文件存放的位置与文件名,单击“确定”即完成了数据库的附加
实验十二触发器的定义、使用
一、实验目的及要求
学会创建触发器,了解触发器的基本概念,理解触发器的功能。
二、实验环境
实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版
三、实验内容
创建一个名为trigger_Book的触发器,提醒要给新书添加出版社记录
四、实验设计
在企业管理器中,右键单击要创建触发器的表,在弹出的菜单上选择“全部任务”→“管理触发器”,在弹出的窗口中,输入创建触发器的 T-SQL语句(如图所示),单击“检查语法”按钮,进行语法检查,检查无误后,单击确认,即触发器创建完成。
总结:触发器可以用于数据库完整性检查。