Mysql之primary主键
存储引擎(innodb):对于innodb存储引擎来说,一张表必须有一个主键。
1.单列主键
创建一个表:
create table t17(
id int primary key,
name char(16)
)
往表内插入数据:
insert into t17 values
(1,'egon'),
(2,'elex')
运行,插入成功,我们来看下表:
再插入一条数据:
insert into t17 values(2,'elx')
运行——报错:
因为id设置了主键,已经存在了(这里类似unique)。
注:如果这样创建表 表也会显示为primary
create table t18(
id int not null unique,
name char(16)
)
如果不设置id,继续插入数据:
insert into t17(name) values('wxx')
运行,查看数据:
运行一次,name为’wxx’的id是0,但是运行第二次时候,就会报错,因为已经存在了:
2.复合主键
复合主键和unique的联合唯一很像,下边我们来看看。
创建一个表:
create table t19(
ip char(16),
port int,
primary key(ip,PORT)
)
输入插入语句,往表内插入数据:
insert into t19 values('192.168.11.10',80),('192.168.11.10',80)
运行——报错:
因为插入的两个内容相同,所以会报错。下边我们修改下:
insert into t19 values('192.168.11.10',80),('192.168.11.10',81)
运行成功,我们来看下表内容:
这里二者port不同,运行成功。若ip不同port相同也可以运行成功,反正就是二者最多只能有一个相同,和联合唯一很相像。