半亩方塘

Welcome!

SQL 主键,外键,唯一约束,check约束

/***********************************************************************

******外键的特性和注意事项***************************

*1,外键预算约束可以将一个字段或多个字段组合定义为外键

一个表可以定义多个外键 . 多个父表其中字段成为一子表的外键

子表的外键约束所定义的字段的数目和数据类型必须要和父表字段相同 ,

   但是字段名可以不同 .

一个表不但可以链接同一数据库其他表的字段 , 还可以链接到自己表中的其他一个字段

   条件这链接自己的表字段的之间的字段名不同 ( 同一表不可能要相同的字段名 )

, 外键不自动创建索引 , 而主键可以自动创建索引 .

外键约束使用 ' 限制删除 ',' 连锁删除 ',' 限制更新 ',' 连锁更新 ',' 设为 NULL' ' 设为默认值 '

  等方法来维护关联表间的应用完整性

********************************************

***********************************************************************

 

create table tbDept

(

  dId int identity ( 1, 1) primary key not null,

  dName char ( 20) not null,

  pId int not null,

  pDesc text

)

insert into tbDept values ( ' 技术部 ' , 0, ' 的短短的 ' )

insert into tbDept values ( ' 业务部 ' , 0, ' 叮叮当当 ' )

insert into tbDept values ( ' 财务部 ' , 0, ' 叮叮咚咚大 ' )

 

create table MyUserInfo

(

  UserId int identity ( 10, 10) not null

  constraint PK_UserId_MyUserInfo

  primary key clustered ,   -- 主键 

  --1 创建外键

  dId int not null

  constraint FK_MyUserInfo_tbDept

  foreign key

  references tbDept( dId),

 

  UserCIP char ( 18) not null

  constraint UQ_UserCIP_MyUserInfo unique , -- 唯一约束

  UserJSID char ( 6) not null

  constraint UQ_userJSID_MyUserId unique , -- 唯一约束

  UserName varchar ( 20) not null,

  UserTel varchar ( 12) null,

  UserMolt int null,

  UserAge int not null   -- 用户年龄在2-120岁之间

  constraint CHK_UserAge_MyUserInfo check ( UserAge > 2 && UserAge < 120)

  UserSex char ( 2) not null   -- 用户性别男或女

  constraint CHK_UserSex_MyUserInfo check ( UserSex= ' ' or UserSex= ' ' ),

  -- 用户名和电话号码按 DESC 排序组合是唯一的

  constraint UQ_UserName_UserTel_MyUserInfo unique ( UserName desc , UserTel desc ),

   --constraint UQ_UserName_UserTel_MyUserInfo unique(UserName desc |asc,UserTel desc |asc)

  ----constraint UQ_UserName_UserTel_MyUserInfo unique(UserName ,UserTel desc |asc)

  -- 用户名和手机号码按 DESC 排序组合是唯一的

  constraint UQ_userName_UserMolt_MyUserInfo unique ( UserName desc , UserMolt desc )

);

 

--2 创建外键

ALTER TABLE MyUserInfo

ADD

constraint FK_MyUserInfo_tbDept

foreign key ( dId)

  references tbDept( dId);

--3 创建外键

ALTER TABLE MyUserInfo

with nocheck ADD

constraint FK_MyUserInfo_tbDept

  Foreign Key ( dId)

references tbDept( dId)

--4 创建外键

ALTER TABLE MyUserInfo

with check ADD

constraint FK_MyUserInfo_tbDept

  Foreign Key ( dId)

references tbDept( dId)

阅读更多
个人分类: SQL
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭