您的位置:首页 > 数据库 > MySQL

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

2017-02-01 14:00 706 查看
空与非空

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的记录将会全部删除

其他的关键字的作用



实际开发中,我们很少使用物理的外键约束,而是使用逻辑约束;无理的外键约束只有innoDB这种存储引擎才会支持,MYISAM这种引擎就不支持物理的外键约束。反过来说,当我们使用到的引擎为MYISAM时,只能使用逻辑外键(即两个表的设计的逻辑关系)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: