数据库系统及应用上机实验报告
- 格式:doc
- 大小:84.50 KB
- 文档页数:19
--2
create database test2
on
primary
(name=test2_dat1,
filename='f:\DB\data\test2dat1.mdf'),
(name=test2_dat2,
filename='f:\DB\data\test2dat2.ndf'),
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')
from产品,订单名细
where产品.产品号=订单名细.产品号
--20
select订单号,COUNT(订单号)项目数,SUM(g.单价*o.数量)总金额
第四个更新根据用户定义完整性约束,数量必须为正整数。
--4
使客户号为C002的订购单的订购数量增加10.
--5
删掉客户号为C002的订单名细记录。
五、总结:
插入:INSERT INTO <表名>[(<列名>[,<列名>…])]
values(<表达式>[,<表达式>…])
更新:update <表名> set <列名>=<表达式>[,<列名>=<表达式>…]
--6
select c.客户名称,c.联系人,c.电话,o.订单号
from客户c,订购单o
where o.订购日期between '2011-10-30' and '2011-12-1'
and c.客户号=o.客户号
--7
select distinct客户名称,联系人,电话
from客户c,产品g,订购单o,订单名细d
update 订单明细 set 数量=0 where 序号='9' --受用户定义完整性约束
--4
update 订单明细 set 数量=数量+10
from 订购单
where 订购单.订单号=订单名细.订单号 and 客户号='C002'
--5
delete from 订单明细
from 订购单
where 订购单.订单号=订单明细.订单号 and 客户号='C002'
电话char(12) check(isnumeric(电话)=1)
)
2.创建产品表:
create table产品
(
产品号char(8) primary key check(unicode(产品号) between 65 and 122
and unicode(substring(产品号,2,1)) between 65 and 122),
产品名称varchar(40) unique,
规格说明char(40),
单价smallmoney check(单价>0)
)
3.创建订购单表:
create table订购单
(
客户号char(8) foreign key references客户(客户号) not null,
订单号char(8) primary key,
(name=test3_dat3,
filename='d:\DB\data\test3dat3.ndf'),
(name=test3_dat4,
filename='d:\DB\data\test3dat4.ndf'),
filegroupg3
(name=test3_dat5,
filename='e:\DB\data\test3dat5.ndf'),
(name=test2_dat3,
filename='f:\DB\data\test2dat3.ndf')
log on
(name=test2_log1,
filename='f:\DB\data\test2log1.ldf'),
(name=test2_log2,
filename='f:\DB\data\test2log2.ldf')
filename='f:\DB\data\test1newdat.ndf',
size=5MB)
--5
alter database test1
modify file
(name=test1_dat,
size=15MB)
--6
dropdatabasetest3
四、实验数据、结果分析:
若没有指定size,则默认为1MB,没有指定Maxsize,文件可以增长到磁盘满为止,没有指定Filegrowth,则默认为10%。
订购日期datetime default getdate()
)
4.创建订单明细表:
create table订单明细
(
订单号char(8) foreign key references订购单(订单号),
序号tinyint,
产品号char(8) foreign key references产品(产品号) not null,
--3
create database test3
on
primary
(name=test3_dat1,
filename='f:\DB\data\test3dat1.mdf'),
(name=test3_dat2,
filename='f:\DB\data\test3dat2.mdf'),
filegroupg2
FILENAME='f:\DB\data\test1dat.mdf',
SIZE= 10,
MAXSIZE= 50,
FILEGROWTH= 5 )
LOG ON
(NAME=order_log,
FILENAME='f:\DB\data\test1log.ldf',
SIZE= 5MB,
MAXSIZE= 25MB,
三.、程序源代码:
--1
select * from客户
--2
select客户号from订购单
--3
select * from产品where单价>=5000
--4
select * from产品where单价>5000 and产品名称='Macbook'
--5
select * from产品where单价>6000 and产品名称in('Macbook','ipad')
四、实验数据、结果分析:
--2
在删除客户号为“C002”的记录时无法删除,因为客户表被订购单表参照。
删除订购单号为“or01”的记录时无法删除,因为订单名细表参照订购单表。
--3
第一个更新根据实体完整性约束,订单号是主关键字,不能为空值。
第二个更新根据参照完整性约束,订购单表参照客户表,而客户表中没有客户号为“C011”的客户。
where产品名称='iphone'
and g.产品号=d.产品号
and d.订单号=o.订单号
and o.客户号=c.客户号
--8
select * from订单名细
where产品号in(
select产品号
from产品
where产品名称='Macbook')
--9
select * from订购单
where订单号in(
(name=test3_dat6,
filename='e:\DB\data\test3dat6.ndf')
log on
(name=test3_log,
filename='f:\DB\data\test3log.ldf')
--4
alter database test1
add file
(name=test1new_dat,
delete from 订购单 where 订单号='or01' --受参照完整性约束
--3
update 订购单 set 订单号=null where 客户号='C001' --受实体完整性约束
update 订购单 set 客户号='C011' where 订单号='or04'--受参照完整性约束
update 订购单 set 客户号='C009' where 订单号='or07' --更新成功
insert into 产品 values('GD002','ipad','2g',5500)
insert into 产品(产品号,产品名称) values('GD010','Mac Pro')
insert into 订购单(客户号,订单号) values('C001','or01')