【MySQL】4、Select查询语句
4.Select查詢語句
4.1、select語句
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB";// 創建連接 $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) {die("連接失敗: " . mysqli_connect_error()); }$sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { //判斷結果集是否有數據// 輸出數據while($row = mysqli_fetch_array($result)) {echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";} } else {echo "0 結果"; }mysqli_close($conn); ?>上面這個例子在 $sql 變量中存放由 mysqli_query() 函數返回的數據。接下來,我們使用 mysqli_fetch_array() 函數以數組的形式從記錄集返回第一行。每個隨后對 mysqli_fetch_array() 函數的調用都會返回記錄集中的下一行。?while loop 語句會循環記錄集中的所有記錄。為了輸出每行的值,我們使用了 PHP 的 $result 變量 ($result['FirstName'] 和 $result['LastName'])。
4.2、MySQL Where 條件子句
如需選取匹配指定條件的數據,請向 SELECT 語句添加 WHERE 子句。
SELECT * FROM user WHERE id = 1下面的運算符可與 WHERE 子句一起使用:
| = | 等于 |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于或等于 |
| <= | 小于或等于 |
| BETWEEN | 介于一個包含范圍內 |
| LIKE | 搜索匹配的模式 |
注釋:SQL 語句對大小寫不敏感。WHERE 與 where 等效。
4.3、Order By 排序關鍵詞
ORDER BY 關鍵詞用于對記錄集中的數據進行排序。
SELECT column_name(s) FROM table_name ORDER BY column_name升序或降序的排序
如果您使用 order by 關鍵詞,記錄集的排序順序默認是升序(1 在 9 之前,"a" 在 "p" 之前)。
請使用 DESC 關鍵詞來設定降序排序(9 在 1 之前,"p" 在 "a" 之前):
SELECT column_name(s) FROM table_name ORDER BY column_name DESC根據兩列進行排序
可以根據多個列進行排序。當按照多個列進行排序時,只有第一列相同時才使用第二列:
SELECT column_name(s) FROM table_name ORDER BY column_name1, column_name24.4、limit 限定查詢語句
limit 關鍵詞用于對指定記錄進行查詢,常用于分頁顯示記錄。
select * from guestbook limit 4 , 10 //獲取從第4條后的10條信息 select * from guestbook order by id desc limit 5 //按降序獲取前五條信息這條語句表示在guestbook表里獲取從第5條開始到第14條結束的記錄。
4.5、like關鍵字的模糊查詢
1、使用通配符“%”的 where 子句
通配符 % 表示 0 個或多個、任意長度和類型的字符,包括中文漢字。 示例 :查找所有包含“好”字或“高”字的文章(這時可以配合 or 運算符來使用) select * from tb_file where content like '%好%' or content like '%高%';2、使用通配符“_”的 where 子句
通配符“_”表示匹配任意的單個字符。 示例 :查找用戶名只包含 5 個字符,其中后 4 個字符為 soft 的用戶。代碼如下: select * from tb_user where regname like '_soft';? 注意:?使用 MySQL 做模糊查詢要注意編碼問題。 如果編碼不統一, 那么查詢時就容易查不到數據,或返回的數據不匹配。所以在安裝 MySQL 時,要保持和系統編碼的統一。常用的編碼格式有 gb2312、ISO-8859-1、utf8 和 gbk 等。4.6、常規多表查詢(兩個表具有相同的公共字段)
selete * form a,b where a.c=b.c //c為兩個表中相同的字段,返回a表和b表條件匹配的所有記錄 select * from a left join b where a.c=b.c //效果同第一句,返回a表和b表條件匹配的所有記錄 注意: 1、第二條語句中,如果用on代替where,則會返回a表所有的記錄和b表條件匹配的記錄。 2、on篩選后再用where子句篩選,和只用where篩選子句的效果相同。 3、兩(多)個表查詢,1(條記錄)-1(條記錄)的記錄查詢出來將顯示一條。1(條記錄)-N(條記錄)的記錄查詢將顯示N條,1部分重復顯示。left join左連接顯示兩個表的數據詳解
(兩個表具有相同的公共字段) left join關鍵字會從左表 那里返回所有的記錄,即使在右表 中沒有匹配的行。同時返回右表匹配的記錄。 語法:select 左表名.字段名,右表名.字段名 from 左表名 left join 右表名 on 左表名.字段名=右表名.字段名 例如:
"Persons" 表:
| 1 | Adams | John | Oxford Street | London |
| 2 | Bush | George | Fifth Avenue | New York |
"Orders" 表:
| 3 | 22456 | 1 |
| 4 | 24562 | 1 |
結果集:
| Adams | John | 22456 |
| Adams | John | 24562 |
| Bush | George | ? |
注意:在使用left jion時,on和where條件的區別如下:
1、 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。
2、where條件是在臨時表生成好后,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉(....left jion...where... 查詢多個表的結果 = ?.... from....where... 查詢多個表的結果相同)。
4.7、GROUP BY 語句
GROUP BY 語句用于結合聚合函數(sum、avg、count、max、min),根據一個或多個列對結果集進行分組統計。 合計函數 (比如 SUM) 常常需要添加 GROUP BY 語句。舉例:我們擁有下面這個 "Orders" 表:
| 1 | 2008/12/29 | 1000 | Bush |
| 2 | 2008/11/23 | 1600 | Carter |
| 3 | 2008/10/05 | 700 | Bush |
| 4 | 2008/09/28 | 300 | Bush |
| 5 | 2008/08/06 | 2000 | Adams |
| 6 | 2008/07/21 | 100 | Carter |
現在,我們希望查找每個客戶的總金額(總訂單)。我們想要使用 GROUP BY 語句對客戶進行組合。
我們使用下列 SQL 語句:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer //根據客戶名字進行統計分組,可同時并存多種分組方式。用逗號隔開結果集類似這樣:
| Bush | 2000 |
| Carter | 1700 |
| Adams | 2000 |
4.8、IN子句
IN 操作符指定查詢的條件,允許您在 WHERE 子句中規定多個值。 //下面語句查詢1、3年級的學生: SELECT * FROM student WHERE grade IN ('1','2');?
? ? ? ? ?轉載于:https://www.cnblogs.com/php99/p/9761839.html
總結
以上是生活随笔為你收集整理的【MySQL】4、Select查询语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [react] 在JSX中如何写注释?
- 下一篇: React开发(209):react错误