通常说到外键,只会提到“外键的目标

是确定资料的参考完整性(referential integrity)。”,但是外键详细

包含哪些动作和意思

呢?

1、配置

外链:

(1)、议决

create table建立

外键:

看2行代码,是建表中的命令:

create table city(

......

key idx_fk_country_id (country_id),

constraint fk_city_country Foreign Key(country_id) Referencescountry(country_id) on DELETE restrictON update cascade ON Delete cascade)...

注:ON update cascade ON Delete cascade级联更新和级联删除。

通常在配置

外链时,都会先配置

外链字段的索引,如上:key idx_fk_country_id (country_id),但这不是非必需的,上面代码中:

key idx_fk_country_id (country_id),

constraint fk_city_country

这些是能够

省去的,直接从FOREIGN KEY开始。当然,假如

要给外链命名,则constraint 是必须要

的,

假如

没有key idx_fk_country_id (country_id),这行时,在配置

外链后,mysql会自动加上key索引(即准则

index索引).能够

在建完表后用show create table city;来查看。

(2)、议决

alter table建立

外键:——留心

命令中不是用 modify。而是add

ALTER TABLE city ADD INDEX idx_city(countryid);

ALTER TABLE cityADD CONSTRAINT fk_city_country FOREIGN KEY (countryid) REFERENCES country(country_id) ON DELETE CASCADE;

2、删除外键:

ALTER TABLE tbname DROP FOREIGN KEY fk_fkname;

但是假如

定义时没有指定CONSTRAINT fk_fkname(即外键符号)时该如何

删除呢?别急,没有指定时,MySQL会自身

建立

一个,能够

议决

以下命令查看:SHOW CREATE TABLE tbname;然后再执行上面的命令。

3、外链的详细

动作:

留心

,on DELETE restrict和on DELETE cascade不能

同时定义

默认动作1:

当添加

子表中外键值时,假如

父表主键不存在该值时,则禁止插入。

默认动作2:

当主表删除某记载

时,假如

子表有对应该录的内容时,禁止删除

因此,上面的能够

on DELETE restrict略去。

非默认动作——级联更新:

当父表更新主键时,假如

子表有对应记载

,则自动更新子表,这一动作用ON update cascade来实现。

非默认动作——级联删除:

当父表更新主键时,假如

子表有对应记载

,则自动更新子表,这一动作用ON Delete cascade来实现。

4、外键的其它参数:

a、set null : 示意

父表在更新或删除时,子表对应的字段被set null.

b、no action : 和restrict相似

,限定

在子表相关

联记载

的情况下父表不能

更新。

5、临时关上

外键检验

常用于:

A、导入多个表数据时,须要

忽略之前表的导入顺序,

B、执行LOAD DATA和ALTER TABLE操作时。

命令:

set foreign_key_checks=0

完成之后,重新开启外键检验

用set foreign_key_checks=1;来还原

mysql外链删除_清理mysql外链的意思 和命令相关推荐

  1. mysql百万数据删除_【MySQL】删除大量数据的具体实现

    ourmysql博客中提供了 <大表删除数据的思路>,对于大表依据主键删除的思路是必须的,删除几千万的数据还算是比较简单的,如果你的数据库中的表高达数百亿条记录 ,删除其中的几十亿,就需要 ...

  2. Mysql报错1091解决办法_关于MYSQL:外键删除后,查询表发现外键依旧存在,再删一次会报错:原因及相关解决办法...

    1.创建表test6:外键名为test3_fk mysql> create table test6( -> id int, -> test_name varchar(32), -&g ...

  3. mysql中有主键和外键吗_谈谈mysql的主键和外键

    主键:保证数据的唯一性,非空且唯一,一般设置主键的语法为:字段 类型 PRIMARY KEY;或者 字段 类型,PRIMARY KEY(字段名) 外键:保证数据的完整性,一致性.一般设置的外键关联的是 ...

  4. mysql数据库级联删除_怎样对数据库进行级联删除?

    众所周知,数据库软件有级联删除和更新的功能.所谓级联删除和更新是说,如果两个表之间使用了主键与外键的关系约束,当对主键表的记录进行更新或者删除操作时,如果是更新,则自动将外键表的记录自动更新,如果是删 ...

  5. mysql安装错误删除_清除后无法重新安装mysql-server

    我最近刚刚安装了Ubuntu 16.04.我还通过apt-get install安装了mysql-server和mysql-client(默认版本为5.7.12). 因为5.7.12显示了一些问题,所 ...

  6. 在mysql中能够删除一列的是什么_mysql数据库中命令行下常用命令的操作(增、删、改、查)和数据类型...

    连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 创建数据库:create database [库名] 显示所有数据库: show databases; 打开数据库:use [ ...

  7. 关于mysql的一些问题_关于mysql的一些细节问题

    1. MySQL删除有外键约束的表 当删除的表中的字段被用作了其他表的外键,因此在删除这个表(父表)之前必须先删除具有外键的表(子表).也就是说,删除表的过程需要和创建表的过程一致. 但如果数据库表格 ...

  8. mysql数据生产数据分析_基于MySQL玩转SQL数据分析课程 互联网数据分析师-SQL数据分析实战视频教程...

    基于MySQL玩转SQL数据分析课程 互联网数据分析师-SQL数据分析实战视频教程 课程目录 (1)SQL与数Ju分析;目录中文件数:23个 (1) 开课-课时3SQL与数Ju库的价值.flv (2) ...

  9. mysql 5.6参数_初识 MySQL 5.6 新功能、参数

    摘要: MySQL5.6 针对 MySQL5.5 各个方面又提升了很多,特别在性能和一些新参数上面,现在看看大致提升了哪些方面(后续不定时更新). 一:性能.功能上的提升. ① 在线DDL即 onli ...

最新文章

  1. html的body内标签之input系列1
  2. spyder安装_windows10 Anaconda3安装教程
  3. ASP.NET 2.0的异步页面刷新真给劲
  4. 一次 Nacos 的踩坑记录!
  5. 基础练习 龟兔赛跑预测
  6. 上海一百多个数据中心每年消耗全市1.6%的电,将优胜劣汰
  7. [OS复习]进程管理2
  8. mysql用户管理+pymysql模块
  9. 讨论群问题:Linux 下的批量操作,第2种很赞
  10. (68)FPGA面试题-使用不同的代码实现2:1 MUX ?使用assign语句
  11. 【图像去噪】基于matlab维纳滤波图像去噪【含Matlab源码 725期】
  12. C# WinForm调用UnityWebPlayer Control控件 学习笔记1
  13. 小程序练习 - rawData和userInfo
  14. promise兼容性问题
  15. 小程序加载不出来图片
  16. Hellow Python之打包 exe 文件超级试错
  17. 服务器v3 v4性能,至强E5 v4性能表现测试
  18. bigdecimal转换为long_BigDecimal与Long、int之间的相互转换
  19. 【MySQL】存储过程与存储函数
  20. Jmeter-Beanshell取样器举例描述常用方法及使用场景

热门文章

  1. 全球名校AI课程库(28)| MIT麻省理工 · 基因组学机器学习课程『Machine Learning for Genomics』
  2. 8月8日,今天是个好日子。
  3. 电信物联网开放平台对接流程
  4. 对于JAVA中count=count++的理解
  5. dubbox发布http的注意事项
  6. Nuget 相关命令 使用vscode安装nuget插件之后出现错误
  7. Mangos付魔公式代码
  8. 学云计算需要什么基础 如何能掌握核心技术
  9. 基于python-tkinter的答题系统
  10. 使用贷款基础利率LPR购房