无规矩不成方圆——SQL Server 约束
数据库的功能是管理大量的数据。但凡需要管理的东西的数量巨大时,必定需要一定的限制或者规则。比如交通需要交通规则、民航需要空中交通管制、国家需要法律等等,假设把这些限制除去,天下必定大乱。在数据库中这种限制我们称之为“约束”,它功能是保证数据完整性。而把约束封装之后就成了规则,规则是一个对象,他通过绑定来实现保持数据完整性的功能,同时简化了代码实现代码的重复利用。
约束主要有五种:
1、主键约束
主键约束是指定表中的某一列或者几列的组合成的具有唯一性标识每一条记录,被定义为主键的列中不能有NULL空值,数据类型不能是TEXT或者IMAGE。我们入学时的学号就可以被定义为主键。需注意每个表只能有一个主键,但不是强制要求一定要有。由于主键具有唯一性(资源稀缺),所以在定义主键时需遵循以下原则:1、主键应当对用户没有意义2、主键最好是单列的3、主键永远不用更新4、主键不适用动态变化的数据5、主键应当由计算机生成。当然这些条件都满足是不容易的,所以选择主键时需要注意的是几个原则的平衡。
2、外键约束
外键约束定义了表之间的关系,它是相对于外键而言的。当主键标识的记录被更新时,被定义为外键的列中有和主键相同的记录就会自动更新,以此来保证表间的数据完整性。而当被定义为外键约束的表中只能插入在主键表中存在的记录。即“外键的表”必定包含于“主键表”,否则将被视为非法。
3、唯一性约束
唯一性约束用于保证列中不存在相同的值。假如一张学生信息的表,我们给学号定义为唯一性约束,那么就可以保证不出现重复的学号。如果学号已被定义为主键则不能再被定义唯一性约束。
4、核查约束
核查约束用来保证被输入的值符合一定的范围或条件。否则不能更新,如工资表中员工工资被要求在3000到4000之间,那么一旦输入的值不在这个区间内就会无法更新记录。这就避免的出现错误数据,如果本来只有3000的月薪却发了30000,那么老板一定会疯的。一句话:只有符合核查约束的数据才能接接受。
5、默认值约束
这个就是给没有输入值的字段设定一个默认值。这个就不多说了。
约束可以通过可视化管理器来管理,也可通过T-SQL语句来管理,这个说来话长篇幅有限,算了。
规则,我认为规则就是被封装的约束。规则通过和字段绑定来实现功能,所以规则创建以后是可以重复利用的,哪里需要规则就绑定谁。使用系统存储过程SP-Bindrule来实现绑定。
啊呀,都是废话,毫无帮助,写不下去了!!!
无规矩不成方圆——SQL Server 约束相关推荐
- 支付宝体验设计精髓. 02 无规矩不成方圆
02 无规矩不成方圆 -设计规范的建设 文/ 周建波.朱兰民 第1节 规矩成就方圆 孟子曰:离娄之明,公输子之巧,不以规矩,不能成方圆.-<孟子> 设计规范是用户体验的最低标准!-吴明 支 ...
- MBD建模规范 stateflow建模 无规矩不成方圆 规范建模行为 提升建模效率 。 主要包含模型接口界面及布局,模块的安全使用、预防易出错的建模模式
MBD建模规范& stateflow建模 无规矩不成方圆 规范建模行为 提升建模效率 . 主要包含模型接口界面及布局,模块的安全使用.预防易出错的建模模式.提高可测性.模型优化等多方面的内容, ...
- sql server 约束
sql server中有五种约束 使用sql语句创建和删除约束 主建约束:(primary key constraint); 外建约束:(foreign key constraint); 唯一约束:( ...
- [SQL Server] 约束(验证固定电话号码)
[SQL Server] 针对固定电话号码的约束 ALTER TABLE Customers ADD CONSTRAINT CN_CustomerPhoneNo CHECK (Phone LIKE ...
- SQL Server约束
一.SQL Server主键约束. 主键约束操作基本语句. CREATE TABLE table_name (pk_column data_type PRIMARY KEY,... ); 主键是唯一标 ...
- 无法链接到SQL Server远程服务器的解决
今天连接机房服务器的SQL Server 2005时出现错误,错误信息如下: 在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许 ...
- Ms SQL Server 约束和规则
一.SQL约束 约束定义关于列中允许值的规则,是强制完整性的标准机制. 使用约束优先于使用触发器.规则和默认值.查询优化器也使用约束定义生成高性能的查询执行计划. 1:类型 约束的类型一共分三种 域约 ...
- sql server 约束 查找
FK_ 外键 主键约束 SELECTtab.name AS [表名],idx.name AS [主键名称],col.name AS [主键列名] FROMsys.indexes idxJOIN sys ...
- 【无标题】SQL server 计算工作日(排除双休日)
计算工作日时间差 --计算工作时间相差小时数 CREATE FUNCTION dbo.fun_CalculateWorkdays ( @startdate DATETIME, -- 开始日期 @ ...
最新文章
- python【蓝桥杯vip练习题库】BASIC-20 数的读法
- HTML一些常用的标签
- 《雷达技术丛书》分享
- 多列集合的索引器实现
- 深度学习之基于CNN实现汉字版手写数字识别(Chinese-Mnist)
- JDK11+Tomcat10 下载安装+环境配置
- word表格转换成html,delphi将word表格转换成html_取得Word 表格中的数据
- Java 算法 传球游戏
- C++有名管道通信简单示例
- java只有jre_只安装了jre可以运行java程序吗
- ArcView GIS 应用与开发技术(5)-统计图
- oracle数字进一函数,oracle常用函数一:数字函数
- (生物信息学)R语言与统计学入门(十)—— 多因素Cox回归分析
- ani转换ico文件
- 怎么在计算机登录VMware,vmware虚拟机怎么用,vmware虚拟机的使用方法
- 2019/3/20统计单词数
- 2022年百华鞋业祝您新年快乐,虎年大吉
- 【计息日期】国债逆回购类产品的起息日期和兑付日期,如何用python优雅实现?~
- python的图导入origin,导入Numpy或OriginPro和Python时出现问题
- CAB教程,国人写的