DQL -- 多表联合查询

现实生活中,我们需要查询的数据并不独立存在在某一张表中,此时就需要进行多表联合,进行查询操作了。多表联合主分四种:隐式内连接,现实内连接,左外连接和右外连接。左外连接和右外连接同时使用称为全外连接。

数据表准备(用户,商品):

 create table user(
    -> id int auto_increment,
    -> name varchar(30) not null,
    -> gid varchar(10) default 0,
    -> primary key(id)
    -> );

 create table goods(
    -> gid int auto_increment,
    -> name varchar(30) not null,
    -> price int not null,
    -> primary key(gid)
    -> );
DQL -- 多表联合查询_第1张图片
创建表
insert into user(neme,gid) values('GHope',3),
    -> ('老子',1),
    -> ('孔子',0),
    -> ('鬼谷子',1),
    -> ('孟子',1),
    -> ('孙子',2),
    -> ('庄子',2),
    -> ('晏子',0);

insert into goods(name,price) values('四库全书',200),
    -> ('逍遥游',99),
    -> ('时间简史',897),
    -> ('世界通史',765),
    -> ('进化论',233);
DQL -- 多表联合查询_第2张图片
插入数据
DQL -- 多表联合查询_第3张图片
内外连接

隐式内连接

基本语法

查询数据库中谁买了哪本书
select user.neme,goods.name from user,goods where user.gid=goods.gid;

DQL -- 多表联合查询_第4张图片
查询结果

显示内连接

基本语法

查询数据库中谁买了哪本书
select user.neme as uname,goods.name as gname from user join goods on user.gid=goods.gid;

解释说明
DQL -- 多表联合查询_第5张图片
查询结果

左外连接

基本语法

查询用户购买书籍情况
select user.neme as uname,goods.name as gname from user left join goods on user.gid=goods.gid;

DQL -- 多表联合查询_第6张图片
查询结果

右外连接

基本语法

查看书籍被购买情况
select user.neme as uname,goods.name as gname from user right join goods on user.gid=goods.gid;

DQL -- 多表联合查询_第7张图片
查询结果

记录联合

DQL -- 多表联合查询_第8张图片
基本语法

查看数据库内所有关于用户与书籍相关信息
select user.neme as uname,goods.name as gname from user left join goods on user.gid=goods.gid union select user.neme as uname,goods.name as gname from user right join goods on user.gid=goods.gid;

DQL -- 多表联合查询_第9张图片
查询结果

子(嵌套)查询

image.png

查询购买四库全书的用户
select neme from user where gid in (select gid from goods where name='四库全书');
DQL -- 多表联合查询_第10张图片
查询结果

你可能感兴趣的:(DQL -- 多表联合查询)