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. 【POJ1568】【极大极小搜索+alpha-beta剪枝】Find the Winning Move

      Description 4x4 tic-tac-toe is played on a board with four rows (numbered 0 to 3 from top to bottom) ...

    2. Thread.sleep(0)的意义

      我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题: 假设现在是 2008-4-7 12:00:00.000,如果我调用 ...

    3. 功能: 用函数 funName 对数组 objArray 中的每个值进行处理一次,

      function each( objArray, funName ) {//功能: 用函数 funName 对数组 objArray 中的每个值进行处理一次,for(var i=0; i<obj ...

    4. Python新手学习基础之初识python——与众不同2

      看完了Python的缩进,现在来看看Python的标识符.引号和注释. 标识符 关于Python的标识符,其实不是与众不同,只是有一定的规则. 标识符是编程时使用的名字.在Python中,标识符有几点 ...

    5. webkit report

      %for main_o in objects: <% print main_o.sale_announcement_ids %> %for o in announcement_pool.b ...

    6. 隐藏 response headers

      1.response headers 为何物 从上图看到..这 透漏出服务器端 1.操作系统版本, IIS版本.开发语言 .以及.net framework 版本 虽然现在IIS 可以挂php .甚至 ...

    7. BZOJ 1207 打鼹鼠

      Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探 ...

    8. [BZOJ 1066] [SCOI2007] 蜥蜴 【最大流】

      题目链接:BZOJ - 1066 题目分析 题目限制了高度为 x 的石柱最多可以有 x 只蜥蜴从上面跳起,那么就可以用网络流中的边的容量来限制.我们把每个石柱看作一个点,每个点拆成 i1, i2,从 ...

    9. Ext.js form 表单提交问题

      var form = new Ext.form.FormPanel({ labelAlign : 'right', border : false, bodyStyle : 'background-co ...

    10. 怎样在delphi中实现控件和窗体的拖拽

      下面这2种方法都能实现对控件和窗体的拖拽 方法1 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift ...