数据库:MYSQL
建表语句:
DROP TABLE IF EXISTS a_table ;
CREATE TABLE a_table (
a_hero_id int(11) DEFAULT NULL,
a_hero_name varchar(10) DEFAULT NULL,
a_hero_part varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of a_table
-- ----------------------------
INSERT INTO a_table VALUES ('10', '甄姬', '法师');
INSERT INTO a_table VALUES ('11', '李白', '刺客');
INSERT INTO a_table VALUES ('12', '廉颇', '坦克');
INSERT INTO a_table VALUES ('4', '伽罗', '射手');
INSERT INTO a_table VALUES ('5', '亚瑟', '战士');
-- ----------------------------
-- Table structure for b_table
-- ----------------------------
DROP TABLE IF EXISTS b_table ;
CREATE TABLE b_table (
b_hero_id int(11) DEFAULT NULL,
b_hero_name varchar(10) DEFAULT NULL,
b_hero_part varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of b_table
-- ----------------------------
INSERT INTO b_table VALUES ('1', '武则天', '法师');
INSERT INTO b_table VALUES ('2', '项羽', '坦克');
INSERT INTO b_table VALUES ('3', '赵云', '刺客');
INSERT INTO b_table VALUES ('4', '伽罗', '射手');
INSERT INTO b_table VALUES ('5', '亚瑟', '战士');
内连接
结论:查询结果是两张表的交集部分
SQL语句:select * FROM a_table a INNER JOIN b_table b ON a.a_hero_id = b.b_hero_id
如下图:
左连接
结论:查询出来的结果-->左表数据全部会显示出来;右表只会显示符合条件的结果,将不符合条件的置为null
select * FROM a_table a LEFT JOIN b_table b ON a.a_hero_id = b.b_hero_id
如下图:
右连接
结论:查询出来的结果-->右表数据全部会显示出来;左表只会显示符合条件的结果
SQL语句:select * FROM a_table a RIGHT JOIN b_table b ON a.a_hero_id = b.b_hero_id
全连接
MYSQL目前不支持