在数据库中,经常需要使用多张表进行数据查询和处理。简单的单表查询只能解决一部分问题,如果想要从多个表中获取需要的数据,则需要使用多表连接查询功能。下面将介绍几种常用的SQL多表连接查询技巧。
网站制作、成都网站建设介绍好的网站是理念、设计和技术的结合。创新互联建站拥有的网站设计理念、多方位的设计风格、经验丰富的设计团队。提供PC端+手机端网站建设,用营销思维进行网站设计、采用先进技术开源代码、注重用户体验与SEO基础,将技术与创意整合到网站之中,以契合客户的方式做到创意性的视觉化效果。
1. 内连接查询
内连接查询也叫交集查询,其语法为:SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;
内连接查询的作用是根据两个及以上表中的共同属性进行查询。比如,我们需要查询“订单”表和“客户”表中都包含的“客户名”和“订单日期”信息,可以这样写:
SELECT customers.customer_name, orders.order_date
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;
上面的语句中,我们使用了INNER JOIN关键字来将“客户”表和“订单”表连接。这些表可以有多个共同属性,但是只能有一个属性进行匹配,示例中我们选择的是客户ID(customers.customer_id = orders.customer_id)来进行匹配的。
2. 左连接查询
左连接查询(LEFT JOIN)也称为左外连接,其格式为:SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
左连接查询的作用是在显示“左边”表(即SELECT语句中写在前面的表)的全部字段时在“右边”表中查找相匹配的行。如果右边表匹配不上,会自动填充为NULL值,不会丢失任何有用信息。比如,我们需要查询“订单”表中的信息和处在“客户”表和“订单详情”表“货物价格”的信息,可以这样执行:
SELECT orders.order_date, customers.customer_name, order_detls.price
FROM ((orders
LEFT JOIN customers ON orders.customer_id=customers.customer_id)
LEFT JOIN order_detls ON orders.order_id=order_detls.order_id)
ORDER BY orders.order_date;
这里使用了两次左连接查询操作,将三张表连接在一起,将最终的数据结果按照订单日期来排序。
3. 右连接查询
右连接查询(RIGHT JOIN)也称为右外连接,与左连接查询类似。其格式为:SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;
右连接查询的作用与左连接查询相反,即在“右边”表中查找全部字段,如果左边表匹配不上,则填充为NULL值。比如,我们需要查询“客户”表中的信息和对应的“订单”表和“付款”表中包含的“付款金额”信息,可以这样写:
SELECT customers.customer_name, orders.order_date, payments.amount
FROM ((payments
RIGHT JOIN orders ON payments.order_id=orders.order_id)
RIGHT JOIN customers ON orders.customer_id=customers.customer_id)
ORDER BY customers.customer_name;
这里使用了两次右连接查询操作,将三张表连接在一起,将最终的数据结果按照顾客名字来排序。
4. 复合连接查询
复合连接查询指将多个连接方式组合在一起使用,以满足用户的具体查询需求。常见的组合方式有以下几种:
(1)多表内连接查询
SELECT A.country, C.order_id
FROM A
INNER JOIN B ON A.id = B.id
INNER JOIN C ON B.id = C.id
WHERE A.country LIKE ‘C%’
ORDER BY A.country;
(2)多表左连接查询
SELECT A.country, C.order_id
FROM A
LEFT JOIN B ON A.id = B.id
LEFT JOIN C ON B.id = C.id
WHERE A.country LIKE ‘C%’
ORDER BY A.country;
(3)多表右连接查询
SELECT A.country, C.order_id
FROM A
RIGHT JOIN B ON A.id = B.id
RIGHT JOIN C ON B.id = C.id
WHERE A.country LIKE ‘C%’
ORDER BY A.country;
5. 全连接查询
全连接查询(FULL JOIN)可以返回两张表中所有的行,无论这些行能否匹配,然后根据条件筛选出所需的字段信息。全连接查询的格式为:SELECT column_name(s) FROM table1 FULL JOIN table2 ON table1.column_name=table2.column_name;
全连接查询语句的应用范围较窄,因为它会返回两张表中所有的信息,而且早期版本的MySQL不支持该查询方式。如果必须使用全连接查询,则需要先使用不同的语句将信息在内部处理,这未免有些繁琐。
相关问题拓展阅读:
可以这样做:比如有两个TADODataSet组成主细表
adsMain和adsDetail,需要加上一个TDataSource对象用于连接主表的DataSet,然后设置adsDetail的DataSource为主表的DataSource,山冲最后写各自的CommandText:棚李主表为:select
*
from
主表细表:select
*
from
细表
where
关联字段=:关联字段链唯迟
查看原帖>>
关于不同数据库数据关联查询的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
网站题目:多表连接SQL查询技巧(不同数据库数据关联查询)
路径分享:http://www.csdahua.cn/qtweb/news6/556706.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网