1、数据库原理及应用书后上机实验答案数据库原理及应用崔巍_书后上机实验程序源代码:-1CREATEDATABASEtest1ON(NAME=test1_dat,FILENAME=f:DBdatatest1dat.mdf,SIZE= 10,MAXSIZE= 50,FILEGROWTH= 5 )LOGON(NAME=order_log,FILENAME=f:DBdatatest1log.ldf,SIZE= 5MB,MAXSIZE= 25MB,FILEGROWTH= 5MB)-2createdatabasetest2onprimary(name=test2_dat1,filename=f:DBdatat
2、est2dat1.mdf),(name=test2_dat2,filename=f:DBdatatest2dat2.ndf),(name=test2_dat3,filename=f:DBdatatest2dat3.ndf)logon(name=test2_log1,filename=f:DBdatatest2log1.ldf),(name=test2_log2,filename=f:DBdatatest2log2.ldf)-3createdatabasetest3onprimary(name=test3_dat1,filename=f:DBdatatest3dat1.mdf),(name=te
3、st3_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:DBdatatest3dat5.ndf),(name=test3_dat6,filename=e:DBdatatest3dat6.ndf)logon(name=test3_log,filename=f:DBdatatest
4、3log.ldf)-4alterdatabasetest1addfile(name=test1new_dat,filename=f:DBdatatest1newdat.ndf,size=5MB)-5alterdatabasetest1modifyfile(name=test1_dat,size=15MB)-6dropdatabasetest3四、实验数据、结果分析:若没有指定size,则默认为1MB,没有指定Maxsize,文件可以增长到磁盘满为止,没有指定Filegrowth,则默认为10%。五、总结:CREATE DATABASE dataname创建数据库ALTER DATABASE d
5、atabase修改数据库DROP DATABASE dataname删除数据库数据库系统及应用 上机实验报告2一、实验目的:掌握表和索引的建立方法及表结构的修改方法,并实践DBMS提供的数据完整性功能,加深对数据完整性的理解。二、实验内容:建立表,修改表结构,建立索引,数据完整性描述。三.、程序源代码:createdatabase订单管理createtable 客户(客户号 char(8) primary key check(客户号 like A-z%),客户名称 varchar(40) not null,联系人 char(8),地址 varchar(40),邮政编码 char(6) chec
6、k(邮政编码 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),规格说明 char(40) constraint uni unique,单价 smallmoney constraint dj check(单价0)create table订购单(客户号 char(8) not null foreign key ref
7、erences客户,订单号 char(8) primary key,订购日期 datetime default getdate()create table订单名细(订单号 char(8) foreign key references订购单,序号 tinyint,产品号 char(8) not null foreign key references产品,数量 smallitn constraint sl check(数量0),primarykey(订单号,序号)-修改产品表-1alter table产品dropconstraint unialter table产品altercolumn规格说明
8、varchar(40)alter table产品add constraint uni unique(规格说明)-2alter table订购单 add 完成日期 datetime default null-3alter table订单名细 drop constraint slalter table订单名细 add constraint sl check(数量0 and数量1000)-建立索引-1create index cus_idx on客户(客户名称)-2createunique index gdn_nui on产品(产品名称)-3创建表时,primary key隐式地创建了聚集索引,而一
9、个表中只能有一个聚集索引。create clustered index oid_clus on订购单(订单号) -失败-4create index item_idx on订单名细(订单号,序号,数量 desc)数据库系统及应用 上机实验报告3一、实验目的:为实验2建立的表设计一组数据进行插入、删除、修改等操作,并体会数据完整性约束的作用,加深对数据完整性及其约束的理解。二、实验内容:数据的插入、更新和删除。三.、程序源代码:-1、部分记录insertinto客户values(C001,A公司,小明,北京,123456,143567568457)insertinto客户values(C002,B
10、公司,小李,上海,234567,146389045634)insertinto客户(客户号,客户名称)values(C009,J商场)insertinto产品values(GD001,iphone,4s,5000)insertinto产品values(GD002,ipad,2g,5500)insertinto产品(产品号,产品名称)values(GD010,Mac Pro)insertinto订购单(客户号,订单号)values(C001,or01)insertinto订购单(客户号,订单号)values(C001,or02)insertinto订购单(订单号)values(or19)inse
11、rtinto订单名细 values(or01,1,GD001,4)insertinto订单名细 values(or01,2,GD001,3)insertinto订单名细 values(or01,3,GD002,6)insertinto订单名细(订单号,序号,产品号)values(or14,28,GD006)-2deletefrom客户where客户号=C001-受参照完整性约束deletefrom订购单where订单号=or01-受参照完整性约束-3update订购单set订单号=nullwhere客户号=C001-受实体完整性约束update订购单set客户号=C011where订单号=or
12、04-受参照完整性约束update订购单set客户号=C009where订单号=or07-更新成功update订单名细set数量=0 where序号=9-受用户定义完整性约束-4update订单名细set数量=数量+10from订购单where订购单.订单号=订单名细.订单号and客户号=C002-5deletefrom订单名细from订购单where订购单.订单号=订单名细.订单号and客户号=C002四、实验数据、结果分析:-2在删除客户号为“C002”的记录时无法删除,因为客户表被订购单表参照。删除订购单号为“or01”的记录时无法删除,因为订单名细表参照订购单表。-3第一个更新根据实体
13、完整性约束,订单号是主关键字,不能为空值。第二个更新根据参照完整性约束,订购单表参照客户表,而客户表中没有客户号为“C011”的客户。第四个更新根据用户定义完整性约束,数量必须为正整数。-4使客户号为C002的订购单的订购数量增加10.-5删掉客户号为C002的订单名细记录。五、总结:插入:INSERT INTO (,)values(,)更新:update set =,=from where删除:DELETE FROM FROM WHERE 完整性约束影响插入、更新和删除等操作数据库系统及应用 上机实验报告4一、实验目的:熟练掌握SQL SELECT语句,能够运用该语句完成各种查询。二、实验内
14、容:用SQL SELECT语句完成各种数据查询。三.、程序源代码:-1select * from 客户-2select 客户号 from 订购单-3select * 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-
15、1and c.客户号=o.客户号-7select distinct 客户名称,联系人,电话from 客户 c,产品 g,订购单 o,订单名细 dwhere 产品名称=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 单价 =(sele
16、ct 单价 from 产品 where 规格说明=4s)-11select * from 产品 where 单价 between 1000 and 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 产品号f
17、rom 产品where 产品名称=ipad)-18select SUM(数量*单价) 总金额from 产品,订单名细where 产品.产品号=订单名细.产品号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(数量*
18、单价) 最高金额,MIN(数量*单价) 最低金额from 订购单 o,产品 g,订单名细 iwhere o.订单号=i.订单号and g.产品号=i.产品号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 客户名称,联
19、系人,电话,订单号,订购日期from 客户,订购单where 客户.客户号=订购单.客户号and 订购日期2011-10-10-25select *from 产品 outawhere 单价=(select MAX(单价)from 产品 innerawhere outa.产品名称=innera.产品名称)-26select 客户号from 客户where not exists(select *from 订购单where 客户.客户号=订购单.客户号)-27select *from 客户where exists(select *from 订购单where 客户.客户号=订购单.客户号)-28sel
20、ect 产品名称from 产品where 单价= any(select 单价/2from 产品)-29select 产品名称from 产品where 单价 all(select max(单价) from 产品)-30-crossselect * from 客户 cross join 订购单where 客户.客户号=订购单.客户号-innerselect * from 客户 inner join 订购单on 客户.客户号=订购单.客户号-leftselect 客户.*,订单号,订购日期from 客户 left join 订购单on 客户.客户号=订购单.客户号-rightselect 客户.*,
21、订单号,订购日期from 客户 right join 订购单on 客户.客户号=订购单.客户号-fullselect 客户.*,订单号,订购日期from 客户 full join 订购单on 客户.客户号=订购单.客户号数据库系统及应用 上机实验报告5一、实验目的:理解视图的概念,掌握视图的使用方法。二、实验内容:定义视图,并在视图上完成查询、插入、更新和删除操作。三.、程序源代码: -1-1)、基于单个表按投影操作定义视图create view v_cus asselect 客户号,客户名称from 客户-使用select * from v_cus-2)、基于单个表按选择操作定义视图crea
22、te view v_order asselect *from 订购单where 客户号=C001-使用select * from v_order-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)、基于多个
23、表根据嵌套查询定义视图create view v_item asselect * from 订单名细where 产品号 in(select 产品号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 i
24、nto v_cus values(C012,Google)-在视图上更新update v_order set 订购日期=2011-11-29-在视图上删除delete from v_cuswhere 客户号=C012数据库系统及应用 上机实验报告7一、实验目的:理解存储过程的概念,掌握存储过程的使用方法,加深对客户/服务器机制的理解。二、实验内容:存储过程的建立和执行。三.、程序源代码:-1、查询单价范围在X元到Y元内的产品信息create proc sp_getgoodsprice1 money,price2 moneyasselect *from 产品where 单价price1 and
25、单价datesif ERROR= 0return 0elsereturn -1-执行declare status1 intexecute status1=sp_or_cus 2011-10-27print status1-3、将某产品的订购日期统一修改为一个指定日期create proc sp_upd_dategdname varchar(40),odate datetimeasupdate 订购单set 订购日期=odatewhere 订单号 in(select 订单号from 订单名细where 产品号 in(select 产品号from 产品where 产品名称=gdname)if ERROR= 0return 0elsereturn -1-执行declare status2 intexecute status2=sp_upd_date iphone,2011-10-23print status2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1