规范SQL SERVER 数据
版权声明:原创作品,谢绝转载!否则将追究法律责任。 |
第一题:要求在yuangong表上增加一列为录入员,并将该字段设为默认约束,值为:张红.请用SQL语句写出从创建默认约束到删除的一系列过程.
具体操作步骤如下:
1. 首先自己创建一个表,也可以找一个以建好的表。修改原表,加入录入员这一列如下图所示:
![]() ![]() 2. 在现有表上,增加一个默认值约束。如下图所示:
![]() 注:这个默认值约束对,原表中已存在的记录,是不起作用的。只用在创建约束后,加的记录才有效。
3. 在这个表中加入啊信,这条记录。如下图所示:
![]() 4. 删除默认值约束。如下图所示:
下面是先查看约束。找出创建的默认约束(DK_RRY)
![]() 下面是删除默认约束。如下图所示:
![]() ![]() 在表中重新加一条新记录,如下图所示:
![]() 查看结果,录入员为空。如下图所示:
![]() 完成第一题的操作。
第二题:现在你们公司在北京设置了一个专卖店,这个专场店只能针对北京五大区的用户进行销售。也就是说填写客户资料时,客户所在地只能是海淀区,朝阳区,通州区、崇文区、顺义区,并且客户邮编必须正确(全部是数字),每一条记录都会有一个录入日期字段,取当取日期,请自拟建表实现,使用SQL语句写出实现过程。
具体操作步骤如下:
1. 首先创建一个表,如ZMD。在建表的同时创建一具CHECK约束。如下图所示:
(1) 这是给地址创建了一具CHECK约束:
(2) 通过INSERT INTO 表名 VALUES (),向表中插入记录。
![]() 2.给时间设置一个默认值约束。如一图所示:
![]() 3. 测试(地址中的默认值约束)如下图所示:
![]() ![]() ![]() 3. 从上图中可以看出,邮编是字母的也可以插入。下面是给邮编创建一具CHECK约束。
注:在创建CHECK约束前,必须先把前面的含有字母的邮编删掉。
才能创建新的CHECK约束。
如下图所示:
![]() 5.创建CHECK约束。如下图所示:
![]() 6.加入一条新的记录进行测试。如下图所示:
![]() ![]() ![]() 完成第二题的操作。
第三题:.创建用于存储收货人资料的recipient表。下面是要存储到表中的收货人资料
1.--创建表
create table Recipient
( OrderNo char(6) not null,
userName varchar(20)not null,
Address varchar(20) null,
City char(15) null,
CountryId char(3) null, 国家
ZipCode char(10) null, 邮编
Phone char(15) null 电话
)
2.考虑上面的表结构,就以下问题参考这些表结构:
(a.)创建Category(种类)表。在创建表时实施下面的数据完整性规则:
CategoryID属性应作为主健
Category属性应为唯一,但不是主健
Description的描述可存储NULL值
(b.)创建ToyBrand(商标)表。在创建表时实施下面的数据完整性规则:
BrandID属性应作为主健
BrandName属性应为唯一,但不是主健
(c.)创建Toys表。在创建表时实施下面的数据完整性规则:
ToysID属性应作为主健
ToyName和ToyDescription属性不可取NULL值
玩具的siToyQoh现有数量应在0到200之间
玩具的最低年龄LowerAge缺省为1
CategoryId属性的值应出现在Category表中
(d.)修改Toys表。实施下面的数据完整性规则:
BrandID属性的值应出现在ToyBrand表中
下面是具体操作步骤:
1. 创建收货人资料的recipient表。如下图所示:
![]() 2. 创建种类表。如下图所示:
![]() 3. 创建商标表。如下图所示:
![]() 4. 创建玩具表。如下图所示:
![]() 解析:a. 玩具的siToyQoh现有数量应在0到200之间.(运用了CHECK约束)
b. 玩具的最低年龄LowerAge缺省为1(运用了CHECK约束)
c. CategoryId属性的值应出现在Category表中(运用了外键约束)
d. 修改Toys表时,BrandID属性的值应出现在ToyBrand表中(运用了外键约束)
小结:(1)在一个表中操作常用,CHECK约束和默认值约束。
(2)多表操作则,常用外键约束和触发器。
完成第三题的操作。
第四题:现有两个表学生表和学生借书记录表
结构如下:
Create Table Student( --学生表
StudentID int primary key, --学号
studentname varchar(10) -- 学生姓名
)
Create Table BorrowRecord( --学生借书记录表
BorrowRecord int identity(1,1), --流水号
StudentID int , --学号
BorrowDate datetime, --借出时间
ReturnDAte Datetime, --归还时间 )
要求使用触发器实现以下功能
A. 如果更改了学生的学号,希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
B. 如果该学生已经毕业,希望删除他的学号的同时,也删除它的借书记录。
下面是具体操作步骤:
1. 首先创建两个基表。一个是学生表。一个是学生借书记录表。如下图所示:
![]() 2. 在现有表中,创建一个外键约束。如下图所示:
![]() 3. 测试。如下图所示:
(1)加入一条新的记录。
![]() ![]() (2) 删除一条记录。如下图所示:
![]() ![]() 完成第四题的操作。
第五题:5. 要求:建立2个表:(cust_test和order_test)
cust_test:
CustomerID char(5) PK
Custcity 所在城市
Custname 产品名称
CStatus int 库存状态
Cstorage int 库存量
Cdate date 日期
order_test:
CustomerID char(5)--对应关系
Orderid PK 订单序号
OrderNames 订购的产品名称
OStatus int --状态
Orders int --定购
Odate date--日期
(1) 在cust_test表中建立删除触发器,实现上述2表的级联删除。
从库存表中删除一个产品,相应的订单也会删除
(2) 在order_test表上建立一个插入触发器,在添加一个订单时,减少cust_test表的相应货物的记录的库存量。
(3) 在order_test表上建立一个更新触发器,规定订单日期(Odate)不能修改。
(4) 要求订购的物品一定要在仓库中有的,并且数量足够。
下面是具体操作:
1. 创建CUST—TEST表,并添加一些记录:如下图所示:
![]() 2. 创建ORDER—TEST表,并添加一些记录:如下图所示:
![]() (1) 在cust_test表中建立删除触发器,实现上述2表的级联删除.
![]() 测试:如下图所示:
![]() ![]() ![]() 完成第一小题的操作。
本文出自 “beyond” 博客,谢绝转载! 本文出自 51CTO.COM技术博客 |






































lhtwy
博客统计信息
热门文章
最新评论
友情链接

