后端开发工程师-数据库管理-MySQL_连接查询与子查询.docx

后端开发工程师-数据库管理-MySQL_连接查询与子查询.docx

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE1

PAGE1

MySQL连接查询基础

1理解连接查询的重要性

在处理数据库时,我们经常需要从多个表中提取信息。例如,一个电子商务网站可能有用户表、订单表和产品表。为了获取某个用户的所有订单详情,包括产品信息,我们需要将这些表连接起来。连接查询允许我们从多个表中检索数据,这些表通过一个或多个公共列相关联。这极大地提高了数据检索的效率和准确性,是数据库操作中不可或缺的一部分。

2内连接(INNERJOIN)详解

内连接(INNERJOIN)是最常见的连接类型,它返回两个表中具有匹配值的行。如果某行在其中一个表中没有匹配,那么不会在结果集中出现。

2.1示例代码

假设我们有两个表:users和orders。users表包含用户信息,orders表包含订单信息,两表通过用户ID(user_id)相关联。

--创建users表

CREATETABLEusers(

user_idINTAUTO_INCREMENTPRIMARYKEY,

usernameVARCHAR(50),

emailVARCHAR(100)

);

--创建orders表

CREATETABLEorders(

order_idINTAUTO_INCREMENTPRIMARYKEY,

user_idINT,

product_nameVARCHAR(50),

quantityINT,

FOREIGNKEY(user_id)REFERENCESusers(user_id)

);

--插入数据到users表

INSERTINTOusers(username,email)

VALUES(Alice,alice@),

(Bob,bob@),

(Charlie,charlie@);

--插入数据到orders表

INSERTINTOorders(user_id,product_name,quantity)

VALUES(1,Laptop,1),

(1,Mouse,2),

(2,Keyboard,1);

2.2内连接查询

SELECTusers.username,duct_name,orders.quantity

FROMusers

INNERJOINordersONusers.user_id=orders.user_id;

2.3解释

上述查询将返回所有用户和他们的订单详情。由于INNERJOIN只返回匹配的行,如果某个用户没有订单,那么该用户的信息将不会出现在结果集中。

3外连接(LEFTJOIN,RIGHTJOIN)解析

外连接分为左外连接(LEFTJOIN)和右外连接(RIGHTJOIN)。左外连接返回左表中的所有行,即使在右表中没有匹配的行,也会在结果集中显示为NULL。右外连接则相反,返回右表中的所有行。

3.1示例代码

使用之前的users和orders表,我们来演示左外连接和右外连接。

3.1.1左外连接

SELECTusers.username,duct_name,orders.quantity

FROMusers

LEFTJOINordersONusers.user_id=orders.user_id;

3.1.2右外连接

SELECTusers.username,duct_name,orders.quantity

FROMusers

RIGHTJOINordersONusers.user_id=orders.user_id;

3.2解释

左外连接将返回所有用户的信息,即使他们没有订单。对于没有订单的用户,product_name和quantity将显示为NULL。右外连接则会返回所有订单信息,即使这些订单没有对应的用户信息。

4自连接与实例演示

自连接是指在一个查询中连接同一个表的两个实例。这通常用于检索表中具有某种关系的行,例如,查找具有相同属性的记录。

4.1示例代码

假设我们有一个employees表,其中包含员工的ID、姓名和经理ID。

--创建employees表

CREATETABLEemployees(

employee_idINTAUTO_INCREMENTPRIMARYKEY,

nameVARCHAR(50),

manager_idINT

);

--插入数据到employees表

INSERTINTOemployees(name,manag

文档评论(0)

kkzhujl + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档