MYSQL——表约束条件,表之间的三种关系,表记录的增删改查操作
一、表的约束条件
1、约束条件与数据类型的宽度一样,都是可选参数
作用:用于保证数据的完整性和一致性
2、主键primary key是innodb存储引擎组织数据的依据,innodb称之为索引(索引是一种树状结构)组织表,一张表中必须有且只有一个主键
ps: 无 primary key字段 ,无not null+unique
就会自动生成一个隐藏字段,
所以建立表的时候要有id字段,不为空且唯一的结构建立主键
作用:加速查询,表结构,表数据文件
# not null default
create table t1(x int not null);
insert into t1 values();
create table t2(x int not null default 111);
insert into t2 values();
# unique
# 单列唯一
create table t3(name varchar(10) unique);
insert into t3 values("egon");
insert into t3 values("tom");
mysql> insert into t3 values("egon");
ERROR 1062 (23000): Duplicate entry "egon" for key "name"
# 联合唯一
create table server(
id int,
name varchar(10),
ip varchar(15),
port int,
unique(ip,port),
unique(name)
);
insert into server values (1,"web1","10.10.0.11",8080);
insert into server values (2,"web2","10.10.0.11",8081);
mysql> insert into server values(4,"web4","10.10.0.11",8081);
ERROR 1062 (23000): Duplicate entry "10.10.0.11-8081" for key "ip"
mysql>
# not null 和unique的化学反应=>会被识别成表的主键
create table t4(id int,name varchar(10) not null unique);
create table t5(id int,name varchar(10) unique);
# 主键primary key
# 特点
# 1、主键的约束效果是not null+unique
# 2、innodb表有且只有一个主键,但是该主键可以是联合主键
create table t6(
id int primary key auto_increment,
name varchar(5)
);
insert into t6(name) values
("egon"),
("tom"),
("to1"),
("to2");
# 联合主键(了解)
create table t7(
id int,
name varchar(5),
primary key(id,name)
);

![MYSQL——表约束条件,表之间的三种关系,表记录的增删改查操作[Python常见问题]](https://www.zixueka.com/wp-content/uploads/2023/10/1696934787-f5211a23f16ae7a.jpg)
