数据库-外键

一、外键

定义:让一张表记录的数据不要太过于冗余,在数据库汇中对表的关系进行解耦,尽量让数据的单一化

二、外键作用:

保持数据的一致性和完整性

三、mysql 的存储引擎

(1)MyISAM 默认引擎

(2)innodb (外键需要用到innodb存储格式)

格式:

show table status from 库名 where name=表名

语句:

show table status from dcs where name="student"

截图:

图片

四、查看外键方法

(1)格式:

show create table表名;

语句:

show create table student ;

图片

(2)在navicat上查看外键

图片

五、外键实战

外键:FOREIGN key 单词

(1)在建表的过程中新建外键

f表:

create table f(id int(10) PRIMARY key,name varchar(20))ENGINE=INNODB ;

z表:

create table Z(Zid int(10) PRIMARY key,Zname varchar(20))ENGINE=INNODB ;

s表:

create table s(sid int(10)PRIMARY key,sname varchar(20),CONSTRAINT wj FOREIGN key(sid) REFERENCES f(id))ENGINE=INNODB ;

CONSTRAINT 外键名 ( 自己定义 CONSTRAINT 指定外键名)

FOREIGN key 自己表的字段

REFERENCES 另一张表(关联字段)

截图:

图片

(2)

(3)删除外建

格式:

alter table 表名 drop FOREIGN key 外键名;

语句:

alter table s drop FOREIGN key wj;

截图;

图片

第二种创建外键的方式:

新建两个表:

create table f(id int(10) PRIMARY key,name varchar(20))ENGINE=INNODB ;

create table z(zid int(10) PRIMARY key,zname varchar(20))ENGINE=INNODB ;

设置外键:

语句:

alter table z add CONSTRAINT wjm1 FOREIGN key (zid)

REFERENCES f(id) ;

图片

六、外键特点

1、父表不存在的数据,子表无法插入

图片

2、父表存在的数据,子表才能插入对应的数据

图片

  1. 存在外键,无法直接删除父表的数据,要先删除子表的数据,才能删除父表

语句:

delete from f where id=1;

delete from z where zid=1;

截图:

图片

面试题:

1、什么是外键?

2、外键作用?

3、如何创建外键?两种创建方法

4、如何删除外键?

5、公司使用外键?

a、保证数据的唯一性

b、公司数据量大,造成数据重复,新旧表维护成本大,使用外键进行分类管理,主表和子表单一化,避免数据的冗余

posted @   wu33169  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示