一.约束的分类

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

  域约束:关于列的约束,对表中所有行的某些列进行约束,如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. «面向对象程序设计(java)»第三周学习总结 周强 201771010141

    实验目的与要求 (1)进一步掌握Eclipse集成开发环境下java程序开发基本步骤: (2)熟悉PTA平台线上测试环境: (3)掌握Java语言构造基本程序语法知识(ch1-ch3): (4)利用已 ...

  2. I think I need a boat house

    I think I need a boat house. Fred Mapper is considering purchasing some land in Louisiana to build h ...

  3. python: 文件的读写

    #文件的读取.py a=open('test.txt').readline() #只读取文件第一行,保存为字符串格式 b=open('test.txt').read() #读取全部内容,保存为字符串格 ...

  4. 学习Unity -- 理解依赖注入(IOC)三种方式依赖注入

    IOC:英文全称:Inversion of Control,中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection).作用:将各层的对象以松耦合的方式组织在一起,解耦,各 ...

  5. vue企业项目搭建过程(vue-cli脚手架超详细教程 傻瓜-入门)

    vue作为现在主流的前端框架,有必要学习一下. vue的官方文档还是不错的,开源中文,一个爽字形容. 如果不是实际开发需要vue-cli构建项目,那么可以在加一个爽. 然而要构建的时候发现官方文档还是 ...

  6. 用变量替换指定的字符串,sed: -e 表达式 #1, 字符 29: “s”的未知选项

    在shell脚本里,使用sed,然后用变量替换指定的字符串,一直出现这个错误:但是单独运行在外面可以 把分隔符/替换成#就可以: sed "s#revision=.*#revision=$s ...

  7. zabbix之 自定义内存使用率监控报警

    配置zabbix当内存剩余不足15%的时候触发报警   zabbix默认的剩余内存报警:Average Lack of available memory on server {HOST.NAME}{T ...

  8. Eslint 能自动格式化代码,为什么还要用 Prettier?

    ESLint 与 Prettier 区别: ESLint:代码检测工具:可以检测出你代码中潜在的问题,比如使用了某个变量却忘记了定义: Prettier:代码格式化工具:作为代码格式化工具,能够统一你 ...

  9. Day 08 文件操作模式,文件复制,游标

    with open:将文件的释放交给with管理 with open('文件', '模式', encoding='utf-8') as f:    # 操作    pass​ a模式:追加写入 # t ...

  10. Spring复习

    第一天 IOC:控制反转,对象的创建权交给Spring DI:依赖注入,前提必须有IOC的环境,Spring管理这个类的时候将类的依赖的属性注入(设置)进来. 包括集合的注入 ClassPathXml ...