⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 实例5(默认规则).sql

📁 经典的sql资料
💻 SQL
字号:
--上课内容:第三单元表的创建和管理 

        -- 第五节 维护数据的完整性——默认、规则

-- 3.5.1 自定义数据类型

      -- 自定义一个数据类型
	sp_addtype 'udt_gender', 'char(1)'

      -- 删除一个自定义数据类型
	sp_droptype 'udt_gender'

-- 3.5.2 默认

  -- 3.5.2.1 创建一个默认—— CREATE DEFAULT 默认名 AS 默认值

    -- 例:创建一个性别的默认值'M'
    create default df_gender as 'M'

  -- 3.5.2.2 创建表,绑定默认在列上
 
    --语法:sp_bindefault 绑定名,'表名.列名'
    create table emp21 (eid int,gender char(1))
    insert into emp21(eid) values(1) 
    select * from emp21

   --例: 绑定 df_gender默认在emp21表的gender列上
    sp_bindefault df_gender, 'emp21.gender'
    insert into emp21(eid) values(2) 
    select * from emp21

   -- 解除默认绑定语法:sp_unbindefault '表名.列名'
   --例: 解除绑定在emp21表的gender列上的 df_gender默认
    sp_unbindefault 'emp21.gender'
    insert into emp21(eid) values(7) 
    select * from emp21


  -- 3.5.2.3 创建表,绑定默认在自定义的数据类型上 

   -- 语法: sp_bindefault 绑定名,'自定义数据类型名'
    create table emp22 (eid int,gender udt_gender)
    insert into emp22(eid) values(1) 
    select * from emp22

   -- 例: 绑定 df_gender默认在自定义的数据类型udt_gender上
    sp_bindefault df_gender, 'udt_gender'
    insert into emp22(eid) values(2) 
    select * from emp22

  -- 解除默认绑定语法:sp_unbindefault '自定义数据类型名'
  -- 例: 解除绑定在自定义数据类型 udt_genere 上的 df_gender默认
    sp_unbindefault 'udt_gender'
    insert into emp22(eid) values(3) 
    select * from emp22

-- 3.5.3 规则

  -- 3.5.3.1 创建一个规则—— CREATE RULE 规则名 AS @变量名 具体要求

    -- 例:创建一个性别的规则值只能是'N'或'F'
    create RULE r_gender as @gender in ('M','F')


  -- 3.5.3.2 创建表,绑定规则在列上 

    -- 语法:sp_bindRULE 绑定名,'表名.列名'
    create table emp23 (eid int,gender char(1))
    insert into emp23(eid,gender) values(1,'M') 
    insert into emp23(eid,gender) values(2,'T') 
    select * from emp23

    -- 例: 绑定 r_gender规则在emp23表的gender列上
    sp_bindRULE r_gender, 'emp23.gender'
    insert into emp23(eid,gender) values(3,'T') 
    select * from emp23

   -- 解除规则绑定语法:sp_unbinRULE '表名.列名'

   -- 例: 解除绑定在emp23表的gender列上的 r_gender规则
    sp_unbindRULE 'emp23.gender'
    insert into emp23(eid,gender) values(4,'T') 
    select * from emp23


  -- 3.5.3.3 创建表,绑定规则在自定义的数据类型上 

   -- 语法: sp_binRULE 绑定名,'自定义数据类型名'
    create table emp24 (eid int,gender udt_gender)
    insert into emp24(eid,gender) values(1,'M')
    insert into emp24(eid,gender) values(2,'T') 
    select * from emp24

   --例: 绑定 r_gender规则在自定义的数据类型udt_gender上
    sp_bindRULE r_gender, 'udt_gender'
    insert into emp24(eid,gender) values(3,'T') 
    insert into emp24(eid,gender) values(4,'F') 
    select * from emp24

   -- 解除规则绑定语法:sp_unbindRULE '自定义数据类型名'
   --例: 解除绑定在自定义数据类型 udt_genere 上的 r_gender规则
    sp_unbindRULE 'udt_gender'
    insert into emp24(eid,gender) values(5,'T') 
    select * from emp24




-- 练习:
-- 1. 创建一个emp31表(eid int,ename char(10),flag char(1),indate datetime,mobile char(11)),
   -- 创建默认,设置默认值为0(不是党员),并绑定在emp表的flag字段(是否为党员)上
   -- 并验证

-- 2. 为emp表的flag字段上解除默认绑定
   -- 并验证

-- 3. 创建规则,设置为flag(是否为党员)只能输入0或1
   -- 绑定在emp表的flag上
   -- 并验证

-- 4. 解除绑定在emp表的flag上的规则
   -- 并验证

-- 5. 在emp31表创建默认,设置默认值为13901982199,并绑定在emp表的mobile字段上
   -- 并验证

-- 6. 为emp表的mobile字段上解除默认绑定
   -- 并验证

-- 7. 创建规则,设置为13开头的11位手机号码
   -- 绑定在emp表的mobile上
   -- 并验证

-- 8. 解除绑定在emp表的mobile上的规则
   -- 并验证

-- 9. 为emp表加一个工资字段salary decimal(8,2),并为salary字段创建规则,要求输入的值限定在1000-9999之间;为salary字段创建默认,值为2000
   -- 并验证











-- 练习参考答案:

-- 1. 创建一个emp31表(eid int,ename char(10),flag char(1),indate datetime,mobile char(11))
   -- 创建默认,设置默认值为0(不是党员),并绑定在emp表的flag字段(是否为党员)上
   -- 并验证
create table emp31(eid int,ename char(10),flag char(1),indate datetime,mobile char(11))
create default df_flag as '0'
sp_bindefault df_flag,'emp31.flag'
insert into emp31(eid,ename) values(1,'may')
insert into emp31(eid,ename,indate,mobile) values(2,'may2','20031212','13901019188')
select * from emp31

-- 2. 为emp表的flag字段上解除默认绑定
   -- 并验证
sp_unbindefault 'emp31.flag'
insert into emp31(eid,ename) values(3,'may3')
select * from emp31

-- 3. 创建规则,设置为flag(是否为党员)只能输入0或1
   -- 绑定在emp表的flag上
   -- 并验证
create rule r_flag as @flag in ('1','0')
sp_bindrule r_flag, 'emp31.flag'
insert into emp31(eid,ename,flag) values(4,'may4','1')
select * from emp31
insert into emp31(eid,ename,flag) values(5,'may5','2')


-- 4. 解除绑定在emp表的flag上的规则
   -- 并验证
sp_unbindrule  'emp31.flag'
insert into emp31(eid,ename,flag) values(5,'may5','2')

-- 5. 在emp31表创建默认,设置默认值为13901982199,并绑定在emp表的mobile字段上
   -- 并验证
create default df_mobile as '13901982199'
sp_bindefault df_mobile,'emp31.mobile'
insert into emp31(eid,ename) values(6,'may6')
select * from emp31

-- 6. 为emp表的mobile字段上解除默认绑定
   -- 并验证
sp_unbindefault 'emp31.flag'
insert into emp31(eid,ename) values(7,'may7')
select * from emp31

-- 7. 创建规则,设置为13开头的11位手机号码
   -- 绑定在emp表的mobile上
   -- 并验证
create rule r_mobile as @mobile like '13[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
sp_bindrule r_mobile, 'emp31.mobile'
insert into emp31(eid,ename,mobile) values(8,'may8','13901900188')
select * from emp31
insert into emp31(eid,ename,mobile) values(9,'may9','1390190018F')
insert into emp31(eid,ename,mobile) values(10,'may10','23901900188')

-- 8. 解除绑定在emp表的mobile上的规则
   -- 并验证
sp_unbindrule  'emp31.mobile'
insert into emp31(eid,ename,mobile) values(9,'may9','1390190018F')
insert into emp31(eid,ename,mobile) values(10,'may10','23901900188')

-- 9. 为emp表加一个工资字段salary decimal(8,2),并为salary字段创建规则,要求输入的值限定在1000-9999之间;为salary字段创建默认,值为2000
   -- 并验证
alter table emp31 add salary decimal(8,2)
create rule r_salary as @salary>1000 and @salary<9999

sp_bindrule r_salary, 'emp31.salary'
select * from emp31
insert into emp31(eid,ename,salary) values(11,'may11',2000)
insert into emp31(eid,ename,salary) values(12,'may12',1000)
insert into emp31(eid,ename,salary) values(12,'may12',12000)

sp_unbindrule  'emp31.salary'
insert into emp31(eid,ename,salary) values(12,'may12',1000)

create default df_salary as 2000
sp_bindefault df_salary,'emp31.salary'
insert into emp31(eid,ename) values(13,'may13')

sp_unbindefault 'emp31.salary'
insert into emp31(eid,ename) values(14,'may14')







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -