首页 > 其他分享 >第十四天笔记(外键)

第十四天笔记(外键)

时间:2024-07-23 11:31:17浏览次数:12  
标签:父表 笔记 第十四天 外键 key table 子表 数据

数据库之外键

==========================、

一、外键的介绍

1、外键的定义

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

2、外键的作用

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

3、msyql 数据库中的存储引擎?

myisam (默认)

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

4、查看存储引擎

格式:show table status from 库名 where name='表名' ;

案例:show table status from hz017 where name='student2' ;

5、存储类型:myisam (默认)

5、查看外键方法:

(1)在navicat中查看

(2)

格式:show create table 表名;

案例:show create table cc

==================================================

二、外键运用

(一)建表时创建外键

(1)创建 engine=INNODB 格式

格式:
REFERENCES 父表(父表字段)) engine=INNODB ;
CREATE table 表名 (字段名 字段类型(字符长度) PRIMARY key , 字段名 字符类型(字符长度) ,constraint 外键名 FOREIGN key(子表字段);

案例:

父表

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

子表

CREATE table cc (cid int(10) PRIMARY key ,cname VARCHAR(20) ,constraint wj FOREIGN key(cid)
REFERENCES ss(id)) engine=INNODB ;

constraint 外键 名 (指定外键名)

FOREIGN key 子表字段 指定的字段

REFERENCES 父表(父表字段) 引用外部表的主键

(二)建表以后再添加外键

格式:

alter TABLE 子表 add CONSTRAINT 外建名 FOREIGN key (子表字段) REFERENCES 父表(父表字段)

(1)新建两个表

父表

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

子表

create table yy (yid int(10) PRIMARY key ,yame varchar(20))engine=INNODB ;

select * from xx ;
SELECT * from yy;
show create table yy;

alter TABLE yy add CONSTRAINT wjm FOREIGN key (yid) REFERENCES xx(id)

==============================================================================

删除外键:

格式:ALTER TABLE 表名 drop foreign key 外键名;

案例:ALTER TABLE yy drop foreign key wjm ;

=======================================================================

外键特点:

外键实际操作:

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

2、父表中存在的数据,子表就可以插入数据(插入数据)

3、删除数据,子表中存在的数据,直接删除父表是无法删除 (要先删除子表数据,在删除父表数据)

4、删除父表的数据,先删除子表,在删除父表

{{uploading-image-539099.png(uploading...)}}

=========================================

面试题:

1、什么是外键?

2、外键作用?

3、如何创建外键?

4、如何删除外键

5、公司中为什么使用外键?

(1)保存数据的一致性和完整性

(2)公司数据量大,造成数据重复,新旧表维护成本大,使用外键让公司数据进行分类和管理,让基础数据放在主表,子表单一化,避免数据的冗余

标签:父表,笔记,第十四天,外键,key,table,子表,数据
From: https://www.cnblogs.com/fujintao/p/18317934

相关文章

  • 408考研笔记
     数据结构:https://flowus.cn/ashore/share/8243f80d-fbef-4d33-b9b1-a8d8bded8cde?code=MDPDQ4 计算机操作系统:https://flowus.cn/ashore/share/c70a6c3f-b745-4ede-8b05-e54ad50556b6?code=MDPDQ4 计算机组成原理:https://flowus.cn/ashore/share/e606f06d-c10c-4963......
  • Linux随堂笔记
    以点开头的文件是隐藏文件,ls-a查看~家目录-rw-------,1rootroot907Jul1816:58anaconda-ks.cfg"-rw-------"表示文件权限,其中"-"表示普通文件,"rw-"表示所有者有读写权限,"---"表示组和其他用户没有任何权限。"1"表示文件的硬连接数。"rootroot"分别表示所有者和所属......
  • protobuf 随笔记录
    一:抓包,将得到的protobuf数据的hex保存为bin文件,后续使用一下代码,将得到的乱码数据打印出来对应的类型importblackboxprotobufwithopen("pb.bin","rb")asf:data=f.read()parsed_data=blackboxprotobuf.decode_message(data)二:得到的类型数据如下:({'1':1,'2':20,......
  • datasets(HuggingFace)学习笔记
    一、概述(1)datasets使用ApacheArrow格式,使得加载数据集没有内存限制(2)datasets的重要模块:load_dataset:用于加载原始数据文件load_from_disk:用于加载Arrow数据文件DatasetDict:用于操作多个数据集,保存、加载、处理等Dataset:用于操作单个数据集,保存、加载、处理等二、数据......
  • Docker 笔记 - Docker 容器重启策略 --restart 介绍和实战
    https://zhuanlan.zhihu.com/p/494370957 1.Docker容器的重启策略目的为了保证容器运行时健壮性(自愈),Docker提供了容器重启策略,即使用参数--restart,它可以让容器在退出时自动尝试重启。场景Docker容器的重启策略一般用于生产环境,开发环境和实验环境可以忽略。例如使......
  • bash 笔记
    这一篇的内容,太乱了。以后再整理:把熟悉的内容删掉。不熟悉的内容放到前面。#bash:exportHOME=$PWDexportPS1="$"更简短把home把当前目录设置为home,目的是缩短命令提示符前面的内容。看起来更简短。zcatlabevents.csv.gz|awk-F',''($5==50912......
  • Python学习笔记42:游戏篇之外星人入侵(三)
    前言在之前我们已经创建好了目录,并且编写好了游戏入口的模块。今天的内容主要是讲讲需求的分析以及项目各模块的代码初步编写。在正式编写代码前,碎碎念几句。在正式编写一个项目代码之前,实际是有很多工作要做的。就项目而言,简单的定项,需求对齐,项目架构设计,实际的代码编写,......
  • 学习笔记-MyBatis 的使用
    目录为什么要用MyBatis?传统的JDBC七个步骤优化JDBC操作优化空间什么是MyBatis?使用MyBatis1.引入第三方依赖2.修改配置3.创建Mapper层(Dao层)4.写SQL映射文件测试注册Mapper层映射文件设置带参方法优化MyBatis操作过程Service业务层Controlle......
  • 【笔记】生成函数 · 进阶(EGF)
    写在前面本文除了例题@.1P4389付公主的背包使用OGF其她的均为EGF0约定0.1一些形象的表达收缩:指一个式子由比较复杂的形式变简单。本文中大概率就是指一个生成函数用封闭形式来表达;多项式的平移:对于任意一个多项式\(A(x)\),向左平移\(m\)位指\(\left(A(x)-\s......