1. 程式人生 > >MYSQL之左連線、右連線、內連線、外連線、全連線

MYSQL之左連線、右連線、內連線、外連線、全連線

資料庫: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目前不支援