- 浏览: 796228 次
- 性别:
- 来自: 大连
-
文章分类
- 全部博客 (417)
- ASP.NET MVC (18)
- WEB基础 (24)
- 数据库 (69)
- iPhone (20)
- JQuery (3)
- Android (21)
- UML (8)
- C# (32)
- 移动技术 (19)
- 条码/RFID (6)
- MAC (8)
- VSS/SVN (6)
- 开卷有益 (4)
- 应用软件 (1)
- 软件工程 (1)
- java/Eclipse/tomcat (61)
- 英语学习 (2)
- 综合 (16)
- SharePoint (7)
- linux (42)
- Solaris/Unix (38)
- weblogic (12)
- c/c++ (42)
- 云 (1)
- sqlite (1)
- FTp (2)
- 项目管理 (2)
- webservice (1)
- apache (4)
- javascript (3)
- Spring/Struts/Mybatis/Hibernate (4)
- 航空业务 (1)
- 测试 (6)
- BPM (1)
最新评论
-
dashengkeji:
1a64f39292ebf4b4bed41d9d6b21ee7 ...
使用POI生成Excel文件,可以自动调整excel列宽等(转) -
zi_wu_xian:
PageOffice操作excel也可以设置表格的行高列宽,并 ...
使用POI生成Excel文件,可以自动调整excel列宽等(转) -
wanggang0321:
亲,我在pptx(office2007以上版本)转pdf的时候 ...
JODConverter]word转pdf心得分享(转) -
xiejanee:
楼主:你好!我想请问下 你在代码中用DOMDocument* ...
Xerces-C++学习之——查询修改XML文档 (转)
本文主要列举两张和三张表来讲述多表 连接查询 。
新建两张表:
表1:student 截图如下:
表2:course 截图如下:
(此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。)
一、外连接
外连接可分为:左连接、右连接、完全外连接。
1、左连接 left join 或 left outer join
SQL语句:select * from student left join course on student.ID=course.ID
执行结果:
左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL).
注:此时我们不能说结果的行数等于左表数据的行数。当然此处查询 结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。
2、右连接 right join 或 right outer join
SQL语句:select * from student right join course on student.ID=course.ID
执行结果:
右外连接包含right join右表所有行,如果左表中某行在右表没有匹配,则结果中对应左表的部分全部为空(NULL)。
注:同样此时我们不能说结果的行数等于右表的行数。当然此处查询 结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。
3、完全外连接 full join 或 full outer join
SQL语句:select * from student full join course on student.ID=course.ID
执行结果:
完全外连接包含full join左右两表中所有的行,如果右表中某行在左表中没有匹配,则结果中对应行右表的部分全部为空(NULL),如果左表中某行在右表中没有匹配,则结果中对应行左表的部分全部为空(NULL)。
二、内连接 join 或 inner join
SQL语句:select * from student inner join course on student.ID=course.ID
执行结果:
inner join 是比较运算符,只返回符合条件的行。
此时相当于:select * from student,course where student.ID=course.ID
三、交叉连接 cross join
1.概念:没有 WHERE 子句的交叉联接将产生连接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。
SQL语句:select * from student cross join course
执行结果:
如果我们在此时给这条SQL加上WHERE子句的时候比如SQL:select * from student cross join course where student.ID=course.ID
此时将返回符合条件的结果集,结果和inner join所示执行结果一样。
四、两表关系为一对多,多对一或多对多时的连接语句
当然上面两表为一对一关系,那么如果表A和表B为一对多、多对一或多对多的时候,我们又该如何写连接SQL语句呢?
其实两表一对多的SQL语句和一对一的SQL语句的写法都差不多,只是查询 的结果不一样,当然两表也要略有改动。
比如表1的列可以改为:
Sno Name Cno
表2的列可以改为:
Cno CName
这样两表就可以写一对多和多对一的SQL语句了,写法和上面的一对一SQL语句一样。
下面介绍一下当两表为多对多的时候我们该如何建表以及些SQL语句。
新建三表:
表A: student 截图如下:
表B: course 截图如下:
表C: student_course 截图如下:
一个学生可以选择多门课程,一门课程可以被多个学生选择,因此学生表student和课程表course之间是多对多的关系。
当两表为多对多关系的时候,我们需要建立一个中间表student_course,中间表至少要有两表的主键,当然还可以有别的内容。
SQL语句:select s.Name,C.Cname from student_course as sc left join student as s on s.Sno=sc.Sno left join course as c on c.Cno=sc.Cno
执行结果:
此条SQL执行的结果是学生选课的情况。
发表评论
-
DB2 中使用命令行工具连接远程数据库的方法
2014-04-24 11:09 0使用 CA ... -
db2note
2014-04-16 10:05 0db2connect---建立连接,创建statement d ... -
数据库3模型
2013-12-19 10:51 0概念模型就是在了解了用户的需求,用户的业务领域工作情况以后,经 ... -
关于并发
2013-12-08 14:12 0解决并发一般我们采用数据表里加版本号或者时间戳的方式,在up ... -
C++使用CLI连接DB2
2013-11-15 09:31 3378<!--推荐博文--> ... -
DB2 Old-New-Final-Table中间结果表
2013-11-11 13:50 1067DB2底层通过维护事物表,来对表进行添加,更新,和删除操作, ... -
SQL查询重复记录
2013-10-28 14:31 822假设现有一张人员表(表名:Person),若想将姓名、身份证 ... -
db2修改已经有数据的列名
2013-09-13 15:30 1615--修改列名或者列类型,由原类型到其他类型,修改类型有6步, ... -
数据库事务和锁(转)
2013-07-03 13:50 1115简述 关系型数据 ... -
Oracle事务 行级锁 保存点 回滚 提交(转)
2013-07-03 13:36 935一般事务(DML)即数据修改(增、删、改)的事务事务会将所有 ... -
ORACLE数据库事务隔离级别 (转)
2013-07-03 10:08 916事务隔离级别:一个事务对数据库的修改与并行的另一个 ... -
脏读、幻读、不可重复读
2013-07-03 10:06 1084脏读(Drity Read):某个事务已更新一份数据,另一个 ... -
select for update(转)
2013-06-19 10:46 948Select …forupdate语句是我们经常使用手工加锁 ... -
数据库锁
2013-06-19 09:36 8671 前言 数据库大并发操作要考虑死锁和锁的性能问 ... -
数据库note
2013-06-19 09:35 012.并发处理插入时控制并发,防止业务数据重复,那么把这几个业 ... -
windows 配置oracle
2013-06-04 11:21 994Oracle 创建表空间和用户 一、在Win ... -
SQL0204N "<username>.DUAL" is an undefined name
2013-06-03 14:06 2721"(0x80040E37): [DB2/NT6 ... -
commit rollback
2013-05-30 11:19 1041从SQL语言的分类谈COMMIT ... -
db2 sequence
2013-05-27 17:39 9081、create CREATE SE ... -
SQL提高查询效益之in、not in、between、like等条件讲述
2013-03-28 09:47 0http://cache.baiducontent.com/ ...
相关推荐
HQL支持多种查询方式,包括单表查询、多表查询、连接查询等。其中,多表查询是处理复杂数据关系的关键技术,它允许开发者在一个查询语句中同时操作多个表,从而提高数据处理的效率和查询的灵活性。多表查询通常涉及...
本示例中的“WinForm+SQL多表联合自定义查询”是一个结合了两者的技术,允许用户通过WinForm界面进行自定义的多表联合查询。在实际开发中,这样的功能对于数据检索和分析至关重要,特别是在处理大型复杂数据库时。 ...
在ASP.NET MVC中,最直接的多表查询方式是通过编写SQL语句,利用JOIN操作连接多个表。例如,假设我们有两个表:`Users`和`Orders`,用户表包含用户信息,订单表记录用户的购买记录。可以使用以下SQL JOIN语句: ```...
在Excel中进行多工作簿多工作表的数据查询是数据分析中常见的需求,特别是在处理大量分散的数据时。本主题将深入探讨三种方法,以帮助用户高效地完成这一任务,这些方法包括通用查询、简易方法1和简易方法2。我们将...
2. **MyBatis-Plus中的连表查询**:MP通过`Wrapper`类提供的`leftJoin()`、`rightJoin()`等方法,实现了对这些连接查询的封装。`Wrapper`是一个条件构造器,可以构建复杂的SQL查询语句。例如,你可以创建一个`...
在多表关联查询中,我们需要连接两个或多个表格,根据它们之间的关系(如共享的主键或外键)来获取更复杂的数据信息。 在"源码使用说明.txt"中,很可能是对这个例程的详细解释,包括如何运行、如何理解代码结构,...
### Kettle全量多表数据同步 #### 一. 建立资料库 在进行全量多表数据同步之前,首先需要建立一个资源库来存放所有的转换和作业。资源库是Kettle的一个核心概念,它用于存储和管理转换、作业和其他与数据处理相关...
在SQL查询中,多表查询和子查询是两个非常重要的概念,它们允许我们从多个相关的数据源中获取信息。在数据库管理系统中,处理复杂的数据分析和报表生成往往离不开这两个技术。 首先,我们来讨论多表查询。在单一表...
本篇将深入探讨“sql优化”与“左连接查询”的相关知识点,以及如何提升联表查询的效率。 首先,我们要理解SQL优化的重要性。随着数据库规模的增长,不恰当的查询设计可能导致性能瓶颈,增加服务器负载,影响整个...
接下来,我们转向“三表连接”这个概念,这在数据库设计中是常见的数据查询方法。在关系型数据库中,当数据分布在多个表中时,为了获取完整的信息,通常需要通过连接(JOIN)操作来合并这些表。在学校的上下文中,...
在SQL中,连接查询用于合并来自多个表的数据,这些数据共享一个或多个共同的字段。有几种类型的连接:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。内连接返回两个表中...
关键类可能包括数据库连接类、SQL查询类以及表结构迁移类等。 7. **注意事项**:转换过程中需要注意兼容性问题,如SQL Server特有的特性(如clr存储过程)在Oracle中可能不支持。此外,数据迁移不仅仅是结构的迁移...
连接查询(如INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)则用于合并来自多个表的数据。 8. **交叉表**:交叉表,也称为透视表,通过行和列的交互排列展示数据,通常涉及使用SQL的CROSS JOIN或PIVOT操作。 9. ...
在Kettle8中,模拟表输入实际上可能指的是“表输入”步骤,它可以连接到数据库并执行SQL查询来获取数据。当需要动态决定查询的表名时,我们可以利用Kettle的变量功能。变量提供了一种方式来存储和传递值,这些值可以...
1. **多表联合查询**:通常涉及到多个表之间的连接操作。 2. **分页**:确保能够正确地返回特定页的数据记录。 3. **灵活配置**:允许用户自定义查询条件、排序方式等。 ### 二、参数详解 #### 1. 输入参数 - **@...
常见的多表查询操作包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。MyBatis允许我们在Mapper XML文件或注解中编写这些SQL语句,以实现多表数据的联查。 MyBatis中的...
在多线程环境中,MySQL连接数过多的问题是一个常见的性能瓶颈,尤其在高并发的应用场景下。这通常是由于每个线程创建一个独立的数据库连接导致的,当并发线程数量增加时,连接池中的连接数量也随之增加,如果超过...
1. **语法差异**:隐式连接底层将转换为SQL92的内连接,而显式连接将转换为SQL99的多表连接。这意味着在某些数据库中,如果它们不支持SQL99语法,可能会导致查询失败。 2. **返回结果的不同**:当HQL语句中省略`...
在SQL中,连接查询用于合并来自两个或更多表的数据,基于这些表之间的相关列之间的关系。连接查询主要有以下几种类型:内连接、左连接、右连接和全外连接。 **内连接查询**: 内连接(INNER JOIN)返回两个表中存在...
此外,特定的查询结构,如外连接,可能会阻止优化器使用表扩展。在这种情况下,可以使用`expand_table`提示来强制优化器使用或忽略表扩展,但这并不能绕过语义检查。 表扩展在处理星型查询等场景时尤其有用。比如,...