- 浏览: 914834 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
探究内连接,外连接,交叉连接
(一)内连接
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。
内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
使用等值连接,,在选择列表中列出LandTbl和TownTbl表中重复列(TownCode):
例:Select * from LandTbl as A inner join TownTbl as B on A.TownCode=B.TownCode
2、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。
这些运算符包括>、>=、<=、<、!>、!<和<>。
例:Select * from LandTbl as A inner join TownTbl as B on A.TownCode<>B.TownCode
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
使用自然连接,在选择列表中删除LandTbl和TownTbl表中重复列(TownCode):
Select A.*, B.CityCode, B.TownName from LandTbl as A inner join TownTbl as B on A.TownCode=B.TownCode
(二)外连接
内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。
左外连接,显示符全条件的数据行及左边数据表中不符合条件的数据行
例:
Select A.*, B.CityCode, B.TownName from LandTbl as A left (OUTER) join TownTbl as B on A.TownCode=B.TownCode
右外连接,显示符全条件的数据行及右边数据表中不符合条件的数据行
例:
Select A.*, B.CityCode, B.TownName from LandTbl as A right (OUTER) join TownTbl as B on A.TownCode=B.TownCode
全外连接,显示符全条件的数据行及左边和右边数据表中不符合条件的数据行
例:
Select A.*, B.CityCode, B.TownName from LandTbl as A full (OUTER) join TownTbl as B on A.TownCode=B.TownCode
(三)交叉连接
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
select A.*, B.CityCode, B.TownName from LandTbl cross join TownTbl
(-^_^-)
附(供參考):
表TownTbl
栏位名称 中文描述
CityCode 县市代码
TownCode 乡镇代码
TownName 乡镇名称
表LandTbl
栏位名称 中文描述
LandCode 土地代号
LandName 土地名称
LandQty 土地面积
TownCode 乡镇代码
Type 土地类别
***********************************************************************
SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)
现在在这写写关于它们的作用
假设有如下表:
一个为投票主表,一个为投票者信息表~记录投票人IP及对应投票类型,左右连接实际说是我们联合查询的结果以哪个表为准~
1:如右接连 right join 或 right outer join:
我们以右边voter表为准,则左表(voteMaster)中的记录只有当其ID在右边(voter)中存在时才会显示出来,如上图,左边中ID为3.4.5.6因为这些ID右表中没有相应记录,所以没有显示!
2:因此我们自然能理解左连接 left join 或者 left outer join
可见,现在右边中ID在中存在时才会显示,当右边中没有相应数据时则用NULL代替!
3:全连接 full join 或者 full outer join,为二个表中的数据都出来,这里演示效果与上一样!
4:内连接 inner join 或者 join;它为返回字段ID同时存在于表voteMaster 和 voter中的记录
5:交叉连接(完全连接)cross join 不带 where 条件的
没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生6*3=18条记录)
等价select vm.id,vm.voteTitle,vt.ip from voteMaster as vm,voter as vt
6:自连接。在这里我用我前段时间一个电力项目中的例子(改造过)
如下表:
这是一个部门表,里面存放了部门及其上级部门,但都放在同一张表中,我们假设现在需要用SQL查询出各部门及其上级部门!就如何做,
当然,不用自连接也一样,可以如下:
我们达到预期目的!在这个查询中使用了一个子查询完成对上级部门名的查询,如果使用自连接,那么结构上感觉会清晰很多。
是不是也同样完成了功能呢,这里除了使用自连接外,还使用了左连接,因为省电力没有上级部门,他是老大,如果使用内连接,就会把这条记录过滤掉,因为没有和他匹配的上级部门。
自连接用的比较多的就是对权形结构的查询!类似上表!
发表评论
-
zz 如何安装两个MYSQL在同一机器
2012-08-01 23:04 1068说白了就一句话:一个自动安装服务,另一个手动安装服务! ... -
[zz] MySQL SQL语句练习
2012-04-10 14:43 1576MySQL SQL语句练习:1.建库建表--create d ... -
zz delete和truncate的区别
2012-03-08 16:18 715delete from aatruncate table aa ... -
【原创】MYSQL 安装时候的1045错误的解决方法
2012-03-04 21:02 799在安装的时候,出现这个问题网上的很多方法是卸载后重新 ... -
SQL删除重复记录,并只剩一条
2012-02-24 14:59 1348在几千条记录里,存在着些相同的记录,如何能用SQL语句,删 ... -
数据库驱动的载入有三种方法!
2012-01-11 15:58 9501. import java.sql.DriverM ... -
JDBC 完全总结
2012-01-11 14:46 915一、JDBC 简介 SUN 公司为了简化、统一数 ... -
oracle基础书籍推荐
2012-01-10 10:00 2738很多朋友要我帮忙推荐一下Oracle的入门书籍,能够了解Ora ... -
实例分析JDBC连接数据库代码
2011-11-15 10:37 849一、jdbc连接数据库代码速查表下面罗列了各种jdbc连接 ... -
mysql 5.0存储过程学习总结
2010-11-21 20:11 802mysql存储过程的创建,删除,调用及其他常用命令 ... -
MySQL的事务管理
2010-11-21 19:59 39041,MySQL的事务支持 MySQL的事务支持不是绑定在MyS ... -
同事今天下午的MYSQL性能优化分享
2010-10-18 23:22 787下午的分享,同事讲了 ... -
视图——ALGORITHM
2010-10-18 15:22 1364修改视图需要create view ... -
MySQL视图的应用
2010-10-18 15:09 1538MySQL视图的应用 视图也称虚表,包括执行某个查询返回的一 ... -
Mysql中IFNULL和IF函数
2010-10-15 17:01 8321. IFNULL(expr1,expr2) 2. 如果e ... -
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
2010-10-09 15:39 838第1章 引言 随着互联 ... -
SQL 日期函数
2010-10-08 17:44 1061SYSDATE与CURRENT_DATE区别 ... -
Oracle truncate table 与 delete tabel的区别
2010-09-03 17:05 852一、 1.delete产生rollback,如 ... -
JDBC的连接方式和驱动类型
2010-08-24 13:49 9981.连接数据库的方式:ODBC , JDBC ODBC:Op ... -
数据库原理—— 视图
2010-08-06 10:10 2414视图是一个虚拟表,其 ...
相关推荐
本文将详细介绍六种主要类型的 JOIN:左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)、内连接(INNER JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。通过实例讲解每种连接的特点和应用...
右连接、左连接、全连接、内连接、交叉连接、自连接
根据连接的方式不同,可以分为左连接(LEFT JOIN)、右连接(RIGHT JOIN)、内连接(INNER JOIN)、全连接(FULL JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。每种连接类型都有其特定的应用场景和使用...
当使用`ON 1 = 1`作为连接条件时,交叉连接会返回两个表的所有可能组合,即每个左表的记录都会与右表的每条记录进行组合。例如: ```sql SELECT O.orderid, O.userid, U.userID, U.sname FROM t_order AS O CROSS ...
具体来说,它会从位于两个互相交叉的数据集合中找到重叠部分内的数据行,并将其连接起来。 **语法**: ```sql SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name; ...
交叉连接、内连接、外连接查询.sql
本文将详细解释五种主要的连接类型:外连接(外连接)、内连接(内连接)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)以及交叉连接(CROSS JOIN)。 1. **内连接(INNER JOIN)**: 内连接...
MySQL连接查询(多表连接查询:内连接,外连接,交叉连接详解) 6:多表连接查询 笛卡尔乘积:如果连接条件省略或无效则会出现 解决办法:添加上连接条件 连接查询的分类: 1.按年代分类: 1)sql 92标准:仅仅...
根据连接的方式和结果,SQL连接可以分为内连接、左连接、右连接、全连接和交叉连接等多种类型。 内连接 内连接是最基本的连接类型,它将两个表格中的数据根据某个条件连接起来。内连接可以分为等值连接、不等值...
交叉连接也称为笛卡尔积,它返回左表的每一行与右表的每一行的组合。如果两个表分别有n和m行,结果将有n*m行。 ```sql SELECT a.*, b.* FROM table_a CROSS JOIN table_b; ``` 在实际应用中,选择合适的连接...
本篇文章将深入探讨数据库连接查询,包括内连接、外连接和交叉连接等,同时结合实例来帮助理解。 首先,了解数据库的基础架构。Oracle数据库由Oracle数据库(数据文件、控制文件、重做日志文件等)和Oracle实例...
主要分为内连接、外连接和交叉连接,每种连接都有其特定的应用场景和逻辑。 内连接(INNER JOIN)是最常见的连接类型,它返回两个表中列相等的行。在内连接中,查询条件通常基于两个表之间的共同列,只有当这些列的...
交叉连接返回两个表的笛卡尔积,即每个左表的记录与右表的每个记录组合。如果没有WHERE子句,结果将是左表的行数乘以右表的行数。这通常会产生大量的记录,除非有明确的筛选条件。 6. **自连接**: 自连接是将同...
交叉连接返回所有可能的行组合,通常称为笛卡尔积。这在实际应用中并不常用,但在某些特定场景下可能会有用处。 - **交叉连接示例**: ```sql SELECT t.*, s.* FROM teacher t CROSS JOIN student s; ``` 通过...
交叉连接和内连接;表A; SELECT的查询对象由FROM子句指定,各个表用逗号分隔,这样就指定了交叉连接。 其格式为: FROM 表名1 [ [AS] 别名1 ] [ , 表名2[ [AS] 别名2]] … ; 【例】 members表和sell表进行交叉连???。...
交叉线连接开发板和主机 在嵌入式系统开发中,交叉线连接开发板和主机是一个非常重要的步骤。今天,我们将详细介绍如何使用交叉线连接开发板和主机,以便启动 NFS 根文件系统。 首先,让我们了解一下交叉线连接的...
SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
外连接 1.left join 示例:SQL语句:select * from student left join course on student.ID=course.ID 左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为...
连接类型主要有内连接、外连接和交叉连接,这些方法在数据分析、报表生成和数据整合等场景中发挥着关键作用。 首先,我们来详细讨论内连接(INNER JOIN)。内连接是最常用的连接类型,它返回两个表中满足特定连接...
此外,还有交叉连接(CROSS JOIN),也称为笛卡尔积,它会返回左表的每一行与右表的每一行的组合,结果集的大小是两个输入表行数的乘积。 在SQL代码示例中,使用临时表`@TA`和`@TB`展示了不同类型的连接。内连接的...