首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL数据库】多表关系与多表联合查询

目录 MySQL多表关系 一对一 一对多 多对多 MySQL外键约束 创建外键 数据插入 删除 多表联合查询 交叉连接查询 内连接查询 外连接查询 子查询关键字 自关联 MySQL多表关系 MySQL...添加主表数据 -- 注意必须先给主表添加数据 添加从表数据 -- 注意给从表添加数据时,外键列值不能随便写,必须依赖主表主键列 删除 主表数据被从表依赖时,不能删除,否则可以删除 从表数据可以随便删除...多表联合查询 交叉连接查询 • 交叉连接查询返回被连接两个表所有数据笛卡尔积 • 笛卡尔积 可以理解为一张表每一行去和另外一张表任意一行进行匹配...• 假如 A 表有 m 行数据, B 表有 n 行数据,则返回 m*n 行数据 • 笛卡尔积会产生很多冗余数据,后期其他查询可以在该集合基础上进行条件筛选...返回数据类型 单行单列:返回是一个具体列内容,可以理解为一个单值数据; 单行多列:返回一行数据中多个列内容; 多行单列:返回多行记录之中同一列内容,相当于给出了一个操作范围; 多行多列:查询返回结果是一张临时表

2.8K20

MySQL数据库】多表关系与多表联合查询

​​目录MySQL多表关系一对一一对多多对多MySQL外键约束创建外键数据插入删除多表联合查询交叉连接查询内连接查询外连接查询子查询关键字自关联MySQL多表关系MySQL表与表之间三种关系一对多关系...在多一方建立外外键指向一一方​编辑多对多 下表为多对多关系,由下表可知多对多关系中间表至少需要2个外键​编辑 MySQL外键约束创建外键 格式: constraint foreign...-- 注意必须先给主表添加数据添加从表数据 -- 注意给从表添加数据时,外键列值不能随便写,必须依赖主表主键列删除主表数据被从表依赖时,不能删除,否则可以删除从表数据可以随便删除多表联合查询​编辑...交叉连接查询 •交叉连接查询返回被连接两个表所有数据笛卡尔积 •笛卡尔积可以理解为一张表每一行去和另外一张表任意一行进行匹配 •假如A表有m行数据,B表有n行数据,则返回m*n行数据 •笛卡尔积会产生很多冗余数据...返回数据类型单行单列:返回是一个具体列内容,可以理解为一个单值数据;单行多列:返回一行数据中多个列内容;多行单列:返回多行记录之中同一列内容,相当于给出了一个操作范围;多行多列:查询返回结果是一张临时表

3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mysql 删除语句多表关联_MySQL多表关联数据同时删除sql语句

    大家好,又见面了,我是你们朋友全栈君。 MySQL多表关联数据同时删除sql语句 有需要朋友可参考。 DELETE删除多表数据,怎样才能同时删除多个关联表数据呢?...t1中把那些id值在数据表t2里有匹配记录全删除掉1 代码如下 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或 DELETE FROM t1 USING t1,t2...WHERE t1.id=t2.id 2、从数据表t1里在数据表t2里没有匹配记录查找出来并删除掉1 代码如下 DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id....id IS NULL 或 DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 3、 从两个表中找出相同记录数据并把两个表中数据都删除掉...(MYSQL 版本不小于5.0在5.0中是可以) 上述语句改 写成1 代码如下 delete table_name,table2_name from table_name as t1 left join

    4.8K10

    MySQL多表联查

    左外连接           规则:以左边表为准,右边如果没有对应记录用null显示           语法: select * from 表1 left join 表2 on 表1.公共字段=表...2.公共字段 3.右外连接           规则:以右边表为准,左边如果没有对应记录用null显示           语法: select * from 表1 right join 表2...              语法: 1.自然内连接(natural join) MySQL> select * from stuinfo natural join stumarks; 2.自然左外连接...(natural left join) mysql> select * from stuinfo natural left join stumarks; 3.自然右外连接(natural right join...6.using                     using用来指定连接字段 mysql> select * from stuinfo inner join stumarks using(stuno

    1.1K20

    MySQL多表练习、查询以及多表关系

    多表 一、多表概述 1. 多表简介 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(product)、订单表(orders)等多张表。...且这些表数据之间存在一定关系,接下来我们将在单表基础上,一起学习多表方面的知识。 2....多表创建流程 设计表:设计相关多个表; 创建表并设置主外键关系: 方式一:创建表时设置多张表之间关系; 方式二:创建表之后,再设置表之间关系 3....一对一关系:(了解) 在实际开发中应用不多.因为一对一可以创建成一张表.如果非要设计成一对一表关系,多半是为了解耦,提高灵活度.如QQ号跟QQ信息详情,会员信息跟用户信息 二、多表入门案例...,要注意数据categroy_id字段值要跟category表中cid值相对应,如果插入category_id,在category表中cid没有对应则无法插入成功.

    2.6K20

    mysql多表查询分类

    多表查询分类 分类1:等值连接 vs 非等值连接 1....employees.department_id = departments.department_id; [在这里插入图片描述] 拓展1:多个连接条件与 AND 操作符 [在这里插入图片描述] 拓展2:区分重复列名...阿里开发规范: 【强制】对于数据库中表记录查询和变更,只要涉及多个表,都需要在列名前加表别名(或 表名)进行限定。...说明:对多表进行查询记录、更新记录、删除记录时,如果对操作列没有限定表别名(或表名),并且操作列在多个表中存在时,就会抛异常。...(或表名)限制,正常运行两年后,最近在 某个表中增加一个同名字段,在预发布环境做数据库变更后,线上查询语句出现出 1052 异常:Column 'name' in field list is ambiguous

    2.3K40

    处理MySQL 重复数据记录

    有些 MySQL 数据表中可能存在重复记录,有些情况我们允许重复数据存在,但有时候我们也需要删除这些重复数据。 本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中重复数据。...---- 防止表中出现重复数据 你可以在 MySQL 数据表中设置指定字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据唯一性。...HAVING子句设置重复数大于1。 ---- 过滤重复数据 如果你需要读取不重复数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。...mysql> SELECT DISTINCT last_name, first_name -> FROM person_tbl; 你也可以使用 GROUP BY 来读取数据表中不重复数据mysql...如果你想删除数据表中重复数据,你可以使用以下SQL语句: mysql> CREATE TABLE tmp SELECT last_name, first_name, sex FROM person_tbl

    3.3K00

    MySQL数据查询之多表查询

    )   全连接查询:是在内连接基础上增加 左右两边没有显示数据   注意: mysql并不支持全连接 full JOIN 关键字   注意: 但是mysql 提供了 UNION 关键字.使用 UNION...:UNION 会去掉重复数据,而 UNION ALL 则直接显示结果 示例 复制条件多表查询 1....注:插入数据时,先插入主表中数据,再插入从表中数据。 删除数据时,先删除从表中数据,再删除主表中数据。...create table t2( id int(10) not null primary key ); 注意: 主键这一行数据不能重复且不能为空。 还有一种特殊主键——复合主键。...alter table t4 add unique id_name(id,name); //删除唯一约束 alter table t4 drop index id_name; 注意: 当INSERT语句新插入数据和已有数据重复时候

    8.2K20

    mysql 多表查询

    SQL语言中,可以通过UNION 或 ALL将多个SELECT语句查询结果合并输出,这两个关键字使用说明如下: UNION:利用该关键字可以将多个SELECT 语句查询结果合并输出,并删除重复行...ALL:利用该关键字可以将多个SELECT 语句查询结果合并输出,但不会删除重复行 在使用UNION或ALL关键字将多个表合并输出时,查询结果必须具有相同结构并且数据类型必须兼容,另外使用UNION...SQL表达式,subquery包含某结果集子查询 多表嵌套查询原理:无论是多少张表进行嵌套,表与表之间一定存在某种关联,通过WHERE子句建立此种关联实现查询 六、嵌套查询在查询统计中应用 实现多表查询时...利用SQL语句中UNION,可以将不同表中符合条件数据信息显示在同一列中。...on a.id=b.id WHERE b.id=(SELECT id FROM tb_demo065 WHERE tb_demo065.name=’$_POST[text]’) 总之,实现表与表之间关联本质是两表之间存在共同数据项或者相同数据

    5.6K10

    数据MySQL-多表查询

    1.2 多表查询 1.2.1 内连接 规则:返回两个表公共记录 语法: -- 语法一 select * from 表1 inner join 表2 on 表1.公共字段=表2.公共字段 -- 语法二...1.2.3 右外连接 规则:以右边表为准,左边如果没有对应记录用null显示 语法: select * from 表1 right join 表2 on 表1.公共字段=表2.公共字段 例题: mysql...2、如果没有同名字段就返回笛卡尔积 3、同名连接字段只显示一个,并且将该字段放在最前面 1.2.6 using using用来指定连接字段 mysql> select * from stuinfo...,优化规则和自然连接是一样; 1.2.7 练习 1、显示地区及每个地区参加笔试的人数,并按人数降序排列 -- 第一步: 显示地区及每个地区参加笔试的人数 mysql> select stuaddress...| | 北京 | | 天津 | | NULL | +------------+ 6 rows in set (0.00 sec) -- 第二步:去重复

    10.4K10

    Mysql数据库-多表查询案例

    Mysql数据库-多表查询案例 我们在公司开发中,根据不同业务需求往往需要通过2张及以上表中去查询需要数据。所以我们有必要学习2张及以上查询。其实不管是几张表查询,都是有规律可循。...准备数据 -- 部门表 CREATE TABLE dept ( id INT PRIMARY KEY PRIMARY KEY, -- 部门id dname VARCHAR(50), -- 部门名称...JOIN salarygrade s ON e.job_id=j.id AND e.dept_id=d.id AND e.salary BETWEEN s.losalary AND hisalary; 多表查询规律总结...不管我们查询几张表,表连接查询会产出笛卡尔积,我们需要消除笛卡尔积,拿到正确数据。...(条件数量=表数量-1),每张表都要参与进来 多表连接查询步骤:3.1. 确定要查询哪些表 3.2. 确定表连接条件 3.3. 确定查询字段 2.4 练习4 查询经理信息。

    4.6K20

    MySQL多表查询

    首先,为了方便说明问题,创建两个表emp(雇员信息)和dept(雇员部门信息),其数据如下: 在之前博客中,我们分享了单表查询方法,但是在实际应用中,我们要查数据很可能不在同一个表中...多表查询如果不加任何条件,得到结果称为笛卡尔积。 例如,查找雇员名、雇员工资以及部门所在名字。...3.显示每个部门信息(部门名、编号、地址)和人员数量 这里有两种方法可以使用,但是经验证,当数据非常多时候from子查询效率是高于多表查询。...删除表中重复记录 已知一个表tt中有重复数据 创建一张空表tmp_tt,空表结构与表tt结构相同;create table tmp_tt like tt; 将tt表进行distinct,将数据导入空表中...,可以使用union,union all集合操作符 union操作符用于取得两个结果并集,并再自动去掉重复行 查找工资大于2500和职位Manger的人 2. union all 与

    3.1K30

    MySQL多表查询

    浅记sql中多表查询相关语法 笛卡尔积 单表查询:select * from table1; 多表查询:select *from table1,table2; id name age status...女 3 禁止 2 李四 12 1 女 2 受限 2 李四 12 1 女 1 正常 3 王五 1 1 男 3 禁止 3 王五 1 1 男 2 受限 3 王五 1 1 男 1 正常 直接采用这种方法进行多表查询...在多表查询时,需要消掉无效笛卡尔积。...左外连接:查询左表所有数据,以及两张表交集部分数据。 右外连接:查询右表所有数据,以及两张表交集部分数据。 自连接:当前表与自身连接查询,必须使用表别名。....; 加不加all区别是: 加all:直接将查询结果合并,不去重 没all:将查询结果合并后去重,没有重复项 #示例,直接将查询结果合并 select * from user where id>

    21720

    MySQL多表查询

    MySQL多表查询 交叉连接查询 语法:selectfrom 表1 cross join 表2; 或  selectfrom 表1,表2; 这样查询到结果为两个表中所有数据乘积即笛卡尔积...内连接查询: 注意:要查询表,查询条件,查询字段。...隐式内连接:使用where条件消除无用数据 select * from emp,dept where emp.dept_id = dept.id; 查询emp表和dept表中dept_id和id相等数据...如果左表某条记录在右表中没有匹配,则在右表中显示为空。(在左表基础上,符合条件右表数据,也就是交集部分)。...如果右表某条记录在左表中没有匹配,则左表将返回空值。 (在右表基础上,符合条件左表数据,也就是交集部分)。

    3.2K10
    领券