sql中的内联和外联(简单用法)

有两张表:user和department

User表:

CREATE TABLE `user` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `name` varchar(30) DEFAULT NULL,
   `age` int(11) DEFAULT NULL,
   `birthday` date DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) 

INSERT INTO USER VALUE(NAME,age,birthday) VALUES("张三",20,"2018-10-31");

表内数据如下:

  

部门表:

CREATE TABLE `department` (
   `id` bigint(11) NOT NULL,
   `name` varchar(10) NOT NULL,
   `descr` varchar(50) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) 

INSERT INTO department (id,NAME,descr) VALUES(1,"开发部","开发高级产品");

表内数据如下:

  

一、正常两表联合查询的sql语句:

SELECT u.id,u.name,u.age,d.name,d.descr FROM USER u,department d WHERE u.id=d.id

查询结果

 

 (或者:SELECT * FROM USER u,department d WHERE u.id=d.id)

 

二、左联查询sql语句:

SELECT * FROM USER u LEFT JOIN department d ON u.id=d.id

查询结果:

 

根据查询结果可以看出:左联查询把前面表(user)全部查出,右表只查出部分,左表有的右表没有就为空

 

三、右联查询sql语句:

SELECT * FROM USER u RIGHT JOIN department d ON u.id=d.id

查询结果:

 

根据结果可以看出:右联查询把后面表(department)全部查出,左表只查出部分,右表有的左表没有就为空

 

四、内联查询sql语句:

SELECT * FROM USER u INNER JOIN department d ON u.id=d.id

 

其结果与SELECT * FROM USER u,department d WHERE u.id=d.id查询结果一样,查出两表中满足条件的记录(是两张表同时满足哦)

 

还可以使用where或and带条件查询。

SELECT * FROM USER u INNER JOIN department d ON u.id=d.id AND u.age=20

查询结果:

 

SELECT * FROM USER u LEFT JOIN department d ON u.id=d.id WHERE u.name LIKE '%王%'

 

SELECT * FROM USER u RIGHT JOIN department d ON u.id=d.id AND u.age=20

查询结果:

 

 

根据以上可以看出:

1、使用外联查询时,添加and查询条件,不影响内外联查询的性质,只是查询的结果满足查询条件,添加where查询条件时,只能查到满足条件的记录(结果与内联查询一样)。

2、内联查询时,添加and或where条件时,查询结果都一样,只与查询条件有关

 

转载于:https://www.cnblogs.com/skyxia/p/9927288.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值