数据库原理及应用崔巍 书后上机实验.docx
- 文档编号:18476269
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:19
- 大小:18.21KB
数据库原理及应用崔巍 书后上机实验.docx
《数据库原理及应用崔巍 书后上机实验.docx》由会员分享,可在线阅读,更多相关《数据库原理及应用崔巍 书后上机实验.docx(19页珍藏版)》请在冰点文库上搜索。
数据库原理及应用崔巍书后上机实验
数据库 上机实验报告1
一、实验目的:
理解SQLServer数据库的存储结构,掌握SQLServer数据库的建立方法和维护方法。
二、实验内容:
在SQLServer环境下建立数据库和维护数据库。
三、程序源代码:
--1
CREATE DATABASE test1
ON
(NAME=test1_dat,
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,
FILEGROWTH=5MB)
--2
create database test2
on
primary
(name=test2_dat1,
filename='f:
\DB\data\test2dat1.mdf'),
(name=test2_dat2,
filename='f:
\DB\data\test2dat2.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')
--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
(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=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,
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%。
五、总结:
CREATEDATABASEdataname 创建数据库
ALTERDATABASEdatabase 修改数据库
DROPDATABASEdataname 删除数据库
数据库系统及应用上机实验报告2
一、实验目的:
掌握表和索引的建立方法及表结构的修改方法,并实践DBMS提供的数据完整性功能,加深对数据完整性的理解。
二、实验内容:
建立表,修改表结构,建立索引,数据完整性描述。
三.、程序源代码:
create database 订单管理
create table 客户(
客户号 char(8) primary key check(客户号 like '[A-z]%'),
客户名称 varchar(40) not null,
联系人 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]'))
create table 产品(
产品号 char(8) primary key check(产品号 like '[A-Z][A-Z]%'),
产品名称 varchar(40),
规格说明 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 产品,
数量 smallin tconstraint sl check(数量>0),
primarykey(订单号,序号))
--修改产品表
--1
alter table 产品drop constraint uni
alter table 产品alter column 规格说明 varchar(40)
alter table 产品add constraint uni unique (规格说明)
--2
alter table 订购单 add 完成日期 datetime default null
--3
alter table 订单名细 drop constraint sl
alter table 订单名细 add constraint sl check(数量>0and 数量<1000)
--建立索引
--1
create index cus_idx on 客户(客户名称)
--2
create unique index gdn_nui on 产品(产品名称)
--3 创建表时,primarykey 隐式地创建了聚集索引,而一个表中只能有一个聚集索引。
create clustered index oid_clus on 订购单(订单号) --失败
--4
create index item_idx on 订单名细(订单号,序号,数量 desc)
数据库系统及应用上机实验报告3
一、实验目的:
为实验2建立的表设计一组数据进行插入、删除、修改等操作,并体会数据完整性约束的作用,加深对数据完整性及其约束的理解。
二、实验内容:
数据的插入、更新和删除。
三.、程序源代码:
--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','5500')
insert into 产品(产品号,产品名称) values('GD010','MacPro')
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 订单名细(订单号,序号,产品号) values('or14','28','GD006')
--2
delete from 客户 where 客户号='C001' --受参照完整性约束
delete from订购单 where 订单号='or01' --受参照完整性约束
--3
update 订购单 set 订单号=null where 客户号='C001' --受实体完整性约束
update 订购单 set 客户号='C011' where 订单号='or04'--受参照完整性约束
update 订购单 set 客户号='C009' where 订单号='or07' --更新成功
update 订单名细 set 数量=0 where序号='9' --受用户定义完整性约束
--4
update 订单名细 set 数量=数量+10
from 订购单
where 订购单.订单号=订单名细.订单号 and 客户号='C002'
--5
delete from 订单名细
from 订购单
where 订购单.订单号=订单名细.订单号 and 客户号='C002'
四、实验数据、结果分析:
--2
在删除客户号为“C002”的记录时无法删除,因为客户表被订购单表参照。
删除订购单号为“or01”的记录时无法删除,因为订单名细表参照订购单表。
--3
第一个更新根据实体完整性约束,订单号是主关键字,不能为空值。
第二个更新根据参照完整性约束,订购单表参照客户表,而客户表中没有客户号为“C011”的客户。
第四个更新根据用户定义完整性约束,数量必须为正整数。
--4
使客户号为C002的订购单的订购数量增加10.
--5
删掉客户号为C002的订单名细记录。
五、总结:
插入:
INSERTINTO<表名>[(<列名>[,<列名>…])]
values(<表达式>[,<表达式>…])
更新:
update<表名>set<列名>=<表达式>[,<列名>=<表达式>…]
[[from<表名>]where<逻辑表达式>]
删除:
DELETEFROM<表名>
[[FROM<表名>]WHERE<逻辑表达式>]
完整性约束影响插入、更新和删除等操作
数据库系统及应用上机实验报告4
一、实验目的:
熟练掌握SQLSELECT语句,能够运用该语句完成各种查询。
二、实验内容:
用SQLSELECT语句完成各种数据查询。
三.、程序源代码:
--1
select*from客户
--2
select客户号from订购单
--3
select*from产品where单价>=5000
--4
select*from产品where单价>5000and产品名称='Macbook'
--5
select*from产品where单价>6000and产品名称in('Macbook','ipad')
--6
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产品名称='iphone'
andg.产品号=d.产品号
andd.订单号=o.订单号
ando.客户号=c.客户号
--8
select*from订单名细
where产品号in(
select产品号
from产品
where产品名称='Macbook')
--9
select*from订购单
where订单号in(
select订单号
from订单名细
where数量>10)
--10
select*from产品where单价=(select单价from产品where规格说明='4s')
--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(产品号)
from产品
--17
selectSUM(数量)
from订单名细
where产品号=(select产品号
from产品
where产品名称='ipad')
--18
selectSUM(数量*单价)总金额
from产品,订单名细
where产品.产品号=订单名细.产品号
and产品名称='ipodnano'
--19
selectCOUNT(distinct订单号)as订购单个数,AVG(数量*单价)as平均金额
from产品,订单名细
where产品.产品号=订单名细.产品号
--20
select订单号,COUNT(订单号)项目数,SUM(g.单价*o.数量)总金额
from产品g,订单名细o
whereg.产品号=o.产品号
groupby订单号
--21
selecti.订单号,MAX(数量*单价)最高金额,MIN(数量*单价)最低金额
from订购单o,产品g,订单名细i
whereo.订单号=i.订单号
andg.产品号=i.产品号
and产品名称='iphone'
groupbyi.订单号
--22
select订单号,COUNT(*)项目数,AVG(数量*单价)平均金额
from产品g,订单名细i
whereg.产品号=i.产品号
groupby订单号
havingCOUNT(*)>=2
--23
select客户名称,联系人,电话,订单号
from客户c,订购单o
wherec.客户号=o.客户号
and订购日期isnull
--24
select客户名称,联系人,电话,订单号,订购日期
from客户,订购单
where客户.客户号=订购单.客户号
and订购日期>'2011-10-10'
--25
select*
from产品outa
where单价=(selectMAX(单价)
from产品innera
whereouta.产品名称=innera.产品名称)
--26
select客户号
from客户
wherenotexists(
select*
from订购单
where客户.客户号=订购单.客户号)
--27
select*
from客户
whereexists(
select*
from订购单
where客户.客户号=订购单.客户号)
--28
select产品名称
from产品
where单价=any(select单价/2
from产品)
--29
select产品名称
from产品
where单价>all(selectmax(单价)from产品)
--30
--cross
select*from客户crossjoin订购单
where客户.客户号=订购单.客户号
--inner
select*from客户innerjoin订购单
on客户.客户号=订购单.客户号
--left
select客户.*,订单号,订购日期
from客户leftjoin订购单
on客户.客户号=订购单.客户号
--right
select客户.*,订单号,订购日期
from客户rightjoin订购单
on客户.客户号=订购单.客户号
--full
select客户.*,订单号,订购日期
from客户fulljoin订购单
on客户.客户号=订购单.客户号
数据库系统及应用上机实验报告5
一、实验目的:
理解视图的概念,掌握视图的使用方法。
二、实验内容:
定义视图,并在视图上完成查询、插入、更新和删除操作。
三.、程序源代码:
--1
--1)、基于单个表按投影操作定义视图
createviewv_cusas
select客户号,客户名称
from客户
--使用
select*fromv_cus
--2)、基于单个表按选择操作定义视图
createviewv_orderas
select*
from订购单
where客户号='C001'
--使用
select*fromv_order
--3)、基于单个表按选择和投影操作定义视图
createviewv_cussas
select客户名称,联系人,电话
from客户
where客户号='C003'
--使用
select*fromv_cuss
--4)、基于多个表根据连接操作定义视图
createviewv_joinas
select客户.*,订单号,订购日期
from客户join订购单
on客户.客户号=订购单.客户号
--使用
select*fromv_join
--5)、基于多个表根据嵌套查询定义视图
createviewv_itemas
select*from订单名细
where产品号in(
select产品号
from产品
where产品名称='Macbook')
--使用
select*fromv_item
--6)、查定义含有虚字段的视图
createviewv_items(订单号,序号,产品号,数量,总金额)as
selecti.*,i.数量*g.单价
from订单名细i,产品g
wherei.产品号=g.产品号
--使用
select*fromv_items
--2
--在视图上查询
select*fromv_items
--在视图上插入
insertintov_cusvalues('C012','Google')
--在视图上更新
updatev_orderset订购日期='2011-11-29'
--在视图上删除
deletefromv_cus
where客户号='C012'
数据库系统及应用上机实验报告7
一、实验目的:
理解存储过程的概念,掌握存储过程的使用方法,加深对客户/服务器机制的理解。
二、实验内容:
存储过程的建立和执行。
三.、程序源代码:
--1、查询单价范围在X元到Y元内的产品信息
createprocsp_getgoods
@price1money,@price2money
as
select*
from产品
where单价>@price1and单价<@price2
if@@ERROR=0
return0
else
return-1
--执行
declare@statusint
execute@status=sp_getgoods1000,6000
print@status
--2、查询在某年某月某日之后签订的订购单的客户信息
createprocsp_or_cus
@datesdatetime
as
select客户名称,联系人,电话,订单号,订购日期
from客户,订购单
where客户.客户号=订购单.客户号
and订购日期>@dates
if@@ERROR=0
return0
else
return-1
--执行
declare@status1int
execute@status1=sp_or_cus'2011-10-27'
print@status1
--3、将某产品的订购日期统一修改为一个指定日期
createprocsp_upd_date
@gdnamevarchar(40),@odatedatetime
as
update订购单
set订购日期=@odate
where订单号in(
select订单号
from订单名细
where产品号in(
select产品号
from产品
where产品名称=@gdname))
if@@ERROR=0
return0
else
return-1
--执行
declare@status2int
execute@status2=sp_upd_date'iphone','2011-10-23'
print@status2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理及应用崔巍 书后上机实验 数据库 原理 应用 崔巍 书后 上机 实验