实验三数据管理操作.docx
《实验三数据管理操作.docx》由会员分享,可在线阅读,更多相关《实验三数据管理操作.docx(9页珍藏版)》请在冰点文库上搜索。
![实验三数据管理操作.docx](https://file1.bingdoc.com/fileroot1/2023-5/12/a845cef2-1432-4103-9d0a-c1e984036388/a845cef2-1432-4103-9d0a-c1e9840363881.gif)
实验三数据管理操作
实验三数据管理操作
一、实验目的
1.熟悉大型数据库实验环境,以MSSQLSERVER为例。
2.掌握DDL语句,使用DDL语句完成数据表的创建。
3.掌握DML语句,使用DML语句完成数据的插入、修改和删除
4.掌握MSSQLSERVER的备份和还原
5.掌握MSSQLSERVER的权限分配
二、实验内容
(1)用DDL(数据定义语句中的Createdatabase)创建一个新数据库FlightDB,数据库文件的设置都可以使用默认值。
usemaster;
go
ifDB_ID(N'FlightDB')isnotnull
dropdatabasemytest;
go
createdatabasemytest;
go
--Verifythedatabasefilesandsizes
selectname,size,size*1.0/128as[sizeinMBs]
fromsys.master_files
wherename=N'FlightDB';
go
(2)用DDL(数据定义语句中的CreateTable)创建三张表
1.航班表(hbb)包括如下字段:
航班号(hbh):
字符型,6位定长,主码,以CZ、CA、FM开头
始发地(sfd):
字符型,可变长统一编码字符型20位长,非空
目的地(mdd):
字符型,可变长统一编码字符型20位长,非空
原价(YJ):
整型,非空,必须>=0
createtablehbb
(hbhchar(6)primarykey,
sfdvarchar(20)notnull,
mddvarchar(20)notnull,
YJintcheck(YJ>0)notnull);
2.乘客表(Ckb)包括如下字段:
身份证号(sfzh):
字符型,20位变长字符串,主码
姓名(xm):
可变长统一编码字符型,10位长
createtableCkb
(sfzhvarchar(20)primarykey,
xmvarchar(10));
3.售票表(spb)包括如下字段:
航班号(hbh):
主码
身份证号(sfzh):
主码
起飞日期(qfrq):
日期时间型,非空
售票日期(sprq):
日期时间型,非空,默认值为当前时间
实价(sj):
整型,非空
其中:
航班号为引用航班表的外码,身份证号为引用乘客表的外码。
createtablespb
(hbhchar(6),
sfzhvarchar(20),
qfrqdatetimenotnull,
sprqdatetimedefaultgetdate()notnull,
sjintnotnull
primarykey(hbh,sfzh)
);
altertablespb
addconstraintfk_spb_hbbforeignkey(hbh)referenceshbb(hbh)
altertablespb
addconstraintfk_spb_Ckbforeignkey(sfzh)referencesCkb(sfzh)
(3)用DML(数据操纵语句中的Insert)在hbb表中插入如下数据
CZ1301,北京,上海,1200
CZ1209,南京,昆明,1300
CZ1502,上海,北京,120 0
CA1130,成都,北京,1800
CA1230,拉萨,广州,1500
CA1401,广州,南京,1600
insert
intohbb(hbh,sfd,mdd,YJ)
values
('CZ1301','北京','上海',1200),
('CZ1209','南京','昆明',1300),
('CZ1502','上海','北京',1200),
('CA1130','成都','北京',1800),
('CA1230','拉萨','广州',1500),
('CA1401','广州','南京',1600);
(4)对数据库进行一次完整备份,备份名为BackupFull
(5)用DML(数据操纵语句中的Insert)在乘客表和售票表中插入如下数据
代码
乘客
91201
王曼
91202
张飞
91203
刘羽蕴
91204
王若雨
91205
张蕊
insert
intoCkb(sfzh,xm)
values
('91201','王曼'),
('91202','张飞'),
('91203','刘羽蕴'),
('91204','王若雨'),
('91205','张蕊'
航班号
乘客
起飞
售票
实价
CZ1301
91201
2001-12-20
2001-11-20
900
CZ1209
91202
2001-12-20
2001-11-20
800
CZ1502
91201
2002-5-8
2002-5-2
1000
CA1230
91201
2001-12-5
2001-12-4
1100
CA1401
91202
2002-4-5
2002-4-4
1200
CZ1301
91203
2001-12-20
2001-11-20
900
CZ1209
91204
2001-12-20
2001-11-20
800
CZ1502
91205
2002-5-8
2002-5-2
1000
insert
intohbb(hbh,sfzh,qfrq,sprq,sj)
values
('CZ1301','91201','2001-12-20','2001-11-20',900),
('CZ1209','91202','2001-12-20','2001-11-20',800),
('CZ1502','91201','2002-5-8','2002-5-2',1000),
('CA1230','91201','2001-12-5','2001-12-4',1100),
('CA1401','91202','2002-4-5','2002-4-4',1200),
('CZ1301','91203','2001-12-20','2001-11-20',900),
('CZ1209','91204','2001-12-20','2001-11-20',800),
('CZ1502','91205','2002-5-8','2002-5-2',1000);
(6)对数据库进行一次差异备份,备份名为BackupAdd1
(7)用DML(数据操纵语句中的Update)将所有目的地是北京的航班的原价提高10%
updatehbb
setYJ=(1+0.1)*YJ
wheremdd='北京';
(8)用DML(数据操纵语句中的Delete)将“张飞”乘客删除,注意同时删除售票记录和乘客基本信息。
deleteCkb
wherexm='张飞';
(9)尝试使用MSSQLServer的还原功能,还原到上一次差异备份的BackupAdd1处。
(10)在SQLServer中创建一个用户FlightUser,设置FlightUser用户对三张表都有查询权,但是该用户不能对乘客表和航班表进行增加、删除和修改记录,该用户对售票表能增加、删除和修改记录。
然后用FlightUser登陆SQLServer,对如上权限设置进行验证。
grantselect
ontableCkb,hbb,spb
toFlightUser;
grantupdate,delete,insert
ontablespb
toFlightUser;
revokeinsert,delete,update
ontableCkb,hbb
toFlightUser;