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. php中判断变量是否为空

      从数据库中取出值后判断是否为空,这个看起来很简单,只要和null比较一下就可以了,其实不然, if($obj==null){ } 这样写会报错的:Notice: Trying to get prope ...

    2. 使用Thinkphp框架开发移动端接口

       本文给大家分享的是使用thinkphp框架开发移动端接口的2种方法,一种是开发API,另外一种是实现移动端访问自动切换移动主题模板,从而实现伪app访问,下面我们就来详细看下如何实现吧. 方案一:给 ...

    3. PHP 获取目录

      取得当前文件名,当前目录,上层目录 文件名 test.php 路径 + 文件名 (要取得 /var/www/test/test.php)      echo __FILE__; 文件名 (要取得 te ...

    4. WEB可用性、可访问性、可维护性

      可用性 (Usability) 可用性是一个多因素概念,涉及到容易学习.容易使用.系统的有效性.用户满意度,以及把这些因素与实际使用环境联系在一起针对特定目标的评价. 可访问性 (Accessibil ...

    5. List<T> ForEach break

      有没有方法扩展跳出 list.foreach循环? 理论上它其实不是一个循环,而是一个方法 代理调用内部循环   public delegate void ForEachAction<T> ...

    6. IOS网络编程:HTTP

      IOS网络编程:HTTP HTTP定义了一种在服务器和客户端之间传递数据的途径. URL定义了一种唯一标示资源在网络中位置的途径. REQUESTS 和 RESPONSES: 客户端先建立一个TCP连 ...

    7. 持续集成之戏说Check-in Dance

      尽管Thoughtworks的首席科学家Martion folwer 为“持续集成 ” 下了定义,但由于自身背景与经历的不同,每个人对其都有不同的理解.从狭义上讲,持续集成可以认为是一种基于某种或者某 ...

    8. TCP/IP 三次握手和四次握手

      三次握手建立连接: 第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己 ...

    9. Solr4.8.0源码分析(23)之SolrCloud的Recovery策略(四)

      Solr4.8.0源码分析(23)之SolrCloud的Recovery策略(四) 题记:本来计划的SolrCloud的Recovery策略的文章是3篇的,但是没想到Recovery的内容蛮多的,前面 ...

    10. Whitespace character

      In computer science, whitespace is any character or series of whitespace characters that represent h ...