1. 程式人生 > >mysql查詢數據

mysql查詢數據

customer 查詢 函數 not null 合成 tinc 記錄 搜索 獲取

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查詢數據