【SQL Server学习笔记】4:使用SSMS创建数据库表并完善表结构
数据表的完整性问题大多是由于设计不当引起的,创建表的时候就应当保证以后的录入是正确的,也就是错误的、不符合要求的数据应当不允许录入。
数据完整性=可靠性+精确性
要保证数据的完整性,就要实施完整性约束。
四种完整性约束
①域完整性:列值的约束,如数据类型、位数、范围。
约束方法:检查约束、默认值约束、非空约束。
②实例完整性:行和行间不能重复。
约束方法:唯一约束、主键约束、标识列。
③引用完整性:某一列值需来源于另外一张表中。
约束方法:外键约束。
④自定义完整性:自己定义的一些约束。
约束方法:触发器。
表中字段的常用数据类型
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创建数据库表并完善表结构相关推荐
- SQL Server学习笔记
<SQL Server从入门到精通>学习笔记 1 数据管理技术的三个阶段:人工管理.文件系统.数据库系统. 2 数据库的组成:数据库.数据库管理系统.数据库管理员.硬件平台.软件平台5部分 ...
- SQL Server 学习笔记——T-SQL
SQL学习笔记 一.SQL概述 SQL按其功能可以分为三大部分: 数据定义功能.数据操纵功能和数据控制功能 DDL.DML.DCL SQL功能 命令动词 数据定义 CREATE.ALTER.DROP ...
- SQL server学习日志(二)创建表!手把手教你创建表,修改表,了解数据类型!超详细!
一.简单了解表(创建表之前一定要先了解数据类型与约束哦,这样我们才能创建正确的表!) 1.定义:基本表是数据库中组织和管理数据的基本单位,数据库的数据保存在一个个基本表中. 对于关系型数据库系统而言, ...
- sql server学习笔记——批处理语句、存储过程
目录 批处理语句 1.批处理语句简介 示例一: 示例二: 存储过程 一.什么是存储过程 1.存储过程的简介 2.存储过程包含的内容 3.存储过程的优点 4.存储过程的分类 系统存储过程: 用户定义存储 ...
- 【SQL Server学习笔记】变更数据捕获(Change Data Capture)
SQL Server的变更数据捕获(Change Data Capture,CDC),就是异步捕获表数据的修改,只有很少的性能开销,可以持续的更新其他数据源,比如,将联机事务处理数据库中的持续数据变化 ...
- 【SQL Server学习笔记】SQL SERVER 视图
视图包括:普通视图,索引视图,分布式分区视图. 关于视图的最佳实践: A.对视图进行性能优化的过程和普通的select查询语句的优化过程是一样的. B.不要在一个视图的定义中调用另一个视图. C.如果 ...
- SQL Server 学习笔记
SQL Server 创建数据库 切换数据库 在表中插入数据 在表中查询数据 无条件查询 取消结果集中的重复行 在表中修改数据 在表中删除数据 表结构的修改 添加列 修改列 环境 SQL Server ...
- SQL SERVER学习笔记(二)数据库管理
第二部分:数据库管理 单词记忆:transact:处理 create:创建 execute:执行.完成 一. SQL Server的特性 1. 安装简便:为了便于安装.使用和管理,SQL Se ...
- 适合小白的SQL Server学习笔记
升序ASC 降序DESC 统计某个字段count(字段),一般都需要根据该字段分组group by(字段) having的作用相当于where,但是where关键字不能与合计函数一起使用(例:sum ...
最新文章
- 怎么让div显示一行,其余的隐藏。
- 从零开始单排学设计模式「UML类图」定级赛 1
- css深入理解之overflow
- 【机器学习基础】半监督算法概览(Python)
- 监督学习 | 线性回归 之多元线性回归原理及Sklearn实现
- js中innerHTML与innerText的用法与区别【转自http://blog.sina.com.cn/johnpu】
- 林斌宣布好消息!语音识别大佬、Kaldi之父加盟小米
- Python机器学习基础教程(一):简介
- python重写和装饰器_Python | 老司机教你 5 分钟读懂 Python 装饰器
- 2022天府杯国际赛数学建模题目和思路
- softmax 激活函数
- App上架安卓应用市场最全指南
- 网络媒体教程:人物素描
- .NET前后分离解决方案
- 对ASP.NET程序员非常有用的85个工具
- 丘成桐:数理与人文(官方完整版PDF下载)(公号回复“丘成桐数学”下载PDF典型资料,欢迎转发、赞赏支持科普)
- 2016 China CADCG 参会总结 -- day1
- Oracle空间数据库
- android 各个存储路径及获取方法总结
- activiti会签功能
热门文章
- HTML基础-03-表单一
- dubbo服务注册ip地址不正确,rpc服务调用失败?
- ARM与X86架构的对决[整编]
- 思维启发之意外的收获(发现自己思维局限和掀开二级指针的虎皮)
- Cris 玩转大数据系列之 Hadoop HA 实现
- 一筐鸡蛋一个一个拿正好拿完java_求解:一筐鸡蛋:9个9个拿正好拿完8个8个拿还剩1个...
- python3.6怎么安装linux_linux安装python3.6
- 六轴机械臂控制原理图_机械臂——六轴机械臂操作空间运动分析
- 中国主流电商平台老年市场使用场景、运营要点及机会分析
- html页面名字,网页HTML