数据库应用与设计 课后实验 实验一到实验五 代码加截图教材Word格式.docx
《数据库应用与设计 课后实验 实验一到实验五 代码加截图教材Word格式.docx》由会员分享,可在线阅读,更多相关《数据库应用与设计 课后实验 实验一到实验五 代码加截图教材Word格式.docx(77页珍藏版)》请在冰豆网上搜索。
|ADDLOGFILE<
|MODIFYFILE<
|MODIFYNAME=new_dbname
}
删除数据库的命令是DROPDATABASE,其格式是:
DROPDATABASEdatabase_name
实验操作:
1)代码:
createdatabasetest1
(name=test1,
FILENAME='
F:
\date\test1.mdf'
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)
LOGON
(NAME=test1_log,
E:
\date\test1.ldf'
SIZE=5MB,
MAXSIZE=25MB,
FILEGROwTH=5MB)
实验一1.1图
2)代码
createdatabasetest2
on
(name=dat11,
filename='
\date\dat11.mdf'
size=10mb,
maxsize=100mb,
filegrowth=10%),
(name=dat22,
\date\dat22.ndf'
(name=dat33,
\date\dat33.ndf'
filegrowth=10%)
logon
(name='
log1'
\date\log1.ldf'
filegrowth=5mb),
(name=log2,
\date\log2.ldf'
size=10mb,
实验一1.2图
maxsize=100mb,
(3)代码:
createdatabasetest3
onprimary
(name=dab1,
\data\dab1.mld'
size=5mb,
maxsize=10mb,
filegrowth=1mb),
filegroupfg11
(name=dab2,
\data\dab2.nld'
size=1mb,
filegroupfg22
(name=dat1,
\date\dat1.nld'
(name=dat2,
\date\dat2.nld'
size=1mb,
filegroupfg33
(name=da1,
G:
\data\da1.nld'
(name=da2,实验一1.3图
\data\da2.nld'
filegrowth=1mb)
2代码:
alterdatabasetest1
addfile
(name=te,
\data\te.mld'
filegrowth=5mb)
实验一2图
3代码:
alterdatabasetest2
modifyfile
\data\dat11.mid'
maxsize=105mb)
实验一3图
4:
代码:
drop databasetest1
实验一4图
实验二建立表和定义完整性约束
建立模式、表和定义完整性约束
在实验一建立的数据库的基础上,参照下图和下表建立表并定义完整性约束。
面积
图1订货数据库
表1订货数据库字段和约束说明
表名
字段名
字段类型
关键字
约束说明
仓库
仓库号
6个字符
是
城市
10个字符
唯一,不允许空值
数值
大于等于50
职工
职工号
8个字符
主键不为空值
经理
参照仓库的仓库号,允许空值。
工资
货币
大于等于1000,小于等于10000
供应商
供应商号
4个字符
供应商名
16个字符
地址
30个字符
订购单
参照职工表的职工号,不允许空值
参照供应商表的供应商号,允许空值
订购单号
订购日期
日期
默认是当前日期
金额
默认空值
订购单明细
参照订购单表的订购单号,不允许空值
序号
2位数字
产品名称
20个字符
单价
大于0,默认空值
数量
整数
大于0,不允许空值
熟练掌握表的建立和数据完整性速描定义方法,实践DBMS提供的数据完整性功能,加深对数据完整性的理解。
在实验一建立数据库的基础上用CREATESCHEMA命令建立模式,用CREATETABLE命令建立表并定义数据完整性约束(注意:
需要有CREATESCHEMA和CREATETABLE的权限,或者其他具有相应权限的身份,有关权限的内容请参见课文5.2节),用ALTERTABLE命令修改表结构。
1、用CREATESCHEMA命令建立模式(自己命名模式名称)。
2、在定义的模式下参照图1和表1使用CREATETABLE命令建立表并定义完整性约束。
3、使用ALTERTABLE命令按如下要求修改表结构:
a)为订购单增加一个新的字段“完成日期”,类型为日期时间型,默认是空值。
b)为订单明细表的“数量”字段重新定义约束:
大于0、小于等于1000的正整数,不允许为空值。
c)将供应商表的供应商名字段的类型修改为varchar(30)。
CREATESCHEMA命令的基本格式是(详细解释参见课文第3.3.1节):
CREATESCHEMAschema_name
CREATETABLE命令的基本格式是(详细解释参见课文第3.3.2节):
CREATETABLE[schema_name].table_name
({<
column_definition>
|<
computed_column_definition>
}
[<
table_constraint>
][,...n])
其中列定义(column_definition)的基本格式是:
Column_name<
data_type>
[NULL|NOTNULL]
[CONSTRAINTconstraint_name]
{{PRIMARYKEY|UNIQUE}|FOREIGNKEY(column[,...n])
REFERENCESreferenced_table_name[(ref_column[,...n])]
[ONDELETE{NOACTION|CASCADE|SETNULL|SETDEFAULT}]
[ONUPDATE{NOACTION|CASCADE|SETNULL|SETDEFAULT}]
|CHECK(logical_expression)
}
如果需要还可以定义计算列(computed_column_definition)和表级约束(table_constraint)。
ALTERTABLE命令的基本格式是(详细解释参见课文3.3.2节):
ALTERTABLE[schema_name.]table_name
{ALTERCOLUMNcolumn_name<
[NULL|NOTNULL]
|ADD<
|DROP[CONSTRAINT]constraint_name|COLUMNcolumn_name}
1代码:
createschemakun
、
1)createtablekun.仓库
(仓库号char(6)primarykey,
城市char(10),
面积char(10)check(面积in('
>
=50'
)))
2)createtablekun.职工
(职工号char(8)primarykey,
仓库号char(6)foreignkeyreferenceskun.仓库,
工资moneycheck(工资in('
between1000and10000'
)))
3)createtablekun.供应商
(供应商号char(4)primarykey,
供应商名char(16),
地址char(30))
4)createtablekun.订购单
(职工号char(8)foreignkeyreferenceskun.职工,
供应商号char(4)foreignkeyreferenceskun.供应商,
订单号char(6)primarykey,
订购日期datetimedefault11/2/2013,
金额money)
5)
createtablekun.订购单明细
(订购单号char(6)foreignkeyreferenceskun.订购单,
序号char(4),
产品名称char(20),
单价moneycheck(单价>
0)null,
数量intcheck(数量>
0)notnull,
primarykey(订购单号,序号))
3:
代码
1)altertablekun.订购单
add完成日期datetimenull
2)altertablekun.订购单明细
addconstraint数量check(数量between0and1000)
实验三数据操作和完整性约束的作用
数据操作笔完整性约束的作用
在实验二的基础上完成数据的插入操作,然后进行部分修改和删除操作,在这些操作中体会数据完整性约束的作用。
熟练掌握SQL的INSERT,UPDATE和DELETE命令,深刻理解数据完整性约束的作用以及约束时机。
在实验二的基础上首先用INSERT命令插入各个表的记录,然后使用UPDATE和DELETE命令对部分记录进行修改和删除操作。
1、自行设计各个表的记录,其中仓库表至少5条记录,职工表至少10条记录、供应商表至少5条记录,订购单表至少20条记录,订购单明细表至少50条记录。
2、使用INSERT命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户定义完整性约束的插入操作,并分析原因。
3、设计若干删除操作,体会执行删除操作时检查参照完整性规则的效果(要求涉及拒绝删除、空值删除和级联删除等不同的处理方式)。
4、设计若干更新操作,体会执行更新操作时检查实体完整性规则、参照完整性规则和用户定义完整性规则的效果。
5、将x城市仓库的职工的工资提高10%。
6、用UPDATE语句完成订购单表金额字段的计算(提示:
某张订购单的金额为该订购单所有订购项目(订购单明细)单价乘以数量的总和)。
7、设计2~3个删除操作,它需要另外一个表中的数据作为删除条件(例如,按指定的供应商名称删除订购单记录)。
8、在实验报告中给出具体的记录和设计的操作,并针对各种数据完整性检查,给出具体的分析和讨论。
SQL的插入语句是INSERT,常用格式如下:
INSERTINTO[schema_name.]table_name[(column_list)]
VALUES({expression|DEFAULT|NULL}[,...n])
SQL的删除语句是DELETE,常用格式如下:
DELETE[FROM][schema_name.]table_name
[WHERE<
search_condition>
]
SQL更新记录的语句是UPDATE,常用格式如下:
UPDATE[schema_name.]table_name
SETcolumn_name={expression|DEFAULT|NULL}[,...n]
[WHERE<
其中,DELETE和UPDATE语句的WHERE子句可以嵌套子查询,从而完成若干其他表中记录或字段值的条件的删除或修改操作。
1:
1)仓库记录:
insertintokun.仓库(仓库号,城市,面积)
values(0001,'
新圩'
500)
insertintokun.仓库(仓库号,城市,面积)values(0002,'
600)
insertintokun.仓库(仓库号,城市,面积)values(0003,'
700)
insertintokun.仓库(仓库号,城市,面积)values(0004,'
insertintokun.仓库(仓库号,城市,面积)values(0005,'
insertintokun.仓库(仓库号,城市,面积)values(0006,'
800)
2)职工记录:
insertintokun.职工(职工号,仓库号,工资)
values(99,1,2000)
insertintokun.职工(职工号,仓库号,工资)values(98,2,3000)
insertintokun.职工(职工号,仓库号,工资)values(97,3,3000)
insertintokun.职工(职工号,仓库号,工资)values(96,4,3000)
insertintokun.职工(职工号,仓库号,工资)values(95,5,3000)
insertintokun.职工(职工号,仓库号,工资)values(94,6,3000)
insertintokun.职工(职工号,仓库号,工资)values(93,7,3000)
insertintokun.职工(职工号,仓库号,工资)values(92,8,3000)
insertintokun.职工(职工号,仓库号,工资)values(91,9,3000)
insertintokun.职工(职工号,仓库号,工资)values(90,10,3000)
insertintokun.职工(职工号,仓库号,工资)values(89,11,3000)
3)供应商记录
insertintokun.供应商(供应商号,供应商名,地址)
values(10,'
梦华'
'
阿拉斯加'
)
insertintokun.供应商(供应商号,供应商名,地址)values(11,'
insertintokun.供应商(供应商号,供应商名,地址)values(12,'
insertintokun.供应商(供应商号,供应商名,地址)values(14,'
insertintokun.供应商(供应商号,供应商名,地址)values(15,'
insertintokun.供应商(供应商号,供应商名,地址)values(16,'
订购单记录
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)
values(15,98,74,'
1/1/2013'
1000,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,97,98,'
2000,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,96,97,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,95,96,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,94,95,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,93,94,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,92,93,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,91,92,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,90,91,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,89,90,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,88,88,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,87,87,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,86,86,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,85,85,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,84,84,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,83,83,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,82,82,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,81,81,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(16,80,78,'
insertintokun.订购单(职工号,供应商号,订单号,订购日期,金额,完成日期)values(