- 浏览: 3315839 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (567)
- Web前端-html/表单 (19)
- Web前端-CSS (24)
- Web前端-CSS框架 (4)
- Web前端-JS语言核心 (50)
- Web前端-JS客户端 (26)
- nodejs生态+grunt (10)
- seajs和requirejs (9)
- backbone等框架 (7)
- 模板基础 (7)
- Web前端-deps(不改动) (6)
- Web前端-component (10)
- Web前端-jquery-plugin (13)
- 浏览器兼容性 (6)
- Web前端-使用jQuery (25)
- Web前端-使用jqueryui (6)
- Web前端-性能优化 (3)
- Web协议-HTTP (6)
- ExtJS (13)
- PHP (22)
- PHP面向对象 (4)
- PHP扩展-SOAP (6)
- PHP扩展-curl (4)
- PHP与HTML(导出) (5)
- PHP扩展-综合 (7)
- mysql基础应用 (18)
- 技术心情 (18)
- 算法和面试题 (17)
- 工具(开发)使用 (36)
- memcached原理 (2)
- session和cookie (4)
- UML (2)
- Web前端_FusionCharts (5)
- Web前端_Flex (4)
- Web前端_JSP (3)
- JavaSE (10)
- JavaEE (4)
- tomcat (2)
- Servlet开发 (3)
- Spring开发 (1)
- REST相关 (2)
- 大访问量、高并发 (2)
- 网络编程 (1)
- YII (21)
- linux命令和内核 (12)
- yii与数据库 (10)
- yii与表单 (12)
- yii view层 (1)
- perl (7)
- yii扩展 (7)
- shell (4)
- photoshop (7)
- 视觉设计 (2)
- 我关注的名人在路上 (4)
- 1-自学能力 (1)
- 2-人际沟通能力 (3)
- 3-职业规划能力 (7)
- 4-项目管理能力 (2)
- python (3)
- django (4)
- Mysql高级应用 (6)
- prototype.js (4)
- Web系统安全 (1)
- Web前端-mobile (2)
- egret (6)
- jQuery源码分析 (5)
- fis (4)
最新评论
-
yzq21056563:
感谢作者分享~请教下,http://www.lisa33xia ...
CSS基础:text-overflow:ellipsis溢出文本 -
u012206458:
$.ajax的error,complete,success方法 -
DEMONU:
谢谢,虽然不能给你赞助,但是要给你顶
mysql中key 、primary key 、unique key 与index区别 -
njupt_tolmes:
阿凡达阿凡达阿凡达阿凡达阿凡达阿凡达阿凡达阿凡达阿凡达阿滕庆亚 ...
CSS基础:text-overflow:ellipsis溢出文本 -
zenmshuo:
用过SpreadJS,也包含数据可视化的图表
推荐几个web中常用js图表插件
作者:zccst
一、 理论
(一)内连接(INNER JOIN)
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
(二)外连接
外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。
内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。
(三)交叉连接(CROSS JOIN)
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
二、 实践
两个表的连接比较简单(左连接、右连接、内连接),此处略。三个和三个以上的表道理相同,所以以三个表为例分析多表连接。
假设三个表的分别为a, b, c
(一)以a为主表,b和c为辅表
批注1:左连接按先后顺序,先是表a和表b连接,再与表c连接。
批注2:加条件的时候用where。
批注3:如果b是主表的话,把表b放前面即可。
批注4:也可以按如下写法
批注5:不同表的引擎最好一样,不然会很慢。比如都是innodb或MyISAM
(二)表a和表b中前者是主表,表c又以表b为主表
待补充
三、 附语法
MySQL支持Select和某些Update和Delete情况下的Join语法,具体语法上的细节有:
table_references:
table_reference [, table_reference] …
table_reference:
table_factor
| join_table
table_factor:
tbl_name [[AS] alias]
[{USE|IGNORE|FORCE} INDEX (key_list)]
| ( table_references )
| { OJ table_reference LEFT OUTER JOIN table_reference
ON conditional_expr }
join_table:
table_reference [INNER | CROSS] JOIN table_factor [join_condition]
| table_reference STRAIGHT_JOIN table_factor
| table_reference STRAIGHT_JOIN table_factor ON condition
| table_reference LEFT [OUTER] JOIN table_reference join_condition
| table_reference NATURAL [LEFT [OUTER]] JOIN table_factor
| table_reference RIGHT [OUTER] JOIN table_reference join_condition
| table_reference NATURAL [RIGHT [OUTER]] JOIN table_factor
join_condition:
ON conditional_expr | USING (column_list)
table_reference其实就是表的引用的意思,因为在MySQL看来,连接就是一种对表的引用,因此把需要连接的表定义为 table_reference,同时在SQL Standard中也是如此看待的。而table_factor则是MySQL对这个引用的功能上的增强和扩充,使得引用的表可以是括号内的一系列表
如下面例子中的JOIN后面括号:
Select * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) php开源嘛
这个语句的执行结果和下面语句其实是一样的:
Select * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4)
ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)
这两个例子不仅让我们了解了MySQL中table_factor和table_reference含义,同时能理解一点CROSS JOIN的用法,我要补充的是在MySQL现有版本中CROSS JOIN的作用和INNER JOIN是一样的(虽然在SQL Standard中是不一样的,然而在MySQL中他们的区别仅仅是INNER JOIN需要附加ON参数的语句,而CROSS JOIN不需要)。
如果您觉得本文的内容对您的学习有所帮助,您可以微信:
一、 理论
(一)内连接(INNER JOIN)
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
(二)外连接
外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。
内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。
(三)交叉连接(CROSS JOIN)
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
二、 实践
两个表的连接比较简单(左连接、右连接、内连接),此处略。三个和三个以上的表道理相同,所以以三个表为例分析多表连接。
假设三个表的分别为a, b, c
(一)以a为主表,b和c为辅表
select a.a as a, b.b as b, c.c as c from a left join b on a.id=b.id left join c on b.id=c.id where…
批注1:左连接按先后顺序,先是表a和表b连接,再与表c连接。
批注2:加条件的时候用where。
批注3:如果b是主表的话,把表b放前面即可。
批注4:也可以按如下写法
Select * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) where… //这个语句的执行结果和下面语句其实是一样的: Select * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) where…
批注5:不同表的引擎最好一样,不然会很慢。比如都是innodb或MyISAM
(二)表a和表b中前者是主表,表c又以表b为主表
待补充
三、 附语法
MySQL支持Select和某些Update和Delete情况下的Join语法,具体语法上的细节有:
table_references:
table_reference [, table_reference] …
table_reference:
table_factor
| join_table
table_factor:
tbl_name [[AS] alias]
[{USE|IGNORE|FORCE} INDEX (key_list)]
| ( table_references )
| { OJ table_reference LEFT OUTER JOIN table_reference
ON conditional_expr }
join_table:
table_reference [INNER | CROSS] JOIN table_factor [join_condition]
| table_reference STRAIGHT_JOIN table_factor
| table_reference STRAIGHT_JOIN table_factor ON condition
| table_reference LEFT [OUTER] JOIN table_reference join_condition
| table_reference NATURAL [LEFT [OUTER]] JOIN table_factor
| table_reference RIGHT [OUTER] JOIN table_reference join_condition
| table_reference NATURAL [RIGHT [OUTER]] JOIN table_factor
join_condition:
ON conditional_expr | USING (column_list)
table_reference其实就是表的引用的意思,因为在MySQL看来,连接就是一种对表的引用,因此把需要连接的表定义为 table_reference,同时在SQL Standard中也是如此看待的。而table_factor则是MySQL对这个引用的功能上的增强和扩充,使得引用的表可以是括号内的一系列表
如下面例子中的JOIN后面括号:
Select * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) php开源嘛
这个语句的执行结果和下面语句其实是一样的:
Select * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4)
ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)
这两个例子不仅让我们了解了MySQL中table_factor和table_reference含义,同时能理解一点CROSS JOIN的用法,我要补充的是在MySQL现有版本中CROSS JOIN的作用和INNER JOIN是一样的(虽然在SQL Standard中是不一样的,然而在MySQL中他们的区别仅仅是INNER JOIN需要附加ON参数的语句,而CROSS JOIN不需要)。
如果您觉得本文的内容对您的学习有所帮助,您可以微信:
发表评论
-
MySQL创建用户与授权
2013-08-29 21:43 1231zccst转载 一, 创建用户: 命令:CR ... -
mysql导入/导出命令
2013-05-15 15:52 1092作者:zccst 最常用: 导出数据库为文件 mysqld ... -
运行中的mysql状态查看
2013-02-22 14:19 1675zccst整理 对正在运行的 ... -
mysql导出的几种办法
2012-12-24 16:29 7676作者:zccst 一、使用mysqldump导出 my ... -
强大的alter
2012-11-14 22:28 1252作者:zccst alter的主要作用是修改已经建立的表结构。 ... -
mysql replace into用法详细说明
2012-10-23 17:42 1772zccst转载 mysql replace into ... -
mysql中key 、primary key 、unique key 与index区别
2012-10-12 12:15 262359作者:zccst 一、key与pri ... -
mysql日期相关函数
2012-06-15 15:27 1717作者:zccst 日期函数 date_format(crea ... -
mysql安全之sql注入
2012-04-28 18:42 1160zccst整理 如何避免? 1,使用mysql_escap ... -
MySQL索引类型一览 让MySQL高效运行起来
2012-04-27 15:29 1170zccst转载 批注:学习mysql那么久,今天终于有点更上 ... -
mysql 删除全部表
2012-02-27 16:25 26066作者:zccst 方式一:手工方式 1,直接操作数据库 先 ... -
mysql insert时几个操作DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE的区别
2012-02-07 16:06 3433mysql insert时几个操作DELAYED 、IGNOR ... -
MySQL 数据类型 详解
2012-01-18 15:28 1359zccst整理 批注:mysql数据类型分为4类,与C语言教 ... -
mysql函数初步
2011-12-12 17:50 1085一、日期函数 日期函数较多 比如对timestamp求月份,可 ... -
mysql警告和错误解决办法集合
2011-10-31 11:33 1224一、在创建mysql时,查看警告详情 在create语句执行之 ... -
数据库关于group by 两个或以上条件的分析
2011-08-25 12:58 59020首先group by 的简单说明: group by 一 ... -
mysql常用命令
2011-06-07 12:09 1236作者:zccst 2014-05-18 创建新表各类型模板 ...
相关推荐
总的来说,MySQL中的LEFT JOIN连接查询是一种强大的工具,用于处理多个表之间的复杂关系。正确理解和应用LEFT JOIN,可以帮助我们编写出高效、准确的SQL查询,满足业务需求。但在实际使用中,要时刻关注性能,通过...
Mysql 中的连接查询是指从多个表中检索数据,并将它们组合成一个结果集。inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner join inner join 又称等值连接,是指从两个表中选择...
本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 遇到的问题 多表关联一对多查询取最新的一条数据,数据出现重复 ...
总之,合理使用和优化MySQL中的Join操作需要综合考虑表结构、索引设计、查询需求和硬件资源等多方面因素。通过实践和反复调优,DBA和开发人员能够显著提高数据库查询的性能,保证业务的高效稳定运行。
MySQL中的表连接是数据库操作中的核心概念,尤其在处理多表关联的数据时显得尤为重要。本文将深入探讨LEFT JOIN和RIGHT JOIN两种特殊的连接方式,帮助初学者理解这两种连接的语法、用法及其在实际操作中的应用。 ...
MySQL的LEFT JOIN表连接是一种在数据库操作中合并多个表数据的关键技术。LEFT JOIN的主要特点是返回所有左表(即连接查询中的第一个表)的记录,即使在右表(第二个表)中没有匹配的记录。左表的每一行都会与右表的...
如果B表比A表大,`LEFT JOIN` 将创建一个与B表相同大小的结果集,然后进行筛选,这会消耗更多的内存和CPU资源。相比之下,`NOT IN` 和 `NOT EXISTS` 在两个集合比较时就完成了筛选,减少了额外的开销。 关于日志...
实验报告主要涵盖了数据库系统的基本操作,特别是MySQL中的分组查询、多表连接和子查询的运用。以下是对这些知识点的详细解释: 1. **GROUP BY 语句与聚合函数**: GROUP BY 语句用于将数据分组,通常与聚合函数如...
在SQL查询中,JOIN操作是连接不同表的关键技术,它允许我们从多个相关的表中获取数据。本篇文章将深入探讨四种基本的JOIN类型:LEFT JOIN(左连接)、RIGHT JOIN(右连接)、INNER JOIN(内连接)以及OUTER JOIN(外...
MySQL 高级表连接是指在 MySQL 中连接两个或多个表的数据,以便从多个表中检索数据。高级表连接包括内连接、外连接、带聚合函数连接和表连接+子查询等。 1. 内连接 内连接(Inner Join)是指从两个表中选择相互...
在SQL查询中,LEFT JOIN操作用于连接两个或更多表,并保留左表(即第一个表)的所有记录,即使右表没有匹配的记录。当右表的某些字段在LEFT JOIN后为NULL时,我们可以利用函数来将这些NULL值替换为特定值,如0或其他...
总的来说,`DELETE`语句在MySQL中提供了强大的数据清理功能,但使用时需谨慎,尤其是涉及到多表连接删除时,必须全面考虑其可能的影响。通过了解这些知识点,您可以更安全、高效地管理数据库中的数据。
mysql left join 语句格式 A LEFT JOIN B ON 条件表达式 left join 是以A表为基础,A表即左表,B表即右表。 左表(A)的记录会全部显示,而右表(B)只会显示符合条件表达式的记录,如果在右表(B)中没有符合条件的记录,...
本文档详细介绍了 MySQL 中的 JOIN 语法,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 等,并提供了实际的实例来说明 JOIN 的用法。 首先,MySQL 的 JOIN 语法用于根据两个或多个表中的字段之间的关系,从...