1.引入
我们的开发需求中,会经常使用到俩张数据库表的关联操作,根据我们不同的需求,需要对这俩张表进行不同的操作。无论我们怎么样操作,其结果都是这俩张表里面的内容。我们通过join的操作,可以获取数据库表里面的任何内容。下面,我们根据俩张数据库表进行理解。
2.创建测试数据库表
(1).创建员工表(employee)
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
`employee_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(25) NOT NULL,
`phone_num` bigint(20) DEFAULT NULL,
`salery` int(20) DEFAULT NULL,
`position_id` int(20) DEFAULT NULL,
PRIMARY KEY (`employee_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of employee
-- ----------------------------
INSERT INTO `employee` VALUES ('1', '张三', '12345678901', '1200', '1');
INSERT INTO `employee` VALUES ('2', '李四', '12345678902', '5600', '2');
INSERT INTO `employee` VALUES ('3', '王五', '12345678903', '12000', '3');
INSERT INTO `employee` VALUES ('4', '王二麻子', '12345678904', '7800', '4');
INSERT INTO `employee` VALUES ('5', '赵四', '12345678905', '1000', '10');
(2).创建部门职位表(position)
DROP TABLE IF EXISTS `position`;
CREATE TABLE `position` (
`position_id` int(11) NOT NULL,
`department_name` varchar(50) DEFAULT NULL,
`position` varchar(50) DEFAULT NULL,
PRIMARY KEY (`position_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of position
-- ----------------------------
INSERT INTO `position` VALUES ('1', '研发部', '项目经理');
INSERT INTO `position` VALUES ('2', '研发部', '技术总监');
INSERT INTO `position` VALUES ('3', '市场部', '销售总监');
INSERT INTO `position` VALUES ('4', '市场部', '售后人员');
INSERT INTO `position` VALUES ('99', '董事会', '总经理');
3.数据库表之间的join操作(A:employee,B:position)
(1).操作1:如图所示,查询表employee内容:
sql操作以及结果:
(2).操作2:如图所示,查询表position内容:
sql操作以及结果:
(3).操作3:如图,employee中扣除position表内容
sql操作以及结果:
(4).操作4:如图,employee表和position表交集部分
sql操作以及结果:
(5).操作5:如图,position表中扣除position表部分
sql操作以及结果:
(6).操作6:如图,position表和position并集
sql操作以及结果:
MySQL数据库不支持full join,那么在使用的时候我们可以使用unoin
(6).操作6:如图,position表和position并集扣除俩表的交集
sql操作以及结果: