SQL 约束解说
2009-04-27 09:29
约束主要包含:

  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
  • DEFAULT

    1、not null :用于控制字段的内容一定不能为空(NULL)。
         使用方法 :Create table MyTable
                   (
                       id varchar(32) not null,
                       name varchar (32)
                   )

    2、Unique :控件字段内容不能反复,一个表同意有多个 Unique 约束。
          在Sql Server、Orcale、MS Access 支持的加入 Unique 语法:
                 Create table MyTable
                    (
                        id varchar(32) not null unique,
                        name varchar (32)
                    )

    在Sql Server、 My Sql 支持的加入 Unique 语法:
                 Create table MyTable
                    (
                        id varchar(32) not null,
                        name varchar (32),
                       unique (id,.....)
                     )

    在Sql Server、Orcale、MS Access、My Sql 都支持的加入 Unique 语法:
                  Create table MyTable
                      (
                          id varchar(32) not null,
                          name varchar (32),
                         Constraint uniqueName unique(UniqueColumn,.....)
                       )

    注:第一种写法(也就是在字段后面直接加入约束),保证每一个字段数据唯一性。
              另外一种写法(也就是同一时候加入几个字段为约束),这个是保证几个字段数据同一时候是唯一的,比方 Unique(id,name) 两个字段为约束,那么当 id 有反复值,而 name 没有反复值的情况下是同意的,仅仅有当两个字段数据都与原数据反复的情况下才是不同意的。
       
       在Sql Server、Oracle、MS Access 删除 Unique 约束语法:drop constraint UniqueName;
       在My Sql 删除 Unique 约束语法:drop index UniqueName;

    3、Primary Key :也是用于控件字段内容不能反复,但它在一个表仅仅同意出现一个。
          在Sql Server、Orcale、MS Access 支持的加入Primary Key语法:
                  Create table myTB1
                 (
                     id nvarchar(32) not null primary key,
                     name nvarchar(32)
                  )
          在Sql Server、My Sql 支持的加入Primary Key 语法:
                 Create table myTB1
                 (
                     id nvarchar(32) not null,
                     name nvarchar(32),
                     primary key (id)
                 )
           在Sql Server、Orcale、MS Access、My Sql 支持的加入Primary Key 语法:
                 Create table myTB1
                 (
                      id nvarchar(32) not null,
                     name nvarchar(32),
                     constraint PrimaryName primary key (id)
                  )
    在Sql Server、Orcale、MS Access、My Sql 表已存在的情况下,加入表的Primary Key约束语法:
                  Alter table myTB1
                  ADD Primary Key (id,......) --这种写法,系统会自己定义约束名称

    Alter table myTB1
                  Add Constaint PrimaryName primary key (id) --这种写法,自己能够自己定义约束名称

    在Sql Server、Orcale、MS Access 删除表已存在的 Primary Key 约束的语法:
                  Alter table myTB1
                  Drop Constraint PrimaryName

    在My Sql 删除表已存在的 Primary Key 约束的语法:
                  Alter table myTB1
                  Drop Primary Key
    Unique 与 Primary 的同样之处:UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
    Unique 与 Primary 的不同之处:每一个表能够有多个 UNIQUE 约束,可是每一个表仅仅能有一个 PRIMARY KEY 约束,Unique同意有NULL值,而 Primary key 不同意有NULL值。

    注:在同一个数据库中,就算在不同的表中,约束名称是不同意同样的。

    4、Foreign Key :FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束也能防止非法数据插入外键列,由于它必须是它指向的那个表中的值之中的一个。
       在Sql Server、My Sql 支持的加入Foreign Key语法:
                  Create table myTB1
                  (
                       id nvarchar(32) not null primary key,
                       name nvarchar(32),
                       foreign key(id) references myTB(id)
                  )

    在Sql Server、Orcale、MS Access 支持的加入Foreign Key语法:
                  Create table myTB1
                  (
                       id nvarchar(32) not null foreign key references myTB(id),
                       name nvarchar(32)
                  )

    在Sql Server、Orcale、MS Access、My Sql 都支持的加入Foreign Key语法:
                  Create table myTB1
                  (
                       id nvarchar(32) not null primary key,
                       name nvarchar(32),
                        Constraint foreignName foreign key(id) references myTB(id)
                  )

    在Sql Server、Orcale、MS Access、My Sql 的表已存在情况下,向表加入外键约束的语法:
                  Alter table myTB1
                  Add foreign key(id) references myTB(id) --这样写系统会自己定义约束名称

    Alter table myTB1
                  Add Constraint foreignName foreign key(id) references myTB(id) --这样写自己能够自己定义约束名称

    在Sql Server、Orcale、MS Access 中删除外键约束的语法:
                  Alter table myTB1
                  Drop Constraint foreignName;

    在My Sql 中删除外键约束的语法:
                  Alter table myTB1
                  Drop foreign key foreignName;

    5、Check :用于控制字段的值范围。
          在Sql Server、My Sql 支持的加入check 语法:
                  Create table myCheck
                  (
                       id nvarchar(32) not null,
                       age int not null,
                       check (age>15 and age <30)
                  )

    在Sql Server、Orcale、MS Access 支持的加入 check 语法:
                  Create table myCheck
                  (
                       id nvarchar(32) not null,
                       age int not null check (age>15 and age<30)
                  )

    在Sql Server、Orcale、MS Access、My Sql 都支持的加入 check 语法:
                   Create table myCheck
                  (
                       id nvarchar(32) not null,
                       age int not null,
                       constraint checkName check (age<15 and age>30)
                  )

    在Sql Server、Orcale、MS Access、My Sql 的表已存在情况下,向表加入check约束的语法:
                  Alter table myCheck
                  add check (id='celly'); --这样定义是系统自己定义 check约束名称。

    Alter table myCheck
                   add constraint checkName check(id='celly'); --这样定义是自己自己定义 check约束名称。

    在 Sql Server、Orcale、MS Access 删除表已存在的 check 约束的语法:
                  Alter table myCheck
                  drop constraint checkName

    6、Default :用于设置新记录的默认值。

    在Sql Server、Orcale、MS Access、My Sql 加入default约束的语法:
                  Create table myDefault
                  (
                      id int,
                      name nvarchar(32) default 'celly'
                  )

    在My Sql 的已存在表中加入 字段默认值:
                   Alter table myDefault
                  Alter [id] set default 0

    在 Sql Server、Orcale、MS Access 的已存在表中加入 字段默认值:
                  Alter table myDefault
                  Alter column [id] set default 0

    在 My Sql 中删除字段默认值语法:
                  Alter table myDefault
                  Alter ColumnName drop default

  • SQL 约束解说的更多相关文章

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

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

    2. SQL约束

      SQL约束: 非空约束:就是不能为null: 主键约束(PK):唯一,不重复,并且不为空: 唯一约束:唯一,允许为空,但只能出现一次: 默认约束:如果不给值,默认值: 检查约束:范围以及格式限制: 外 ...

    3. Mysql笔记【3】-SQL约束

      SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). 我们将主要探讨以下几种约 ...

    4. SQL 约束 (Constraints)

      SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). 我们将主要探讨以下几种约 ...

    5. SQL 约束(Constraints)

      SQL 约束(Constraints) SQL 约束(Constraints) SQL 约束用于规定表中的数据规则. 如果存在违反约束的数据行为,行为会被约束终止. 约束可以在创建表时规定(通过 CR ...

    6. SQL-W3School-高级:SQL 约束(Contraints)

      ylbtech-SQL-W3School-高级:SQL 约束(Contraints) 1.返回顶部 1. SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE T ...

    7. Bugku-CTF之login1(SKCTF) [SQL约束攻击]

      Day26 login1(SKCTF) http://123.206.31.85:49163/flag格式:SKCTF{xxxxxxxxxxxxxxxxx}hint:SQL约束攻击  本题要点:SQL ...

    8. SQL——SQL约束

      SQL约束 - 用于限制加入表的数据的类型    可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句).    NOT NULL ...

    9. Bugku-login1(SKCTF)(SQL约束攻击)

      原因 sql语句中insert和select对长度和空格的处理方式差异造成漏洞. select对参数后面的空格的处理方式是删除,insert只是取规定的最大长度的字符串. 逻辑 1.用 select ...

    随机推荐

    1. SGU 196.Matrix Multiplication

      时间限制:0.25s 空间限制:4M Solution n=10000,m=100000,显然不能用矩阵乘法乘出来. S= ATA 对于矩阵S的一行,所有在A矩阵中1位置的元素都相等,并且都等于这一行 ...

    2. 最大乘积(Maximum Product,UVA 11059)

      Problem D - Maximum Product Time Limit: 1 second Given a sequence of integers S = {S1, S2, ..., Sn}, ...

    3. dedecms织梦导航栏二级菜单的实现方法

      dede导航下拉菜单,一级栏目增加二级下拉菜单   使用dedecms5.6——5.7 将这段代码贴到templets\default\head.htm文件里<!-- //二级子类下拉菜单,考虑 ...

    4. nav

      $(document).ready(function() { $(window).resize(function(){ var need=0; var ul_max_width = $(window) ...

    5. python学习笔记(一)元组,序列,字典

      python学习笔记(一)元组,序列,字典

    6. Python字符编码讲解

      声明:本文参考 Python字符编码详解 在计算机中我们不管用什么语言和程序,最终数据在计算机中的都是字节码(也就是01形式)的形式存在的,如果 计算机直接把字节码显示在屏幕上,很明显一般人看不懂字节 ...

    7. BZOJ 1006 神奇的国度

      Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系 ...

    8. [POJ 2774] Long Long Message 【后缀数组】

      题目链接:POJ - 2774 题目分析 题目要求求出两个字符串的最长公共子串,使用后缀数组求解会十分容易. 将两个字符串用特殊字符隔开再连接到一起,求出后缀数组. 可以看出,最长公共子串就是两个字符 ...

    9. Unity NGUI 网络斗地主 -发牌 脚本交互

      Unity NGUI 网络斗地主 -发牌 脚本交互 @By 灰太龙 Unity4.2.1f4 NGUI 3.0.4 本篇说的问题是脚本与控件的交互! 现在对界面进行了改进,先看副图! 1.制作发牌效果 ...

    10. java学习面向对象之继承

      在我们编写程序的过程当中,会遇到这种情况: 比如现在有一个狗,他的功能有跑,有跳,有吃,有叫,属性有雌雄,大小,颜色等等,同时现在我们也有一个猫,上述功能她也有.这个时候我们写代码的时候,就得分别把上 ...