6.7 设置主键
6.7.1 什么是唯一
创建了数据库之后,需要想办法能从大量的数据中只确定一个符合条件的记录。例如让每一个会员都有一个独一无二的会员ID。这种‘只会确定一个’的独一无二的状态,称为唯一。
6.7.2 什么是主键
创建唯一记录时,会给列设置一个用于和其他列进行区分的特殊属性。
在这种情况下需要用到的就是主键(PRIMARY KEY)。主键是在多条记录中用于确定一条记录时使用的标识符。
主键的特征:
- 没有重复的值
- 不允许输入空值(NULL)
在创建表的时候设置主键
命令格式:CREATE TABLE 表名 (列名 数据类型 PRIMARY KEY,......);
6.7.3 创建主键
创建表t_pk,其中最为主键列的a为INT类型,列b为VARCHAR(10)类型。
输入:
CREATE TABLE t_pk (a INT PRIMARY KEY,b VARCHAR(10));
执行结果:
Query OK, 0 rows affected (0.03 sec)
检查结果:
mysql> DESC t_pk;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a | int(11) | NO | PRI | NULL | |
| b | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
项目Key中显示的PRI表示主键PRIMARY KEY。另外在项目NULL中,列a显示为NO,这表示不允许输入NULL,即不允许输入空值。
6.7.4 确认主键
首先,向表t_pk中插入值为“1,‘啊’”的记录。
输入&执行结果:
mysql> INSERT INTO t_pk(a,b) VALUES(1,'啊');
Query OK, 1 row affected (0.01 sec)
检查结果:
mysql> SELECT * FROM t_pk;
+---+------+
| a | b |
+---+------+
| 1 | 啊 |
+---+------+
1 row in set (0.00 sec)
检查向列中插入值1或者NULL的情况
输入&执行结果:
mysql> INSERT INTO t_pk(a) VALUES(1);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> INSERT INTO t_pk(a) VALUES(NULL);
ERROR 1048 (23000): Column 'a' cannot be null
因为列a中不允许输入重复的值1和空值NULL,所以会报上述错误。
检查向列中插入值1或者NULL以外的情况
输入&执行结果: