- 浏览: 2509976 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
标准SQL中CROSS JOIN交叉连接(笛卡尔积)和内连接INNER JOIN不同,但是MySQL中两者是相同的,即有[CROSS | INNER] JOIN,两者可以互相替代,而且可以只使用JOIN
1. 笛卡尔积(交叉连接)
在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','
如
SELECT * FROM table1 CROSS JOIN table2
SELECT * FROM table1 JOIN table2
SELECT * FROM table1,table2
由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢。
一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN
2. 内连接INNER JOIN
在MySQL中把INNER JOIN叫做等值连接,即需要指定等值连接条件
在MySQL中CROSS和INNER JOIN被划分在一起,不明白。
参看MySQL帮助手册
http://dev.mysql.com/doc/refman/5.0/en/join.html
join_table:
table_reference [INNER | CROSS] JOIN table_factor [join_condition]
根据后面的on过滤条件将CROSS JOIN 转换为 INNER JOIN
USING子句,如果连接的两个表连接条件的两个列具有相同的名字的话可以使用USING
==================== left join,right join,inner join
下面是例子分析
表A记录如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115
表B记录如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
创建这两个表SQL语句如下:
CREATE TABLE a
aID int( 1 ) AUTO_INCREMENT PRIMARY KEY ,
aNum char( 20 )
)
CREATE TABLE b(
bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
bName char( 20 )
)
INSERT INTO a
VALUES ( 1, 'a20050111' ) , ( 2, 'a20050112' ) , ( 3, 'a20050113' ) , ( 4, 'a20050114' ) , ( 5, 'a20050115' ) ;
INSERT INTO b
VALUES ( 1, ' 2006032401' ) , ( 2, '2006032402' ) , ( 3, '2006032403' ) , ( 4, '2006032404' ) , ( 8, '2006032408' ) ;
实验如下:
1.left join(左联接)
sql语句如下:
SELECT * FROM a
LEFT JOIN b
ON a.aID =b.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL
(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
2.right join(右联接)
sql语句如下:
SELECT * FROM a
RIGHT JOING b
ON a.aID = b.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL
8 2006032408
(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
3.inner join(相等联接或内联接)
sql语句如下:
SELECT * FROM a
INNER JOIN b
ON a.aID =b.bID
等同于以下SQL句:
SELECT *
FROM a,b
WHERE a.aID = b.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录
.
发表评论
-
mysql表修复
2015-04-07 10:16 102311.1命令myisamchk(必须停掉mysql服务,或者所操 ... -
Table_locks_immediate
2014-08-25 15:46 2959Table_locks_immediate表示立即释放表锁数 ... -
mysql分区
2014-02-21 10:38 1799mysql自5.1开始支持分区 ... -
InnoDB 引擎独立表空间 innodb_file_per_table
2013-02-25 11:14 1264http://deeplyloving.iteye.com ... -
mysql监测工具tuning-primer.sh
2013-01-21 17:57 2607【转】http://www.dbasky.net ... -
mysql主从日志的定期清理
2013-01-21 16:24 1115[转]http://wangwei007.blog.51 ... -
[转]Mysql报错:Result consisted of more than one row
2013-01-09 16:25 15784Error Code : 1172 Result consi ... -
根据bin log 分析管理员被莫名删除问题
2013-01-04 17:04 1111============== 根据bin log 分析管理 ... -
mysql中select * for update锁表的问题
2013-01-04 14:07 2473先前介绍过SELECT ... FOR UPDATE的用法 ... -
PDO报错:Cannot execute queries while other unbuffered queries are active.
2012-12-12 17:57 11765用 PDOStatement->execute() 执行 ... -
MySQL死锁导致无法查询
2012-12-11 14:51 2513客服反馈后台无法查询,原因大概知道,是因为MySQL的事务 ... -
mysql性能分析:mysql profiling 应用
2012-12-11 10:26 13041)先打开profiling ==> set pro ... -
mysql体系结构和查看当前的数据库请求
2012-12-07 15:00 2855mysql体系结构: 由 ... -
mysql_error:Error starting thread: Resource temporarily unavailable
2012-11-01 17:57 2063121031 18:53:17 InnoDB: Unable ... -
导出bin log时间段脚本datarecover.sh
2012-09-06 13:34 1182修改 _binlogdir='/data/mysql/m ... -
Mysql备份工具xtraback全量和增量测试
2012-08-17 14:58 3812【转载】http://blog.chinaunix.net/s ... -
数据库中的隔离级别和锁机制
2012-08-09 17:55 1543ANSI/ISO SQL92标准定义了 ... -
mysqldump和mysql命令
2012-08-03 13:44 1342========================= mys ... -
mysql cursor游标的使用,实例
2012-07-17 23:09 1754mysql被oracle收购后,从mysql-5.5开始, ... -
使用innotop监测mysql
2012-07-13 10:56 3772最近学习innotop工具,自己搜集整理了一下网上的各种资源, ...
相关推荐
9.5 涉及多个数据表的关联查询(LEFT/RIGHT JOIN) 9.6 合并查询结果(UNION) 9.7 分组查询,统计函数(GROUP BY) 9.8 修改数据(INSERT、UPDATE和DELETE) 9.9 创建数据表、数据库和索引 第10章...
MYSQL常用命令 1.导出整个数据库 mysqldump -u 用名 -p –default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 ...
这是一个汇总了十道常见 MySQL 面试题以及详细答案的资源。涵盖了数据库事务、索引、关系型数据库与非关系型数据库的区别、数据库范式、主键和外键、JOIN 操作、数据库索引、备份和恢复、数据库连接池以及提高数据库...
MYSQL常用命令 1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 ...
9.5 涉及多个数据表的关联查询(LEFT/RIGHT JOIN) 9.6 合并查询结果(UNION) 9.7 分组查询,统计函数(GROUP BY) 9.8 修改数据(INSERT、UPDATE和DELETE) 9.9 创建数据表、数据库和索引 第10章 SQL...
MySQL面经文档,其中包含了一些常见的面试编程题和...这个汇总的MySQL面经文档是一个有价值的资源,可以帮助面试者对MySQL面试的类型、难度和覆盖范围有一个全面的了解,并提供了一些常见的面试编程题和技术要点供复
1、mysql 导出文件: SELECT `pe2e_user_to_company`.company_name, `pe2e_user_to_company`.company_code, `users`.name, `users`.uid, `users`.mail, `pe2e_email_notification_email`.`email_cc` FROM `users` ,...
文章目录聚合函数sum求和avg平均数max最大值min最小值year求年龄count查询数据个数group by分组with rollup数据总汇having分组筛选join多表查询inner join内连接[outter] join外连接left [outer] join左连接right ...
├─(36) inner join 的学习.sql ├─(37) union all的学习代码.sql ├─(38) 外关联介绍.sql ├─(39) 示例数Ju.sql ├─(40) 示例数Ju.txt ├─(41) 示例表.xlsx ├─(42) 笛卡尔积的知识介绍.sql (10)\SQL...
本篇文章主要简介下MySQL中where,group by ,order by ,limit,join,union ,union all,子表等查询语法。 测试数据准备 create table emp ( empno numeric(4) not null, ename varchar(10), job varchar(9), mgr ...
自己通过网上各个资源整合,汇总出的比较全面的全国省市区县街道数据。将该SQL导入数据库执行例如:SELECT p.province 省份,c.city 城市,b.area 区名,a.county 街道全称,a.short_county 街道简称 ,a.`longitude` ...
实例013 安装MySQL数据库服务器 26 实例014 安装PHP.50 28 实例015 第4个PHP程序 30 1.5 XAMPP——Linux版PHP集成化安装包 31 实例016 XAMPP——Linux下PHP开发环境的集成化 31 实例017 Linux操作系统下启动XAMPP 32...
实例013 安装MySQL数据库服务器 26 实例014 安装PHP.50 28 实例015 第4个PHP程序 30 1.5 XAMPP——Linux版PHP集成化安装包 31 实例016 XAMPP——Linux下PHP开发环境的集成化 31 实例017 Linux操作系统下启动XAMPP 32...
实例222 使用聚集函数SUM对学生成绩进行汇总 344 实例223 使用聚集函数AVG求某班学生的平均成绩 346 实例224 使用聚集函数MIN求销售额、利润最少的商品 347 实例225 使用聚集函数MAX求月销售额完成最多的销售...
join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI Python R Java Javascript WPS Matlab SPSS Scala Perl CC#Excel MS Access JSON图形映射NLP自然语言处理机器学习igraph ...
join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI Python R Java Javascript WPS Matlab SPSS Scala Perl CC#Excel MS Access JSON图形映射NLP自然语言处理机器学习igraph ...
缺少行标识符的转置和汇总矩阵。 关键字:sas sql join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI Python R Java Javascript WPS Matlab SPSS Scala Perl CC#Excel MS ...
7.2 内连接(INNER JOIN) 7.3 不等值连接 7.4 交叉连接 7.5 自连接 7.6 外部连接 7.6.1 左外部连接 7.6.2 右外部连接 7.6.3 全外部连接 第8章 子查询 8.1 子查询入门 8.1.1 单值子查询 8.1.2...
4.1.5 数据汇总 4.1.6 排序 4.2 高级数据过滤 4.2.1 通配符过滤 4.2.2 空值检测 4.2.3 反义运算符 4.2.4 多值检测 4.2.5 范围值检测 4.2.6 低效的“WHERE 1=1” 4.3 数据分组 4.3.1 数据分组...