MySQL连接查询实例详解

 更新时间:2018年06月28日 08:42:37   作者:程志伟  
这篇文章主要介绍了MySQL连接查询,结合实例形式总结分析了mysql表的创建、内连接、左连接、右连接、复合条件连接查询等相关操作技巧,需要的朋友可以参考下

本文实例讲述了MySQL连接查询。分享给大家供大家参考,具体如下:

创建表suppliers:

CREATE TABLE suppliers
(
 s_id   int   NOT NULL AUTO_INCREMENT,
 s_name  char(50) NOT NULL,
 s_city  char(50) NULL,
 s_zip   char(10) NULL,
 s_call  CHAR(50) NOT NULL,
 PRIMARY KEY (s_id)
) ;
INSERT INTO suppliers(s_id, s_name,s_city, s_zip, s_call)
VALUES(101,'FastFruit Inc.','Tianjin','300000','48075'),
(102,'LT Supplies','Chongqing','400000','44333'),
(103,'ACME','Shanghai','200000','90046'),
(104,'FNK Inc.','Zhongshan','528437','11111'),
(105,'Good Set','Taiyuang','030000', '22222'),
(106,'Just Eat Ours','Beijing','010', '45678'),
(107,'DK Inc.','Zhengzhou','450000', '33332');

内连接

SELECT suppliers.s_id, s_name,f_name, f_price
FROM fruits ,suppliers
WHERE fruits.s_id = suppliers.s_id;

使用 inner join 语法进行内连接查询

SELECT suppliers.s_id, s_name,f_name, f_price
FROM fruits
INNER JOIN suppliers ON fruits.s_id = suppliers.s_id;

创建表orders:

CREATE TABLE orders
(
 o_num int   NOT NULL AUTO_INCREMENT,
 o_date datetime NOT NULL,
 c_id  int   NOT NULL,
 PRIMARY KEY (o_num)
) ;
INSERT INTO orders(o_num, o_date, c_id)
VALUES(30001, '2008-09-01', 10001),
(30002, '2008-09-12', 10003),
(30003, '2008-09-30', 10004),
(30004, '2008-10-03', 10005),
(30005, '2008-10-08', 10001);

左连接

SELECT customers.c_id, orders.o_num
FROM customers LEFT OUTER JOIN orders
ON customers.c_id = orders.c_id;

右连接

SELECT customers.c_id, orders.o_num
from customers RIGHT OUTER JOIN orders
ON customers.c_id = orders.c_id;

复合条件连接查询

SELECT customers.c_id, orders.o_num
FROM customers INNER JOIN orders
ON customers.c_id = orders.c_id AND customers.c_id = 10001;
SELECT suppliers.s_id, s_name,f_name, f_price
FROM fruits INNER JOIN suppliers
ON fruits.s_id = suppliers.s_id
ORDER BY fruits.s_id;

【例.46】在fruits表和suppliers表之间使用内连接查询,查询之前,查看两个表的结构

SELECT suppliers.s_id, s_name,f_name, f_price
FROM fruits ,suppliers
WHERE fruits.s_id = suppliers.s_id;

【例.47】在fruits表和suppliers表之间使用INNER JOIN语法进行内连接查询

SELECT suppliers.s_id, s_name,f_name, f_price
FROM fruits INNER JOIN suppliers
ON fruits.s_id = suppliers.s_id;

【例.48】查询供应f_id='a1'的水果供应商提供的其他水果种类

SELECT f1.f_id, f1.f_name
FROM fruits AS f1, fruits AS f2
WHERE f1.s_id = f2.s_id AND f2.f_id = 'a1';

【例.49】在customers表和orders表中,查询所有客户,包括没有订单的客户,SQL语法如下

SELECT customers.c_id, orders.o_num
FROM customers LEFT OUTER JOIN orders
ON customers.c_id = orders.c_id;

【例.50】在customers表和orders表中,查询所有订单,包括没有客户的订单

SELECT customers.c_id, orders.o_num
from customers RIGHT OUTER JOIN orders
ON customers.c_id = orders.c_id;

【例.51】在customers表和orders表中,使用INNER JOIN语法查询customers表中ID为10001、的客户的订单信息

SELECT customers.c_id, orders.o_num
FROM customers INNER JOIN orders
ON customers.c_id = orders.c_id AND customers.c_id = 10001;

【例.52】在fruits表和suppliers表之间使用INNER JOIN语法进行内连接查询,并对查询结果排序

SELECT suppliers.s_id, s_name,f_name, f_price
FROM fruits INNER JOIN suppliers
ON fruits.s_id = suppliers.s_id
ORDER BY fruits.s_id;

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总

希望本文所述对大家MySQL数据库计有所帮助。

相关文章

  • MySQL过滤重复数据的两种方法示例

    MySQL过滤重复数据的两种方法示例

    数据库生成环境中经常会遇到表中有重复的数据,或者进行关联过程中产生重复数据,下面这篇文章主要给大家介绍了关于MySQL过滤重复数据的两种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • 新装MySql后登录出现root帐号提示mysql ERROR 1045 (28000): Access denied for use的解决办法

    新装MySql后登录出现root帐号提示mysql ERROR 1045 (28000): Access denied

    这篇文章主要介绍了新装MySql后登录出现root帐号提示mysql ERROR 1045 (28000): Access denied for use的解决办法,需要的朋友可以参考下
    2017-01-01
  • MYSQL必知必会读书笔记 第一章(基础)

    MYSQL必知必会读书笔记 第一章(基础)

    数据库(database)是一个以某种有组织的方式存储的数据集合。本文是小编日常收集整理些有关mysql的知识,非常具有参考价值,感兴趣的朋友一起学习吧
    2016-05-05
  • 详解MySQL主从复制及读写分离

    详解MySQL主从复制及读写分离

    这篇文章主要介绍了详解MySQL主从复制及读写分离,文中有非常详细的代码示例,对正在学习mysql的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • MySQL数据库安全秘籍之守护数据金库防火防盗防攻击

    MySQL数据库安全秘籍之守护数据金库防火防盗防攻击

    MySQL是许多公司和组织的关键数据库,因此其安全性的重要性如此显而易见,为了确保MySQL的安全性,需要采取多种措施来增强其安全性,本文给大家介绍MySQL数据库安全秘籍之守护数据金库防火防盗防攻击,感兴趣的朋友一起看看吧
    2023-03-03
  • 浅谈一下MyISAM和InnoDB存储引擎的区别

    浅谈一下MyISAM和InnoDB存储引擎的区别

    这篇文章主要介绍了MyISAM和InnoDB存储引擎的区别,存储引擎是MySQL中特有的一个术语,其它数据库中没有,实际上存储引擎是一个表存储/组织数据的方式,今天就跟小编来看看MyISAM和InnoDB存储引擎的区别,需要的朋友可以参考下
    2023-04-04
  • Mysql更改默认引擎为Innodb的步骤方法

    Mysql更改默认引擎为Innodb的步骤方法

    mysql默认是关闭InnoDB存储引擎的使用的,而Mysql默认引擎是MyISAM,而MyISAM并不支持事务处理,因为最近项目中的需要所以要更换引擎,通过查找网上的资料后解决了,现在将步骤方法分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • SQL中MIN和MAX及常见函数教程示例

    SQL中MIN和MAX及常见函数教程示例

    这篇文章主要为大家介绍了SQL中MIN和MAX及常见函数教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • MySQL会发生死锁的几种情况及处理方法

    MySQL会发生死锁的几种情况及处理方法

    数据库的死锁是指不同的事务在获取资源时相互等待,导致无法继续执行的一种情况,当发生死锁时,数据库系统会自动中断其中一个事务,以解除死锁,本文给大家介绍了MySQL什么情况下会死锁,发生了死锁怎么处理呢,需要的朋友可以参考下
    2023-09-09
  • Linux环境下安装mysql5.7.36数据库教程

    Linux环境下安装mysql5.7.36数据库教程

    大家好,本篇文章主要讲的是Linux环境下安装mysql5.7.36数据库教程,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论