资讯专栏INFORMATION COLUMN

MySQL——多表查询

wind5o / 482人阅读

摘要:多表查询笛卡尔积多表查询中,如果没有连接条件,则会产生笛卡尔积数学中的定义假设集合,集合,则两个集合的笛卡尔积为实际运行环境下,应避免使用笛卡尔积解决方案在加入有效的连接条件等值连接连接张表,需要个连接条件主键约束约束当前表中,

多表查询:
select listname from tablename1,tablename2;
笛卡尔积

多表查询中,如果没有连接条件,则会产生笛卡尔积
数学中的定义:假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为
{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}

实际运行环境下,应避免使用笛卡尔积;
解决方案:

在where加入有效的连接条件----->等值连接(连接n张表,需要n-1个连接条件)
select * from employee,department where employee.deptno = department.deptno

主键约束

约束当前表中,指定列的值非空且唯一

外键约束

表A中的外键列的值必须参照表B中的某一列的值

MySQL中,InnoDB支持外键和事务,MyISAM不支持外键和事务

/* 修改表的存储引擎 */
alter table [tablename] engine="InnoDB";
alter table [tablename] engine="MyISAM";

添加外键后:


一般情况下,如果列要使用外键列,可以这样命名:引用表名_引用列名

我们要引用productdir表中的id列
命名;dir_id

在开发中,为了提高性能,会故意删除外键约束,通过代码来控制数据的合理性。

隐式连接

隐式內连接(看不到连接):仅选出两张表中互相匹配的记录

隐式连接缺点:

需要在where条件中加入连接条件,如果忘了写,代码不会报错,但是会产生笛卡尔积

只能做内连接

显示连接 内连接查询:查询效果和隐式内连接相同
select [table.list],[table.list] from [table] join [table] on(连接关系);
 
select e.empno,e.name,d.dname from emp e join dept d on(e.deptno = d.deptno);
/* 连接关系列名相同可以用using */
select e.empno,e.name,d.dname from emp e join dept d using(deptno);
外连接:

左连接:将join左边表全部数据都查询处理啊,join右边表不匹配的数据NULL填充

/* 将左边表所有数据都显示 */
select * from emp left join dept using(deptno);

右连接

全外连接:MySQL暂时不支持

自连接:把一张表看成两张表来做查询

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/49087.html

相关文章

  • Java编程基础32——MySQL多表联查

    摘要:会创建多表及多表的关系多表之间的关系如何来维护添加外键约束从分类表中删除分类为信息删除失败首先得去表删除所有分类商品建数据库原则通常情况下一个项目应用建一个数据库多表之间的建表原则一对多建表原则在多的一方增加一个外键指向一的一方多对多建表原 SQL 会创建多表及多表的关系 1.多表之间的关系如何来维护 添加外键约束: foreign key alter table product...

    TANKING 评论0 收藏0
  • MySQL多表查询

    1. 两张表都有的记录 select * from Table_1 where exists (select Column_2 from Table_2 where Colomn_2=Table_1.Column) 2. 表一有表二没有的记录 select * from Table_1 where not exists (select Column_2 from Table_2 where Co...

    liangdas 评论0 收藏0
  • Oracle总结【SQL细节、多表查询、分组查询、分页】

    摘要:前言在之前已经大概了解过数据库和学过相关的知识点,但是太久没用过了,就基本忘了印象中就只有基本的语句和相关一些概念写下本博文的原因就是记载着一些以前没注意到的知识点以后或许会有用实例与数据库概念数据库服务器由两部分组成实例理解为对象看不见的 前言 在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了...印象中就只有基本的SQL语...

    陈伟 评论0 收藏0
  • MySQL必知必会:组合查询(Union)

    摘要:本文参考必知必会工作实践融合组合查询定义在大多数开发中,使用一条查询就会返回一个结果集。在查询结果集中帮我们自动去除了重复的行重复的行是李四,把两条李四合并了。注意由于在多表组合查询时候,可能表字段并不相同。 本篇文章主要介绍使用Union操作符将多个SELECT查询组合成一个结果集。本文参考《Mysql必知必会》+工作实践融合 组合查询 定义 在大多数开发中,使用一条SELECT查询...

    用户83 评论0 收藏0
  • MySQL必知必会:组合查询(Union)

    摘要:本文参考必知必会工作实践融合组合查询定义在大多数开发中,使用一条查询就会返回一个结果集。在查询结果集中帮我们自动去除了重复的行重复的行是李四,把两条李四合并了。注意由于在多表组合查询时候,可能表字段并不相同。 本篇文章主要介绍使用Union操作符将多个SELECT查询组合成一个结果集。本文参考《Mysql必知必会》+工作实践融合 组合查询 定义 在大多数开发中,使用一条SELECT查询...

    wudengzan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<