前言
相信很多小伙伴都背过内连接和外连接的区别或者左连接和右链接的区别,但是你们真正懂得他们之间的区别嘛,我们通过几个简单的例子看看,看看你理解的是否正确?
案例一
问题:
- 内连接查询得到几条数据?
- 左外连接查询得到几条数据?
- 右外连接查询得到几条数据?
建表语句:
-- 创建部门表 dept
CREATE TABLE `dept` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
insert into `dept`(`id`,`name`) values
(1,'财务部'),
(2,'人事部'),
(3,'科技部'),
(4,'销售部');
-- 创建员工表 emp
CREATE TABLE `emp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`dept_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
insert into `emp`(`id`,`name`,`dept_id`) values
(1,'张三',NULL),
(2,'李四',2),
(3,'赵六',3),
(5,'刘能',4);
答案:
- 内连接查询得到几条数据?
- 3条
- 左外连接查询得到几条数据?
- 4条
- 右外连接查询得到几条数据?
- 4条
案例二
问题:
- 内连接查询得到几条数据?
- 左外连接查询得到几条数据?
- 右外连接查询得到几条数据?
建表语句
-- 创表语句
create table A(
user_id int(10) primary key auto_increment comment '用户ID',
user_name varchar(20) not null comment '用户名字',
user_works varchar(50) not null comment '用户喜好'
);
create table B(
user_name varchar(20) not null comment '用户名字',
works_content varchar(30) not null comment '喜好内容'
);
-- 插入数据:表A
insert into A values (null,'karry','音乐,电影,电视剧');
insert into A values (null,'roy','音乐,电影,电视剧');
insert into A values (null,'jackson','音乐,电影,电视剧');
insert into A values (null,'ruby','音乐,电影,电视剧');
insert into A values (null,'tom','音乐,电影,电视剧');
-- 插入数据:表B
insert into B values ('karry','长城');
insert into B values ('karry','超少年密码');
insert into B values ('roy','爵迹');
insert into B values ('roy','超少年密码');
insert into B values ('jackson','少年的你');
insert into B values ('jackson','超少年密码');
insert into B values ('tfboys','HEART');
答案:
- 内连接查询得到几条数据?
- 6条
- 左外连接查询得到几条数据?
- 8条
- 右外连接查询得到几条数据?
- 7条
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/107610.html