数据库完整性

本文详细介绍了如何使用SQL脚本在Eshop数据库中创建表并应用NOTNULL、PRIMARYKEY、UNIQUE、CHECK和FOREIGNKEY约束,以及创建触发器来检查年龄和备份删除数据。
摘要由CSDN通过智能技术生成

1.使用不带约束的脚本创建eshop数据库;

2.使用修改表命令将members表的m_address设置为非空,添加如下记录,体会NOT NULL约束的使用:‘wenh’,‘翁磊’,‘男’,‘1970-04-20’,NULL,5500.0,‘888888’

3.在members表中,将m_account设置为主键,并查看对应的索引,添加如下记录,体会PRIMARY KEY约束的作用:

‘liuzc518’,‘翁磊’,‘男’,‘1970-04-20’,‘河南郑州’,5500.0,‘123456’

4.在members表中,为m_name增加UNIQUE约束,添加如下记录,体会UNIQUE约束的作用:‘jjyw’,‘津津有味’,‘男’,‘1970-04-20’,‘河南郑州’,5500.0,‘jjyw’

5.在members表中,为会员增加CHECK约束为:性别只能为男或女。再分别添加如下两条记录,体会CHECK的约束的作用:

'liuzh','刘忠怀','1960-04-20','工','河南郑州',3000.0,'liuzh'

'liujj','刘津津','1980-04-22','女','河南郑州',4400.0,'liujj'

6.在members表和orders表之间创建关系,并将orders表的m_account设置为外键fk_mo,体会FOREIGN KEY约束的作用;

7.创建触发器要求在插入和更新members年龄时检查age是否在15到60之间,如不在15到60,则输出“年龄不合法”提示信息;

8. 创建触发器实现删除会员信息时,要求自动备份被删除的数据到表backupTable中。

--1.使用不带约束的脚本创建eshop数据库;

if exists (select *from sys.databases where name ='eshop')

begin

use master 

drop database eshop

end

create database eshop

--2.使用修改表命令将members表的m_address设置为非空,添加如下记录,体会NOT NULL约束的使用:‘wenh’,‘翁磊’,‘男’,‘1970-04-20’,NULL5500.0,‘888888

use eshop

insert into members

values('wenh','翁磊','','1970-04-20',NULL,5500.0,'888888')

--3.在members表中,将m_account设置为主键,并查看对应的索引,添加如下记录,体会PRIMARY KEY约束的作用:‘liuzc518’,‘翁磊’,‘男’,‘1970-04-20’,‘河南郑州’,5500.0,‘123456

use eshop

alter table members

add constraint pk_members primary key(m_account)

insert into members

values('liuzc518','翁磊','','1970-04-20','河南郑州',5500.0,'123456')

--4.在members表中,为m_name增加UNIQUE约束,添加如下记录,体会UNIQUE约束的作用:‘jjyw’,‘津津有味’,‘男’,‘1970-04-20’,‘河南郑州’,5500.0,‘jjyw

use eshop

alter table members

add constraint un_name unique(m_name)

use eshop

insert into members

values('jjyw','津津有味','','1970-04-20','河南郑州',5500.0,'jjyw')

--5.在members表中,为会员增加CHECK约束为:性别只能为男或女。再分别添加如下两条记录,体会CHECK的约束的作用:'liuzh','刘忠怀','1960-04-20','','河南郑州',3000.0,'liuzh''liujj','刘津津','1980-04-22','','河南郑州',4400.0,'liujj'

use eshop

alter table members

add constraint ck_sex check(m_sex IN('',''))

use eshop

insert into members

valuse('liuzh','刘忠怀','','1960-04-20','河南郑州',3000.0,'liuzh')

use eshop

insert into members

valuse('liujj','刘津津','','1999-04-14','河南郑州',4400.0,'liujj')

--6.在members表和orders表之间创建关系,并将orders表的m_account设置为外键fk_mo,体会FOREIGN KEY约束的作用;

use eshop

alter table orders

add constraint fk_mo foreign key(m_account)

references members(m_account)

--7.创建触发器要求在插入和更新members年龄时检查age是否在1560之间,如不在1560,则输出“年龄不合法”提示信息;

create trigger tr_age

ON members

for insert,update 

as

declare @age INT

select @age = year(getdate())-year(m_birth)

from inserted

if @age not between 15 and 60

begin

rollback transaction

raiserror('年龄不合法',16,10)

end

--8. 创建触发器实现删除会员信息时,要求自动备份被删除的数据到表backupTable中。

create trigger s2

ON members

for delete 

as

      print '开始备份数据,请稍后......'

      insert into backupTable( M_account ,M_name ,M_birth ,M_sex ,M_address ,M_salary ,M_password) 

       select   from M_account ,M_name ,M_birth ,M_sex ,M_address ,M_salary ,M_password deleted

     IF (@@error = 0)

        begin

           print '备份数据成功,备份表中的数据为:'

           select * from backupTable

           print '备份数据成功,交易表中的数据为:'

           select * from members

        end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单编程王子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值