首页 > 数据库 >MYSQL学习笔记22: 多表查询

MYSQL学习笔记22: 多表查询

时间:2024-03-09 15:12:26浏览次数:33  
标签:多表 22 连接 查询 dept emp MYSQL id select

多表查询


单表查询

查询emp表

select * from emp;

查询dept表

select * from dept;

笛卡尔积(全组合)

#emp表有4条记录, dept表有6条记录
#笛卡尔积有4*6=24条记录
select * from emp,dept;

消除无效的笛卡尔积 (emp和dept通过dept_id连接)
select * from emp,dept     
where emp.dept_id = dept.id;


多表查询分类


  • 连接查询

  • 子查询


连接查询

  • 内连接

    • 相当于查询A,B交集部分的数据 ($A∩B$)
    • 隐式内连接
    • 显式内连接
  • 外连接

    • 左外连接: 查询左表所有数据, 以及两张表交集部分的数据

    • 右外连接: 查询右表所有数据,以及两张表交集部分的数据

  • 自联接

    • 当前表与自身的连接查询, 自联接必须使用表别名

内连接

查询两张表的交集部分
  • 隐式内连接
select 字段列表 from 表1, 表2 where 条件...;

查询

#查询每一个员工姓名,以及关联的部门名称
select emp.name, dept.name from emp, dept
    where dept_id = dept.id;

通过别名简化查询

select e.name '员工名称', d.name '部门名称'
    from emp e,
         dept d
    where e.id = d.id;


  • 显式内连接
#inner关键字可以省略
select 字段列表 from 表1 [inner] join 表2 on 连接条件...;

查询

select e.name '员工名称', d.name '部门名称'  
    from emp e  
    inner join dept d  
    on e.dept_id = d.id;
#inner关键字可以省略,结果是相同的
select e.name '员工名称', d.name '部门名称'
    from emp e
    join dept d
    on e.dept_id = d.id;


外连接

左外连接

查询表1(左表)的所有数据, 包含表1和表2交集部分的数据

#outer关键字可以省略
select 字段列表 from 表1 left [outer] join 表2 on 条件...;

左外连接

select * from emp e
    left outer join dept d
    on e.dept_id = d.id;

右外连接

查询表1(右表)的所有数据, 包含表1和表2交集部分的数据

#outer关键字可以省略
select 字段列表 from 表1 right[outer] join 表2 on 条件...;

左外连接

select * from dept d
    left outer join emp e
    on d.id = e.dept_id;

包含了左表中存在, 右表中为空的字段(市场部,财务部,销售部)

标签:多表,22,连接,查询,dept,emp,MYSQL,id,select
From: https://www.cnblogs.com/HIK4RU44/p/18062724

相关文章

  • 代码随想录 第十六天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树
    leetcode:104.二叉树的最大深度-力扣(LeetCode)思路:递归判断每次左右节点的是否存在,存在自然加一,return的1就是这样,判断子节点的左右两端是否有节点,统计有的节点数量,也就是左右的高度classSolution{publicintmaxDepth(TreeNoderoot){//后序遍历if......
  • MySQL 入门指南
    目录1.简介和基础概念1.1.MySQL是什么?1.2.数据库管理系统(DBMS)的基本概念1.3.SQL(StructuredQueryLanguage)的作用和重要性2.安装和配置MySQL2.1.在Linux下使用Docker进行MySQL的安装和配置2.2.Windows、MacOS下的安装步骤(待补充)3.SQL基础3.1.SQL的基本语法......
  • ubuntu22.04编译创龙T113-i mini的SDK
    ubuntu版本22.04.11.解压安装包拷贝sdk并解压出来,注意安装包较大请预留好硬盘空间2.预安装编译应用先安装如下应用,在编译过程中需要使用到的依赖sudoaptinstallbuild-essentialcmakeflexbisonu-boot-toolsopenssllibssl-devtexinfo3.安装和更换python2编译使......
  • MYSQl学习笔记19: 外键约束
    外键约束用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性具有外键的表(emp)称为子表外键关联的表(dept)称为父表外键约束创建表时添加createtable表名(字段名数据类型,[constrain][外键名称]foreignkey(外键字段名)references主表(主表......
  • MYSQL学习笔记20: 外键约束(删除/更新行为)
    外键约束删除/更新行为setdefault在mysql的默认引擎innodb中不支持CASCADEaltertable表名addconstraint外键名称foreignkey(外键字段)references主表名(主表字段名)onupdatecascadeondeletecascade;建立外键约束#如果父表和子表建立外键的字段有不同的......
  • MYSQL学习笔记17: 流程控制函数(IF, CASE)
    流程控制函数(IF,CASE)ifselectif(true,'ok','error');selectif(false,'ok','error');/*相当于iftrue:ok;else:error;*/ifnullselectifnull('ok','default');selectifnull(......
  • MYSQL学习笔记18: 约束
    约束约束是作用于表中字段上的规则,用于限制存储在表中的数据.保证表中的正确性,有效性和完整性约束作用于表中字段上,可以在建表和修改表时为表添加约束按照需求创建表,并创建约束createtableusers(idintprimarykeyauto_incrementcomment'主键',n......
  • MYSQL学习笔记15: 数值函数
    数值函数ceil向上取整(并不是四舍五入)selectceil(1.5);selectceil(2.1);floor向下取整selectfloor(3.9);selectfloor(2.0);mod取模(余数)selectmod(7,4);rand0-1的随机小数,不包括0和1selectrand();round四舍五入#参数2:保留的......
  • MYSQL学习笔记16: 日期函数
    日期函数返回当前日期selectcurdate();返回当前时间(24小时制)selectcurtime();返回当前日期+时间selectnow();YEAR,MONTH,DAY获取当前时间对应的年月日selectyear(now());selectmonth(now());selectday(now());在制定日期上增加时间后的日期......
  • MYSQL学习笔记9: DQL排序查询(升降序)
    DQL排序查询select字段列表from表名orderby字段1排序方式1,字段2排序方式2;排序方式ASC升序(默认)DESC降序如果是多字段排序,第一个字段值相同,会根据第二个字段的值进行排序,以此类推按年龄降序排序select*fromworkersorderbyagedesc;......