- primary key ■ 用于设定主键。 ■ 主键就是一个表中数据的“关键值”,通过该关键值就可以找到该特定的数据行。 ■ 一个表的主键值不能重复(相等) ,比如文章表中的文章编号id, 比如用户表中的用户名。 ■ 主键字段必须有值(不能为空)。 ■ 一个表只能有一个主键(但一个主键可以是1个字段或2个以上的字段联合构成)
- 主键设置的几种形式 mysql> create table test (id int primary key, name varchar(10)); mysql> desc test; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(10) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ mysql> create table test (id int, name varchar(10), primary key(id)); mysql> desc test; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(10) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+
- 多字段主键的含义及设定
- 含义:表结构里面不能通过一个字段作为定位主键,需要多个字段组合才能定位数据。
- 设定:数据样例(成绩表),通过学生ID与科目作为联合主键查询学生每科成绩:
| 学生ID | 科目 | 成绩 | | ---- | ---- | ---- | | 1 | mysql | 90 | | 2 | php | 88 | | 1 | js | 70 | | 2 | ios | 89 |
mysql> create table test (id int, subject varchar(20), score tinyint unsigned, primary key(id, subject)); mysql> desc test; +---------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | subject | varchar(20) | NO | PRI | NULL | | | score | tinyint(3) unsigned | YES | | NULL | | +---------+---------------------+------+-----+---------+-------+ 3 rows in set (0.02 sec) 上面创建的表中就有两个主键值了,分别为 id subject,注意看 Key 那一栏的 PRI 标识,查询就通过两个主键值查询即可,这里只是简单举例,实战还得自己看用于什么场景。