1、数据库系统上级实验答案 第二版数据库系统及应用 上机实验报告1数据库 上机实验报告1一、实验目的:理解SQL Server数据库的存储结构,掌握SQL Server数据库的建立方法和维护方法。二、实验内容:在SQL Server环境下建立数据库和维护数据库。三、程序源代码:-1CREATE DATABASE test1ON (NAME=test1_dat,FILENAME=f:DBdatatest1dat.mdf,SIZE= 10,MAXSIZE= 50,FILEGROWTH= 5 )LOG ON(NAME=order_log,FILENAME=f:DBdatatest1log.ldf,SIZ
2、E= 5MB,MAXSIZE= 25MB,FILEGROWTH= 5MB) -2create database test2onprimary(name=test2_dat1,filename=f:DBdatatest2dat1.mdf),(name=test2_dat2,filename=f:DBdatatest2dat2.ndf),(name=test2_dat3,filename=f:DBdatatest2dat3.ndf)log on(name=test2_log1,filename=f:DBdatatest2log1.ldf),(name=test2_log2,filename=f:D
3、Bdatatest2log2.ldf)-3create database test3onprimary(name=test3_dat1,filename=f:DBdatatest3dat1.mdf),(name=test3_dat2,filename=f:DBdatatest3dat2.mdf),filegroupg2(name=test3_dat3,filename=d:DBdatatest3dat3.ndf),(name=test3_dat4,filename=d:DBdatatest3dat4.ndf),filegroupg3(name=test3_dat5,filename=e:DBd
4、atatest3dat5.ndf),(name=test3_dat6,filename=e:DBdatatest3dat6.ndf)log on(name=test3_log,filename=f:DBdatatest3log.ldf)-4alter database test1add file(name=test1new_dat,filename=f:DBdatatest1newdat.ndf,size=5MB)-5alter database test1modify file(name=test1_dat,size=15MB)-6dropdatabasetest3四、实验数据、结果分析:若
5、没有指定size,则默认为1MB,没有指定Maxsize,文件可以增长到磁盘满为止,没有指定Filegrowth,则默认为10%。五、总结:CREATE DATABASE dataname 创建数据库ALTER DATABASE database 修改数据库DROP DATABASE dataname 删除数据库数据库系统及应用 上机实验报告2、实验目的:掌握表和索引的建立方法及表结构的修改方法,并实践DBMS提供的数据完整性功能,加深对数据完整性的理解。二、实验内容:建立表,修改表结构,建立索引,数据完整性描述。三.、程序源代码: create database 订单管理create tab
6、le 客户(客户号 char(8) primary key check(客户号 like A-z%),客户名称 varchar(40) not null,联系人 char(8),地址 varchar(40),邮政编码 char(6) check(邮政编码 like 0-90-90-90-90-90-9),电话 char(12) check(电话 like 10-90-90-90-90-90-90-90-90-90-90-9)create table 产品(产品号 char(8) primary key check(产品号 like A-ZA-Z%),产品名称 varchar(40),规格说明
7、char(40) constraint uni unique,单价 smallmoney constraint dj check(单价0)create table 订购单(客户号 char(8) no tnull foreign key references 客户,订单号 char(8) primary key,订购日期 datetime default getdate()create table 订单名细(订单号 char(8) foreign key references 订购单,序号 tinyint,产品号 char(8) not null foreign key references
8、产品,数量 smallin tconstraint sl check(数量0),primarykey(订单号,序号)-修改产品表-1alter table 产品drop constraint unialter table 产品alter column 规格说明 varchar(40)alter table 产品add constraint uni unique (规格说明)-2alter table 订购单 add 完成日期 datetime default null-3alter table 订单名细 drop constraint slalter table 订单名细 add constr
9、aint sl check(数量0 and 数量1000)-建立索引-1create index cus_idx on 客户(客户名称)-2create unique index gdn_nui on 产品(产品名称)-3 创建表时,primary key 隐式地创建了聚集索引,而一个表中只能有一个聚集索引。create clustered index oid_clus on 订购单(订单号) -失败-4create index item_idx on 订单名细(订单号,序号,数量 desc)数据库系统及应用 上机实验报告3一、实验目的:为实验2建立的表设计一组数据进行插入、删除、修改等操作,
10、并体会数据完整性约束的作用,加深对数据完整性及其约束的理解。二、实验内容:数据的插入、更新和删除。三.、程序源代码: -1、部分记录insert into 客户 values(C001,A公司,小明,北京,123456,143567568457)insert into 客户 values(C002,B公司,小李,上海,234567,146389045634)insert into 客户(客户号,客户名称) values(C009,J商场)insert into 产品 values(GD001,iphone,4s,5000)insert into 产品 values(GD002,ipad,2g,
11、5500)insert into 产品(产品号,产品名称) values(GD010,Mac Pro)insert into 订购单(客户号,订单号) values(C001,or01)insert into 订购单(客户号,订单号) values(C001,or02)insert into 订购单(订单号) values(or19)insert into 订单名细 values(or01,1,GD001,4)insert into 订单名细 values(or01,2,GD001,3)insert into 订单名细 values(or01,3,GD002,6)insert into 订单名
12、细(订单号,序号,产品号) values(or14,28,GD006)-2delete from 客户 where 客户号=C001 -受参照完整性约束delete from订购单 where 订单号=or01 -受参照完整性约束-3update 订购单 set 订单号=null where 客户号=C001 -受实体完整性约束update 订购单 set 客户号=C011 where 订单号=or04-受参照完整性约束update 订购单 set 客户号=C009 where 订单号=or07 -更新成功update 订单名细 set 数量=0 where序号=9 -受用户定义完整性约束-4
13、update 订单名细 set 数量=数量+10from 订购单where 订购单.订单号=订单名细.订单号 and 客户号=C002-5delete from 订单名细from 订购单where 订购单.订单号=订单名细.订单号 and 客户号=C002四、实验数据、结果分析:-2在删除客户号为“C002”的记录时无法删除,因为客户表被订购单表参照。删除订购单号为“or01”的记录时无法删除,因为订单名细表参照订购单表。-3第一个更新根据实体完整性约束,订单号是主关键字,不能为空值。第二个更新根据参照完整性约束,订购单表参照客户表,而客户表中没有客户号为“C011”的客户。第四个更新根据用户
14、定义完整性约束,数量必须为正整数。-4使客户号为C002的订购单的订购数量增加10.-5删掉客户号为C002的订单名细记录。五、总结:插入:INSERT INTO (,)values(,) 更新:update set =,=from where删除:DELETE FROM FROM WHERE 完整性约束影响插入、更新和删除等操作数据库系统及应用 上机实验报告4一、实验目的:熟练掌握SQL SELECT语句,能够运用该语句完成各种查询。二、实验内容:用SQL SELECT语句完成各种数据查询。三.、程序源代码:-1select * from 客户-2select 客户号 from 订购单-3s
15、elect * from 产品 where 单价=5000-4select * from 产品 where 单价5000 and 产品名称=Macbook-5select * from 产品 where 单价6000 and 产品名称 in(Macbook,ipad)-6select c.客户名称,c.联系人,c.电话,o.订单号from 客户 c,订购单 owhere o.订购日期 between 2011-10-30 and 2011-12-1and c.客户号=o.客户号 -7select distinct 客户名称,联系人,电话from 客户 c,产品 g,订购单 o,订单名细 dwh
16、ere 产品名称=iphoneand g.产品号=d.产品号and d.订单号=o.订单号and o.客户号=c.客户号-8select * from 订单名细where 产品号 in(select 产品号from 产品where 产品名称=Macbook)-9select * from 订购单where 订单号 in(select 订单号from 订单名细where 数量10)-10select * from 产品 where 单价 =(select 单价 from 产品 where 规格说明=4s)-11select * from 产品 where 单价 between 1000 and
17、5000-12select * from 客户 where 客户名称 like %集团-13select * from 客户 where 客户名称 not like %商场-14select * from 产品 order by 单价-15select *from 产品order by 产品名称,单价-16select COUNT(产品号)from 产品-17select SUM(数量)from 订单名细where 产品号=(select 产品号from 产品where 产品名称=ipad)-18select SUM(数量*单价) 总金额from 产品,订单名细where 产品.产品号=订单名
18、细.产品号and 产品名称=ipod nano-19select COUNT(distinct 订单号)as 订购单个数,AVG(数量*单价)as 平均金额from 产品,订单名细where 产品.产品号=订单名细.产品号-20select 订单号,COUNT(订单号) 项目数,SUM(g.单价*o.数量) 总金额from 产品 g,订单名细 owhere g.产品号=o.产品号group by 订单号-21select i.订单号,MAX(数量*单价) 最高金额,MIN(数量*单价) 最低金额from 订购单 o,产品 g,订单名细 iwhere o.订单号=i.订单号and g.产品号=i
19、.产品号and 产品名称=iphonegroup by i.订单号-22select 订单号,COUNT(*) 项目数,AVG(数量*单价) 平均金额from 产品 g,订单名细 iwhere g.产品号=i.产品号group by 订单号having COUNT(*)=2-23select 客户名称,联系人,电话,订单号from 客户 c,订购单 owhere c.客户号=o.客户号and 订购日期 is null-24select 客户名称,联系人,电话,订单号,订购日期from 客户,订购单where 客户.客户号=订购单.客户号and 订购日期2011-10-10-25select *
20、from 产品 outawhere 单价=(select MAX(单价)from 产品 innerawhere outa.产品名称=innera.产品名称)-26select 客户号from 客户where not exists(select *from 订购单where 客户.客户号=订购单.客户号)-27select *from 客户where exists(select *from 订购单where 客户.客户号=订购单.客户号)-28select 产品名称from 产品where 单价= any(select 单价/2 from 产品)-29select 产品名称from 产品wher
21、e 单价 all(select max(单价) from 产品)-30-crossselect * from 客户 cross join 订购单where 客户.客户号=订购单.客户号-innerselect * from 客户 inner join 订购单on 客户.客户号=订购单.客户号-leftselect 客户.*,订单号,订购日期from 客户 left join 订购单on 客户.客户号=订购单.客户号-rightselect 客户.*,订单号,订购日期from 客户 right join 订购单on 客户.客户号=订购单.客户号-fullselect 客户.*,订单号,订购日期f
22、rom 客户 full join 订购单on 客户.客户号=订购单.客户号数据库系统及应用 上机实验报告5一、实验目的:理解视图的概念,掌握视图的使用方法。二、实验内容:定义视图,并在视图上完成查询、插入、更新和删除操作。三.、程序源代码: -1-1)、基于单个表按投影操作定义视图create view v_cus asselect 客户号,客户名称from 客户-使用select * from v_cus-2)、基于单个表按选择操作定义视图create view v_order asselect *from 订购单where 客户号=C001-使用select * from v_order-
23、3)、基于单个表按选择和投影操作定义视图create view v_cuss asselect 客户名称,联系人,电话from 客户where 客户号=C003-使用select * from v_cuss-4)、基于多个表根据连接操作定义视图create view v_join asselect 客户.*,订单号,订购日期from 客户 join 订购单on 客户.客户号=订购单.客户号-使用select * from v_join-5)、基于多个表根据嵌套查询定义视图create view v_item asselect * from 订单名细where 产品号 in(select 产品号
24、from 产品where 产品名称=Macbook)-使用select * from v_item-6)、查定义含有虚字段的视图create view v_items(订单号,序号,产品号,数量,总金额) asselect i.*,i.数量*g.单价from 订单名细 i,产品 gwhere i.产品号=g.产品号-使用select * from v_items-2-在视图上查询select * from v_items-在视图上插入insert into v_cus values(C012,Google)-在视图上更新update v_order set 订购日期=2011-11-29-在视图上删除delete from v_cuswhere 客户号=C012
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1