Mysql入门学习笔记(2)----外键约束

空与非空
CREATE TABLE tb2(
username VARCHAR(20) NOT NULL,//不为空
age TINYINT USIGNED NULL//默认为允许为空,此处的NULL可以不写;TINYINT是范围在三位数之内的整数
);

描述列有关知识:

Mysql自动编号(自增)

AUTO_INCREMENT
字段必须是数值型,小数位数必须为0
自动编号,且必须与主键(PRIMARY KEY)结合使用。
默认情况下,起始值为1,每次的增量为1。
PRIMARY KEY
主键约束,每张数据表只能存在一个主键,主键保证记录的唯一性,主键自动为NOT NULL。
当为PRIMARY KEY加上AUTO_INCREMENT自动增长时,可以不为PRIMARY KEY赋值。
PRIMARY KEY允许赋值,但不允许有重复的值。
UNIQUE KEY
唯一约束,唯一约束可以保证记录的唯一性,字段可以为NULL(只能有一个),每张数据表可以存在多个唯一约束。
(PRIMARY KEY是NOT NULL,且一张数据表只能有一个)
DEFAULT
默认值,当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。后接默认的值,DEFAULT 默认值。
(类似无参构造器)

外键约束
例如数据表provinces的id为主键,
那么数据表users添加外键
pid 与id 的类型(包括有无符号位)相同,就可以添加外键
foreign key (pid) references provinces (id)
provinces为父表,users为子表,
参照列为id,外键列为pid
显示索引show indexes from provinces

外键约束的参数操作
变化:foreign key (pid) references provinces (id) on delete cascade
cascade:从父表删除或更新且自动删除或更新子表中匹配的行
附上建表语句:
父表:省份表

create table provinces(
id smallint unsigned primary key auto_increment,
pname varchar(20),
);

子表:

create table users(
id smallint unsigned primary key auto_increment,
usename varchar(10) not null,
pid smallint unsigned,
foreign key (pid) references provinces (id) on delete cascade;//添加外键
);

cascade的作用:
例如我在父表中插入一条记录(其id自动等于1)

insert provinces (pname) value('A')

在子表也插入一条对应的记录

insert users (username,pid) value'Rose',1)

当删除父表中id为1的记录时,外键列种对应id=1的记录将会全部删除

其他的关键字的作用
Mysql入门学习笔记(2)----外键约束_第1张图片

实际开发中,我们很少使用物理的外键约束,而是使用逻辑约束;无理的外键约束只有innoDB这种存储引擎才会支持,MYISAM这种引擎就不支持物理的外键约束。反过来说,当我们使用到的引擎为MYISAM时,只能使用逻辑外键(即两个表的设计的逻辑关系)。

你可能感兴趣的:(Mysql)