| |
|
开发:
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.创建练习环境1.1创建一个部门表
1.2创建一个员工表
2.多表查询的分类2.1mysql 表子查询2.1.1什么是子查询 subquery.sql子查询是指嵌入在其它 sql 语句中的 select 语句,也叫嵌套查询 2.1.2 单行子查询单行子查询是指只返回一行数据的子查询语句 2.1.3多行子查询多行子查询指返回多行数据的子查询 ,使用关键字 in () 2.1.3.1带in的子查询(在一个查询语句里面套另外一个查询,子查询会返回一个结果给外面的查询) 查询学生生日在91年之后的班级的信息。 select * from classes where cid in (SELECT cno FROM student WHERE birthday > '1991-01-01'); ? 2.1.3.2 xists的子查询 查询学生生日大于91年1月1日,如果记录存在,前面的SQL语句就会执行
2.1.3.3 any的子查询 比较子查询里面的其中一个
? 2.1.3.4 带all的子查询(比它所以的都要<,>,=),也可以在子查询使用MAX
? 2.1.2 多列子查询查询和张三一样的性别和工号
2.2 合并查询? 2.3 多表查询之外连接? 想要那个表中的完整数据就将那个表放在对应的方向 主要应用与两个表中一些没有完全参与某个列的数据,对照之后就会为空,可以明显看出来 ? 2.3.1外连接
? 2.3.2右外连接
? 2.4 约束? 2.4.1主键约束? 2.4.2 not null(非空)? 2.4.3 unique(唯一)? 2.4.4 foreign key(外键)
向刚才做的这两个操作(插入一个没有部门的员工,删除一个带有员工的部门)。这种情况都是不应该发生。这个时候需要在多表之间添加外键约束。 在员工表上面添加外键约束
设置外键为非空
2.4.5 check? 2.4.6 总结练习
2.5 自增长在某张表中,存在一个id列(整数),我们希望在添加记录的时候,该列从1开始,自动的增长,咋么处理? ? ? 细节 ? 2.6内连接2.6.1 显式内连接
2.6.2 隐式内连接 ?
? 内连接和外连接的区别? 3.表复制3.1 自我复制数据(蠕虫复制)为了对某个 sql 语句进行效率测试,我们需要海量数据时,可以使用此法为表创建海量数据 3.1.1 将一个表的内容迁移到另外一个表中首先我们先建立一个表
开始复制
查询结果
? ? 3.1.2 将一个表的结构迁移到另外一个表中
3.1.3自我复制(倍数增加)数据会产生倍数增加
3.2 去重考虑去重 employee_1 的记录
4.表关系4.1表关系概念这里所谓的关系,指的是数据在逻辑上,人赋予的关系。 比如:每一人用户表里面存放用户的重要信息, 再定一个用户信息详细表,用来存放用户的详细信息,这个详细信息表就是用户表的就存在一个一对一的关系 4.2关系分类一对一关系: 如用户表对应用户的详细信息 一对多关系: 如一个学院当中,有若干学生 多对多关系: 如课程和学生之间,一个课程有很多学生,一个学生对应很多课程 4.2.1 一对多关系一对多与多对一是一个概念,指的是一个实体的某个数据与另外一个实体的多个数据有关联关系。 学校中一个学院可以有很多的学生,而一个学生只属于某一个学院(通常情况下),学院与学生之间的关系就是一对多的关系,通过外键关联来实现这种关系。 4.2.2一对一关系一对一关系,指的是一个实体的某个数据与另外一个实体的一个数据有关联关系。 学生表中有学号、姓名、学院,但学生还有些比如电话,家庭住址等比较私密的信息,这些信息不会放在学生表当中,会新建一个学生的详细信息表来存放。这时的学生表和学生的详细信息表两者的关系就是一对一的关系,因为一个学生只有一条详细信息 4.2.3多对多关系多对多关系,一个实体的数据对应另外一个实体的多个数据,另外实体的数据也同样对应当前实体的多个数据。 学生要报名选修课,一个学生可以报名多门课程,一个课程有很多的学生报名,那么学生表和课程表两者就形成了多对多关系。对于多对多关系,需要创建第三张关系表,关系表中通过外键加主键的形式实现这种关系。 这里需要注意的是,在多对多关系中,我们常用中间表来表示 5.数据库三范式5.1第一范式第一范式(1NF):符合1NF的关系中的每个属性都不可再分。1NF是所有关系型数据库的最基本要求 简单来说,就是不能出现多个表头 ? 5.2第二范式第二范式(2NF):2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖 简单来说,只能描述一个对象(主键),其它列名(副键)与对象之间相互完全依赖 ? 5.3第三范式第三范式(3NF):3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖 简单的说,所有的非主属性只在整个数据库里面出现一次,副键与副键之间,不能存在依赖关系 范式的作用是尽可能避免数据的冗余和插入/删除/更新的异常 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/23 23:04:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |