当前位置:网站首页>mysql 基础查询

mysql 基础查询

2022-06-23 05:38:00 小代码2016

参考

http://www.nowamagic.net/librarys/veda/detail/936

sql join 图

在这里插入图片描述

down

sql

create table tablea(
	id int primary key auto_increment,
	uname varchar(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

insert into tablea(uname) values('Pirate');
insert into tablea(uname) values('Monkey');
insert into tablea(uname) values('Ninja');
insert into tablea(uname) values('Spaghetti');

create table tableb(
	id int primary key auto_increment,
	uname varchar(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

insert into tableb(uname) values('Rutabaga');
insert into tableb(uname) values('Pirate');
insert into tableb(uname) values('Darth Vader');
insert into tableb(uname) values('Ninja');

笛卡尔积

select
	a.id as 'a_id',
	a.uname as 'a_name',
	b.id as 'b_id',
	b.uname as 'b_name'
from
	tablea a,
	tableb b;

+------+-----------+------+-------------+
| a_id | a_name    | b_id | b_name      |
+------+-----------+------+-------------+
|    1 | Pirate    |    1 | Rutabaga    |
|    2 | Monkey    |    1 | Rutabaga    |
|    3 | Ninja     |    1 | Rutabaga    |
|    4 | Spaghetti |    1 | Rutabaga    |
|    1 | Pirate    |    2 | Pirate      |
|    2 | Monkey    |    2 | Pirate      |
|    3 | Ninja     |    2 | Pirate      |
|    4 | Spaghetti |    2 | Pirate      |
|    1 | Pirate    |    3 | Darth Vader |
|    2 | Monkey    |    3 | Darth Vader |
|    3 | Ninja     |    3 | Darth Vader |
|    4 | Spaghetti |    3 | Darth Vader |
|    1 | Pirate    |    4 | Ninja       |
|    2 | Monkey    |    4 | Ninja       |
|    3 | Ninja     |    4 | Ninja       |
|    4 | Spaghetti |    4 | Ninja       |
+------+-----------+------+-------------+

A与B的交集

A与B都有的
在这里插入图片描述

select
	a.id as 'a_id',
	a.uname as 'a_name',
	b.id as 'b_id',
	b.uname as 'b_name'
from
	tablea a
inner join tableb b on a.uname = b.uname;

+------+--------+------+--------+
| a_id | a_name | b_id | b_name |
+------+--------+------+--------+
|    1 | Pirate |    2 | Pirate |
|    3 | Ninja  |    4 | Ninja  |
+------+--------+------+--------+

左外链接

输出的是A的全集,且B表中匹配的则有值,没有的则为NULL
在这里插入图片描述

select
	a.id as 'a_id',
	a.uname as 'a_name',
	b.id as 'b_id',
	b.uname as 'b_name'
from
	tablea a
left outer join tableb b on a.uname = b.uname;

+------+-----------+------+--------+
| a_id | a_name    | b_id | b_name |
+------+-----------+------+--------+
|    1 | Pirate    |    2 | Pirate |
|    3 | Ninja     |    4 | Ninja  |
|    2 | Monkey    | NULL | NULL   |
|    4 | Spaghetti | NULL | NULL   |
+------+-----------+------+--------+

A中有而B中没有的

在这里插入图片描述

select
	a.id as 'a_id',
	a.uname as 'a_name',
	b.id as 'b_id',
	b.uname as 'b_name'
from
	tablea a
left outer join tableb b on a.uname = b.uname
where
	b.id is null;

+------+-----------+------+--------+
| a_id | a_name    | b_id | b_name |
+------+-----------+------+--------+
|    2 | Monkey    | NULL | NULL   |
|    4 | Spaghetti | NULL | NULL   |
+------+-----------+------+--------+

A与B都有的

在这里插入图片描述

# mysql 不支持
select * from tablea a full outer join tableb b on a.id = b.id;
# mysql 全外链接
select
	* 
from
	tablea a
	left join tableb b on a.uname = b.uname 

union

select
	* 
from
	tablea a
	right join tableb b on a.uname = b.uname;

+------+-----------+------+-------------+
| id   | uname     | id   | uname       |
+------+-----------+------+-------------+
|    1 | Pirate    |    2 | Pirate      |
|    3 | Ninja     |    4 | Ninja       |
|    2 | Monkey    | NULL | NULL        |
|    4 | Spaghetti | NULL | NULL        |
| NULL | NULL      |    1 | Rutabaga    |
| NULL | NULL      |    3 | Darth Vader |
+------+-----------+------+-------------+


A与B中都没有的

在这里插入图片描述

# mysql 不支持
select * from tablea a full outer join tableb on a.id = b.id where a.id is null or b.id is null;
select
	* 
from
	tablea a
	left join tableb b on a.uname = b.uname
	where b.uname is null

union

select
	* 
from
	tablea a
	right join tableb b on a.uname = b.uname
	where a.uname is null;

+------+-----------+------+-------------+
| id   | uname     | id   | uname       |
+------+-----------+------+-------------+
|    2 | Monkey    | NULL | NULL        |
|    4 | Spaghetti | NULL | NULL        |
| NULL | NULL      |    1 | Rutabaga    |
| NULL | NULL      |    3 | Darth Vader |
+------+-----------+------+-------------+

原网站

版权声明
本文为[小代码2016]所创,转载请带上原文链接,感谢
https://khlbat.blog.csdn.net/article/details/88154684