mysql查詢數據
select
使用SELECT
語句從表或視圖獲取數據.
2.解釋
SELECT
之後是逗號分隔列或星號(*
)的列表,表示要返回所有列。FROM
指定要查詢數據的表或視圖。JOIN
根據某些連接條件從其他表中獲取數據。WHERE
過濾結果集中的行。GROUP BY
將一組行組合成小分組,並對每個小分組應用聚合函數。HAVING
過濾器基於GROUP BY
子句定義的小分組。ORDER BY
指定用於排序的列的列表。LIMIT
限制返回行的數量。
3.select * 的問題
- 使用星號(
*
)可能會返回不使用的列的數據。 它在MySQL數據庫服務器和應用程序之間產生不必要的I/O磁盤和網絡流量。 - 如果明確指定列,則結果集更可預測並且更易於管理。 想象一下,當您使用星號(
*
)並且有人通過添加更多列來更改表格數據時,將會得到一個與預期不同的結果集。 - 使用星號(
*
)可能會將敏感信息暴露給未經授權的用戶
4.DISTINCT子句
從表中查詢數據時,可能會收到重復的行記錄。為了刪除這些重復行,可以在SELECT
語句中使用DISTINCT
子句。
SELECT DISTINCT
columns
FROM
table_name
WHERE
where_conditions;
舉例/:
SELECT lastname FROM employees ORDER BY lastname;
select distinct lastname from employees order by lastname;
5.distinct子句對NULL的處理
會將NULL作為相同的數據,留下一個NULL。
select distinct state from customers;
6.distinct在多列上的使用
可以使用具有多個列的DISTINCT
子句。 在這種情況下,MySQL使用所有列的組合來確定結果集中行的唯一性。
select distinct state,city from customers where state is not null order by state,city;
7.distinct與order by比較
如果在SELECT
語句中使用GROUP BY
子句,而不使用聚合函數,則GROUP BY
子句的行為與DISTINCT
子句類似。
這個其實適合一列的。
一般而言,DISTINCT
子句是GROUP BY
子句的特殊情況。 DISTINCT
子句和GROUP BY
子句之間的區別是GROUP BY
子句可對結果集進行排序,而DISTINCT
子句不進行排序。
如果將ORDER BY子句添加到使用DISTINCT
子句的語句中,則結果集將被排序,並且與使用GROUP BY
子句的語句返回的結果集相同。
8.distinct與聚合函數
可以使用具有聚合函數(例如SUM,AVG和COUNT)的DISTINCT
子句中,在MySQL將聚合函數應用於結果集之前刪除重復的行。
select count(distinct state) from customers where country=‘USa‘;
9.distinct與limit一起使用
如果要將DISTINCT
子句與LIMIT子句一起使用,MySQL會在查找LIMIT
子句中指定的唯一行數時立即停止搜索。
mysql查詢數據