Mysql入门学习笔记(2)----外键约束
2017-02-01 14:00
706 查看
空与非空
CREATE TABLE tb2(
username VARCHAR(20) NOT NULL,//不为空
age TINYINT USIGNED NULL//默认为允许为空,此处的NULL可以不写;TINYINT是范围在三位数之内的整数
);
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
显示索引
外键约束的参数操作
变化:foreign key (pid) references provinces (id) on delete cascade
cascade:从父表删除或更新且自动删除或更新子表中匹配的行
附上建表语句:
父表:省份表
子表:
cascade的作用:
例如我在父表中插入一条记录(其id自动等于1)
在子表也插入一条对应的记录
当删除父表中id为1的记录时,外键列种对应id=1的记录将会全部删除
其他的关键字的作用
![](https://img-blog.csdn.net/20170201142747323?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVGFuZ3pvbmd5dTEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
实际开发中,我们很少使用物理的外键约束,而是使用逻辑约束;无理的外键约束只有innoDB这种存储引擎才会支持,MYISAM这种引擎就不支持物理的外键约束。反过来说,当我们使用到的引擎为MYISAM时,只能使用逻辑外键(即两个表的设计的逻辑关系)。
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时,只能使用逻辑外键(即两个表的设计的逻辑关系)。
相关文章推荐
- MySQL学习笔记(9)之外键约束
- MySQL学习笔记--DQL、DML、DDL、TCL语句,约束(主键、外键)
- LINUX下QT+MYSQL学习笔记-基本入门过程
- mysql入门学习笔记(一)
- MySQL入门学习笔记(一)
- MySql学习笔记(三)SQL简单入门语句--Fenby摘抄笔记
- mysql学习笔记--插入日期--case--ifnull--if--lower、upper--concat--建立外键关联表
- MySQL学习笔记4:完整性约束
- MySQL学习笔记(3)——约束条件
- [入门]MySQL学习笔记二数据的增删改查
- MySQL学习笔记(五)删除约束、修改列及修改名称
- MySQL学习笔记之一 MySQL入门
- MySQL学习笔记4:完整性约束限制字段
- MySQL学习笔记之中的一个 MySQL入门
- MySQL学习笔记20151007数据类型主键外键多对多设计思想
- MySQL学习笔记(四)修改数据表约束
- MySQL学习笔记 第一讲:介绍和入门
- [MySql学习笔记]一 入门
- MySQL学习笔记4:完整性约束
- MySQL学习笔记——约束