MySQL数据库的详解(2)

1、一对多

定义

  • 案例:员工表为子表,部门表为父表
  • 一对多关系实现:在数据库表中多的一方,添加字段,来关联一的一方的主键。

    外键语法

    -- 创建表时指定
    create table 表名(
    字段名    数据类型,
    ...
    [constraint]   [外键名称]  foreign  key (外键字段名)   references   主表 (字段名) 
    );
    -- 建完表后,添加外键
    alter table  表名  add constraint  外键名称  foreign key (外键字段名) references  主表(字段名);

    外键约束

    物理外键

  • 概念:使用 foreign key 定义外键关联另外一张表。
  • 缺点:
    1. 影响增、删、改的效率(需要检查外键关系)。
    2. 仅用于单节点数据库,不适用与分布式、集群场景。
    3. 容易引发数据库的死锁问题,消耗性能。

逻辑外键(推荐)

  • 概念:在业务层逻辑中,解决外键关联。
  • 通过逻辑外键,就可以很方便的解决上述问题。

2、一对一

定义

  • 案例: 用户 与 身份证信息 的关系
  • 关系: 一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他字段放在另一张表中,以提升操作效率
  • 实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)

3、多对多

  • 案例: 学生 与 课程的关系
  • 关系: 一个学生可以选修多门课程,一门课程也可以供多个学生选择
  • 实现:建立第三张中间表,中间表至少包括两个外键,分别关联两方主键

4、多表查询

介绍

  • 多表查询: 指从多张表中查询数据
  • 笛卡尔积: 笛卡尔乘积是指在数学中,两个集合(A集合 和 B集合)的所有组合情况(在多表查询时,需要消除无效的笛卡尔积

内连接

语法

  • 隐式内连接:select 字段列表 from 表1 , 表2 where 条件 … ;
  • 显式内连接:select 字段列表 from 表1 [ inner ] join 表2 on 连接条件 … ;
来自上海
博客文章均为Ferryman.原创,转载请注明文章地址及作者
如有需要,可通过RSS订阅文章
有任何问题,可以在评论区留言哦~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇