IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL中三种表关系的建立 -> 正文阅读

[大数据]MySQL中三种表关系的建立

一:约束条件之主键

1.什么是主键?
  • 从约束条件的角度,主键是非空且唯一的字段 not null unique
create table t1(
	id int not null unique,
    name varchar(32)
);
2.主键的特点

主键可以加快数据查询,类似于新华字典的目录

1.InnoDB存储引擎规定,mysql必须有且只有一个主键

2.当表中没有主键字段或者非空且唯一的字段的时候,mysql会自动创建一个隐藏的主键字段

3.如果创建的表中没有主键字段,而有非空且唯一的字段,InnoDB存储引擎会自动将该字段设置为主键

4.创建表的时候都应该有一个’id’字段,并且该字段为主键(eg:udi,sid,eid…)

5.联合主键:几个字段公用一个主键

create table t3(
	nid int,
    sid int,
    primary key(nid, sid)
);

6.主键的自增 auto_increment

  • 该约束条件不能单独使用 必须跟在键后面(主要配合主键一起使用)
  • 自增的特点:自增的操作不会因为删除数据的操作而回退和重置
create table t4(
     id int primary key auto_increment,
     name varchar(32)
        ); 

7.重置主键: truncate 表名; 删除表数据并重置主键值

二:约束条件之外键

1.什么是外键?

专门用来记录表与表之间数据的关系

2.表与表之间数据的关系
  • 1.一对多
  • 2.多对多
  • 3.一对一
  • 4.没有关系
3.如何判断表与表之间的关系
  • 方法:换位思考,即:站在不同的表的角度上分析,看该表与其他表之间是否是一对多关系
4.sql语句建立表关系的顺序
  • 1.先写普通字段
  • 2.再写外键字段
  • 3.先创建被关联的表(没有外键)
  • 4.然后再是关联表(有外键)
5.有外键的表的数据操作
  • 1.插入表数据的时候 针对外键字段只能填写被关联表字段已经出现过的数据值
  • 2.被关联字段无法修改和删除
  • 级联更新、级联删除 被关联数据一旦变动 关联的数据同步变动

三:三种关系表的建立

1.一对多
1.什么是一对多表关系?

如下图:员工表中的每一条员工数据只能对应部门表中的一条部门数据,而部门表中的每一条部门数据够对应员工表中的多条员工数据,这种关系就是一对多的表关系。

2.图示:

在这里插入图片描述

3.sql语句创建一对多表关系

外键建在多的一方

create table dep(
	id int primary key auto_increment,
    name varchar(32)
);

create table emp(
	id int primary key auto_increment,
    name varchar(32),
    dep_id int,
    foreign key(dep_id) references dep(id)
    on update cascade
    on delete cascade
);
2.多对多
1.什么是多对多表关系?

如下图所示:书籍表中的每一条书籍数据可以对应作者表中的多条作者数据,而作者表中的一条作者数据也能对应书籍表中的多条书籍数据,这种关系就是多对多的关系

2.图示:

在这里插入图片描述

3.sql语句创建多对多表关系

需要单独创建第三张表来存储这种关系,外键建在第三张表中

create table Book(
	id int primary key auto_increment,
    name varchar(32)
);

create table Author(
	id int primary key auto_increment,
    name varchar(32)
);

create table Author2Book(
	id int primary key auto_increment,
    author_id int,
    foreign key(author_id) references Author(id)
    on update cascade
    on delete cascade,
    book_id int,
    foreign key(book_id) references Book(id)
    on update cascade
    on delete cascade
);
3.一对一
1.什么是一对一表关系?

如下图所示:用户表中的每一条数据只能对应用户详情表中的一条数据,用户详情表中的每一条数据也只能对应用户表中的一条数据,这种关系就是一对一

2.图示:

在这里插入图片描述

3.sql语句创建多对多表关系

外键建在任意一方都可以,建议建在调用频率高的一方

create table user(
	id int primary key auto_increment,
    name varchar(32),
    detial_id int unique,
    foreign key(detial_id) references user_detial(id)
    on update cascade
    on delete cascade
);

create table user_detial(
	id int primary key auto_increment,
    age int,
    phone bigint
);
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:12:48  更:2022-08-19 19:14:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 18:11:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码