MySQL之连接查询

1.内连接:只列出匹配的记录
  语法:
    SELECT … FROM join_table
   INNER JOIN join_table2
   ON join_condition
   WHERE where_defnition
 解释:只列出这些连接表中与连接条件相匹配的数据行。INNER可以不写,则默认为内连接。[ON join_condition]里面写的是连接的条件。
 举例:
    select e.name,d.name from employee e inner join department d on e.dept_id=d.id;(常用)
    等价于:
    select e.name,d.name from employee e join department d on e.dept_id=d.id;(常用)
    等价于:
    select e.name,d.name from employee e,department d where e.dept_id=d.id;

2.外连接:
  左外连接(LEFT [OUTER] JOIN)
  右外连接(RIGHT [OUTER] JOIN)
  全外连接(FULL [OUTER] JOIN) 注:MySQL5.1的版本暂不支持
  解释:不仅列出与连接条件(on)相匹配的行,还列出左表table1(左外连接)、或右表table2(右外连接)、或两个表(全外连接)中所有符合WHERE过滤条件的数据行。一般都是用左连接或者外连接.其中,[OUTER]部分可以不写,(LEFT | RIGHT | FULL)部分要写其中一个。
  2.1 左外连接:左表列出全部,右表只列出匹配的记录。
  举例:
    SELECT m.`name` ,b.name from sys_menu m LEFT OUTER JOIN sys_button b ON m.id=b.menuId
  等价于:
    SELECT m.`name` ,b.name from sys_menu m LEFT JOIN sys_button b ON m.id=b.menuId

  2.2 右外连接 :右表列出全部,左表只列出匹配的记录。
  举例:
    SELECT m.`name` ,b.name from sys_menu m RIGHT JOIN sys_button b ON m.id=b.menuId
  等价于:
    SELECT m.`name` ,b.name from sys_menu m RIGHT OUTER JOIN sys_button b ON m.id=b.menuId

3 交叉连接:
解释:假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}
其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
等价于:(荐)
SELECT … FROM table1, table2;
4.自连接:
解释:参与连接的表都是同一张表。(通过给表取别名虚拟出两张表)
注:非常重要,在JavaWeb中的目录树中用的特别多。(使用什么连接由需求而定)
举例:
SELECT m.`name` parent ,m2.`name` c from sys_menu m LEFT JOIN sys_menu m2 on m.id=m2.parentId
说明: 查询当前所有菜单的名称以及其子菜单的名称

时间: 2024-10-18 15:54:07

MySQL之连接查询的相关文章

【mysql】连接查询

连接查询: 将多个表的记录连接起来 [mysql]连接查询

Mysql 表连接查询

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

MySQL常见连接查询

在实际应用中,由于不同的业务需求,一般的select查询语句无法满足要求.所以就需要了解一些MySQL的高级查询方式 内连接 inner join 典型的连接查询,有相等(=)连接和不等(<>)连接.如:现在有产品表及供应商表 产品表: 供应商表: 如果现在有个需求:查询产品表中产品对应的供应商公司名称及地址.那么就可以根据产品表中的供应商ID进行连接查询 这样根据两个表中供应商ID相同的条件,就查询出想要的数据.注:连接查询默认为inner join,所以inner可省略不写 左连接 lef

Mysql表连接查询

原文地址: https://www.cnblogs.com/qiuqiuqiu/p/6442791.html 1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行. 2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接. 在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定: 1)LEFT JOIN或L

MYSQL的连接查询

连接能干什么? 当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集进行汇总显示. MYSQL的三种连接 1.内连接查询,查询的结果为两个表匹配到的数据 2.右(外)连接查询,查询的结果为两个表匹配到的数据和右表特有的数据,对于左表中不存在的数据使用null填充. 3.左(外)连接查询:查询的结果为两个表匹配到的数据和左表特有的数据,对于右表中不存在的数据使用null填充. 连接基本语法 select * from 表1 inner或left或right join 表2 on 表1.列

mysql操作--连接查询

1.innerjoin(内连接,或等值连接) select * from table1 inner join table2 on table1.column1= table2.column2; 2.left join(左连接) select * from table1left join table2 on table1.column1= table2.column2; 3.right join(右连接) select * from table1 right join table2 on tabl

MySQL左右连接查询中的NULL的数据筛选问题

原文地址:https://www.cnblogs.com/alonely/p/10452448.html

MySQL 外连接、内连接,连接查询、多表查询、子查询、视图

MySQL连接查询.多表查询.子查询: 连接查询:事先将两张或多张表join,根据join的结果进行查询: [导入hellodb.sql数据库],输入密码即可 [[email protected] home]# mysql -uroot -p  mydb < /home/hellodb.sql     hellodb.sql数据库下载链接:http://pan.baidu.com/s/1pJKK4w7 密码:a0re [查看students表] mysql> select * from stu

MySQL多表查询之外键、表连接、子查询、索引

一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表.例如下面这两张表: 上面有两张表:部门表(dept).员工表(emp).Id=Dept_id,而Dept_id就是员工表中的外键:因为员工表中的员工需要知道自己属于哪个部门,就可以通过外键Dep