SQL Server—约束和主键外键详解

  • SQL Server—约束和主键外键详解

  • 约束和主键外键

    • 主键 和 外键

      • -- 主键:
        • 关系型数据库中一条记录有若干个属性,若其中某一个属性能够位置标识这条记录,这个属性就可以设置为表的主键,主键是确定一条记录的唯一标识,有可能作为主键的属性 学生ID、身份证号

          -- 主键的特点:

              -- 1. 唯一性: 主键必须是唯一的 不能重复

              -- 2. 非空性: 主键字段不能为null

              -- 3. 稳定性: 主键一旦确定 就不能应该别修改

              -- 4. 永久性: 主键值在整个数据库生命周期中是唯一不变的

      • -- 外键:
        • 外键用于与另外一张的关联,是能确定另一张表记录的字段,用于保持数据的一致性,

          -- 外键的特点:

              -- 1. 可控性: 外键的字段值允许为空,表示没有找到关联的表的数据

              -- 2. 数据的一致性: 外键就是用来保持表之间数据的一致性,要求瓦检在另外一个表中

              -- 3. 引用关系: 外键可以关联到另外一个表主键上

    • 约束

      • 1 实体完整性约束
        • -- 1 主键约束 primary key:

        • -- 语法: alter table 表名 add constraint 约束名 primary key(列名)

          alter table XueShengTable add constraint PK_StudentId primary key(StudentId)

          也可以在定义列时添加主键

          Id int identity(100000,1) primary key,

        • -- 2 唯一约束 nique:

        • -- 语法: alter table 表名 add constraint 约束名 unique(列名)

          alter table XueShengTable add constraint UQ_Age unique(Age)

      • 2 域完整性约束
        • -- 1 范围约束 check(列名 between 范围1 and 范围2):

        • -- 语法 alter table 表名 add constraint 约束名 check(列名 between 范围1 and 范围2)

          alter table XueShengTable add constraint CK_Age check(Age between 13 and 55)

        • -- 2 长度约束:

        • alter table 表名 add constraint 约束名 check(len(Phone) = 11)

        • -- 3 默认约束:

        • alter table 表名 add constraint 约束名 default('默认地址') for StudentAddress

      • 3 引用约束
        • -- 外键约束:

        • -- alter table XueShengTable add constraint FK_ClassId foreign key(ClassId) references StudentClass(ClassId)

      • 4 扩建
        • 1. 设置默认值约束

          alter table Students add constraint SA_StudentAddress default('地址不详')for StudentAddress

        • 1. 设置默认值为当前时间约束

          alter table ScoreList add constraint SA_UpdateTime default(getdate())for UpdataTime

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值