数据表的完整性问题大多是由于设计不当引起的,创建表的时候就应当保证以后的录入是正确的,也就是错误的、不符合要求的数据应当不允许录入。

数据完整性=可靠性+精确性

要保证数据的完整性,就要实施完整性约束。

四种完整性约束

①域完整性:列值的约束,如数据类型、位数、范围。
        约束方法:检查约束、默认值约束、非空约束。
②实例完整性:行和行间不能重复。
        约束方法:唯一约束、主键约束、标识列。
③引用完整性:某一列值需来源于另外一张表中。
        约束方法:外键约束。
④自定义完整性:自己定义的一些约束。
        约束方法:触发器。

表中字段的常用数据类型


char(x)指定的位数x,即使存入的数据不满x位,后面也会补上空格。varchar(x)则会判断位数,不足x则只保存真实的位数,牺牲性能来节省空间,而且因没有补全机制而更方便处理。
varchar(2x)能存储2x个字母或x个汉字,而nvarchar(2x)能存储2x个字母或2x个汉字。

日期类型:

此外,图片可以使用img类型。但是一般不把图片存在数据库中,而是直接保存在硬盘中,在数据库中记录它们的位置即可。

[1]主键约束


因为学号是不可能重复的,就可以用它来保证实例的完整性,对学号设置主键约束:

尝试插入学号重复的行,会提示违反了主键约束,不能插入:

一个表可以有多个主键,按住Ctrl选中再一起设置主键,如新建这样一张表:

像这样的表就仅当两个主键都重复的行不能被录入:

在设计主键时,应尽量选择更新情况少的列的单个键作为主键。

[2]默认值约束

如给Adress域设置默认值:

这时新插入的行不填入地址时,默认就不再为NULL而是提供的默认值:

[3]设置标识列

如果表中没有合适的列作为主键,那么可以设置标识列:

标识列必须是int型,图中的设置表示标识从1开始,每次加1。把标识列设置成主键,然后保存设计并插入数据:

可以看到这时候主键就变成了标识列,且标识列由系统自动录入。但标识号不会因为删除行而回退,而是接着最后一次产生的标识(而不是实际紧靠的标识)向下走。

[4]外键约束

创建好的学生表:

创建好的年级表:

创建好的科目表:

创建好的成绩表:

为保证数据完整性,成绩表中的学号应该来自学生表中的学号,成绩表中的学科号应来自科目表中的学科号,科目表中的年级号应来自年级表,学生表中的年级号应来自年级表。这就需要建立外键约束(保证引用的完整性)。
如添加”成绩表中的学号引用自学生表中的学号”:



用同样的方法建立另外两个外键约束。

建立好后插入数据,Grade表:

Subject表中GradeID不符合时不录入:

Result表中SubjectID不符合时不录入:

Result表中StudentNo不符合时不录入:

Student表中GradeID不符合时不录入:

建立外键约束后,需要注意:①主表中没有的值不能给子表外键约束域,②不能更改主表中的值使子表外键约束域孤立,应当一起修改,③子表中引用的了的值,不能在主表中删除这一行,④删除主表前,应先删除子表。

[5]检查约束




这时候如果尝试录入的Email地址中未能按照CHECK约束包含有’@’符号,就会被禁止:

[6]创建数据库关系图



继续完善这几张表

Student表密码长度>=6(检查约束):

Student表性别只能写男或女(检查约束):

Subject表学时必须大于0(检查约束):

Result表分数不为空时需要在0~100之间(检查约束):

【SQL Server学习笔记】4:使用SSMS创建数据库表并完善表结构相关推荐

  1. SQL Server学习笔记

    <SQL Server从入门到精通>学习笔记 1 数据管理技术的三个阶段:人工管理.文件系统.数据库系统. 2 数据库的组成:数据库.数据库管理系统.数据库管理员.硬件平台.软件平台5部分 ...

  2. SQL Server 学习笔记——T-SQL

    SQL学习笔记 一.SQL概述 SQL按其功能可以分为三大部分: 数据定义功能.数据操纵功能和数据控制功能 DDL.DML.DCL SQL功能 命令动词 数据定义 CREATE.ALTER.DROP ...

  3. SQL server学习日志(二)创建表!手把手教你创建表,修改表,了解数据类型!超详细!

    一.简单了解表(创建表之前一定要先了解数据类型与约束哦,这样我们才能创建正确的表!) 1.定义:基本表是数据库中组织和管理数据的基本单位,数据库的数据保存在一个个基本表中. 对于关系型数据库系统而言, ...

  4. sql server学习笔记——批处理语句、存储过程

    目录 批处理语句 1.批处理语句简介 示例一: 示例二: 存储过程 一.什么是存储过程 1.存储过程的简介 2.存储过程包含的内容 3.存储过程的优点 4.存储过程的分类 系统存储过程: 用户定义存储 ...

  5. 【SQL Server学习笔记】变更数据捕获(Change Data Capture)

    SQL Server的变更数据捕获(Change Data Capture,CDC),就是异步捕获表数据的修改,只有很少的性能开销,可以持续的更新其他数据源,比如,将联机事务处理数据库中的持续数据变化 ...

  6. 【SQL Server学习笔记】SQL SERVER 视图

    视图包括:普通视图,索引视图,分布式分区视图. 关于视图的最佳实践: A.对视图进行性能优化的过程和普通的select查询语句的优化过程是一样的. B.不要在一个视图的定义中调用另一个视图. C.如果 ...

  7. SQL Server 学习笔记

    SQL Server 创建数据库 切换数据库 在表中插入数据 在表中查询数据 无条件查询 取消结果集中的重复行 在表中修改数据 在表中删除数据 表结构的修改 添加列 修改列 环境 SQL Server ...

  8. SQL SERVER学习笔记(二)数据库管理

    第二部分:数据库管理 单词记忆:transact:处理 create:创建 execute:执行.完成 一.     SQL Server的特性 1. 安装简便:为了便于安装.使用和管理,SQL Se ...

  9. 适合小白的SQL Server学习笔记

    升序ASC  降序DESC 统计某个字段count(字段),一般都需要根据该字段分组group by(字段) having的作用相当于where,但是where关键字不能与合计函数一起使用(例:sum ...

最新文章

  1. 怎么让div显示一行,其余的隐藏。
  2. 从零开始单排学设计模式「UML类图」定级赛 1
  3. css深入理解之overflow
  4. 【机器学习基础】半监督算法概览(Python)
  5. 监督学习 | 线性回归 之多元线性回归原理及Sklearn实现
  6. js中innerHTML与innerText的用法与区别【转自http://blog.sina.com.cn/johnpu】
  7. 林斌宣布好消息!语音识别大佬、Kaldi之父加盟小米
  8. Python机器学习基础教程(一):简介
  9. python重写和装饰器_Python | 老司机教你 5 分钟读懂 Python 装饰器
  10. 2022天府杯国际赛数学建模题目和思路
  11. softmax 激活函数
  12. App上架安卓应用市场最全指南
  13. 网络媒体教程:人物素描
  14. .NET前后分离解决方案
  15. 对ASP.NET程序员非常有用的85个工具
  16. 丘成桐:数理与人文(官方完整版PDF下载)(公号回复“丘成桐数学”下载PDF典型资料,欢迎转发、赞赏支持科普)
  17. 2016 China CADCG 参会总结 -- day1
  18. Oracle空间数据库
  19. android 各个存储路径及获取方法总结
  20. activiti会签功能

热门文章

  1. HTML基础-03-表单一
  2. dubbo服务注册ip地址不正确,rpc服务调用失败?
  3. ARM与X86架构的对决[整编]
  4. 思维启发之意外的收获(发现自己思维局限和掀开二级指针的虎皮)
  5. Cris 玩转大数据系列之 Hadoop HA 实现
  6. 一筐鸡蛋一个一个拿正好拿完java_求解:一筐鸡蛋:9个9个拿正好拿完8个8个拿还剩1个...
  7. python3.6怎么安装linux_linux安装python3.6
  8. 六轴机械臂控制原理图_机械臂——六轴机械臂操作空间运动分析
  9. 中国主流电商平台老年市场使用场景、运营要点及机会分析
  10. html页面名字,网页HTML