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. POJ 2186.Popular Cows (强连通)

      强连通缩点,统计入度为1的缩点后的点的个数 个数1的话输出这个强连通分量的点的数量 否则输出0: code /* Kosaraju算法,无向图的强连通分量,时间复杂度O(n+m) 思路: 按照图G的深 ...

    2. Win异常: 除了chrome浏览器外,所有安装的软件都连不上网

      经查找资料,是LSP被篡改,恢复后使用正常. 百度百科  LSP: Layered Service Provider, 即分层服务提程序,Winsock 作为应用程序的 Windows 的网络套接字工 ...

    3. 如何使rdlc报表的表头在每一页都显示

      想要使表格的表头在每一行都显示,直接在表格的属性设置界面中设置是无效的,应该算是一个BUG,如图: 但还是可以实现的,实现方法如下,这个实现方法从网上得到 开发工具: Visual Studio 20 ...

    4. mysql,left join on

      转自http://www.oschina.net/question/89964_65912 觉得很有帮助,用来学习. 即使你认为自己已对 MySQL 的 LEFT JOIN 理解深刻,但我敢打赌,这篇 ...

    5. PHP获取客户端和服务器端IP

      客户端的ip变量: $_SERVER['REMOTE_ADDR'] :客户端IP,也有可能是代理IP $_SERVER['HTTP_CLIENT_IP']:代理端的IP,可能存在,也可能伪造 $_SE ...

    6. php 获取域名的whois 信息

      首先先了解几个文件操作函数: fwrite() 函数写入文件(可安全用于二进制文件). fwrite() 把 string 的内容写入文件指针 file 处. 如果指定了 length,当写入了 le ...

    7. CSS让图片垂直居中的几种技巧 三种方法介绍

      在网页设计过程中,有时候会希望图片垂直居中的情况.而且,需要垂直居中的图片的高度也不确定,这就会给页面的布局带来一定的挑战.下面总结了一下,曾经使用过的几种方法来使图片垂直居中,除了第一种方法只限于标 ...

    8. C#.NET Winform 通用开发框架

      C/S系统开发框架-企业版 V4.0 (Enterprise Edition) 简介: http://www.csframework.com/cs-framework-4.0.htm 视频下载: 百度 ...

    9. iscc2016-basic-明察秋毫

      查看源代码,找到maybe not flag : Jr1p0zr2VfPp 移位密码,注意判断字母大小写,并且数字无变化 s = "Jr1p0zr2VfPp" p = list(s ...

    10. 转:使用Mongo Connector和Elasticsearch实现模糊匹配

      原文来自于:http://www.csdn.net/article/2014-09-01/2821485-how-to-perform-fuzzy-matching-with-mongo-connec ...