精华内容
下载资源
问答
  • 数据库唯一性约束(Unique Constraint)

    万次阅读 2019-01-10 09:38:07
    唯一性约束要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。 语法:  1、在定义完列之后直接指定唯一约束 字段名 数据类型 UNIQUE  2、在定义完所有列之后指定唯一...

    唯一性约束要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。

    语法:

        1、在定义完列之后直接指定唯一约束

    字段名 数据类型 UNIQUE

          2、在定义完所有列之后指定唯一约束

    CONSTRAINT 约束名 UNIQUE 字段名

    UNIQUE 和 PRIMARY KEY 的区别:

    一个表中可以有多个字段声明为 UNIQUE ,但只能有一个 PRIMARY KEY 声明;声明为 PRIMARY KEY 的列不允许有空值,但是声明为 UNIQUE 的字段允许空值的存在。

     

    展开全文
  • 数据库唯一性约束

    万次阅读 2016-07-08 09:34:44
    SQL UNIQUE 约束 UNIQUE 约束唯一标识数据库表中的每条记录。 UNIQUE 和 PRIMARY KEY 约束...请注意,每个表可以多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。 SQL UNIQUE Constraint on C

    SQL UNIQUE 约束

    UNIQUE 约束唯一标识数据库表中的每条记录。

    UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

    PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

    请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。


    SQL UNIQUE Constraint on CREATE TABLE

    下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 UNIQUE 约束:

    MySQL:

    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    UNIQUE (Id_P)
    )
    

    SQL Server / Oracle / MS Access:

    CREATE TABLE Persons
    (
    Id_P int NOT NULL UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )
    

    如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,请使用下面的 SQL 语法:

    MySQL / SQL Server / Oracle / MS Access:

    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
    )
    

    SQL UNIQUE Constraint on ALTER TABLE

    当表已被创建时,如需在 "Id_P" 列创建 UNIQUE 约束,请使用下列 SQL:

    MySQL / SQL Server / Oracle / MS Access:

    ALTER TABLE Persons ADD UNIQUE (Id_P)
    

    如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:

    MySQL / SQL Server / Oracle / MS Access:

    ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
    
    注:uc_PersonID 是一个约束名,为了方便区别约束名一般起得有规律点比如UC(就是UNIQUE CONSTRAINT的缩写意思是唯一约束),
       uc_PersonID 就是对表中的PersonID 建唯一约束,强制约束Id_P和LastName唯一 
    

    撤销 UNIQUE 约束

    如需撤销 UNIQUE 约束,请使用下面的 SQL:

    MySQL:

    ALTER TABLE Persons DROP INDEX uc_PersonID
    

    SQL Server / Oracle / MS Access:

    ALTER TABLE Persons DROP CONSTRAINT uc_PersonID
    

    展开全文
  • Mysql 唯一性约束 AK

    万次阅读 2012-02-22 18:01:32
     所谓唯一性约束(unique constraint)不过是数据表内替代键的另一个名称而已。替代键(alternate key)可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据...
    数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束 
    
    数据库:唯一性约束

        所谓唯一性约束(unique constraint)不过是数据表内替代键的另一个名称而已。替代键(alternate key)可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据重复的现象。比方说,你可以用车辆识别代号(VIN)作为汽车(Automobile)数据表的替代键,在汽车数据表里,主键是汽车识别号(Automobile Identification),这是一种由系统自动生成的ID。你可以在汽车表内对VIN施加唯一性约束,同时再创建一个需要VIN的表。在这个新表内可以声明外键指向汽车表。这样,只要汽车表内有VIN输入数据库就会检验VIN输入结果。这就是保证数据库内数据完整性的另一种有效的措施。

    create table parent
        (parent_id int not null,      -- Primary key
        parent_alternate_key int not null,     -- Alternate key
        parent_col1 int null,
        parent_col2 int null,
          constraint pk_parent_id primary key (parent_id),
          constraint ak_parent_alternate_key unique_
           (parent_id, parent_alternate_key)
       

    使用约束:
    create table child2
        (child2_parent_id int not null,     -- Primary key/Foreign key
        child2_id int not null,     -- Primary key
        child2_col1 int null,
        child2_parent_alternate_key int not null,  -- Foreign key
            constraint pk_child2 primary key (child2_parent_id, child2_id),
            constraint fk_child2_parent foreign key (child2_parent_id)
        references dbo.parent(parent_id),
            constraint fk_pk_ak_child2_parent foreign key _
          (child2_parent_id, child2_parent_alternate_key) _
          references dbo.parent(parent_id, parent_alternate_key)
       


    primary key 与UNIQUE的区别
    1.一个基本表中只能定义一个primary key,但可以定义多个UNIQUE的约束
    2.指定primary key的一个列或多个列的组合都不能为NULL,而UNIQUE所约束的唯一键则允许为空
    3.不能为一个列或多个列既定义primary key,又定义UNIQUE约束


    MYSQL目前不支持外键,其理由如下:
    1.外键使生活更复杂,因为外键的定义必须存储在一个数据库中并且实现他们将破坏使用能被移动、拷贝和删除文件的全部“好方法”。
    2.速度影响对INSERT和UPDATE语句是可怕的,并且在这种情况下几乎所有的FOREIGN KEY检查都是无用的,因为不管怎样你通常以正确的顺序在正确的表中插入记录。
    3.当更新一张表时,也有在许多表上保存锁的需求,因为副作用可以串联通过全部数据库。首先从一张表中删除记录并且随后从其他表中删除他们,这更快。
    4.你再也不可以通过做一个全面的表删除并随后恢复所有的记录的方法来恢复一张表(从新来源或从一个备份)。
    5.如果你有外键,你不能倾倒和恢复表,除非你以一个非常特定的做这些。
    6.很容易做一个“允许的”的循环定义使得不可能用一个单个create语句重建每一个表,就算定义可行又可用。
    展开全文
  • mysql如何修改唯一性约束跟主键约束

    千次阅读 2017-09-20 12:32:34
    一、如何添加主键约束...#千万别忘了加(),同时要保证表结构中没有其他的主键,因为一个表中只能有一个主键。2、添加唯一性约束 执行语法:alter table tableName addunique(column_name);#一个表中可以多个唯...

    一、如何添加主键约束和唯一性约束

    1、添加主键约束

         执行语法:

    alter table tableName add primarykey(column_name);#千万别忘了加(),同时要保证表结构中没有其他的主键,因为一个表中只能有一个主键。

    2、添加唯一性约束

         执行语法:

    alter table tableName addunique(column_name);#一个表中可以有多个唯一性约束。

    二、删除主键和唯一性约束

    1、删除主键

    在MySQL中删除主键需要两步.

    (1)如果有auto_increment,先删除之;

    (2)删除主键约束 primary key。

    以本人自建数据表aaa为例

    首先要删除auto——increment

    语法如下:

    alter table aaa modify id int(11);#这里用的modify,只改变数据类型,也可以用change,改变列名的同时输入新的数据类型。


    执行后,表结构如下:

    下一步就是删除主键

    语法如下:

    alter table aaa drop primary key;

    执行完,表结构如下:

    这时候主键就已经删除成功了。吐舌头

    2、删除唯一性约束

    语法如下:

    alter table tableName drop index key_name;#删除唯一性约束,实际就是删除索引

    drop index key_name on tableName; #两种方法均可

    但我在练习删除唯一性约束的时候,刚开始一直出现:ERROR 1091 (42000): Can't DROP 'loc'; check that column/key exists 这样的报错,百思不得其解,经过不懈的百度,终于找到原因,特地跟大家分享一下,希望不要再犯同样的错误。

    究其原因,是我们把key_name跟column_name混淆了,注意上面的语法中我写的是key_name,并非colunm_name。在学习mysql的过程中,尤其是练习时,经常会进行修改列名的操作,如果你在修改列名以前就已经定义了本列为唯一性约束,那么键名还是修改前的列名。这个时候就需要我们查一下表的key结构,找到key_name。

    语法如下:

    show keys from tableName;

    执行后,结果为

    注意,我这里的key_name跟column_name就是不同的,所以在执行 drop index loc on aaa;时就会一直提示错误。

    所以,要执行以下语法才可以:

    alter table aaa drop index location;
    执行完,结果为

    这个时候,loc的唯一性约束就删除了。

    其实,当我们不确定是否改过列名时,就可以直接通过show keys来找到key_name,这样不管有没有改变列名,都有key_name为准,就可以准确的删除唯一性约束了。


    展开全文
  • 每个表都应该有一个主键,并且每个表只能有一个主键。SQL foreign key 约束一个表中的 foreign key 指向另一个表中的 primary key。SQL unique 约束unique约束唯一标识数据库表中的每条记录。unique和 p...
  • ORA-00001: 违反唯一约束条件 这一个报错相信大家在插入数据时还是经常遇到的,尤其是在测试环境。 但是今天我在处理一个生产问题的时候再次遇到这个报错时有点奇怪: 1.该表(记为表A)的主键是数据库序列生成的,...
  • 突然看到数据库表设计中的几属性,记录一下 restrict--限制,指的是如果字表引用父表的某个字段的值,那么不允许直接删除父表的该值; cascade--级联,删除父表的某条记录,子表中引用该...1.建表时加上唯一性约束
  • 主键约束和唯一性约束的区别

    千次阅读 2012-11-15 16:41:18
    主键必然是唯一且不为空,但是唯一不一定是主键,而且主键只能有一个,但是唯一约束仅仅是为了保持某些列具有唯一性而已。所以可以多列 一张表里只能有一个主键约束,可以多个唯一约束 主键约束的字段不能为...
  • 主键约束、唯一性约束、检查约束

    万次阅读 2011-12-09 11:51:08
    1.约束定义了必须遵循的的用户维护数据一致性和正确性的规则,是强制实现数 据完整性的主要途径。  主键约束(primary key) ... 唯一性约束(unique)  检查约束(check) 条件的构造  范围 字段 in(集合)
  • sql 关于表多主键唯一性约束

    万次阅读 2019-02-27 17:28:15
    1.对于一般的表,我们只需设一个主键,防止重复,但是我们如果设置多个主键,是每个主键都有唯一性吗?还是多个主键组合起来具有唯一性 2.答案肯定是多个主键合起来具有唯一性,话说太多,现在上例子 3.例如,我建...
  • 简单的唯一性约束的方法 一个表中 2个字段的联合约束 创建数据表 create table zcz (id number not null,name varchar(20) null, age varchar(20) null); 创建主键 或者联合主键 但一个表中只能有一个主键...
  • 但在设计数据库时遇到了写小麻烦,主要是数据库中约束的应用,以前在学习数据库时进行了总结,在刚开始学习时使用的是SQL Server2000小操作了下,查证了几种约束的作用,但现在升级为08版的SQL所以在操作方式上了...
  • 这周某系统上线,有一个需求就是,为一张表修改唯一性约束,原因就是之前发现,由于唯一性约束设置不当,导致业务处理出现异常。举例来说,如下测试表,原先唯一性约束是a和b俩字段,但发现实际业务中,a和b的组合是...
  • 所谓唯一性约束(unique constraint)不过是数据表内替代键的另一个名称而已。替代键(alternate key)可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据...
  • 1. 建表时加上唯一性约束 CREATE TABLE `user_card_serial` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键' , `mobile` varchar(16) NOT NULL unique COMMENT '手机号' , `user_name` varchar(32) NULL ...
  • Oracle数据库中,约束具体包括非空(NOT NULL)约束、...在一张表中,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(或主码),这里说"字段集"是因为主键可能用一个字段或者多个字段来表示。主...
  • 数据库约束 主键-唯一性-Check-外键

    千次阅读 热门讨论 2016-07-24 23:03:05
     一个只能有一个  主键约束的列不能接受空值 唯一性(unique)  基本表中确保在非主键列中不输入重复的值。 Check约束  限制输入到一列或多列的值的范围。  特点:可以一列使用多个Check约束,按...
  • 简单的唯一性约束的方法 一个表中 2个字段的联合约束 创建数据表 create table zcz (id number not null,name varchar(20) null, age varchar(20) null); 创建主键 或者联合主键 但一个表...
  • 主键约束唯一约束

    千次阅读 2019-03-07 21:30:59
    主键约束唯一约束主键约束唯一约束的区别普通索引和唯一索引Mysql中的索引普通索引(非唯一索引)唯一索引唯一索引主键约束唯一索引唯一约束唯一索引创建唯一索引删除主键约束唯一约束自动创建的唯一索引 ...
  • Oracle | PL/SQL唯一索引(Unique Constraint)
  • 主键约束,唯一约束与默认约束

    千次阅读 2016-07-05 11:21:42
    每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL AUTO_INCREMENT 自动编号,且必须与主键一起使用。但是主键不一定要和AUTO_INCREMENT一起使用 默认情况下,起始值为1,每次的增量为1 AUTO_...
  • MySQL中添加唯一约束和联合唯一约束

    千次阅读 2017-08-28 11:28:40
    在MySQL数据库中,经常会碰到由于业务需要添加唯一键约束,唯一键约束,可以在一个列上添加约束,也可以在多个列上添加唯一约束...建表时加上唯一性约束: CREATE TABLE t_user ( Id int(11) NOT NULL AUTO_INCREMEN
  • 约束 * 概念: 对表中的数据进行限定,保证数据的正确、有效和完整。 * 分类: 1. 主键约束:primary key ... 唯一约束:unique 4. 外键约束:foreign key * 非空约束:not null,值不能为null 1....
  • 、非空约束只能在列级设置,不能在表级设置) 1、在创建表时设置非空约束 CREATE TABLE table_name( column_name datatype NOT NULL,…… );     2、在修改表时添加非空约束 ALTER TABLE table_name ...
  • 保证记录的唯一性 约束分为表级约束和列级约束 约束类型按功能包括:非空约束、主键约束、唯一约束、默认约束、外键约束、 【自动编号】AUTO_INCREMENT 起始值为1,增量为1。 自动编号的字段必须为数值型,若为...
  • UNIQUE KEY 唯一约束

    千次阅读 2018-10-08 21:27:45
    唯一约束可以保证记录唯一性 约束字段可以为空值NULL 每个表可以多个UNIQUE约束 但是每个数据表只能有一个 PRIMARY KEY 约束; mysql> CREATE TABLE SEVEN( -> id SMALLINT UNSIGNED AUTO_...
  • 约束,是对表中的数据进行限定,保证数据的正确、有效和完整约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign key 1.1 非空约束:not null 1)在创建...
  • mysql 创建唯一约束

    千次阅读 2019-08-28 11:15:46
    说明: UNIQUE 约束唯一标识数据库表中的每条记录。 UNIQUE 和 PRIMARY KEY ...请注意,每个表可以多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。 1、创建一个测试表: create table test(...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,952
精华内容 42,780
关键字:

唯一性约束只能有一个