约束-保证数据完整性
先用设计器创建约束,再用代码创建约束。
数据库约束是为了保证数据的完整性(正确性)而实现的一套机制
非空约束 (选择复选框)not null
主键约束(PK)primary key constraint唯一且不为空(选中列,右键,设为主键)
唯一约束(UQ)unique constraint唯一,允许为空,但只能出现一次(右键,索引/键,添加)
默认约束(DF)default constraint 默人值(选中列,设置列的默认绑定值)
检查约束(CK)check constraint 范围以及格式限制(右键check约束,添加)
外键约束(FK)foreign key constraint表关系(在外键表,右键,关系,增加一个主外键关系)
增加外键约束时,设置级联更新、级联删除:

on delete cascade
on update cascade

--通过t-sql语句来创建约束

--新建一张表:员工信息表

create table Employees

(

EmpId int identity(1,1),

EmpName varchar(50),

EmpGender char(2),

EmpAge int,

EmpEmail varchar(100),

EmpAddress varchar(500)

)

create table Department

(

DepId int identity(1,1) ,

DepName varchar(50)

)

--=====手动增加约束==========

--手动删除一列(删除EmpAddress列)

alter table Employees drop column EmpAddress

--手动增加一列(增加一列EmpAddr varchar(1000))

alter table Employees add EmpAddr nvarchar(1000)

--手动修改一下EmpEmail的数据类型(varchar(200))

alter table Employees alter column EmpEmail varchar(200)

--为EmpId增加一个主键约束

alter table Employees add constraint PK_Employees_EmpId primary key(EmpId)

--非空约束,为EmpName增加一个非空约束 not null(修改列)

alter table Employees alter column EmpName varchar(50) not null

--为EmpName增加一个唯一约束

alter table Employees add constraint UQ_Employees_EmpName unique(EmpName)

--为性别增加一个默认约束,默认为'男'

alter table Employees add constraint DF_Employees_EmpGender default('男') for EmpGender

--为性别增加一个检查约束,要求性别只能是:'男' or '女'

alter table Employees add constraint CK_Employees_EmpGender check(EmpGender='男' or EmpGender='女')

--为年龄增加一个检查约束:年龄必须在-120岁之间,含岁与岁。

alter table Employees add constraint CK_Employees_EmpAge check(EmpAge>=0 and EmpAge<=120)

--创建一个部门表,然后为Employee表增加一个DepId列。

alter table Employees add EmpDepId int not null

--为Department表设置主键。主键列是:DepId

alter table Department add constraint PK_Department_DepId primary key(DepId)

--增加外键约束

alter table Employees add constraint FK_Employees_Department foreign key(EmpDepId) references Department(DepId) -- on delete cascade

--删除约束

alter table Employees drop constraint

FK_Employees_Department,

CK_Employees_EmpAge,

CK_Employees_EmpGender,

DF_Employees_EmpGender,

UQ_Employees_EmpName

--通过一条代码来增加多个约束

alter table Employees add

constraint FK_Employees_Department foreign key(EmpDepId) references Department(DepId),

constraint CK_Employees_EmpAge check(EmpAge>=0 and EmpAge<=120),

constraint CK_Employees_EmpGender check(EmpGender='男' or EmpGender='女')

---创建表的同时就为表增加约束

create table Employees

(

EmpId int identity(1,1) primary key,

EmpName varchar(50) not null unique check(len(EmpName)>2),

EmpGender char(2) default('男'),

EmpAge int check(EmpAge>0 and EmpAge<120),

EmpEmail varchar(100) unique,

EmpAddress varchar(500) not null,

EmpDepId int foreign key references Department(DepId) on delete cascade

)

create table Department

(

DepId int identity(1,1) primary key,

DepName varchar(50) not null unique

)

SqlServer--代码创建约束的更多相关文章

  1. SQL Server 数据表代码创建约束

    约束 非空约束 --NN,ont null constraint 必须填写数据不能为空 --指定表 Student 添加名为NN_Student_sClassId非空约束(指定列名sClassId), ...

  2. iOS 使用代码创建约束,实现自动布局

    ///与下面约束对象属性截图相对应//使用Auto Layout约束,禁止将Autoresizing Mask转换为约束 [self.funcView setTranslatesAutoresizin ...

  3. 使用代码创建AutoLayout约束

    使用代码创建AutoLayout约束 1.代码创建约束的步骤 2.代码创建约束的常用方法 3.代码创建约束的原则 4.禁用Autoresizing的原因 5. 设置相对状态栏的约束,使用self.to ...

  4. Sql Server——运用代码创建数据库及约束

    在没有学习运用代码创建数据库.表和约束之前,我们只能用鼠标点击操作,这样看起来就不那么直观(高大上)了. 在写代码前要知道在哪里写和怎么运行: 点击新建查询,然后中间的白色空白地方就是写代码的地方了. ...

  5. 【转】iOS6中的Auto Layout:通过代码添加约束

        最近做的项目用到了Auto Layout,于是经过了一番大量的google,这是我看到的讲用代码创建约束最清晰的一篇教程,于是想跟更多的人分享一下.原文也比较简单,可以直接过去看,如果我翻译的 ...

  6. 代码创建数据库_表--SqlServer数据库

    /*1.创建数据库的时候需要设置的基本属性: 数据库名称 逻辑名称 初始大小 文件增长 路径*/ --语法: -- create database 数据库名称 -- on [primary]--创建数 ...

  7. ios xib和代码的frame布局 iOSXib布局后代码修改约束的值

    如何修改autolayout 约束的值? 1 2 3 4 5 6 目前我已知的方法有5种 1.修改frame(有时候可能会不起作用,但可以做动画) 2.修改约束的float值 3.使用VisualFo ...

  8. iOSXib布局后代码修改约束的值

      如何修改autolayout 约束的值? 目前我已知的方法有5种 1.修改frame(有时候可能会不起作用,但可以做动画) 2.修改约束的float值 3.使用VisualFormat 语言 4. ...

  9. 【转】SQL Server 创建约束图解 唯一 主键-界面操作

    SQL Server 创建约束图解 唯一 主键-界面操作 SQLServer中有五种约束,Primary Key约束.Foreign Key约束.Unique约束.Default约束和Check约束, ...

随机推荐

  1. Android ViewPager切换之PageTransformer接口中transformPage方法解析

    今天让我们了解一下,Android3.0之后ViewPager切换时候的一个动画.Google给我们展示了两个动画例子:DepthPageTransformer和ZoomOutPageTransfor ...

  2. php使用js对表格进行排序

    <!DOCTYPE> <html> <head> <meta http-equiv="Content-type" content=&quo ...

  3. GCD-两个网络请求同步问题

    在网络请求的时候有时有这种需求 两个接口请求数据,然后我们才能做最后的数据处理.但是因为网络请求是移步的 .我们并不知道什么时候两个请求完成 . 通常面对这样的需求会自然的想到 多线程 啊 .表现真正 ...

  4. hibernate笔记--使用注解(annotation)方式配置单(双)向多对一的映射关系

    前面几篇都是介绍的用配置文件来实现实体类到数据库表的映射,这种方式是比较麻烦的,每一个pojo类都需要写一个相应的*.hbm.xml,无疑增加了很多代码量,不过也有优点就是利于维护,为了方便开发,Hi ...

  5. android 官方DrawerLayout的介绍和使用

    南尘:爱编程,爱安卓,每天进步一点点. drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出 ...

  6. 【集合框架】JDK1.8源码分析之Comparable && Comparator(九)

    一.前言 在Java集合框架里面,各种集合的操作很大程度上都离不开Comparable和Comparator,虽然它们与集合没有显示的关系,但是它们只有在集合里面的时候才能发挥最大的威力.下面是开始我 ...

  7. 【JUC】JDK1.8源码分析之ConcurrentHashMap(一)

    一.前言 最近几天忙着做点别的东西,今天终于有时间分析源码了,看源码感觉很爽,并且发现ConcurrentHashMap在JDK1.8版本与之前的版本在并发控制上存在很大的差别,很有必要进行认真的分析 ...

  8. RabbitMQ原理与相关操作(二)

    接着 上篇随笔 增加几个概念: RabbitMQ是一个在AMQP(高级消息队列协议)标准基础上完整的,可服用的企业消息系统. AMQP模型的功能组件图(上图摘自 Sophia_tj 的 第2章 AMQ ...

  9. Github团队开发示例(一)

    Github团队开发示例(二) 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/6044837.html 我们可以在Github上管理自己的团队项目.团队 ...

  10. WCF学习系列三--【WCF Interview Questions – Part 3 翻译系列】

    http://www.topwcftutorials.net/2012/10/wcf-faqs-part3.html WCF Interview Questions – Part 3 This WCF ...