精华内容
下载资源
问答
  • 无法增加唯一约束
    千次阅读
    2021-01-18 18:25:09

    一、单列唯一约束

    在一列上添加唯一约束,主要是让该列在表中只能有唯一的一行,例如注册邮箱时的邮箱名、手机号等信息,相关操作如下:

    1.建表时加上唯一性约束:

    CREATE TABLE `t_user` (

    `Id` int(11) NOT NULL AUTO_INCREMENT,

    `username` varchar(18) NOT NULL unique,

    `password` varchar(18) NOT NULL,

    PRIMARY KEY (`Id`)

    ) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;

    2.给已经建好的表加上唯一性约束:

    ALTER TABLE `t_user` ADD unique(`username`);

    或者:

    create unique index UserNameIndex on 't_user' ('username');

    二、多列联合唯一约束

    如果业务中要求两个字符联合起了是唯一的,比如“地址”+“名称”是唯一的,这就需要对两列,甚至多列添加联合唯一约束,具体命令如下:

    1.确认表结构

    mysql> show create table jw_resource;

    FIELD TYPE COLLATION NULL KEY DEFAULT Extra PRIVILEGES COMMENT

    ------------- ------------ -------------- ------ ------ ------- -------------- -------------------- -------

    id BIGINT(20) (NULL) NO PRI (NULL) AUTO_INCREMENT SELECT,INSERT,UPDATE

    resource_name VARCHAR(128) gbk_chinese_ci YES (NULL) SELECT,INSERT,UPDATE

    resource_type TINYINT(4) (NULL) YES (NULL) SELECT,INSERT,UPDATE

    2.给resource_name和resource_type添加联合唯一约束:

    mysql> show index from jw_resource;

    mysql> ALTER TABLE jw_resource

    ADD UNIQUE KEY(resource_name, resource_type);

    3.确认表结构添加约束后结果:

    mysql> show create table jw_resource;

    CREATE TABLE `jw_resource` (

    `id` BIGINT(20) NOT NULL AUTO_INCREMENT,

    `resource_name` VARCHAR(128) DEFAULT NULL,

    `resource_type` TINYINT(4) DEFAULT NULL,

    PRIMARY KEY (`id`),

    UNIQUE KEY `resource_name` (`resource_name`,`resource_type`)

    ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;

    mysql> show index from jw_resource;

    注意:唯一键约束添加后,在建表的元数据中,默认的唯一键约束名称为第一列的名称。

    4.添加约束后,进行插入测试效果:

    msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('aa','11');

    msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('aa','22');

    msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('bb','11');

    msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('aa','11');

    5.删除唯一约束

    mysql> ALTER TABLE jw_resource DROP INDEX `resource_name`;

    mysql> show index from jw_resource;

    注意:唯一键约束添加后,实际上建立了一个索引,将该索引删除后,就等于删除了联合唯一约束。

    更多相关内容
  • MySQL中添加唯一约束和联合唯一约束

    千次阅读 2021-01-19 06:17:13
    在MySQL数据库中,经常会碰到由于业务需要添加唯一键约束,唯一键约束,可以在一个列上添加约束,也可以在多个列上添加唯一约束。一、单列唯一约束在一列上添加唯一约束,主要是让该列在表中只能有唯一的一行,例如...

    在MySQL数据库中,经常会碰到由于业务需要添加唯一键约束,唯一键约束,可以在一个列上添加约束,也可以在多个列上添加唯一约束。

    一、单列唯一约束

    在一列上添加唯一约束,主要是让该列在表中只能有唯一的一行,例如注册邮箱时的邮箱名、手机号等信息,相关操作如下:

    1.建表时加上唯一性约束:

    CREATE TABLE `t_user` (

    `Id` int(11) NOT NULL AUTO_INCREMENT,

    `username` varchar(18) NOT NULL unique,

    `password` varchar(18) NOT NULL,

    PRIMARY KEY (`Id`)

    ) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;

    2.给已经建好的表加上唯一性约束:

    ALTER TABLE `t_user` ADD unique(`username`);

    或者:

    create unique index UserNameIndex on 't_user' ('username');

    二、多列联合唯一约束

    如果业务中要求两个字符联合起了是唯一的,比如“地址”+“名称”是唯一的,这就需要对两列,甚至多列添加联合唯一约束,具体命令如下:

    1.确认表结构

    mysql> show create table jw_resource;

    FIELD          TYPE          COLLATION       NULL    KEY     DEFAULT  Extra           PRIVILEGES            COMMENT

    -------------  ------------  --------------  ------  ------  -------  --------------  --------------------  -------

    id             BIGINT(20)    (NULL)          NO      PRI     (NULL)   AUTO_INCREMENT  SELECT,INSERT,UPDATE

    resource_name  VARCHAR(128)  gbk_chinese_ci  YES             (NULL)                   SELECT,INSERT,UPDATE

    resource_type  TINYINT(4)    (NULL)          YES             (NULL)                   SELECT,INSERT,UPDATE

    2.给resource_name和resource_type添加联合唯一约束:

    mysql>show index from jw_resource;

    mysql>ALTER TABLE jw_resource

    ADD UNIQUE KEY(resource_name, resource_type);

    3.确认表结构添加约束后结果:

    mysql>  show create table jw_resource;

    CREATE TABLE `jw_resource` (

    `id` BIGINT(20) NOT NULL AUTO_INCREMENT,

    `resource_name` VARCHAR(128) DEFAULT NULL,

    `resource_type` TINYINT(4) DEFAULT NULL,

    PRIMARY KEY (`id`),

    UNIQUE KEY `resource_name` (`resource_name`,`resource_type`)

    ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;

    mysql> show index from jw_resource;

    注意:唯一键约束添加后,在建表的元数据中,默认的唯一键约束名称为第一列的名称。

    4.添加约束后,进行插入测试效果:

    msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('aa','11');

    msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('aa','22');

    msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('bb','11');

    msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('aa','11');

    5.删除唯一约束

    mysql> ALTER TABLE jw_resource DROP INDEX `resource_name`;

    mysql>show index from jw_resource;

    注意:唯一键约束添加后,实际上建立了一个索引,将该索引删除后,就等于删除了联合唯一约束。

    展开全文
  • mysql怎么添加唯一约束

    千次阅读 2021-02-04 00:27:20
    2、修改表时,使用“ALTER TABLE 表名 ADD CONSTRAINT 唯一约束名 UNIQUE(列名);”语句来添加。(推荐教程:mysql视频教程)MySQL 唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一...

    方法:1、创建表时,使用“CREATE TABLE 表名(字段名 数据类型 UNIQUE);”语句来添加;2、修改表时,使用“ALTER TABLE 表名 ADD CONSTRAINT 唯一约束名 UNIQUE(列名);”语句来添加。

    afca767d8f3b8347170a59fc1415e340.png

    (推荐教程:mysql视频教程)

    MySQL 唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为‘0001’,那么该表中就不能出现另一条记录的 id 值也为‘0001’。

    唯一约束与主键约束相似的是它们都可以确保列的唯一性。不同的是,唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值。而主键约束在一个表中只能有一个,且不允许有空值。比如,在用户信息表中,为了避免表中用户名重名,可以把用户名设置为唯一约束。

    在创建表时设置唯一约束

    唯一约束可以在创建表时直接设置,通常设置在除了主键以外的其它列上。

    在定义完列之后直接使用 UNIQUE 关键字指定唯一约束,语法格式如下:CREATE TABLE ( UNIQUE);

    例 1

    创建数据表 tb_dept2,指定部门的名称唯一,SQL 语句和运行结果如下所示。mysql> CREATE TABLE tb_dept2

    -> (

    -> id INT(11) PRIMARY KEY,

    -> name VARCHAR(22) UNIQUE,

    -> location VARCHAR(50)

    -> );

    Query OK, 0 rows affected (0.37 sec)

    mysql> DESC tb_dept2;

    +----------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +----------+-------------+------+-----+---------+-------+

    | id | int(11) | NO | PRI | NULL | |

    | name | varchar(40) | YES | UNI | NULL | |

    | location | varchar(50) | YES | | NULL | |

    +----------+-------------+------+-----+---------+-------+

    3 rows in set (0.08 sec)

    在修改表时添加唯一约束

    在修改表时添加唯一约束的语法格式为:ALTER TABLE ADD CONSTRAINT UNIQUE();

    例 2

    修改数据表 tb_dept1,指定部门的名称唯一,SQL 语句和运行结果如下所示。mysql> ALTER TABLE tb_dept1

    -> ADD CONSTRAINT unique_name UNIQUE(name);

    Query OK, 0 rows affected (0.63 sec)

    Records: 0 Duplicates: 0 Warnings: 0

    mysql> DESC tb_dept1;

    +----------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +----------+-------------+------+-----+---------+-------+

    | id | int(11) | NO | PRI | NULL | |

    | name | varchar(22) | NO | UNI | NULL | |

    | location | varchar(50) | YES | | NULL | |

    +----------+-------------+------+-----+---------+-------+

    3 rows in set (0.00 sec)

    展开全文
  • mysql多字段唯一约束

    千次阅读 2021-01-19 01:34:34
    MySQL唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。在创建表时设置唯一约束在定义完列之后直接使用 UNIQUE 关键字指定唯一约束,语法规则如下: ...

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

    00f04d11b925f8cc0e266d67ca27837f.png

    在创建表时设置唯一约束

    在定义完列之后直接使用 UNIQUE 关键字指定唯一约束,语法规则如下: UNIQUE

    创建数据表 tb_dept2,指定部门的名称唯一,输入的 SQL 语句和运行结果如下所示。mysql> CREATE TABLE tb_dept2

    -> (

    -> id INT(11) PRIMARY KEY,

    -> name VARCHAR(22) UNIQUE,

    -> location VARCHAR(50)

    -> );

    Query OK, 0 rows affected (0.37 sec)

    mysql> DESC tb_dept2;

    +----------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +----------+-------------+------+-----+---------+-------+

    | id | int(11) | NO | PRI | NULL | |

    | name | varchar(40) | YES | UNI | NULL | |

    | location | varchar(50) | YES | | NULL | |

    +----------+-------------+------+-----+---------+-------+

    3 rows in set (0.08 sec)

    提示:UNIQUE 和 PRIMARY KEY 的区别:一个表可以有多个字段声明为 UNIQUE,但只能有一个 PRIMARY KEY 声明;声明为 PRIMAY KEY 的列不允许有空值,但是声明为 UNIQUE 的字段允许空值的存在。

    在修改表时添加唯一约束

    在修改表时添加唯一约束的语法格式为:ALTER TABLE ADD CONSTRAINT UNIQUE();

    修改数据表 tb_dept1,指定部门的名称唯一,输入的 SQL 语句和运行结果如下所示。mysql> ALTER TABLE tb_dept1

    -> ADD CONSTRAINT unique_name UNIQUE(name);

    Query OK, 0 rows affected (0.63 sec)

    Records: 0 Duplicates: 0 Warnings: 0

    mysql> DESC tb_dept1;

    +----------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +----------+-------------+------+-----+---------+-------+

    | id | int(11) | NO | PRI | NULL | |

    | name | varchar(22) | NO | UNI | NULL | |

    | location | varchar(50) | YES | | NULL | |

    +----------+-------------+------+-----+---------+-------+

    3 rows in set (0.00 sec)

    假设有一个需求是用户给评论点赞,数据库设计是三张表,用户表t_user,评论表t_comment,点赞表t_praise,其中点赞表中有两个外键分别是user_id和comment_id,分别关联用户表的用户id和评论表的评论id,然后规定一个用户只能给同一条评论点赞一次,有一种实现方式就是在插入点赞表之前,先通过user_id和comment_id查询是否有点赞记录,如果没有的话,再执行插入操作,否则返回您已经点过赞了.这样实现的话就会多一次数据库查询操作.更好的实现是,修改点赞表的user_id和comment_id为唯一约束,即这两列不能同时相同,这样在执行插入操作的话,如果已经点过赞了,数据库会抛出违反了唯一键约束,这样的话,就可以避免多一次数据库查询操作了.具体设置多列为唯一约束的语句是:UNIQUE KEY (,...,)CREATE TABLE `t_praise` (

    `id` int(12) unsigned NOT NULL AUTO_INCREMENT,

    `comment_id` int(12) NOT NULL,

    `user_id` int(12) NOT NULL,

    KEY `FK_t_praise_comment` (`comment_id`),

    KEY `FK_t_praise_user` (`user_id`),

    UNIQUE KEY `UK_praise` (`comment_id`,`user_id`)

    )

    展开全文
  • mysql 为表字段增加唯一约束

    千次阅读 2018-04-23 17:37:05
    为表中的字段增加唯一约束 alter table add unique(字段名称) 或 alter table add CONSTRAINT 约束名称 UNIQUE (column1,column2)
  • oracle添加唯一约束

    万次阅读 2022-01-19 14:31:18
    唯一约束指表中一个字段或者多个字段联合起来可以唯一标识一条记录的约束。 联合字段中,可以包括空值。 注:在Oracle中,唯一约束最多能够有32列。 唯一约束能够在创建表时或使用ALTER TABLE语句创建。 ...
  • MySQL添加唯一约束和联合唯一约束(建表后添加)
  • 唯一约束 UNIQUE KEY

    2021-02-26 12:52:12
    什么是唯一约束Unique Key:它是 MySQL 中的唯一约束,是指在所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为...
  • 表创建完成后增加唯一约束的语法格式: ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE 【CLUSTERED|NON CLUSTERED】(列名[…n]) 默认约束: 表创建完成后增加默认约束的语法格式: ALTER TABLE 表名 ADD ...
  • MySQL增加、查看、删除唯一约束

    千次阅读 2018-08-08 14:16:31
    1、增加唯一约束: alter table tableName add unique(column_name)   2、查看唯一性约束 show keys from tableName; 从里面可以找到需要删除字段的Key_name。 3、删除唯一性约束 然后可以使用DROP ...
  • 如何为MySQL中的多列指定唯一约束

    千次阅读 2021-01-19 10:00:00
    如何为MySQL中的多列指定唯一约束?我有一张桌子:table votes (id,user,email,address,primary key(id),);现在我想使列用户,电子邮件,地址唯一(一起)。我如何在MySql中执行此操作?当然这个例子只是......一个...
  • 违反约束的不正确数据,将无法插入到表中。今天先看三种: 1、主键 primary key 2、非空 not null 3、唯一 unique 1、主键约束 1)特点:不重复、唯一、非空 2)语法格式:3种方法添加主键约束 # 方式1...
  • 数据库中创建unique唯一约束

    千次阅读 2021-02-07 06:34:31
    实现唯一约束还可以不是主键的unique。oracle中的unique约束是用来保证表中的某一类,或者表中的某一类组合起来不重复的一种手段。我们在可以在创建表时或者创建好后通过修改表的方式来创建oracle中的unique约束。...
  • SQLServer增删改查,创建主键约束、唯一约束、外键约束 SQL语句顺序如下: SELECT 子句 FROM 子句 where 子句 group by 子句 having 子句 order by 子句
  • SQLServer中给表增加组合唯一约束

    千次阅读 2017-07-02 13:38:29
    将两个或者多个字段一起约束成一个唯一约束 1 alter table 表名 add constraint 约束名 unique (列名1,列名2)
  • MySQL字段唯一约束唯一索引

    千次阅读 2021-09-03 08:28:39
    唯一约束和唯一索引,都可以实现数据列的唯一性,列值可以为null(允许存在多个null值) 创建唯一性约束,会自动创建一个同名的唯一索引,这个索引不能够单独删除,删除唯一约束会自动删除索引。唯一约束是通过唯一...
  • sql添加唯一约束

    万次阅读 2018-05-31 10:15:58
    alter table [protectionZone]add constraint cons_02 unique (zoneName)
  • Mysql给某列添加唯一约束

    千次阅读 2020-09-03 17:18:15
    Mysql给某列添加唯一约束
  • MySQL主键约束唯一约束

    千次阅读 2021-01-19 09:04:25
    唯一约束的字段可以为NULL唯一约束对含有NULL的记录不起作用,即可以重复加入含有NULL的记录,主键字段不能为NULLmysql-workbench无法创建多字段唯一约束,可以在命令行手工增加增加多字段唯一性性约束mysql...
  • 数据库中怎么设置字段的唯一约束?小编有多喜欢你,可能程度也不深,大概就是想和你过完这不长不短的一生。1. 建表时加上唯一性约束 CREATE TABLE `t_user` ( `Id` int(11) NOT NULL AUTO_INCREMENT, 自增 `username...
  • day 06 非空约束、唯一约束、主键约束、外键约束

    千次阅读 多人点赞 2022-03-29 12:31:20
    由于sql语句不区分大小写,为了书写方便,本文所有命令统一使用小写 ...约束就是在创建表的时候,给表中的字段加上一些约束,来保证这个表中数据的完整性、有效性!!! 约束的作用就是为了保证:表中的数据有...
  • 字段名 数据类型 unique 也可以在定义完所有列之后指定唯一约束,语法如下:constraint unique ()create table tb_dept ( id int(11) primary key, name varchar(22), location varchar(50), constraint sth unique...
  • 文章目录1、约束简介2、非空约束(not null、nk)2.1 范例1:使用非空约束2.2 范例2:正确地增加语句2.3 范例3:错误地增加语句3、唯一约束(unique、uk)3.1 范例1:使用唯一约束3.2 范例2:正确地增加语句3.3 范例3:...
  • 目录primary key主建auto_increment自增约束如果说我们创建表的时候,忘记创建主键约束如何删除主键修改主键约束唯一约束删除唯一约束modify添加注意not null非空约束default默认约束foreigin_key 外键约束 ...
  • 给数据库表添加唯一约束

    千次阅读 2020-10-28 16:36:51
    给数据库表添加唯一约束(就是一个字段不能重复) ALTER TABLE t_admin STRAINT uq_loginAcct UNIQUE (loginAcct) t_admin :表名 uq_loginAcct :约束名(随便起) loginAcct:添加约束的字段 给数据库表撤销唯一...
  • 4. 联合唯一约束 from sqlalchemy import * test = Table ( 'test' , metadata , Column ( 'id' , BigInteger , primary = True ) , Column ( 'col1' , String ( 20 ) ) , Column ( 'col2' ,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,548
精华内容 52,619
关键字:

无法增加唯一约束