MySQL开发技巧(一)

常用的SQL语句类型:

  • DDL 数据定义语言
  • TPL 事务处理语言
  • DCL 数据控制语言
  • DML 数据操作语言

正确使用SQL的重要性:

  • 增加数据库处理效率,减少应用相应时间
  • 减少数据库服务器负载,增加服务器稳定性
  • 减少服务器间通讯的网络流量

join类型

  • 内连接(INNER)
  • 全外连接(FULL OUTER)
  • 左外连接(LEFT OUTER)
  • 右外连接(RIGHT OUTER)
  • 交叉连接(CROSS)

join从句 – 内连接 (INNER)

西天取经四人组

id user_name over
1 唐僧 旃檀功德佛
2 孙悟空 斗战神佛
3 猪八戒 净坛使者
4 沙僧 金身罗汉

悟空的朋友们

id user_name over
1 孙悟空 成佛
2 牛魔王 被降服
3 蛟魔王 被降服
4 鹏魔王 被降服
5 狮驼王 被降服

内连接
内连接Inner join基于连接谓词将两张表(如A和B)的列组合在一起,产生新的结果表。可以用来交集。
MySQL开发技巧(一)

SELECT a.user_name,a.over,b.over FROM user1 a INNER JOIN user2 b ON a.username=b.user_name;

结果:
MySQL开发技巧(一)

左外连接(LEFT OUTER)

左外连接有两种形式
一种是包含所有A表中的数据
MySQL开发技巧(一)

select a.id,a.user_name, a.over, b.id, b.user_name, b.over 
from user1 a
left join user2 b
on a.user_name = b.user_name

结果:
MySQL开发技巧(一)

一种是通过左外连接查询出只存在于A表中,不存在与B表中的数据
MySQL开发技巧(一)

select a.id,a.user_name, a.over, b.id, b.user_name, b.over 
from user1 a
left join user2 b
on a.user_name = b.user_name
where b.user_name is null;

结果:
MySQL开发技巧(一)

右外连接(RIGHT OUTER)

以右表为基础,查询结果会包好右表中所有的记录。

MySQL开发技巧(一)

在悟空朋友中有谁参与的取经:

select b.user_name,b.over,a.over
from user1 a
Right JOIN user2 b
on a.user_name = b.user_name
where a.user_name is not null;

MySQL开发技巧(一)

join从句—全连接(Full-Join)

全连接可以查询所有存在于A表和B表中的数据
或者查询只存在A表或B表中的数据

MySQL开发技巧(一)

MySQL不支持全连接,可以使用union all来实现

select a.id,a.user_name, a.over, b.id, b.user_name, b.over 
from user1 a
left join user2 b
on a.user_name = b.user_name
union all
select a.id,a.user_name, a.over, b.id, b.user_name, b.over 
from user1 a
right join user2 b
on a.user_name = b.user_name;

结果:
MySQL开发技巧(一)

join从句—交叉连接(cross join)

交叉连接(cross join),又称笛卡尔连接(cartesian join)或叉乘,如果A和B是连个集合,他们的交叉连接即为AXB
不需要提供连接关键词从句

相关文章: