国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

在MySQL中使用JOIN語句進行連接操作的詳細教程

2024-07-24 13:07:21
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了在MySQL中使用JOIN語句進行連接操作的詳細教程,是MySQL入門學習中的基礎知識,需要的朋友可以參考下

到目前,我們已經學習了從一個表中獲取數據。這是簡單的需要,但在大多數現實MySQL的使用,經常需要將數據從多個表中的一個單一的查詢。

可以使用多個表中的單一SQL查詢。在MySQL中聯接(join)行為是指兩個或多個表到一個表中可以使用連接在SELECT,UPDATE和DELETE語句中加入MySQL表。我們將看到一個例子LEFT JOIN簡單的MySQL連接。

在命令提示符使用聯接:

假設我們兩個表的教程tcount_tbl和tutorials_tbl的完整列表如下:

例子:

試試下面的例子:

 

 
  1. root@host# mysql -u root -p password
  2. Enter password:******* 
  3. mysql> use TUTORIALS; 
  4. Database changed 
  5. mysql> SELECT * FROM tcount_tbl; 
  6. +-----------------+----------------+ 
  7. | tutorial_author | tutorial_count | 
  8. +-----------------+----------------+ 
  9. | mahran | 20 | 
  10. | mahnaz | NULL | 
  11. | Jen | NULL | 
  12. | Gill | 20 | 
  13. | John Poul | 1 | 
  14. | Sanjay | 1 | 
  15. +-----------------+----------------+ 
  16. rows in set (0.01 sec) 
  17. mysql> SELECT * from tutorials_tbl; 
  18. +-------------+----------------+-----------------+-----------------+ 
  19. | tutorial_id | tutorial_title | tutorial_author | submission_date | 
  20. +-------------+----------------+-----------------+-----------------+ 
  21. | 1 | Learn PHP | John Poul | 2007-05-24 | 
  22. | 2 | Learn MySQL | Abdul S | 2007-05-24 | 
  23. | 3 | JAVA Tutorial | Sanjay | 2007-05-06 | 
  24. +-------------+----------------+-----------------+-----------------+ 
  25. rows in set (0.00 sec) 
  26. mysql> 

現在,加入這兩個表我們可以編寫一個SQL查詢。這個查詢會選擇所有的作者從表tutorials_tbl,從tcount_tbl會拿起相應數量的教程。

 

 
  1. mysql> SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count 
  2. -> FROM tutorials_tbl a, tcount_tbl b 
  3. -> WHERE a.tutorial_author = b.tutorial_author; 
  4. +-------------+-----------------+----------------+ 
  5. | tutorial_id | tutorial_author | tutorial_count | 
  6. +-------------+-----------------+----------------+ 
  7. | 1 | John Poul | 1 | 
  8. | 3 | Sanjay | 1 | 
  9. +-------------+-----------------+----------------+ 
  10. rows in set (0.01 sec) 
  11. mysql> 

在PHP腳本中使用聯接:

可以使用任何上述的SQL查詢的PHP腳本。只需要通過PHP函數mysql_query()執行SQL查詢,然后用常規方法獲取結果。

例子:

試試下面的例子:

 

 
  1. <?php 
  2. $dbhost = 'localhost:3036'
  3. $dbuser = 'root'
  4. $dbpass = 'rootpassword'
  5. $conn = mysql_connect($dbhost$dbuser$dbpass); 
  6. if(! $conn ) 
  7. die('Could not connect: ' . mysql_error()); 
  8. $sql = 'SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count 
  9. FROM tutorials_tbl a, tcount_tbl b 
  10. WHERE a.tutorial_author = b.tutorial_author'; 
  11.  
  12. mysql_select_db('TUTORIALS'); 
  13. $retval = mysql_query( $sql$conn ); 
  14. if(! $retval ) 
  15. die('Could not get data: ' . mysql_error()); 
  16. while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 
  17. echo "Author:{$row['tutorial_author']} <br> "
  18. "Count: {$row['tutorial_count']} <br> "
  19. "Tutorial ID: {$row['tutorial_id']} <br> "
  20. "--------------------------------<br>"
  21. }  
  22. echo "Fetched data successfully/n"
  23. mysql_close($conn); 
  24. ?> 

MySQL左連接:

一個簡單的連接和一個MySQL左連接是不同的。一個MySQL LEFT JOIN提供了額外的考慮到在左邊的表。

如果做了LEFT JOIN,得到的所有記錄以同樣的方式相匹配,此外,得到一個額外的記錄每個不匹配的記錄,在左表中的聯接 - 從而保證了每一個作者得到關聯(本例子中):

實例:

試試下面的例子就明白了LEFT JOIN:

 

 
  1. root@host# mysql -u root -p password
  2. Enter password:******* 
  3. mysql> use TUTORIALS; 
  4. Database changed 
  5. mysql> SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count 
  6. -> FROM tutorials_tbl a LEFT JOIN tcount_tbl b 
  7. -> ON a.tutorial_author = b.tutorial_author; 
  8. +-------------+-----------------+----------------+ 
  9. | tutorial_id | tutorial_author | tutorial_count | 
  10. +-------------+-----------------+----------------+ 
  11. | 1 | John Poul | 1 | 
  12. | 2 | Abdul S | NULL | 
  13. | 3 | Sanjay | 1 | 
  14. +-------------+-----------------+----------------+ 
  15. rows in set (0.02 sec) 

需要做更多的實踐才能熟悉JOINS。這是一個復雜的概念,在MySQL/SQL將變得更加清晰。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长岭县| 和政县| 华亭县| 张家川| 闵行区| 夹江县| 闽侯县| 南通市| 青阳县| 息烽县| 临朐县| 绥棱县| 高碑店市| 固安县| 隆化县| 罗定市| 吉水县| 永和县| 朝阳区| 文昌市| 松原市| 仙游县| 茌平县| 太原市| 定州市| 靖安县| 尤溪县| 金湖县| 新郑市| 海南省| 连南| 红桥区| 化州市| 卢湾区| 罗定市| 汾阳市| 曲阳县| 买车| 壶关县| 颍上县| 肇庆市|