• 中文
    • English
  • 注册
  • 赞助本站

    • 支付宝
    • 微信
    • QQ

    感谢一直支持本站的所有人!

    • 查看作者
    • 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
    • 2.6k
    • 请登录之后再进行评论

      登录
    • 做任务
    • 实时动态
    • 偏好设置
    • 返回顶部
    • 单栏布局 侧栏位置: