• 中文
    • English
  • 注册
  • 查看作者
  • 2-13:MySQL初涉唯一约束

    一.  前言

    因为主键一张表只有一个,如果想保证唯一性,可以使用UNIQUE KEY(唯一约束)

    二.  UNIQUE KEY

    • 唯一约束
    • 唯一约束可以保证记录的唯一性
    • 唯一约束的字段可以为空值(NULL)(这里比较难以理解:因为既然可以为空值,那么2条或者2条以上的记录如果都为空值,都为空值就是相同的,岂不是违背了唯一性?其实这里存储的时候,多个空值只会保存一个空值,所以并不违背唯一性)
    • 每张数据表可以存在多个唯一约束

    三.  创建唯一约束

    我们创建一个既有主键约束,又有唯一约束的数据表:

    mysql> CREATE TABLE tb5(
        -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        -> username VARCHAR(30) NOT NULL UNIQUE KEY,
        -> age TINYINT UNSIGNED
        -> );
    Query OK, 0 rows affected (0.01 sec)

    查看一下数据表的结构:

    mysql> SHOW COLUMNS FROM tb5;
    +----------+----------------------+------+-----+---------+----------------+
    | Field    | Type                 | Null | Key | Default | Extra          |
    +----------+----------------------+------+-----+---------+----------------+
    | id       | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
    | username | varchar(30)          | NO   | UNI | NULL    |                |
    | age      | tinyint(3) unsigned  | YES  |     | NULL    |                |
    +----------+----------------------+------+-----+---------+----------------+
    3 rows in set (0.01 sec)

    可以看到,id为主键约束,username为唯一约束,我们写入一些记录:

    mysql> INSERT tb5(username,age) VALUES('TOM',22);
    Query OK, 1 row affected (0.01 sec)
    
    mysql> INSERT tb5(username,age) VALUES('TOM',22);
    ERROR 1062 (23000): Duplicate entry 'TOM' for key 'username'

    可以发现username不能重复

  • 0
  • 0
  • 0
  • 4.1k
  • 请登录之后再进行评论

    登录
    单栏布局 侧栏位置: