数据库索引的作用和注意点
数据库索引的分类
关于函数索引的特点
聚集索引和非聚集索引的区别和用法
左右关联
--[转] 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
实验如下:
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 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
NULL NULL 8 2006032408
(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
3.inner join
sql语句如下:
SELECT * FROM A
INNERJOIN 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
结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
-----------------[以下为网上的一点资料]------------------
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
语法:
FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2
说明:
① table1, table2参数用于指定要将记录组合的表的名称。
② field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
③ compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
④ 如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误
再来一个比较强悍的贴(一下唤醒了我本科的数据库课...)原文:http://hi.baidu.com/kevinstudio2003/blog/item/45a67f37fffc943d0a55a9c0.html
FROM语句之结合条件
分为INNER JOIN,LEFT JOIN,RIGHT JOIN。结合条件一般分为内部结合和外部结合,INNER JOIN是内部结合,后两者为外部结合。LEFT就是表示全部保留左边表,RIGHT JOIN全部保留左边表。
条件式用ON来指定,如果多个条件,则用AND来连接
--例子:表foo和表bar以foo.a = bar.a 来实现内部结合
SELECT * FROM foo INNER JOIN bar ON foo.a = bar.a
三个以上的结合
三个以上表的结合是先结合两个表,然后将结果当作一个表再与另一个表结合。
--例子:将foo , bar , more 三表结合
SELECT * FROM ( foo INNER JOIN bar ON foo.a = bar.a )
INNER JOIN more ON foo.a = more.a
LEFT JOIN和 RIGHT JOIN
使用LEFT JOIN 和 RIGHT JOIN时,一定要注意位置。“foo LEFT JOIN bar ”就是将左边的foo表的所有行保留,匹配不上的显示NULL。反之,“foo RIGHT JOIN bar”就是将右侧的bar表全部保留,匹配不上的显示NULL。
--例子:将foo , bar 两表左结合
图1
FULL OUTER JOIN
完整外部连接,取包含所有左侧内容和右侧内容的数据。
需要注意的是MySQL,Access不能使用此功能
--例子:取上图foo,bar两表之FULL OUTER JOIN
SELECT * FROM foo FULL OUTER JOIN bar ON foo.a = bar.a
结果是:
图2
CROSS JOIN
交叉结合,取结合之表的全行数据,就好象是在连接两个表格时忘记加入一个WHERE子句一样。交叉结合时,没有结合条件。
注意,DB2,ACCESS不能使用此语句
--例子:取图1中foo,bar两表交叉结合。
SELECT * FROM foo CROSS JOIN bar
结果是:
图3
分享到:
相关推荐
基于Neo4j图数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j图数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j图数据库的医疗知识图谱智能问答机器人python源码+项目...
毕设项目-基于知识图谱的课程学习智能问答系统python源码+项目操作说明.zip 环境依赖: ### 前端: - Vite:4.1.4 - Vue3:3.2.47 - Element Plus:2.3.2 - Axios:1.3.5 - neovis.js:2.1.0 ### 后端: - ...
毕业设计:python基于知识图谱的百科知识问答平台(源码 + 数据库 + 说明文档) 第二章 相关技术介绍 8 2.1网络爬虫 8 2.2 python语言 8 2.3 django框架 9 2.4 MySQL数据库 9 第三章 系统需求分析 10 3.1系统的需求...
本项目是一套基于springboot+vue的问答社区系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业包含:项目源码、数据库脚本、软件工具、项目说明等,该...
SpringBoot集成Neo4j图数据库+利用Spark的朴素贝叶斯分类器实现基于电影知识图谱的智能问答系统源码+项目说明.zip SpringBoot集成Neo4j图数据库+利用Spark的朴素贝叶斯分类器实现基于电影知识图谱的智能问答系统源码...
其中,数据抓取模块负责从网络上抓取相关的医疗知识,将数据存储到数据库中。数据存储模块负责将从网络上抓取到的数据存储到数据库中。数据处理模块负责对存储在数据库中的数据进行预处理,以提高问答模块的查询效率...
基于SpringBoot+Mybatis+Redis开发的一个问答社区源码+sql数据库(仿牛客网).zip 【项目介绍】 主要功能: 使用 ThreadLocal 保存用户状态,通过拦截器拦截请求,根据自定义注解判断用户登录状态 使用 Ajax 异步发帖...
基于python的豆瓣书籍+电影类别知识图谱问答系统源码+数据库+数据+示例图片.zip 基于python的豆瓣书籍+电影类别知识图谱问答系统源码+数据库+数据+示例图片.zip 基于python的豆瓣书籍+电影类别知识图谱问答系统源码+...
毕业设计:python医疗领域用户问答的意图识别算法研究(源码 + 数据库 + 说明文档) 2 相关理论及需求分析 10 2.1 相关理论 10 2.1.1 命名实体识别 10 2.1.2 实体对齐 10 2.1.3 语义知识库问答 10 2.2 可行性分析 10...
本项目是一套基于Python和mysql开发的BBS问答社区管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设...
自然语言处理数据集-近万条多条保险行业问答数据 用于FAQ 问答系统的分析
5.1.1. 解释对象数据库系统中面向对象的相关概念 29 5.1.2. 从概念上比较对象数据库模型与对象关系模型 29 5.1.3. 利用左深树、右深树、浓密树来进行查询优化的各自特点 29 5.1.4. 试解释影响并行数据库系统中并行...
基于Java+SpringBoot的社区问答网站毕业设计(源码+说明+演示视频+数据库).zip 【项目技术】 开发语言:Java 框架:Springboot 架构:B/S 数据库:mysql 【实现功能】 社区问答网站为用户提供在线信息发布服务,系统...
Springboot+Vue项目实战-社区问答网站的Java毕业设计(源码+说明+演示视频+数据库).zip 【项目技术】 开发语言:Java 框架:Springboot+vue 架构:B/S 数据库:mysql 【实现功能】 社区问答网站为用户提供在线信息...
在这里我将给大家讲解一遍整个过程,大家也将学会如何使用图数据库Neo4j、如何用Python搭建自动问答系统、建立一个自己的网站以及把这个问答系统部署到自己的网站上 - 不懂运行,下载完可以私聊问,可远程教学 该...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...