zoukankan      html  css  js  c++  java
  • SQL约束

    转自:http://www.cnblogs.com/henw/archive/2012/08/15/2639510.html

    约束主要有一下几种:

    NOT NULL : 用于控制字段的内容一定不能为空(NULL)。 

    UNIQUE : 控件字段内容不能重复,一个表允许有多个 Unique 约束。

    PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。

    FOREIGN KEY: FOREIGN 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 语法:可同时添加几个字段为约束 如: unique (id,name) 
                 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,.....) 
                       )

    删除: 
       在Sql Server、Oracle、MS Access 删除 Unique 约束语法:drop constraint UniqueName; 
       在My Sql 删除 Unique 约束语法:drop index UniqueName;

    修改:

    ALTER TABLE EPlatform 
    ADD CONSTRAINT Unique_EPlatform 
    unique ([UserId],[Platform]);

    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

    DEFAULT:用于设置新纪录的默认值

  • 相关阅读:
    Odoo many2many command
    odoo-cn 邮件列表
    教育 管理系统
    ddmrp
    odoo12新特性: 会计改进
    odoo分析会计
    Odoo 8,9,10 制造领料、入库 实践
    Odoo 后端数据库postgreSQL事务级别
    Hive建表与导入文件中的数据
    Hadoop编写一键集群全起start-cluster.sh、全关stop-cluster.sh、显示所有jps进程show-jps.sh脚本 以及群起zookeeper服务,jps不显示的解决方案
  • 原文地址:https://www.cnblogs.com/buptlyn/p/4555370.html
Copyright © 2011-2022 走看看