1. 程式人生 > >MySQL<表單&集合查詢>

MySQL<表單&集合查詢>

空字符串 student 分號 大寫 運算符 小寫 日期和時間 length 時間函數

表單查詢

簡單查詢

  SELECT語句

  查詢所有字段

    指定所有字段:select 字段名1,字段名2,...from 表名;

    select * from 表名;

  查詢指定字段

    select 字段名1,字段名2,...from 表名;

按條件查詢

  帶關系運算符的查詢

  SELECT 字段名1,字段名2,……

  FROM 表名

  WHERE 條件表達式;

  帶IN關鍵字的查詢

    SELECT *|字段名1,字段名2,……

    FROM 表名

    WHERE 字段名 [NOT] IN (元素1,元素2,……);

  帶BETWEEN AND關鍵字的查詢

    SELECT *|{字段名1,字段名2,……}

    FROM 表名

    WHERE 字段名 [NOT] BETWEEN 值1 AND 值2;

  空值查詢

    SELECT *|字段名1,字段名2,……

    FROM 表名

    WHERE 字段名IS [NOT] NULL;

  帶DISTINCT關鍵字的查詢

    過濾掉重復值:select distinct 字段名 from 表名;

    作用多個字段:select distinct 字段名1,字段名2,... from 表名;

  帶LIKE關鍵字的查詢

    SELECT *|{字段名1,字段名2,……}

    FROM 表名

    WHERE 字段名 [NOT] LIKE ‘匹配字符串‘;

  百分號(%)通配符

    可以匹配任意長度的字符串,包括空字符串

  下劃線(_)通配符

    下劃線通配符只匹配單個字符,如果要匹配多個字符,

    需要使用多個下劃線通配符。

  帶AND關鍵字的多條件查詢

    SELECT *|{字段名1,字段名2,……}

    FROM 表名

    WHERE 條件表達式1 […… AND 條件表達式n];

  帶OR關鍵字的多條件查詢

    SELECT *|{字段名1,字段名2,……}

    FROM 表名

    WHERE 條件表達式1 OR […… OR 條件表達式n];

  OR和AND關鍵字一起使用的情況

    AND的優先級高於OR,因此當兩者在一起使用時,應該先運算AND兩邊的條件表達式,再運算OR兩邊的條件表達式。

高級查詢

聚合函數

  一共有多少條記錄:select count(*) from 表名;

  某個字段所有值總和:select sum(字段名) from 表名;

  某個字段所有值平均數:select avg(字段名) from student;

  某個字段的最大值:select max(字段名) from student;

  某個字段的最小值:select min(字段名) from student;

對查詢結果排序

  SELECT 字段名1,字段名2,……

  FROM 表名

ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC]……;

需要註意的是,在按照指定字段進行升序排列時,如果某條記錄的字段值為NULL,則這條記錄會在第一條顯示,這是因為NULL值可以被認為是最小值

對字段值進行分組查詢

SELECT 字段名1,字段名2,……

FROM 表名

GROUP BY 字段名1,字段名2,……[HAVING 條件表達式];

  三種使用情況

    單獨使用group by分組:select * from student group by gender;

    查詢的是每個分組中的一條記錄。

    與聚合函數:select(*),gender from student group by gender;

      可以統計出某個或者某些字段在一個分組中的最大值、最小值、平均值等等。

    與having:select sum(grade),gender from student group by gender having sum(grade)<300;

      HAVING和WHERE都用於設置條件對查詢結果進行過濾。兩者區別在於HAVING後可以跟聚合函數,而WHERE不能。

使用LIMIT限制查詢結果的數量

SELECT 字段名1,字段名2,……

FROM 表名

LIMIT [OFFSET,] 記錄數;

  前四條:select * from student limit 4;

  第5~8以grade從高到低排序:select * from student order by grade desc limit 4,4;

函數(列表)

  包括數學函數、字符串函數、日期和時間函數、條件判斷函數、加密函數等等。可以簡化用戶對數據的操作

為表取別名

  select * from 表名 [as] 別名;

為字段取別名

select 字段名 [as] 別名 [,字段名 [as] 別名,...] from 表名;

集合查詢

  集函數包括COUNT、MIN、MAX、SUM和AVG。

    COUNT計算表達式中非空值的數量,如果使用DISTICE關鍵字則刪除重復值。如果使用COUNT(*),則計算所有行數

    MIN計算表達式最小值。忽略表達式中的空值

    MAX計算表達式最大值。忽略表達式中的空值

    SUM計算表達式所有值的和。忽略表達式中的空值

    AVG計算表達式的平均值。忽略表達式中空值

  轉換函數有三個:TO_CHAR、TO_DATE和TO_NUMBER。

  字符函數主要包括LOWER(全小寫)、UPPER(全大寫)、INITCAP(首字母大寫)、CONCAT(連接字符串)、SUBSTR(取子串)、LENGTH(獲取字符串長度)等。

MySQL<表單&集合查詢>