数据库查询 的 笛卡尔积、等值连接、外连接和内连接

本文通过创建两张表并插入数据,详细介绍了SQL中的笛卡尔积、等值连接、内外连接等概念,并提供了具体的查询示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建两张表

建表SQL:

CREATE TABLE `employee` (
  `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `dept_type` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

INSERT INTO `employee` VALUES (1, 'test1', 1);
INSERT INTO `employee` VALUES (2, 'test2', 2);
INSERT INTO `employee` VALUES (3, 'test3', 10);


CREATE TABLE `dept` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `dept_type` int(11) DEFAULT NULL,
  `description` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

INSERT INTO `dept` VALUES (1, 1, 'qwe');
INSERT INTO `dept` VALUES (2, 1, 'rty');
INSERT INTO `dept` VALUES (3, 2, 'iop');
INSERT INTO `dept` VALUES (4, 3, 'hjk');

employee表

224657_el3o_3017023.png

dept表

224753_W6fB_3017023.png

笛卡尔积:

SELECT * FROM employee,dept;

结果:

224922_p8Zm_3017023.png

等值连接:

SELECT * FROM employee e,dept d
WHERE e.dept_type = d.dept_type ;

结果:

225023_Ja89_3017023.png

外连接(左外连接left join、右外连接right join)

/*左外连接*/
SELECT * FROM employee e LEFT JOIN dept d
ON e.dept_type = d.dept_type;

/*右外连接*/
SELECT * FROM employee e RIGHT JOIN dept d
ON e.dept_type = d.dept_type;

左外连接:

225237_oclW_3017023.png

右外连接:

225307_XHOp_3017023.png

内连接:


SELECT * FROM employee e JOIN dept d
ON e.dept_type = d.dept_type;

SELECT * FROM employee e INNER JOIN dept d
ON e.dept_type = d.dept_type;

两个的结果是一样的:

225415_42Fk_3017023.png

不必过多解释,看结果就很明白区别在哪了

转载于:https://my.oschina.net/GinkGo/blog/1560137

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值