Microsoft SQL Server 完整性约束


标识 IDENTITY自动编号

CREATE TABLE table_name(

    id ,),

    NAME ) not null,

    sex ) default '男',

    note ntext null

)

主键约束 PRIMARY KEY

在表中定义一个主键来唯一确定表中一行数据的标识符,主键列的数据类型不限,但列必须唯一并且非空。一个表只允许一个主键,主键可以是单个字段或多个字段的组合。

create table tb(

    --单列主键的创建

    id int primary key

)

go

create table tb1(

    id int,

    name ),

    --多列组合的主键

    CONSTRAINT tb1_id_name_pk PRIMARY KEY(id,name)

)

Go

--为表添加主键

alter table table_name

add

constraint pk_name

primary key(column_name)

--删除主键

alter table table_name

drop

constraint pk_name

唯一性约束 UNIQUE防止非主键重复

CREATE TABLE Persons(

Id_P int NOT NULL UNIQUE,

LastName ) NOT NULL,

FirstName ),

Address ),

City )

)

--多字段

CREATE TABLE Persons(

Id_P int NOT NULL,

LastName ) NOT NULL,

FirstName ),

Address ),

City ),

CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

)

--添加

ALTER TABLE Persons

ADD UNIQUE (Id_P)

--添加

ALTER TABLE Persons

ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

--删除

ALTER TABLE Persons

DROP CONSTRAINT uc_PersonID

默认值约束 DEFAULT

CREATE TABLE table_name(

    id ,),

    NAME ) not null,

    sex ) default '男',

    note ntext null

)

指定列的默认值

--创建一个默认值对象

create default sdept_char

as '信息中心'

go

--为表sdept列绑定默认值

sp_bindefault sdept_char,'student.sdept'

--测试绑定的默认值

','类鳄梨','男')

'

--取消默认值绑定

sp_unbindefault 'student.sdept'

--测试取消是否成功

','雷海鸣','男')

select * from student

--删除默认值对像

drop default sdept_char

检查约束 CHECK

指定列的允许值,指定根据同一个表中其他列的值可在列中接受的数据值

--为表年龄字段添加约束

alter table student

 )

--测试约束

--删除表年龄字段约束

alter table student

drop constraint ck_sage

--测试

非空约束NOT NULL

指定是否允许为NULL字符

CREATE TABLE table_name(

    id ,),

    NAME ) not null,

    sex ) default '男',

    note ntext null

)

规则 RULE

--创建规则对象

create rule format

as

@联系电话 like '[0][1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

--修改表添加列

alter table student

)

--为列绑定规则

sp_bindrule format,'student.telephone'

--测试绑定规则

'

'

select * from student

--解除绑定规则

sp_unbindrule 'student.telephone'

--测试解除

'

select * from student

--删除规则对象

drop rule format

外键约束 FOREIGN KEY

指定必须存在值得列,定义值与同一个表或另一个表的主键值匹配的一列或多列组合

--创建表时添加外键

create table table_name(

    id int primary key,

    id1 int foreign key  )

--已有表添加约束

alter table table_name

add

constraint fk_name

foreign key(columne_name)

--删除外键

alter table table_name

drop

constraint fk_name

06Microsoft SQL Server 完整性约束的更多相关文章

  1. sql server 2008 数据库的完整性约束

    一.数据库完整性概述   1.数据库的完整性:   ①数据库的完整性是指数据的正确性和相容性 ②数据库完整性是防止不合语义或不正确的数据进入数据库 ③完整性体现了是否真实地反映现实世界   例:  学 ...

  2. SQL Server 表的管理_关于完整性约束的详解(案例代码)

    SQL Server 表的管理之_关于完整性约束的详解 一.概述: ●约束是SQL Server提供的自动保持数据库完整性的一种方法, 它通过限制字段中数据.记录中数据和表之间的数据来保证数据的完整性 ...

  3. SQL Server 导入excel时“该值违反了该列的完整性约束”错误

    SQL Server 导入excel时“该值违反了该列的完整性约束”错误 这个问题看似高大上,仔细分析了一下,ID列怎么会有重复呢? 原来是有很多空行呀!!! 所以导入excel时一定要注意空行的问题 ...

  4. SQL Server 进阶 01 数据库的设计

    SQL Server 进阶 01 数据库的设计 本篇目录 课程内容回顾及介绍 为什么需要规范的数据库设计 设计数据库的步骤 绘制E-R(实体-关系)图 实体-关系模型 如何将E-R图转换为表 数据规范 ...

  5. SQL Server数据库设计规范

    数据库设计规范 1.简介 数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求.数据库设计过程中命名规范很是重要,命名规范合理的 ...

  6. 数据库(SQL Server)管理数据库表~新奇之处

    说到“数据库”,我总有一种莫名的感觉,在刚刚接触到的数据库中就让我似懂非懂渡过着,于是思考着.于是在冷静的时空中让我回想到了很多的知识,不知你们是怎样过来的,真心希望我的这篇数据库总结能够让我们都有一 ...

  7. SQL Server 触发器

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...

  8. SQL Server 数据库设计规范

    数据库设计规范 1.简介 数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求.数据库设计过程中命名规范很是重要,命名规范合理的 ...

  9. SQL Server:触发器详解

    1. 概述 触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活. 所以触发器可以用来实现对表实施复杂的完整性约束. 2. 触发器的分类 SQL S ...

随机推荐

  1. iOS开发——常见BUG——window决定程序的状态栏管理问题

    Xcode7升级之后遇到的问题   问题一: 老项目在Xcode6上运行没有任何问题,但在Xcode7上运行直接崩了! 经过一波分析: 发现是因为我顶部状态栏处添加了topWindow,用于处理Tab ...

  2. ASP.NET Core开发Docker部署

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  3. hive使用

    运行hadoop [root@hadoop0 ~]# start-all.sh 进入命令行[root@hadoop0 ~]# hive 查询昨天的表 hive> select * from st ...

  4. [noip模拟赛]算算数

    https://www.zybuluo.com/ysner/note/1298755 题面 有一天小胡同学看到了一种表达式.这个表达式有四个变量\(A,B,C,D\).这四 个变量都只有\(0\)和\ ...

  5. 洛谷P3216 [HNOI2011]数学作业

    题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 .. N) Mod M 的值,其中 Concatenat ...

  6. 简述Python中的break和continue的区别

    众所周知在Python中,break是结束整个循环体,而continue则是结束本次循环再继续循环. 但是作为一个新手的你,还是不明白它们的区别,这里用一个生动的例子说明它们的区别,如下: 1.con ...

  7. vue-easytable

    github地址:https://github.com/huangshuwei/vue-easytable

  8. Golang 入门 : 竞争条件

    笔者在前文<Golang 入门 : 理解并发与并行>和<Golang 入门 : goroutine(协程)>中介绍了 Golang 对并发的原生支持以及 goroutine 的 ...

  9. [C++ STL] deque使用详解

    一.deque介绍: deque(双端队列)是一个动态数组,可以向两端发展,因此不论在尾部或头部安插元素都十分迅速. 在中间部分安插元素则比较费时,因为必须移动其它元素. 二.用法 1.头文件 #in ...

  10. DFS POJ 3087 Shuffle'm Up

    题目传送门 /* 题意:两块扑克牌按照顺序叠起来后,把下半部分给第一块,上半部给第二块,一直持续下去,直到叠成指定的样子 DFS:直接模拟搜索,用map记录该字符串是否被搜过.读懂题目是关键. */ ...