数据库原理及应用崔巍书后Word文档下载推荐.docx
《数据库原理及应用崔巍书后Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库原理及应用崔巍书后Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
\DB\data\test2log2.ldf'
--3
createdatabasetest3
(name=test3_dat1,
\DB\data\test3dat1.mdf'
(name=test3_dat2,
\DB\data\test3dat2.mdf'
filegroupg2
(name=test3_dat3,
d:
\DB\data\test3dat3.ndf'
(name=test3_dat4,
\DB\data\test3dat4.ndf'
filegroupg3
(name=test3_dat5,
e:
\DB\data\test3dat5.ndf'
(name=test3_dat6,
\DB\data\test3dat6.ndf'
(name=test3_log,
\DB\data\test3log.ldf'
--4
alterdatabasetest1
addfile
(name=test1new_dat,
\DB\data\test1newdat.ndf'
size=5MB)
--5
modifyfile
(name=test1_dat,
size=15MB)
--6
dropdatabasetest3
四、实验数据、结果分析:
若没有指定size,则默认为1MB,没有指定Maxsize,文件可以增长到磁盘满为止,没有指定Filegrowth,则默认为10%。
五、总结:
CREATEDATABASEdataname创建数据库
ALTERDATABASEdatabase修改数据库
DROPDATABASEdataname删除数据库
数据库系统及应用上机实验报告2
掌握表和索引的建立方法及表结构的修改方法,并实践DBMS提供的数据完整性功能,加深对数据完整性的理解。
建立表,修改表结构,建立索引,数据完整性描述。
三.、程序源代码:
createdatabase订单管理
createtable客户(
客户号char(8)primarykeycheck(客户号like'
[A-z]%'
客户名称varchar(40)notnull,
联系人char(8),
地址varchar(40),
邮政编码char(6)check(邮政编码like'
[0-9][0-9][0-9][0-9][0-9][0-9]'
电话char(12)check(电话like'
1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
))
createtable产品(
产品号char(8)primarykeycheck(产品号like'
[A-Z][A-Z]%'
产品名称varchar(40),
规格说明char(40)constraintuniunique,
单价smallmoneyconstraintdjcheck(单价>
0))
createtable订购单(
客户referenceskeyforeigntnullnochar(8)客户号.
订单号char(8)primarykey,
订购日期datetimedefaultgetdate())
createtable订单名细(
订单号char(8)foreignkeyreferences订购单,
序号tinyint,
产品号char(8)notnullforeignkeyreferences产品,
数量smallintconstraintslcheck(数量>
0),
primarykey(订单号,序号))
--修改产品表
altertable产品dropconstraintuni
altertable产品altercolumn规格说明varchar(40)
altertable产品addconstraintuniunique(规格说明)
altertable订购单add完成日期datetimedefaultnull
altertable订单名细dropconstraintsl
altertable订单名细addconstraintslcheck(数量>
0
and数量<
1000)
--建立索引
createindexcus_idxon客户(客户名称)
createuniqueindexgdn_nuion产品(产品名称)
--3创建表时,primarykey隐式地创建了聚集索引,而一个表中只能有一个聚集索引。
createclusteredindexoid_cluson订购单(订单号)--失败
createindexitem_idxon订单名细(订单号,序号,数量desc)
数据库系统及应用上机实验报告3
为实验2建立的表设计一组数据进行插入、删除、修改等操作,并体会数据完整性约束的作用,加深对数据完整性及其约束的理解。
数据的插入、更新和删除。
--1、部分记录
insertinto客户values('
C001'
'
A公司'
小明'
北京'
123456'
143567568457'
C002'
B公司'
小李'
上海'
234567'
146389045634'
insertinto客户(客户号,客户名称)values('
C009'
J商场'
insertinto产品values('
GD001'
iphone'
4s'
5000'
GD002'
ipad'
2g'
5500'
insertinto产品(产品号,产品名称)values('
GD010'
MacPro'
insertinto订购单(客户号,订单号)values('
or01'
or02'
insertinto订购单(订单号)values('
or19'
insertinto订单名细values('
1'
4'
2'
3'
6'
insertinto订单名细(订单号,序号,产品号)values('
or14'
28'
GD006'
deletefrom客户where客户号='
--受参照完整性约束
deletefrom订购单where订单号='
update订购单set订单号=nullwhere客户号='
--受实体完整性约束
update订购单set客户号='
C011'
where订单号='
or04'
--受参照完整性约束
or07'
--更新成功
update订单名细set数量=0where序号='
9'
--受用户定义完整性约束
update订单名细set数量=数量+10
from订购单
where订购单.订单号=订单名细.订单号and客户号='
deletefrom订单名细
在删除客户号为“C002”的记录时无法删除,因为客户表被订购单表参照。
删除订购单号为“or01”的记录时无法删除,因为订单名细表参照订购单表。
第一个更新根据实体完整性约束,订单号是主关键字,不能为空值。
第二个更新根据参照完整性约束,订购单表参照客户表,而客户表中没有客户号为“C011”的客户。
第四个更新根据用户定义完整性约束,数量必须为正整数。
.
使客户号为C002的订购单的订购数量增加10.
删掉客户号为C002的订单名细记录。
插入:
INSERTINTO<
表名>
[(<
列名>
[,<
…])]
values(<
表达式>
…])
更新:
update<
set<
=<
…]
[[from<
]where<
逻辑表达式>
]
删除:
DELETEFROM<
[[FROM<
]WHERE<
完整性约束影响插入、更新和删除等操作
数据库系统及应用上机实验报告4
熟练掌握SQLSELECT语句,能够运用该语句完成各种查询。
用SQLSELECT语句完成各种数据查询。
select*from客户
select客户号from订购单
select*from产品where单价>
=5000
5000and产品名称='
Macbook'
6000and产品名称in('
selectc.客户名称,c.联系人,c.电话,o.订单号
from客户c,订购单o
whereo.订购日期between'
2011-10-30'
and'
2011-12-1'
andc.客户号=o.客户号
--7
selectdistinct客户名称,联系人,电话
from客户c,产品g,订购单o,订单名细d
where产品名称='
andg.产品号=d.产品号
andd.订单号=o.订单号
ando.客户号=c.客户号
--8
select*from订单名细
where产品号in(
select产品号
产品from
--9
select*from订购单
where订单号in(
select订单号
from订单名细
where数量>
10)
--10
select*from产品where单价=(select单价from产品where规格说明='
--11
select*from产品where单价between1000and5000
--12
select*from客户where客户名称like'
%集团'
--13
select*from客户where客户名称notlike'
%商场'
--14
select*from产品orderby单价
--15
select*
from产品
orderby产品名称,单价
--16
selectCOUNT(产品号)
--17
selectSUM(数量)
where产品号=(select产品号
--18
selectSUM(数量*单价)总金额
from产品,订单名细
where产品.产品号=订单名细.产品号
and产品名称='
ipodnano'
--19
selectCOUNT(distinct订单号)as订购单个数,AVG(数量*单价)as平均金额
--20
select订单号,COUNT(订单号)项目数,SUM(g.单价*o.数量)总金额
from产品g,订单名细o
产品号=o.产品号whereg.
groupby订单号
--21
selecti.订单号,MAX(数量*单价)最高金额,MIN(数量*单价)最低金额
from订购单o,产品g,订单名细i
whereo.订单号=i.订单号
andg.产品号=i.产品号
groupbyi.订单号
--22
select订单号,COUNT(*)项目数,AVG(数量*单价)平均金额
from产品g,订单名细i
whereg.产品号=i.产品号
havingCOUNT(*)>
=2
--23
select客户名称,联系人,电话,订单号
wherec.客户号=o.客户号
and订购日期isnull
--24
select客户名称,联系人,电话,订单号,订购日期
from客户,订购单
where客户.客户号=订购单.客户号
and订购日期>
'
2011-10-10'
--25
from产品outa
where单价=(selectMAX(单价)
from产品innera
whereouta.产品名称=innera.产品名称)
--26
select客户号
from客户
wherenotexists(
where客户.客户号=订购单.客户号)
--27
whereexists(
客户号.订购单=客户号.客户where
--28
select产品名称
where单价=any(select单价/2
from产品)
--29
where单价>
all(selectmax(单价)from产品)
--30
--cross
select*from客户crossjoin订购单
--inner
select*from客户innerjoin订购单
on客户.客户号=订购单.客户号
--left
select客户.*,订单号,订购日期
from客户leftjoin订购单
--right
from客户rightjoin订购单
--full
from客户fulljoin订购单
数据库系统及应用上机实验报告5
理解视图的概念,掌握视图的使用方法。
定义视图,并在视图上完成查询、插入、更新和删除操作。
--1)、基于单个表按投影操作定义视图
createviewv_cusas
select客户号,客户名称
--使用
select*fromv_cus
--2)、基于单个表按选择操作定义视图
createviewv_orderas
订购单from
where客户号='
select*fromv_order
--3)、基于单个表按选择和投影操作定义视图
createviewv_cussas
select客户名称,联系人,电话
C003'
select*fromv_cuss
--4)、基于多个表根据连接操作定义视图
createviewv_joinas
from客户join订购单
select*fromv_join
--5)、基于多个表根据嵌套查询定义视图
createviewv_itemas
select*fromv_item
--6)、查定义含有虚字段的视图
createviewv_items(订单号,序号,产品号,数量,总金额)as
selecti.*,i.数量*g.单价
from订单名细i,产品g
wherei.产品号=g.产品号
select*fromv_items
--在视图上查询
--在视图上插入
insertintov_cusvalues('
C012'
Google'
--在视图上更新
updatev_orderset订购日期='
2011-11-29'
--在视图上删除
deletefromv_cus
7
上机实验报告数据库系统及应用.
理解存储过程的概念,掌握存储过程的使用方法,加深对客户/服务器机制的理解。
存储过程的建立和执行。
--1、查询单价范围在X元到Y元内的产品信息
createprocsp_getgoods
@price1money,@price2money
as
where单价>
@price1and单价<
@price2
if@@ERROR=0
return0
else
return-1
--执行
declare@statusint
execute@status=sp_getgoods1000,6000
print@status
--2、查询在某年某月某日之后签订的订购单的客户信息
createprocsp_or_cus
@datesdatetime
订购日期电话,订单号,select客户名称,联系人订购单客户from,客户号订购单.=where客户.客户号>
@dates订购日期and
if@@ERROR=0
--执行declare@status1int
execute@status1=sp_or_cus'
2011-10-27'
print@status1
、将某产品的订购日期统一修改为一个指定日期--3createprocsp_upd_date
@gdnamevarchar(40),@odatedatetime
update订购单=@odate订购日期set
in(订单号where
订单号select
订单名细from
where产品名称=@gdname))
declare@status2int
execute@status2=sp_upd_date'
2011-10-23'