標籤:having com 指定 尋找 blog 擷取資料 employees 分享 列表
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查詢資料