一.约束的分类

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

  域约束:关于列的约束,对表中所有行的某些列进行约束,如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. C++常见的概念

    1)多态:允许将子类类型的指针赋值给父类类型的指针.赋值以后,父类对象可以根据当前赋值给它的子类对象的特性以不同的方式运作. 2)深拷贝:重新分配内存:浅拷贝:共用同一内存. 3)友元:非成员函数不能 ...

  2. webpack的入门教程

    webpack是模块打包工具/前端资源加载.它是根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. webpack可以将css.less.js转换为一个静态文件,减少了页 ...

  3. 文件内容比较difflib

    #!/usr/bin/env python#-*- coding:utf-8 -*-import difflibimport sys,osos.chdir('E:\\PythonWrok')a = o ...

  4. CodeForce 517 Div 2. B Curiosity Has No Limits

    http://codeforces.com/contest/1072/problem/B B. Curiosity Has No Limits time limit per test 1 second ...

  5. PythonStudy——字典的操作 Dictionary operation

    dic = {'a': 1, 'b': 2} print(dic) # 增: 字典名[key] = 值 => key已存在就是修改值,不存在就是新增值 dic['c'] = 3 print(di ...

  6. 将文件夹下的所有csv文件存入数据库

    # 股票的多因子分层回测代码实现 import os import pymysql # import datetime, time # from config import * database_ta ...

  7. 解决 windows下安装Anaconda后python pip不可用的情况

    在windows系统下通过安装Anaconda的方式安装的python使用中发现不能再通过pip安装python包.只能通过conda install packname 的方法,导致很多conda不支 ...

  8. wmv 播放器

    部分代码如下 QAction *openFile = new QAction(QIcon(QString(":/Res/open.png")), tr("打开文件&quo ...

  9. bootstrapValidator关于js,jquery动态赋值不触发验证(不能捕获“程序赋值事件”)解决办法

    //触发oninput事件 //propertychange 兼容ie678 $('#captainName').on('input propertychange', function() { }); ...

  10. FPGA 中三角函数的实现

    FPGA 中三角函数的实现