首先划分一下,连接分为三种:内连接、外连接、交叉连接
内连接(INNER JOIN):
分为三种:等值连接、自然连接、不等连接
外连接(OUTER JOIN):
分为三种:
左外连接(LEFT OUTER JOIN或LEFT JOIN)
右外连接(RIGHT OUTER JOIN或RIGHT JOIN)
全外连接(FULL OUTER JOIN或FULL JOIN)
交叉连接(CROSS JOIN):
没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积
==================================================================================================
==================================================================================================
1.
a. 并集UNION :SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2
b. 交集JOIN :SELECT * FROM table1 AS a JOIN table2 b ON a.name=b.name
c. 差集NOT IN :SELECT * FROM table1 WHERE name NOT IN(SELECT name FROM table2)
d. 笛卡尔积CROSS JOIN :SELECT * FROM table1 CROSS JOIN table2 ( 与 SELECT * FROM table1,table2相同)
2.
SQL中的UNION 与UNION ALL的区别是,前者会去除重复的条目,后者会仍旧保留。
a. UNION :SQL Statement1 UNION SQL Statement2
b. UNION ALL: SQL Statement1 UNION ALL SQL Statement2
3.
SQL中的各种JOIN, SQL中的连接可以分为内连接,外连接,以及交叉连接(即是笛卡尔积)
a. 交叉连接 CROSS JOIN:
如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积; 举例
SELECT * FROM table1 CROSS JOIN table2 等同于
SELECT * FROM table1,table2
一般不建议使用该方法,因为如果有WHERE子句的话,往往会先生成两个表行数乘积的行的数据表然后才根据WHERE条件从中选择。 因此,如果两个需要求交际的表太大,将会非常非常慢,不建议使用。
b. 内连接 INNER JOIN :
如果仅仅使用 SELECT * FROM table1 INNER JOIN table2 没有指定连接条件的话,和交叉连接的结果一样。 但是通常情况下,使用INNER JOIN需要指定连接条件。
-- 等值连接(=号应用于连接条件, 不会去除重复的列) SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column=b.column
-- 不等连接(>,>=,<,<=,!>,!<,<>) 例如 SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column<>b.column
-- 自然连接(会去除重复的列)
c. 外连接 OUTER JOIN:
首先内连接和外连接的不同之处: 内连接如果没有指定连接条件的话,和笛卡尔积的交叉连接结果一样,但是不同于笛卡尔积的地方是,没有笛卡尔积那么复杂地要先生成行数乘积的数据表,内连接的效率要高于笛卡尔积的交叉连接。 指定条件的内连接,仅仅返回符合连接条件的条目。外连接则不同,返回的结果不仅包含符合连接条件的行,而且包括左表(左外连接时), 右表(右连接时)或者两边连接(全外连接时)的所有数据行
1)左外连接LEFT [OUTER] JOIN :
显示符合条件的数据行,同时显示左边数据表不符合条件的数据行,右边没有对应的条目显示NULL 例如 SELECT * FROM table1 AS a LEFT [OUTER] JOIN ON a.column=b.column
2)右外连接RIGHT [OUTER] JOIN:
显示符合条件的数据行,同时显示右边数据表不符合条件的数据行,左边没有对应的条目显示NULL 例如 SELECT * FROM table1 AS a RIGHT [OUTER] JOIN ON a.column=b.column
3)全外连接:
显示符合条件的数据行,同时显示左右不符合条件的数据行,相应的左右两边显示NULL
本来来自于:
http://www.cnblogs.com/jinianjun/archive/2011/11/08/2240525.html
分享到:
相关推荐
通过对具体例子和SQL语句的学习,文档指导读者正确地从多个表格中访问数据,避免常见的错误比如笛卡尔乘积问题。此外,还解释了ANSI SQL 99的新标准和惯用法的区别及优点,以及通过实际的查询任务加强理解。 适合...
SQL 中的表连接主要分为三种类型:内连接、外连接和交叉连接。 1. **内连接(INNER JOIN)**: 内连接返回两个表中满足特定条件的匹配行。这种连接类型又可以细分为等值连接、自然连接和不等连接。等值连接基于两个...
7. 传统的集合运算:并、交、差以及笛卡尔乘积是传统集合运算的基本操作,所有选项都是正确的。 8. 软件工程:软件工程不仅涉及开发技术,还包括软件工程管理,如需求分析、项目规划、质量管理等。 9. ASP.NET内置...
scratch少儿编程逻辑思维游戏源码-战舰 v2.0.zip
(E卷,100分)- 最大矩阵和(Java & JS & Python & C).html
WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行双向通信,极大地提高了实时性,被广泛应用于即时通讯、在线游戏、股票交易等领域。本篇将详细讲解如何使用C#来实现WebSocket,以及Fleck库在其中的作用。 WebSocket协议基于HTTP的握手过程,但一旦连接建立,它就不再依赖HTTP,而是通过TCP直接通信。在C#中,我们可以利用.NET Framework或.NET Core提供的System.Net.WebSockets命名空间来创建WebSocket服务器和客户端。然而,对于更高级的功能和更好的灵活性,开发者通常会选择第三方库,如Fleck。 Fleck是C#中一个轻量级且高效的WebSocket服务器实现。它提供了丰富的事件驱动API,使得开发者可以轻松地处理WebSocket连接的建立、消息传递和断开等操作。下面我们将探讨Fleck的使用步骤: 1. **安装Fleck**:你需要在你的项目中添加Fleck库。如果你使用的是NuGet包管理器,可以通过搜索"Fleck"并安装来获取。 2. **初始化服务器**:在C#代码中,首先创建一个Fleck服务器实例,指定监听的IP地址和端口号。例如: ```csharp var server = new Fleck.WebSocketServer("ws://localhost:8080"); ``` 3. **配置服务器**:你可以设置各种配置选项,如最大接收/发送缓冲区大小、心跳间隔等。然后注册事件处理器,如OnOpen、OnClose、OnMessage等,以处理客户端连接、断开和消息接收。 4. **连接事件**:`OnOpen`事件在客户端连接时触发,你可以在这里对新连接进行初始化操作,如存储连接信息、验证用户等。 5. **消息处理**:`OnMessage`
实训商业源码-苍穹衔电街电共享充电宝挂机源码-毕业设计.zip
内容概要:本文详细介绍了基于Android Studio开发的日历备忘录记事本项目,涵盖日历查看、添加备忘录、闹钟提醒和删除备忘录等功能。项目使用SQLite数据库进行数据管理和持久化,利用AlarmManager实现闹钟提醒功能。文章深入讲解了各个功能模块的实现细节,如日历视图的使用、数据库操作类的设计、闹钟设置的逻辑以及界面交互的优化。此外,还探讨了一些常见的开发技巧和注意事项,如时间戳的存储、手势识别的应用等。 适用人群:适用于初学者和有一定经验的Android开发者,尤其是希望深入了解SQLite数据库操作和AlarmManager使用的开发者。 使用场景及目标:① 学习如何使用Android Studio构建完整的应用程序;② 掌握SQLite数据库的基本操作,包括建表、增删查改;③ 理解AlarmManager的工作机制及其在实际项目中的应用;④ 提升用户体验,如优化界面交互和提高代码质量。 其他说明:文中提供的源码和详细的代码注释有助于读者更好地理解和实践。同时,项目中预留了一些扩展任务,鼓励读者进一步探索和提升技能。
内容概要:本文详细介绍了如何使用TensorRT加速YOLOv5模型推理,并结合QT框架搭建一个多任务并行处理的智能监控平台。主要内容包括:YOLOv5与TensorRT的融合,通过将YOLOv5模型转换为ONNX格式并进一步转化为TensorRT引擎,从而大幅提升推理速度;QT框架的应用,利用其跨平台特性实现视频监控、录像回放、电子地图等多种功能;16路视频并行检测的具体实现,通过多线程机制和CUDA流的支持,确保系统的高效运行。此外,文章还探讨了模型热更新、网络流处理、日志记录等方面的优化措施。 适合人群:具备一定编程基础,尤其是熟悉C++、Python和深度学习框架的研究人员和技术开发人员。 使用场景及目标:适用于需要高效、智能监控解决方案的企业和个人开发者。主要目标是提高视频监控系统的效率和智能化水平,如安防监控、交通监测等领域。 其他说明:文中提供了大量代码示例,帮助读者更好地理解和应用所介绍的技术。同时强调了系统设计中的性能优化技巧,如内存管理和多线程调度等。
内容概要:本文详细介绍了基于S7-200 PLC和MCGS组态的运料小车控制系统的设计与实现。首先阐述了系统的IO分配,明确了输入输出信号的具体连接方式,如限位开关和电机控制信号。接着讲解了接线图原理图,包括电源连接、信号传输路径等。然后展示了梯形图程序的关键逻辑,如初始化、正反向运行控制等,并进行了详细的代码解析。最后介绍了MCGS组态画面的设计,通过图形化界面实现了对小车运行状态的实时监控和操作。 适用人群:适用于从事自动化控制领域的工程师和技术人员,尤其是对PLC编程和组态软件有一定了解的人群。 使用场景及目标:该系统主要用于工厂自动化生产线中物料运输的小车控制,旨在提高生产效率和安全性。通过合理的硬件配置和软件编程,实现小车的自动往返、限位保护等功能,确保系统稳定可靠运行。 其他说明:文中还分享了一些实际调试过程中遇到的问题及其解决方案,强调了硬件线路和软件逻辑相结合的重要性。此外,提出了一些改进措施,如增加历史轨迹记录、优化传感器信号处理等。 标签1:PLC编程,标签2:MCGS组态,标签3:自动化控制,标签4:S7-200,标签5:运料小车
实训商业源码-超漂亮的响应式个人主页-毕业设计.zip
scratch少儿编程逻辑思维游戏源码-准备做一个射箭游戏.zip
实训商业源码- 深蓝健身房瑜伽馆行业V4.14.0 小程序前端+后端-毕业设计.zip
实训商业源码-thinkphp小雨网址导航网整站源码-毕业设计.zip
实训商业源码- 超人配送代驾跑腿V1.5.11-毕业设计.zip
内容概要:本文详细介绍了用于大功率直流800V及以上电压输出的双闭环Vienna整流器及其SVPWM控制方法。首先阐述了三相三电平Vienna整流器的拓扑结构特点,强调其适用于高压环境的优势。接着深入探讨了电流内环和电压外环的设计,包括PI控制器参数的选择、中点电位平衡控制以及SVPWM的具体实现方式。文中提供了多个MATLAB/Simulink代码片段,展示了如何进行扇区判断、占空比计算等关键步骤,并分享了一些实用技巧,如避免使用atan2函数以提高仿真速度。此外,还讨论了动态响应测试、参数整定等方面的经验,确保系统的高效性和稳定性。最终给出了详细的仿真结果,验证了方案的有效性。 适合人群:从事电力电子、大功率直流电源设计的研究人员和技术工程师。 使用场景及目标:①理解和掌握双闭环Vienna整流器的工作原理;②学会利用MATLAB/Simulink搭建并优化SVPWM控制系统;③满足国家相关标准的要求,如THD低于5%,效率高于95%等。 其他说明:文章不仅提供了理论知识,还包括大量实践经验,帮助读者更好地应对实际工程中的挑战。同时提醒读者注意一些常见的陷阱,如IGBT选择不当导致的过压问题等。
scratch少儿编程逻辑思维游戏源码-陷阱游戏.zip
内容概要:本文详细介绍了基于S7-200 PLC和MCGS组态的机械手抓取控制系统。首先阐述了系统的核心组件,包括S7-200 PLC作为控制核心和MCGS组态软件作为可视化界面的作用。接着展示了具体的梯形图编程示例及其逻辑分析,解释了如何通过编程实现机械手的精确控制。然后讨论了IO分配与接线图原理,确保各个信号正确连接。最后介绍了MCGS组态画面的设计,使操作人员能够直观监控和控制机械手的工作状态。此外,文中还提供了许多实用的小技巧,如调试方法、常见错误规避等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和组态软件有一定了解的人群。 使用场景及目标:适用于需要设计和实施机械手抓取控制系统的工业环境,旨在提高生产效率和精度。目标是帮助读者掌握S7-200 PLC和MCGS组态的具体应用,从而构建稳定可靠的控制系统。 其他说明:文章不仅涵盖了理论知识,还包括大量实践经验,有助于读者更好地理解和应用相关技术。
scratch少儿编程逻辑思维游戏源码-像素柱.zip
实训商业源码- 朋友圈浏览记录V1.0.3 全开源版-毕业设计.zip