1. 程式人生 > >mysql-4連線

mysql-4連線

聯合多表查詢

菜鳥教程join
日常應用較多的是從多個表格中獲取資料。使用join可以在多個表查詢進行select、update、delete。
join按照功能分為三類:

  • inner join(內連線、或等值連線):獲取兩個表中欄位匹配關係的記錄
  • left join(左連線):獲取左表所有記錄,即使右表沒有對應匹配的記錄
  • right join(右連線):獲取右表所有記錄,即使左表沒有對應匹配的記錄。

如果只寫join預設inner join

1.內連線

select a.runoob_id,a.runoob_author,b.runoob_count from 
    runoob_tbl a join tcount_tbl b 
    on a.runoob_author = b.runoob_author;
-- 等價於
select a.runoob_id,a.runoob_author,b.runoob_count from 
    runoob_tbl a,  tcount_tbl b 
    where a.runoob_author = b.runoob_author;

2.左連線

SELECT a.runoob_id, a.runoob_author, b.runoob_count 
    FROM runoob_tbl a LEFT JOIN tcount_tbl b 
    ON a.runoob_author = b.runoob_author;

3.右連線

``sql
SELECT a.runoob_id, a.runoob_author, b.runoob_count
FROM runoob_tbl a RIGHT JOIN tcount_tbl b
ON a.runoob_author = b.runoob_author;
```

4.內連線、左連線、右連線區別總結:

以上示例的準備資料,來自菜鳥

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
--  建立表結構`runoob_tbl`
DROP TABLE IF EXISTS `runoob_tbl`;
CREATE TABLE `runoob_tbl` (
  `runoob_id` int(11) NOT NULL AUTO_INCREMENT,
  `runoob_title` varchar(100) NOT NULL,
  `runoob_author` varchar(40) NOT NULL,
  `submission_date` date DEFAULT NULL,
  PRIMARY KEY (`runoob_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

--  插入資料
INSERT INTO `runoob_tbl` VALUES 
    ('1', '學習 PHP', '菜鳥教程', '2017-04-12'), 
    ('2', '學習 MySQL', '菜鳥教程', '2017-04-12'), 
    ('3', '學習 Java', 'RUNOOB.COM', '2015-05-01'), 
    ('4', '學習 Python', 'RUNOOB.COM', '2016-03-06'), 
    ('5', '學習 C', 'FK', '2017-04-05');
COMMIT;

--  建立表結構 `tcount_tbl`
DROP TABLE IF EXISTS `tcount_tbl`;
CREATE TABLE `tcount_tbl` (
  `runoob_author` varchar(255) NOT NULL DEFAULT '',
  `runoob_count` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--  插入資料 `tcount_tbl`
INSERT INTO `tcount_tbl` VALUES 
    ('菜鳥教程', '10'), 
    ('RUNOOB.COM ', '20'), 
    ('Google', '22');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;