表的约束

防止同一条数据完全重复:主键约束(primary key)唯一键约束(unique),自增长;

防止数据为空: 非空约束(not noll),默认值;

防止乱填数据: 外键, 定义数据类型,check;

1 主键约束(Primary key constraint)要求主键能够唯一区分每一行数据,主键可以是一列也可是几列组合成主键,并且不允许为空,表中的数据按照主键有序排列,

l 语句操作: alter table stuinfo add  constraint pk-sruno primary key(stuno)

l 表格操作:在表的设计界面,在相应的列上,右击-"设为主键"/"删除主键";

2 唯一约束(unique constraint)要求该列唯一,允许为空,但只能出现一个空值

l 语句操作:alter table stuinfo add constraint unique(stuid)

l 表格操作:在表的设计界面上,右击--“索引/键”在弹出窗口上,点击左下角“添加”,右侧属性列表,修改类型——唯一键,设置列

例子 qq 号与qq邮箱的关系

3 检查约束(check constraint)某列取值范围 格式限制等 例如 有关年龄的限制

4 默认约束(default constraint)某列的默认值

语句操作:sxex varchar(2) default('男'),

表格操作:在表的设计界面,选择相应的列,在下面的属性面版中——默认值

例子insert into Studente(sno,sname,sbirthday,class) values('201','小王','1974-06-03','95031')

5 外键约束(foreeign key constraint)用于建立两表之间的关系,需要制定引用主表的那一列

三、自增长列:标识列,Identity列

1.不能手动向里面填值。如果要写insert语句的话,则语句应当把这一列忽略

2.自增长列主要用于整型、长整型,Decimal类型。

3.不要随便把自增长列作为主键。

--

操作:在表的设计界面中,选中相应的列,在下面的属性面版——“标识规范”--选择是

防止有些该填的没有填:

一、非空约束

不能为NULL。

操作:在表的设计界面中“允许NULL值”中的复选框去掉。

二、默认值。

如果不给列赋值的话,会使用默认值填上。

操作:在表的设计界面,选择相应的列,在下面的属性面版中——默认值

防止乱填:

一、Check约束。

按照某种规则对数据进行检查。

操作:在表的设计界面中,右击相应的列,选择“CHECK约束”在弹出的对话框中,设置约束的名称和表达式。

二、外键约束。主表,从表。

主表是用来约束从表的。外键应当建在从表上。

使用主表的主键来约束从表外键。

从表中的外键列是不能随便乱填内容的,它只能填写主表主键中存在的数据。

一旦建立起外键关系来,从表的外键不能乱填,反过主表中的主键列也不能乱删除乱改。

级联删除的设置——整理

操作:先建好主表,在从表的设计界面上,右击-“关系”,在弹出的对话框中选择“添加”,在右边属性列表中设“表和列的规范”

三、类型。

完整性包括

1 实体完整性

数据行不能存在重复

2 域完整性

实现了对输入到特定列的数值的限制

3 引用的完整性

1 要求子表中的相关项必训在主表中也存在

2 如果建立了主表和子表 则 子表中的相关项目的数据,在主表中必须存在

3主表中相关的项数据更改了,则子表中的数据也要相应的更改

4在删除子表前主表不能删除

四 自定义完整性

创建表包括选择字段的名称 数据类型 定义是否为空 设置默认值 主键 外键关系 检查约束等 。表中没有合适的列作为主键可以创建标示列。

sql 中存在的5中约束

添加约束的方法: alter table 表名 add constraint 约束名 约束类型

具体的约束说明

约束名取名规则 :

主键 pk-stuno

唯一 uq

默认 de

检查 ck

外键 fk

代码添加约束书写方法(以表格stuinfo)

添加主键约束:

添加唯一键约束:alter table stuinfo add constraint unique(stuid)

添加默认约束键: alter table stuinfo add constraint df-stuadddress  default(‘地址不详’)for stuaddress

添加检查约束:alter table stuinfo add constraint ck-stuage  check(stuage between 13 and 40 )

添加外约束键: ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo  FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)

SQL---------表的约束的更多相关文章

  1. SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束

    创建数据库: CREATE DATABASE Test --要创建的数据库名称 ON PRIMARY ( --数据库文件的具体描述 NAME='Test_data', --主数据文件的逻辑名称 FIL ...

  2. SQL Server— 存在检测、建库、 建表、约束、外键、级联删除

    /******************************************************************************** *主题: SQL Server- 存 ...

  3. SQL Server建库-建表-建约束

    ----------------------------------------SQL Server建库-建表-建约束创建School数据库------------------------------ ...

  4. 5-06使用Sql 语句为表添加约束

    约束名的命名规则推荐采用:约束类型_约束列. 为用户表添加约束 ALTER TABLE UserInfo ADD CONSTRALNT PK_UserId PRIMATY REY(UserId) CO ...

  5. [Nhibernate]SchemaExport工具的使用(二)——创建表及其约束、存储过程、视图

    目录 写在前面 文档与系列文章 表及其约束 存储过程 视图 总结 写在前面 由于一直在山西出差,有几天没更新博客了.昨晚回到家,将博客园最近三天更新的文章搜集了一下,花费了半天的时间,看了看,有些文章 ...

  6. SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束

    SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...

  7. SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束

    CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...

  8. sql语句添加约束

    sql语句添加约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但 ...

  9. SQL基础--> 约束(CONSTRAINT)

    --============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完 ...

  10. SQL 数据类型、约束、索引及视图

    一.数据类型:整数:int,bigint,smallint小数:float,real,decimal(长度,精度),numeric(长度,精度)字符:char(n),varchar(n) 8000英文 ...

随机推荐

  1. 一个可创建读取日志的管理类(可固定创建2M大小的日志文件)

    这里,将日志管理基类命名为LogManagerBase(抽象类),具体的不同类型的日志可以通过继承完成.该基类可将日志以每个2M的方式存储起来,并可以读取当前正在使用的日志的所有内容. 要实现该基类, ...

  2. (剑指Offer)面试题33:把数组排成最小的数

    题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路: 1.全 ...

  3. 学习C++的一些问题总结

    C++ 问题 (一) int main() { int i,j,m,n; i=8; j=10; m=++i+j++;  //++i是先递加再使用,j++是先使用再递加,故:9+10=19 n=++i+ ...

  4. perl学习笔记(2)

    1)记得刚开始写perl的时候,对于一个功能,总是拿目前能用的数据类型来解决问题,不想想有没有更好的,能用能解决问题就好,这就导致了后期,要在函数里面添加功能的时候,函数要添加很多参数,一个函数有7. ...

  5. sc7731 Android 5.1 Camera 学习之一Camera 两个对象

    众所周知,在Android中Camera采用了C/S架构,其中Camera server 与 Camera client之间通过Android Binder IPC机制进行通信.在Camera实现的框 ...

  6. Keil AGDI Header File

    #ifndef __AGDI__INCED___ #define __AGDI__INCED___ //---Revision History: --------------------------- ...

  7. nslookup 查询IPv6

    > nslookup>  set type=AAAA > ipv6 domain name  (ipv6.google.com, time.buptnet.edu.cn)

  8. influxDB学习总结

    1.安装 请参考http://www.cnblogs.com/zhja/p/5996191.html, 安装完毕运行influxd,http://域名:8083为控制台界面:http://域名:808 ...

  9. Codeforces Round #253 (Div. 1) A. Borya and Hanabi 暴力

    A. Borya and Hanabi Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/442/p ...

  10. cdoj 1143 传输数据 最大流

    传输数据 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1143 Descri ...