Mysql之primary单列主键与复合主键

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相同也可以运行成功,反正就是二者最多只能有一个相同,和联合唯一很相像。

猜你喜欢

转载自blog.csdn.net/m0_50481455/article/details/114147193