一、什么是主键、外键:

关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键

比如

学生表(学号,姓名,性别,班级)

其中每个学生的学号是唯一的,学号就是一个主键

课程表(课程编号,课程名,学分)

其中课程编号是唯一的,课程编号就是一个主键

成绩表(学号,课程号,成绩)

成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键

成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键

同理 成绩表中的课程号是课程表的外键

定义主键和外键主要是为了维护关系数据库的完整性,总结一下:

1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。

身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

二、  主键、外键和索引的区别

sql语句会自动判定查询字段有无索引,继而使用索引去检索

主键、外键和索引的区别?

主键

外键

索引

定义:

唯一标识一条记录,不能有重复的&#

mysql外键必须是主键吗_mysql数据库外键、主键详解相关推荐

  1. mysql in从数据库取数_MySQL数据库中 where in 用法详解

    本文主要向大家介绍了MySQL数据库中 where in 用法详解,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 这里分两种情况来介绍 WHERE column IN (valu ...

  2. mysql数据库定点任务_MySQL数据库Event定时执行任务详解

    一.背景 由于项目的业务是不断往前跑的,所以难免数据库的表的量会越来越庞大,不断的挤占硬盘空间.即使再大的空间也支撑不起业务的增长,所以定期删除不必要的数据是很有必要的.在我们项目中由于不清理数据,一 ...

  3. java 修改mysql数据库表结构_MYSQL数据库表结构优化方法详解

    摘要:这篇MySQL栏目下的"MYSQL数据库表结构优化方法详解",介绍的技术点是"mysql数据库表结构.MySQL数据库.数据库表结构.MySQL.据库表结构.数据库 ...

  4. mysql密码高级_MySQL数据库高级操作(图文详解)

    数据表高级操作 准备工作:安装MySQL数据库 create database CLASS; use CLASS; create table TEST (id int not null,name ch ...

  5. mysql中数据库字段类型长度_Mysql数据库字段数据类型、长度详解

    一.数值类型 列类型 需要的存储量 TINYINT 1 字节 SMALLINT 2 个字节 MEDIUMINT 3 个字节 INT 4 个字节 INTEGER 4 个字节 BIGINT 8 个字节 F ...

  6. linux下mysql数据库基础及客户端命令详解

    linux下mysql数据库基础及客户端命令详解 1.mysql数据库存储引擎: SHOW ENGINES;   #查看mysql支持的存储引擎 常见有如下两个存储引擎: MyISAM:每表三个文件: ...

  7. mysql修改级联表数据_MySQL数据库 外键,级联, 修改表的操作

    1.外键: 用来建立两张表之间的关系 - 一对多 - 多对多 - 一对一 研究表与表之间的关系: 1.定义一张 员工部门表 id, name, gender, dep_name, dep_desc - ...

  8. mysql 外键(foreign key)的详解和实例_MySQL数据库外键

    设置外键 外键及功能:成绩表(参照表也叫子表)中的学号来自学生表(被参照表也叫父表),成绩表中的课程号来自课程表:当要删除或更新被参照表中的给字段的值时,参照表该字段的值如何改变.在on delete ...

  9. mysql数据库教程 外键_MySQL数据库外键

    设置外键 外键及功能:成绩表(参照表也叫子表)中的学号来自学生表(被参照表也叫父表),成绩表中的课程号来自课程表:当要删除或更新被参照表中的给字段的值时,参照表该字段的值如何改变.在on delete ...

  10. 创建mysql数据库图解_mysql数据库怎么创建外键?(图文+视频)

    本篇文章主要给大家介绍mysql数据库怎么创建外键. 关于mysql数据库外键的基础介绍,我们在这篇文章[Mysql外键是什么?有哪些用处?]中,已经给大家介绍过了,需要的朋友可以选择参考. 了解了外 ...

最新文章

  1. 【POJ】2377 Bad Cowtractors(最大生成树)
  2. 绘制不同光照条件下识别率多项式拟合曲线图(暂未找到最佳拟合曲线)
  3. boost::hana::metafunction_class用法的测试程序
  4. 节后的第一个周末,来领取一个Ipad吧!真香!
  5. 洛谷P2587 [ZJOI2008] 泡泡堂
  6. 【CSWS2014 Main Conference】Some Posters
  7. css3-13 css3的3D动画如何实现
  8. python爬虫下载模块_python爬虫模块之HTML下载模块
  9. bootstrap引入文件方法
  10. 小福利,运用scrapy爬虫框架高效爬取数据和存储数据
  11. Jupyter notebook 运行时出现 “服务似乎挂掉了,但是会立刻重启的”
  12. Cesium学习资源
  13. 2018世界人工智能大会
  14. 数据库SQL实战 --42.将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
  15. 小游戏《塔防》开发(二)
  16. 解决:Flarum完整项目拉取到本地点击任何链接都弹出“请求资源不存在”(报404)
  17. 拉马努金:“与神对话”的数学天才
  18. 新能源汽车三电NVH设计高级技术
  19. 计算机右键截图,杨钦鸿:电脑截图软件哪个好,电脑鼠标右键菜单怎么截图?...
  20. AngularJS之input指令

热门文章

  1. Fact表的星型结构
  2. github桌面版教程
  3. uart串口通信传输协议
  4. 【ros2订阅报错】 ros2 forming pointer to reference type ‘const std::shared_ptr<const sensor_msgs::msg::Las
  5. UNITY实战进阶-科大讯飞TTS(离线语音合成) unity播放PCM格式的wav(不依赖第三方库)-7
  6. 胡浩基人工神经网络(一)
  7. 分布式事务框架_1024开源首发 | 金融级分布式事务框架 TXLE
  8. 2023年教育信息化行业现状及前景:教育信息化市场规模增长至5086.8亿元
  9. java抽奖课程设计_java课程设计-彩票购买抽奖程序
  10. js防止浏览器拦截新窗口弹出