SQL---实验三教程
<pre class="has">
- 为BookDb数据库的“读者信息”表创建一个规则,限制所输入的电话号码为8位或者 11位0〜9的数字。
(1) 为读者信息表的联系电话创建一个规则phone_rule,限制所输入的数据为8位或者11位 0〜9的数字实现该规则的代码为:
CREATE RULE phone_rule
AS
@phone LIKE '0-90-90-90-9' OR
@phone LIKE '0-90-90-90-90-90-9'
(2) 使用系统存储过程sp_bindrule将phone_rule规则绑定到读者信息表的“联系电话”列上。 实现该操作的代码为:
sp_bindrule phone_rule, '读者信息.联系电话';
(3) 输入以下代码,进行一次插入操作(查看有什么错误提示,分析出错原因):
INSERT INTO 读者信息(借阅证号,姓名,性别,单位,联系电话,身份证号码,借阅证件类型,办卡时间) VALUES ('B00021','章维','航空学院','1234yyy', '430106199710015739','2002', '2005-9-1')
错误:INSERT 语句中列的数目大于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。
原因:读者信息有7个列,而插入信息的VALUES值只有6个数目,少了个“性别”列值。
- 创建-一个规则gd_rule, 将其绑定到“读者信息”表的“性别”列上,保证输入的性别值只能是“男”或“女”。
CREATE RULE gd_rule
AS @sex in ('男','女')
go
EXEC sp_bindrule phone_rule, '读者信息.性别'; - 使用系统存储过程sp_help 查询gd_rule 规则,使用sp_helptext 查询gd_rule规则的文本。
sp_helptext gd_rule
- 使用sp_rename 将gd_rule规则更名为gender_rule。
sp_rename 'gd_rule', 'gender_rule' ;
- 删除gender_rule 规则。
注意: gender_rule 为gd_rule 更名后,是否仍然绑定在“读者信息”表的“性别”列上,应如何操作才能刪除它,“读者信息”表的“性别”列上。
是,更名后仍然绑定在“读者信息”表的“性别”列上,通过 sp_helptext语句可以看出,
想要删除它,首先得使用sp_unbindrule语句进行解除绑定规则,然后再用drop rule语句进行删除;截图如下:
在BookDb数据库中,建立日期、bit 数据类型的默认对象。
(1) 在查询编辑器中,完成以下空白处的代码,分别创建默认对象df_date、df_card。--创建日期型默认对象df_date
CREATE default df_dateAS '2014-9-11'
GO
--创建bit型默认对象df_card
CREATE DEFAULT df_card
as '0'
(2) 输入以下代码,在BookDb数据库中创建“读者信息”表的副本读者备份数据表。
select * into读者_备份from 读者信息
(3) 使用系统存储过程sp_bindefault 将默认对象df_date、df_card分别绑定在读者备份表的“办卡时间”、“卡状态”列上。
sp_bindefault df_date, '读者_备份.办卡时间'
GO
sp_bindefault df_card , '读者备份.卡状态'
GO
(4) 输入以下代码,在读者_备份表进行插入操作:
INSERT INTO读者_备份(借阅证号,姓名,性别,联系电话,身份证号码) VALUES ('B00007','刘卫华','男','1360731999','430103199110014536')
分析读者_备份表中插入记录的各列的值是什么?
在插入的列值中,由于单位和借阅类型没有给值,所以默认为null,虽然读者_备份表中的“办卡时间”和“卡状态”也没有插入值,但是已经绑定默认对象,所以会插入默认对象的值,分别为‘2014-09-11’和‘0’
(5) 完成以下代码解除默认对象df_date的绑定,并删除之。
sp_unbindefault '读者_备份.办卡时间'
drop DEFAULT df_date
(6) 按同样的方式,删除默认对象df_card。
sp_unbindefault '读者_备份.卡状态'
drop DEFAULT df_card
- 为“读者_备份”表添加一列,命名为“院系”,创建-一个默认对象df_department,将其绑定到“读者_备份”表的“院系”列上,使其默认值为“信息学院”,对读者_备份表进行插入操作,操作完成后,删除该默认对象。
ALTER table 读者_备份
ADD 院系 VARCHAR(50)
go
create default df_department as '信息学院'
go
exec sp_bindefault df_department ,'读者_备份.院系'
go
INSERT INTO 读者_备份(借阅证号,姓名,性别,联系电话,身份证号码,借阅证件类型,办卡时间,卡状态)
VALUES ('B00007','卫华','男','1360731999','430103199110014536','0','2018-8-1','0')
exec sp_unbindefault '读者_备份.院系'
drop default df_department