详解数据库多表连接查询的实现方法
通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。
在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。
连接可以在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。
SQL-92标准所定义的FROM子句的连接语法格式为:
FROM join_table join_type join_table
[ON (join_condition)]
其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。
join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。
外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。
交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。
无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接连接。
(一)内连接
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、、!。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
W WW.002PC .COM从详解数据库多表连接查询的实现方法分析来看,对详解数据库多表连接查询的实现方法的结果。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):
SELECT a.*,p.pub_id,p.pub_name,p.country
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
(二)外连接
内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。
外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:LEFT JOIN 或 LEFT OUTER JOIN;RIGHT JOIN 或 RIGHT OUTER JOIN;FULL JOIN 或 FULL OUTER JOIN。
(1)左向外联接:左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
(2)右向外联接:右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
更多:mysql workbench设置参数化详解数据库多表连接查询的实现方法
https://www.002pc.comhttps://www.002pc.com/mysql/736.html
你可能感兴趣的多表,详解,数据库,查询,连接,方法
php mysqli数据库类PHP PDO类解决数据库连接问题
对于初次接触POD扩展是在PHP5中加入,该扩展提供PHP PDO类来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题。PHP PDO类的目标提供一种轻型、清晰、
python 3.4 视频教程Django数据库类库MySQLdb使用详解
Django项目要操作数据库,首先要和数据库建立连接,才能让程序中的数据和数据库关联起来进行数据的增删改查操作Django项目默认使用mysqldb模块进行和mysql数据库之间的交互操作
python 2.7 安装目录python如何连接数据库
Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。
php 连接虚拟主机thinkphp向数据库插入中文的问题
使用thinkphp模型的add方法向数据库插入中文的时候发现一个问题,W WW.002pc .COM认为此文章对《php 连接虚拟主机thinkphp向数据库插入中文的问题》说的很在理。如果中文参数
asp.net wcfASP.NET中各种连接数据库的配置的方法及json数据转换
一、数据库连接语句
1、MSSQL数据库链接示例
mac apache 支持phpPHP DB 数据库连接类定义与用法示例
本文实例讲述了PHP DB 数据库连接类定义与用法。分享给大家供大家参考,具体如下:
声明:第二电脑网认为此文章对《mac apache 支持phpPHP DB 数据库连接类定义与用法示例》说的
asp.net core 正式版Asp.net连接Access数据库相对路径写法
Asp.net连接Access数据库时,通常我们将数据库连接字串写到web.config配置文件中。而连接字串中的数据库路径只能用绝对路径形式表示,这样如果要移动程序,就必须要修改web.conf
web 传入图片 pythonflask框架实现连接sqlite3数据库的方法分析
本文实例讲述了flask框架实现连接sqlite3数据库的方法。分享给大家供大家参考,具体如下:
1.
asp.net winformasp.net连接数据库 增加,修改,删除,查询代码
复制代码 代码如下:'数据库连接 Public Sub connectionDB() Try serverUrl = readFromIni(My.Application.Info.DirectoryPath
0踩
赏
0 赞