国产探花免费观看_亚洲丰满少妇自慰呻吟_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將變得更加清晰。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁远县| 恭城| 长丰县| 凯里市| 绿春县| 北川| 望城县| 察雅县| 昌邑市| 集安市| 泉州市| 班戈县| 屏南县| 宜春市| 宁明县| 涞水县| 宜兴市| 汝城县| 广宗县| 怀来县| 双鸭山市| 江西省| 集安市| 甘孜| 宁远县| 凤城市| 蓝田县| 汕头市| 阜平县| 内黄县| 翁牛特旗| 南安市| 永州市| 高台县| 遂昌县| 宁都县| 高唐县| 南召县| 正定县| 武城县| 卢氏县|