怎么掌握mysql多表操作


本篇内容主要讲解“怎么掌握mysql多表操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么掌握mysql多表操作”吧!一对一(一般是合并表),
一对多/多对一(部门和员工),
多对多(学生和课程)--用中间表专门用于多表关系的约束
通过主表的主键来控制从表的外键1、主表必须已经存在,或者正在创建
2、必须要给主表设置主键列
3、主键不能包括空值,但是外键可以包括空值
4、在主表的表名后面指定的列明或者列名的组合。 这个列或列的组合必须是主表的主键或者候选键
5、外键中列的数目必须和主键中列的数目相同
6、外键中列的数据类型必须和主键中对应列的数据类型相同
• 创建外键约束 foreign key
在创建表之前添加外键约束
在创建表之后添加外键约束1、数据插入:
要先给主表添加约束
从表添加约束要依赖于主表,主表没有的数据不能添加
2、数据删除
主表的数据被从表依赖时,不能删除,否则可以删除
从表的数据可以任意删除eg:删除之后,表与表之间就没有关系了
语法:• 多对多关系-构建外键约束
A表的一行对应B表的多行,B表的一行对应A表的多行,这时候需要再重新建立一个中间表,记录表关系
注意:
修改和删除时,中间从表可以随便删除和修改,但是两边从表手主表依赖的数据不能删除或者修改。• 概念
就是同时 查询两个或者两个以上的表,因为有时候用户在查看数据的时候,需要显示的数据来自多张表• 数据准备
注意:
外键约束只对数据的增删改起作用,对于数据查询没有影响• 交叉连接查询 select * from A ,B;---会产生冗余数据1、交叉连接查询返回返回被连接的两个表所有数据行的笛卡尔积
2、笛卡尔集可以理解为一张表的每一行去和另外一张表的任意一行进行匹配
3、假如A表有 m 行数据,B表有 n 行数据,则返回 m * n 行数据
4、笛卡尔积会产生很多冗余的数据,后期的其他查询可以在该集合的基础上进行条件筛选求的是两个表之间的交集
inner 可以省略隐式内连接(SQL92标准):显式内连接(SQL99标准);还可以给表起别名,如;还可以给表起别名,如;
分为:(outer可以 省略)
左外连接left outer join、右外连接right outer join、满外连接full outer join注意:
Oracle 里面有 full join ,可是在mysql 对 full join 支持的不好,我们可以使用 union来达到目的
----外连接查询
----查询哪些部门有员工,哪些部门没有员工----查询哪些员工有对应的部门,哪些没有----使用 union 关键字实现左外连接和右外连接的并集----外连接查询
----查询哪些部门有员工,哪些部门没有员工----外连接多个表----查询哪些员工有对应的部门,哪些没有----实现满外连接: full join
----使用 union 关键字实现左外连接和右外连接的并集
----select * from dept3 a full join emp3 b on a.deptno = b.dept_id; --不能执行----union是将两个查询结果上下拼接,并去重----union 开发云主机域名all 是将两个查询结果上下拼接,不去重• 基本子查询
• 子查询关键字-ALL
• 子查询关键字-ANY ,SOME
• 子查询关键字-IN
• 子查询关键字-EXISTS
• 自关联查询到此,相信大家对“怎么掌握mysql多表操作”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: MySQL中join的有几种算法

这篇文章主要介绍了MySQL中join的有几种算法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们经常在多表查询的时候使用join 去连接多个表,其实join的效率比不好还是应该尽量避免使用的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/28 17:33
下一篇 06/28 17:33

相关推荐