当前位置: 首页 > article >正文

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


http://www.kler.cn/news/336436.html

相关文章:

  • AAA Mysql与redis的主从复制原理
  • 爬虫(Python版本)
  • 重学SpringBoot3-集成Redis(四)之Redisson
  • 热补丁反调试API Hook—上跳/下跳
  • Spring MVC__HttpMessageConverter、拦截器、异常处理器、注解配置SpringMVC、SpringMVC执行流程
  • Android SystemUI组件(10)禁用/重启锁屏流程分析
  • 文件处理不再难:带你轻松攻克C语言文件操作
  • 代码随想录算法训练营第二十六天|669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树
  • C语言 assert 函数 - C语言零基础入门教程
  • 专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
  • 数据结构-基于不同策略的英文单词的词频统计和检索系统
  • 付费计量系统数据元素(Data elements)
  • 【玩转 JS 函数式编程_004】1.4 如何应对 JavaScript 的不同版本
  • CSS——属性值计算
  • 济南奇牛科技移动办公手机安全管理平台功能说明
  • 【科普】Yarn Berry与npm分别是什么?两者之间有什么异同?
  • 亲测无限坐席在线客服系统源码/二开版/基于ThinkPHP+搭建教程
  • 每日一练算法题(判断表达式中括号是否匹配)
  • QT学习笔记4.6(编译,运行,调试)
  • 【D3.js in Action 3 精译_027】3.4 让 D3 数据适应屏幕(下)—— D3 分段比例尺的用法