SQL Server键和约束
键和约束
1.约束是一种限制,把约束放置在列级别或者表级别,确保数据满足一定的数据完整性
2.三种级别约束:实体约束,域约束,引用完整性约束PRIMARY KEY约束;FOREIGN KEY约束;UNIQUE约束;CHECK约束;DEFAULT约束;规则;默认值;
3.实体约束:关于单独的行,要求所有行的某个列或者列的组合具有唯一值的约束;如PRIMARY KEY,UNIQUE约束域约束:涉及一个或多个列,它确保某一个列或一组列满足特定的标准;如CHECK约束,规则,默认值和DEFAULT约束引用完整性约束
4.约束的名字要保持一致,名字能为人所理解,名字在满足以上的前提下,尽可能的短
5.表中创建主键的方式:直接在创建表时,在列名后添加PRIMARY KEY;ALTER TABLE <表名> ADD CONSTRAINT PK_EmployeeID PRIMARY KEY(<列名>)
6.外键约束定义外键的表(引用表) 和 外键引用的表(被引用的表)创建依赖关系;创建了外键约束后,插入引用表中的任何记录都必须在被引用表的被引用列上有匹配记录,否则,必须将外键列设置为NULL;在创建时:<列名><数据类型><是否可空> FOREIGN KEY<列名> REFERENCES <表名>(<列名>)在CREATE中可以省略FOREIGN KEY 子句,直接写REFERENCES子句在修改时:ALTER TABLE <引用表名1> ADD CONSTRAINT <外键名> FOREIGN KEY (字段名1) REFERENCES <被引用表名2>(字段名2和1相同)注意:主键列和外键列可以在同一列上
7.运行sp_help信息的约束部分下面看到约束内容想了解约束信息,可以用sp_helpconstraint<表名>
8.表自引用,在实际添加自引用约束之前,很重要的一点是,在添加外键前至少要向表中加入一个行
9.级联操作CREATE TABLE <表名>(字段名1 数据类型 <是否为空>,字段名2 数据类型 <是否为空>,字段名3 数据类型 <是否为空>,字段名4 数据类型 <是否为空>,CONSTRAINT 约束名1PRIMARY KEY (字段名1,字段名2...字段名n),CONSTRAINT 约束名2FOREIGN KEY (字段名3)REFERENCES 表2(被引用列)ON UPDATE NO ACTION --子行不采取任何操作ON DELETE CASCADE --子行采取相同的操作)
10.其他级联操作SET NULLSET DEFAULT如果执行的更新改变了行的父值,那么子行将被设置为NULL或该列上的默认值
11.UNIQUE约束常被称为:备用键最多可以插入一个NULL值,虽然NULL值不等于另一个NULL值,在UNIQUE约束看来,它们仍然是重复的。添加方法1:直接在列后加UNIQUE;添加方法2:ALTER TABLE <表名> ADD CONSTRAINT 约束名 UNIQUE(列名)
12.CHECK约束几乎所有能放在WHERE子句中的事情都可以放在CHECK约束中,而且CHECK约束比其它类似的东西(触发器,规则)快的多ALTER TABLE <表名> ADD CONSTRAINT 约束名 CHECK(约束条件)
13.DEFAULT约束用以处理默认值默认值只在INSERT语句中使用,UPDATE,DELETE将会忽略默认值;如果INSERT语句中给出了值,则不使用默认值;如果INSERT语句没有提供值,则会使用默认值;注意:例外,对于UPDATE命令不使用默认值这一规定,就是在UPDATE 命令不使用默认值这一规则上,当明确使用默认值时,可以通过DEFAULT关键字作为想要更新的列的值来实现。添加方法1:直接在列名后添加 DEFAULT 约束条件添加方法2:ALTER TABLE <表名> ADD CONSTRAINT <约束名> DEFAULT <约束条件> FOR <字段名>
14.禁用约束原因:创建约束时,已经存在数据库中的数据;已经创建完约束后,想要加入到数据库中的数据;不能够禁用PRIMARY KEY或者UNIQUE约束;
15.创建约束时忽略不正确的数据:添加约束但是不把约束应用到现有的数据上,可以在执行ALTER TABLE语句添加约束时使用WITH NOCHECKALTER TABLE <表名> NOCHECK CONSTRAINT <约束名>启用约束只需要将NOCHECK改为CHECK即可
16.规则和默认值:约束的同类规则和默认值不是ANSI兼容的,这会造成移植问题,并且,他们的执行也和约束不一样规则和默认值:是独立定义地对象,然后再绑定到表上而约束是定义在表定义当中的。
17.规则的定义;CREATE RULE <规则名> AS @变量名 <条件>激活规则:使用一个特殊的存储过程:sp_bindrulesp_bindrule<'规则名'>,<'绑定到的对象'>, [<'futureonly_flag'>]futureonly_flag参数只在将规则绑定到用户定义数据类型才会使用,默认是关闭的,如果设置为TRUE或者1,则绑定规则只会应用到绑定用户数据类型的心列上。删除规则:DROP RULE <规则名>
18.默认值是 基于对象的默认值而DEFAULT约束不是基于对象的,是表内定义地完整部分创建默认值:CREATE DEFAULT <默认名>AS <默认值>使用sp_bindefault存储过程来绑定默认值:EXEC sp_bindefault <'默认值名'>,<'绑定到对象'>使用sp_unbindefault来取消默认值的绑定:EXEC sp_unbindefault '<绑定对象>'注意,默认值的存储过程也能用到futureonly_flag参数删除默认值:DROP DEFAULT<默认值>
19.确定那个表或者数据类型上使用了指定的规则和默认值EXEC sp_depends<对象名>该存储过程根据你请求的获得信息的对象,给出依赖于该对象的所有对象的列表注意:权衡这些约束和触发器,键,规则,默认值的使用
SQL Server键和约束相关推荐
- SQL Server中的约束:SQL NOT NULL,UNIQUE和SQL PRIMARY KEY
This article explains the SQL NOT NULL, Unique and SQL Primary Key constraints in SQL Server with ex ...
- sql server键查找_如何查找SQL Server版本
sql server键查找 In this article, we will explore how to find the SQL Server version details with vario ...
- SQL Server中有关约束(constraint)的一些细节
本文出处:http://www.cnblogs.com/wy123/p/7350265.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些 ...
- SQL Server 2012 唯一约束(定义唯一约束、删除唯一约束)
文章目录 准备知识 定义唯一约束 使用SSMS工具定义唯一约束 使用SQL方式定义唯一约束 方式一:在创建数据表的时候定义唯一约束 方式二:修改数据表定义唯一约束 删除唯一约束 使用SSMS工具删除唯 ...
- SQL Server Check检查约束用法
一.定义: CHECK 约束用于限制列中的值的范围. 如果对单个列定义 CHECK 约束,那么该列只允许特定的值. 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制. 做数据库 ...
- SQL Server中的约束(六种约束)
什么是约束? 数据库-由若干张数据表组成(理解为一个类库) 数据表-由行和列组成的一个二维数组(理解为一个类) 列-字段(理解为表中对象的一个属性) 行-理解为表中的一个对象 约束是数据库中保证数据完 ...
- sql server中数据约束相关的查询
根据表名查找数据约束 SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'CMS_EventLog'; SEL ...
- SQL Server的主键与外键约束
SQL Server的主键与外键约束SQL Server有许多的重要知识,开始也说过许多的SQL知识了.SQL Server中的约束也是一个重要性的知识,下面我来说说关于SQL Server约束的知识 ...
- SQL server添加主外键约束 sql语句
---添加主键约束 <br> alter table 表名 <br> add constraint 约束名 primary key (主键) <br> ...
最新文章
- 自己动手——实现 Dustjs 中间件
- python编程入门经典 评分-豆瓣评分爆炸!Python+机器学习经典图书
- 浅谈NLP中的对抗训练方式
- 神奇的用法_续行符——反斜杠
- JavaScript --- 跨浏览器的事件对象
- LeetCode 1880. 检查某单词是否等于两单词之和
- JUnit 4和JUnit 5区别
- Bootstrap 按钮上拉菜单
- python中__init__导入失败_python - 如何使用__init__.py修复“在非包中尝试相对导入”...
- 基于Linux平台的libpcap源码分析和优化
- pxe结合kickstart文件实现全自动化安装
- 额外域控制升级为主控制域
- linux内核分析及应用 -- Linux 的进程隔离技术与 Docker 容器
- 技术专家(ai/大数据)_``我们淹没在数据中'':在专家和AI时代如何思考自己
- SWAT模型 建模方法、实例应用、高级进阶
- 利用泰勒展开式实现sin(x),cos(x)函数
- matlab重叠保留法,【matlab实现】重叠相加法与重叠保留法
- 怎么样上台演讲(结合ppt)。。超级实用。。。
- 【CSS如何画简单的三角形或者梯形】
- 计算长方形的面积 周长 C语言,c语言计算长方形的面积和周长