一.约束的分类

  实体约束:关于行的约束,比如某一行出现的值就不允许别的行出现,如主键

  域约束:关于列的约束,对表中所有行的某些列进行约束,如check约束

  参照完整性约束:如果某列的值必须与其他列的值匹配,那就意味着需要一个参照完整性约束,如外键约束

二.约束的命名

  主键约束命名实例:

    pk_Student ; (pk_表名)

  check约束命名实例:

    ck_Student_Name;(ck_表名_字段名)

三.键约束

  1.主键约束

    ①.在创建表的时候创建约束:  

 create table student
 (
     ID int identity not null primary key, --创建表的时候添加约束
     Name ) not null
 )

    ②.在已存在的表上创建主键约束:

 --在已存在的表上创建主键约束
 alter table teacher
 add constraint pk_teacher_ID
 primary key(ID)

    上面的语句告诉了Sql Server以下信息:

    a.添加了一个约束到表中

    b.约束的名称

    c.什么约束(约束类型)

    d.约束作用域那一列

    ③.创建复合主键

 --创建符合约束
 alter table emp
 add constraint [PK_emp] primary key nonclustered
 (
 ID,
 Code
 )

  2.外键约束

    ①.对外键的理解

      两个表中存在相同的字段(如学生表和成绩表中都存在学号字段),该字段在其中一张表中能够主键(如学生表),在另一张表中不能作为主键(如成绩表),则在不能作为主键的表中称为外键

      如果一个表中的若干个字段是来自另外若干个表的主键或唯一键,则这若干个字段就是外键

    ②.示例

      新建一个班级表,字段有班级编号,班级名称

      新建一个学生表,字段有学生编号,班级编号,学生姓名,将表中的班级编号字段设置为外键

      代码:

    

--键班级表
create table class
(
    classid int primary key,
    classname )
)
--见学生表
create table students
(
    studentid int primary key,
    classid int,
    stuname ),
    foreign key(classid) references class(classid)
)

    向学生表中插入一行记录,此时班级表中没有内容:

,,'小明');

    提示报错,因为此时班级表中没有对应的班级

    先向班级表中插入一行记录,在向学生表中插入属于该班级的学生信息

,'一班');
,,'小明');

    

    ③.在创建表时添加外键约束

--在创建表时创建外键约束
create table customer
(
    customerId int identity not null primary key,
    customerName ) not null
)
create table orders
(
    orderId int identity not null primary key,
    customerId int not null foreign key references customer(customerId)  --约束类型-外键-引用表(列名)
)

     ④.在已经存在的表中添加外键约束

     ⑤.级联动作

     ⑥.外键约束的其他考虑

  

Sql Server数据库之约束的更多相关文章

  1. 关于SQL SERVER数据库学习总结

    对于SQL SERFVER数据库也学了有一阵子了,自己也对自己所学做了一些总结. 我们首先学习数据库设计的一些知识点和用SQL语句建库. 设计数据库步骤:需求分析阶段,概要设计阶段,详细设计阶段, 建 ...

  2. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

  3. 5、SQL Server数据库、T-SQL

    SQL Server数据库基础 一.安装SQL Server数据库 setup.exe->安装->全新SQL Server独立安装或向现有安装添加功能->输入序列号->下一步- ...

  4. SQL Server - 数据库初识

      在互联网笔试中,常遇到数据库的问题,遂来简单总结,注意,以 Sql Server 数据库为例. 数据库 数据库系统,Database System,由数据库和数据库管理系统组成. 数据库,Data ...

  5. 转:SQL SERVER数据库中实现快速的数据提取和数据分页

    探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构: CREATE TABLE [dbo]. ...

  6. (火炬)MS SQL Server数据库案例教程

    (火炬)MS SQL Server数据库案例教程 创建数据库: CREATE DATABASE TDB //数据库名称 ON ( NAME=TDB_dat,//逻辑文件名 在创建数据库完成之后语句中引 ...

  7. SQL Server数据库学习总结

    经过一段时间的学习,也对数据库有了一些认识,数据库基本是由表,关系,操作组成:对于初学者首先要学的     一图胜“十”言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数 ...

  8. SQL Server缺省约束、列约束和表约束

    SQL Server缺省约束是SQL Server数据库中的一种约束,下面就为您介绍SQL Server缺省约束.列约束和表约束的定义方法啊,供您参考. SQL Server缺省约束 SQL Serv ...

  9. 使用PowerDesigner 设计SQL Server 数据库

    工具: Sybase PowerDesigner 12.5 Microsoft  SQL Server 2005 第一步:概念数据模型 打开PowerDesigner 软件,设计“概念数据模型”(Co ...

随机推荐

  1. 使用Sublime Text 3进行Markdown 编辑+实时预览

    这种做法可能会对你的磁盘IO造成一小部分性能负担,但负面影响足以忽略. 另外,由于这种频率的读写会被磁盘缓存接管,不必担心磁盘寿命的影响. 对于刚安装好的Sublime Text,我们需要安装一个软件 ...

  2. Ubuntu Server 16.04设置WiFi

    wifi :http://www.cnblogs.com/joeyupdo/p/3350463.html http://blog.csdn.net/meic51/article/details/173 ...

  3. python 前端 css

    CSS(Cascading Style Sheet,层叠样式表) 是一种用来表现HTML或XML等文件样式的计算机语言. 作用:是用来美化HTML标签的,相当于给页面化妆. 每个css 都是有两部分组 ...

  4. Js高级 事件冒泡

    什么叫事件冒泡 当给父子元素的同一事件绑定方法时,触发了子元素身上的事件,执行完毕之后,也会触发父级元素的相同事件,这种传播机制叫事件冒泡. 取消事件冒泡 Event对象有个属性叫cancelBubb ...

  5. Win下更新pip出现OSError:[WinError17]与PerrmissionError:[WinError5]及解决

    环境:Win7 64位,python3.6.0 我在准备用pip装东西的时候,在cmd里先更新了一下pip,大概是9.0.1更新到9.0. 尝试更新pip命令: pip install --upgra ...

  6. Django学习笔记之数据库-QuerySet_API

    QuerySet API 我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作.其实模型名字.objects是一个django.db.models.manager.Manager对 ...

  7. java中的成员变量、静态变量与局部变量

    java中的变量分为成员变量(又叫实例变量).静态变量和局部变量. 1.成员变量 1.1 成员变量(实例变量)是在类中定义的非static修饰的变量,可以不用赋初始值,不同的数据类型有默认的初始值. ...

  8. Vue 中使用 viewerjs

    安装 viewerjs npm install viewerjs --save 创建一个 Viewer.vue 组件 <template> <div id="index&q ...

  9. UBUNTU中使用pip安装,提示cannt import main问题

    在pip==8.1.1版本中,使用pip install Django==1.8.16时,提示 Traceback (most recent call last):  File "/usr/ ...

  10. 1.1.8 怎样在Word的页眉中插入一级标题

    可以通过域来实现,其具体的操作步骤: 1.为章.节标题使用标题样式.例如:章标题使用标题1样式,节标题使用标题2样式.操作方法:选中章(节)标题,然后点击选项卡中“样式”中的). 2.设置文档页眉和页 ...