主键:主键是一张表的唯一标识符,应该让其处于不可被外界更改状态。

且主键对于用户来说是无意义的,为了明确这一点,我们应该让主键处于一种幽魂状态,即主键存在,但其他人并不感觉到它存在。

外键:创建外键是为了在数据表之间建立联系。一个外键一般而言在他自身的主表中是唯一的,我这里经常就使用主表的主键作为从表的外键。

何谓主表,从表?

user表中有字段

id            int            11            not null        主键

name      varchar    20            not null        普通字段

message表中有字段

id               int            11            not null        主键

content      varchar    20            not null        普通字段

userId        int            11            null               外键

上方有两张表,其中user表就是主表,而message表即是从表。

添加外键的时候应该注意如下规则:

1、添加外键的数据库引擎必须为InnoDB

2、关联的字段数据类型必须一样,如上方两张表中的关联都是int类型

3、知道表与表之间的主从关系,需要在从表中添加外键

4、从表中的关联字段数据,在主表中需要是唯一的,我这里一般就使用主表的主键

5、创建外键的时候,需要先建立索引。索引的目的是为了更快地进行搜寻。当然,如果没有在主表里面建立索引,那么可能在从表中创建外键的时候出现错误。

6、如果有多张表需要创建外键,那么外键的名字也必须是唯一的,且不区分大小写。

使用navicat for mysql创建外键时,需要选择删除更新的关系:

.cascade方式

在父表上update/delete记录时,同步update/delete掉子表的匹配记录

. set null方式

在父表上update/delete记录时,将子表上匹配记录的列设为null

要注意子表的外键列不能为not null

. No action方式

如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

. Restrict方式

同no action, 都是立即检查外键约束

mysql可视化创建外键说明_关于使用可视化图形工具navicat for mysql来创建外键的步骤...相关推荐

  1. mysql 图形界面外键_关于使用可视化图形工具navicat for mysql来创建外键的步骤

    主键:主键是一张表的唯一标识符,应该让其处于不可被外界更改状态. 且主键对于用户来说是无意义的,为了明确这一点,我们应该让主键处于一种幽魂状态,即主键存在,但其他人并不感觉到它存在. 外键:创建外键是 ...

  2. oracle图形工具创建作业,oracle入门(2)—— 使用图形工具navicat for oracle

    [本文介绍] 本文将介绍如何使用图形工具navicat for oracle连接本地数据库 以及远程访问 服务器数据库. [下载地址] [11G版本访问本地数据库] 安装navicat for ora ...

  3. mysql加锁分析 何登成_何登成的技术博客 ? MySQL 加锁处理分析

    背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题.我在工作过程中,经常会有同事咨询这方面的问题.同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题.本文,准备 ...

  4. mysql分页查询出租房屋信息_分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)...

    分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目时一个简单的运用eclipse ...

  5. linux mysql 怎么启动客服端_脚本之家教你linux如何启动mysql服务教程图解 linux启动mysql服务命令是什么...

    mysql数据库是一种开放源代码的关系型数据库管理系统,有很多朋友都在使用.一些在linux系统上安装了mysql数据库的朋友,却不知道该如何对mysql数据库进行配置.那么linux该如何启动mys ...

  6. mysql数据库管理工具(navicat for mysql) 10.1.7 绿色中文版

    最新版navicat for mysql,自带注册码.已经绿化,解压到任意目录就可运行. 下载地址:http://www.cr173.com/soft/38153.html Navicat Premi ...

  7. 权限表使用联合主键吗_天天写 order by,你知道Mysql底层执行流程吗?

    前言 在实际的开发中一定会碰到根据某个字段进行排序后来显示结果的需求,但是你真的理解order by在 Mysql 底层是如何执行的吗? 假设你要查询城市是苏州的所有人名字,并且按照姓名进行排序返回前 ...

  8. MySQL工作中的实际用_总结工作中经常用到的mysql基础知识

    总结工作中经常用到的mysql基础知识 发布时间:2020-06-08 11:27:30 来源:51CTO 阅读:217 作者:三月 本文主要给大家介绍工作中经常用到的mysql基础知识,文章内容都是 ...

  9. mysql底层用什么写的_天天写order by,你知道Mysql底层如何执行吗?

    前言在实际的开发中一定会碰到根据某个字段进行排序后来显示结果的需求,但是你真的理解order by在 Mysql 底层是如何执行的吗? 假设你要查询城市是苏州的所有人名字,并且按照姓名进行排序返回前 ...

最新文章

  1. oracle数据如何获取游标中动态字段_如何实现报表数据的动态层次钻取(二)
  2. 独家 | 基于数据预测的解释真的能增加用户对人工智能的信任吗?(附链接)...
  3. 为 UWP 应用提供的 .NET 网络 API
  4. JQuery-学习笔记02【基础——JQuery选择器】
  5. 可网管交换机与非网管交换机的区别
  6. detectron2 demo cuda10.0 py3.6
  7. java与python数据结构对比
  8. 5G 商用时,我们所处的智能城市会是什么样?
  9. mysql当执行delete语句时备份_mysql中,执行delete语句时出现Lock wait timeout exceeded问题...
  10. 修改cas5成功html文件,手把手教Apereo CAS5.2.3 Server端 增量开发 自定义登录页,增加验证码,注册,修改密码等功能的方式...
  11. Android Studio实现 历史上的今天
  12. 【报错】android.database.sqlite.SQLiteException: no such column: id (code 1): , while compiling: select
  13. 计算机网络期末课后题模2运算CRC
  14. 简单分析暴风影音的最新0DAY菜鸟版
  15. 关于本公众号科研交流群(微信群)的说明
  16. 微软开始彻底封杀IE浏览器
  17. 畅游陈德文:中国网游的发展与未来趋势
  18. 将svg图标转换成iconfont图标
  19. django-simple-sso, django-auth-ldap, python-ldap 单点登录(一)
  20. 如何做出一个微信小程序

热门文章

  1. react-redux-store
  2. 11,一道关于栈内存分配的题目
  3. 土豪聪要请客(题解)
  4. javascript进阶——Ajax
  5. [设想]增加比较的多元运算符
  6. hdu2063 二分图的匈牙利匹配
  7. 时序数据库timescaleDB安装
  8. Ubuntu中恢复rm命令误删文件
  9. 【SQLServer】
  10. iOS 最新App提交上架流程及部分问题的解决方案2016.12.21,感谢原博主!!!