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. centos中文乱码修改字符编码使用centos支持中文

      如何你的centos显示中文乱码,只要修改字符编码使centos支持中文就可以了,没有这个文件可以创建它,下面是修改步骤 一.中文支持 安装中文语言包: 复制代码 代码如下: yum groupins ...

    2. Bootstrap_Javascript_手风琴

      触发手风琴可以通过自定义的 data-toggle 属性来触发.其中data-toggle值设置为 collapse,data-target="#折叠区标识符". 第一步,设计一个 ...

    3. DEDECMS栏目自定义字段添加

      用到的文件: catalog_add.htm  路径:\dede\templets\ catalog_edit.htm  路径:\dede\templets\  catalog_add.php  路径 ...

    4. MySQL账号授权操作

      Mysql权限控制 - 允许用户远程连接 设置mysql root密码: mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = P ...

    5. Django Web在Apache上的部署

      1. 安装配置Apache 2. 安装wsgi_mod模块 3. 开放相应端口 vim /etc/sysconfig/iptables # Firewall configuration written ...

    6. Android 之夜间模式(多主题)的实现

      引言 夜间模式其实属于多主题切换的一种,不过是最麻烦的一种.因为在夜间模式下不仅要切换主色调,次要色调等等,还要覆盖一些特殊的颜色,因为在夜间模式下总不能什么都是黑的把,那不得丑死-.-,所以当你夜间 ...

    7. js两个时间相减

      平常总会遇到需要算两个日期之间是多少天,以下是使用JavaScript算时间差多少天的: // 给日期类对象添加日期差方法,返回日期与diff参数日期的时间差,单位为天 Date.prototype. ...

    8. mapreduce (四) MapReduce实现Grep+sort

      1.txt dong xi cheng xi dong cheng wo ai beijing tian an men qiche dong dong dong 2.txt dong xi cheng ...

    9. Mondriaan's Dream

      poj2411:http://poj.org/problem?id=2411 题意:给你1*2的方块,让你把n*m的房间填好有多少种方式. 题解:状压dp.这一题,我是不会做了,看懂了题解之后,震惊了 ...

    10. Highways

      poj1751:http://poj.org/problem?id=1751 题意:给你n个城市,每个城市的坐标给你,然后为了是每个城市都连通,需要在已经建了一些街道额基础上,再次建一些街道使其连通, ...