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’,NULL,5500.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是否在15到60之间,如不在15到60,则输出“年龄不合法”提示信息;
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