mysql查詢數據


一:select

1.select

  使用SELECT語句從表或視圖獲取數據.

  

 

2.解釋

  • SELECT之后是逗號分隔列或星號(*)的列表,表示要返回所有列。
  • FROM指定要查詢數據的表或視圖。
  • JOIN根據某些連接條件從其他表中獲取數據。
  • WHERE過濾結果集中的行。
  • GROUP BY將一組行組合成小分組,並對每個小分組應用聚合函數。
  • HAVING過濾器基於GROUP BY子句定義的小分組。
  • ORDER BY指定用於排序的列的列表。
  • LIMIT限制返回行的數量。

 

3.select * 的問題

  • 使用星號(*)可能會返回不使用的列的數據。 它在MySQL數據庫服務器和應用程序之間產生不必要的I/O磁盤和網絡流量。
  • 如果明確指定列,則結果集更可預測並且更易於管理。 想象一下,當您使用星號(*)並且有人通過添加更多列來更改表格數據時,將會得到一個與預期不同的結果集。
  • 使用星號(*)可能會將敏感信息暴露給未經授權的用戶

 

二:DISTINCT

1.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;

    

 

2.distinct子句對NULL的處理

  會將NULL作為相同的數據,留下一個NULL。

  select distinct state from customers;

 

3.distinct在多列上的使用

  可以使用具有多個列的DISTINCT子句。 在這種情況下,MySQL使用所有列的組合來確定結果集中行的唯一性。

  select distinct state,city from customers where state is not null order by state,city;

  

 

4.distinct與group by比較

  如果在SELECT語句中使用GROUP BY子句,而不使用聚合函數,則GROUP BY子句的行為與DISTINCT子句類似。

  這個其實適合一列的。  

  一般而言,DISTINCT子句是GROUP BY子句的特殊情況。 DISTINCT子句和GROUP BY子句之間的區別是GROUP BY子句可對結果集進行排序,而DISTINCT子句不進行排序。

  如果將ORDER BY子句添加到使用DISTINCT子句的語句中,則結果集將被排序,並且與使用GROUP BY子句的語句返回的結果集相同。

  

 

 5.distinct與聚合函數

  可以使用具有聚合函數(例如SUMAVGCOUNT)的DISTINCT子句中,在MySQL將聚合函數應用於結果集之前刪除重復的行。

  select count(distinct state) from customers where country='USa';

  

 

6.distinct與limit一起使用

  如果要將DISTINCT子句與LIMIT子句一起使用,MySQL會在查找LIMIT子句中指定的唯一行數時立即停止搜索。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM