【學習總結】SQL的學習-3-數據查詢

參考連接

目錄

=======================================================html

帶關鍵字查詢

帶關鍵字WHERE的查詢

  • 指定限制條件

  • 語法:

    • SELECT <字段名錶>
    • FROM <表或視圖名>
    • WHERE <查詢條件>

帶關鍵字IN的查詢

  • where後的查詢條件中,用IN設置指定的數值,而且能夠指定多個數值。

  • 語法:

    • 單個字段:select * from table_name where field_name in ('xx','xxx');sql

      • IN 關鍵字以後的項目必須用逗號隔開,而且放在括號中;返回field_name爲xx和xxx的數據。
    • 多個字段:select * from table_name where (field_name1,field_name2) in ((xx,'abc'),(xxx,'abcde'));oop

      • IN指定多個字段時,多個字段放在小括號裏,多個字段對應的指定數值也放在小括號的對應位置。
  • 示例:

    • 單個字段-單個指定值:select * from houses where purchasing_year in ('1997');學習

    • 單個字段-多個指定值:select * from houses where purchasing_year in ('1997','1998','1999');3d

    • 多個字段-多個指定值:select id from table where (num,name) in ((num1,'name1'),(num2,'name2'))code

  • 注意:

    • 參數要加引號,單雙都可;
    • 參數太多的話影響效率。

帶關鍵字BETWEEN-AND的範圍查詢

  • where後的查詢條件中,用between-and指定數值的範圍,閉區間;

  • 語法:

    • select * from table_name where field_name between 'xyz' and 'abcde';
      • 返回field_name中數據在xyz和abcde之間的數據,包含兩個端點的值。
  • 示例:

    • select * from houses where purchasing_year between '1996' and '1998';
      • 結果:取出符合1996-1998的數值,包含兩個端點。

帶關鍵字LIKE的字符匹配查詢

  • where後的查詢條件中,用like指定像是某某字符,部分字符匹配;

    • 帶%:模糊匹配,即前面字符匹配時,後面字符任意;%能夠放在字符的先後等任意位置。
    • 不帶%:精確匹配,即須要所有匹配指定字符,很少很多。
  • 語法:

    • select * from table_name where field_name like '%n%';
      • 返回field_name中,與'%n%'匹配的數據;%能夠放在任意位置。
  • 示例:

    • select * from houses where purchasing_year like '19%';htm

      • %表示若是前面匹配到了字符19,則後面字符任意,包括0個、一個、多個。
    • select * from houses where purchasing_year like '19';blog

      • 沒有%,即只有指定字段的值爲'19'時才符合。
    • select * from houses where purchasing_year like '%19%';排序

      • %放在'19'的前面,%位置表示0個或1個或多個任意字符。

帶關鍵字IS NULL空值查詢

  • where後的查詢條件中,用IS NULL或者IS NOT NULL進行空值或者非空值查詢

    • 做用:篩選過濾。
  • 語法:

    • select * from table_name where purchasing_year is null / is not null;
      • 返回符合條件且爲空值或者非空值的數據。
  • 示例:

    • select * from houses where purchasing_year is null;索引

      • 查詢空值。
    • select * from houses where purchasing_year is not null;

      • 查詢非空值。

帶關鍵字AND的多條件查詢

  • where後的查詢條件中,用AND鏈接多條查詢條件語句,並返回同時知足多條語句的數據。

  • 語法:

    • select * from table_name where field_name1='x' and field_name2='y';
      • 返回同時知足兩個條件的數據;and可以使用屢次,以鏈接多條語句。
  • 示例:

    • select * from houses where name='甲' and purchasing_year='1997';

      • 查詢同時符合兩個條件的數據。
    • select * from houses where name='甲' and purchasing_year='1997' and location='天河';

      • 查詢同時符合多個條件的數據。

帶關鍵字OR的多條件查詢

  • where後的查詢條件中,用OR鏈接多條查詢條件語句,並返回符合其中任一條件的數據。

  • 語法:

    • select * from table_name where field_name1='x' or field_name2='y';
      • 返回知足任一條件的數據;or可以使用屢次,以鏈接多條語句。
  • 示例:

    • select * from houses where name='甲' or purchasing_year='1997';

      • 查詢符合兩個條件中任意一條的數據。
    • select * from houses where name='甲' or purchasing_year='1997' or location='天河';

      • 查詢同時符合多個條件中任意一條的數據。
    • select * from houses where name='甲' or (purchasing_year='1997' or location='天河');

      • AND 和 OR混合嵌套使用。

用關鍵字DISTINCT去除結果集重複行

  • 用在select以後,字段名以前,返回去重的結果

  • 語法:

    • select distinct field_name from table_name;
      • 注意distinct的使用位置:select後,from前,放在字段名前面。
  • 示例:

    • select distinct name from houses;
      • 將表houses中的字段爲name的全部數值去重後返回,避免了某個數值出現屢次的狀況。

用關鍵字ORDER BY對查詢結果排序

  • 用在select xxx 表名以後,字段名以前,將結果以字段名爲準進行排序,可設置正序、逆序。

    • 注:默認是升序,asc可省略;如需降序,最後添加desc。
    • 注:不使用order by排序時,數據的順序未知,可能和取數據的順序等有關係。
  • 語法:

    • select * from table_name order by field_name + asc/desc;
      • 將結果按照指定字段排序後返回,用asc/desc規定按照正序/逆序進行排序。
  • 示例:

    • select * from houses order by purchasing_year;

      • 默認升序,從小到大。
    • select * from houses order by purchasing_year asc;

      • asc表示升序,從小到大;可省略
    • select * from houses order by purchasing_year desc;

      • desc表示降序,從大到小。

用關鍵字LIMIT限制查詢結果的數量

  • 用在select語句的最後,limit+N,N表示展現的語句數量的最大值;若是N>數據總數,僅返回全部數據。

    • 注:limit後的參數能夠指定起始位置和數據條數。
  • 語法:

    • select * from tableName limit i,n
      • i:爲查詢結果的索引值(默認從0開始),當i=0時可省略i; n:爲查詢結果返回的數量,i與n之間使用英文逗號","隔開
      • limit n 等同於 limit 0,n
  • 示例:

    • select * from houses limit 2;

      • 返回兩條數據,不寫起始位置的索引值,即默認從索引值爲0的位置開始,包含索引值爲0的數據。
    • select * from houses limit 2,3;

      • 從索引值爲2的位置開始,返回3條數據,包含索引值爲2的數據。

========================================================

鏈接查詢

內鏈接查詢

  • 概述

    • 獲取兩個表中字段匹配關係的記錄。
    • 注意:只有兩張表都存在的記錄纔會被查詢出來。
  • 關鍵字

    • inner join
    • on
  • 示例

    • select a.name, a.house_location,a.purchasing_year, b.age from house a /*設置返回結果包含的字段*/
    • inner join people b /*與表b進行內鏈接*/
    • on a.name = b.name; /*當知足這個條件時返回結果*/

外鏈接查詢

  • 左鏈接

    • 獲取左表的全部記錄,即便右表沒有對應匹配的記錄。
  • 左鏈接關鍵字與代碼示例

    • 關鍵字:left join;on
    • 代碼示例:select a.name,a.house_location,a.purchasing_year,b.age from house a left join people b on a.name=b.name;

  • 左鏈接中用on和用where的區別:



  • 右鏈接

    • 與left join相反,用於獲取右表的全部記錄,即便左表沒有對應匹配的記錄。
  • 右鏈接關鍵字與代碼示例

    • right join;on
    • 代碼示例:select a.name,a.house_location,a.purchasing_year,b.age from house a right join people b on a.name=b.name;


複合鏈接查詢

  • 語法:

    • SELECT A.字段1, B.字段2, C.字段3, D.字段4,
    • FROM 表A
    • LEFT JOIN 表B
    • LEFT JOIN 表C
    • RIGHT JOIN 表D
    • ON <查詢條件>;
  • 示例

    • select a.name,a.house_location,a.purchasing_year,b.age,c.price
    • from houses a
    • inner join people b /*內鏈接*/
    • right join housingprice c /*右鏈接*/
    • on a.name=b.name
    • and a.house_location=c.house_location;

=======================================================

其餘類型的查詢

子查詢/嵌套查詢

  • 多條查詢語句的嵌套。

  • 示例:

    • select * from houses where name in (select name from poople where age < 30); /*子句結果的name爲甲*/

    • select * from houses where name in (select name from poople where age > 30); /*子句結果爲空*/

分組查詢

  • 概述:對查詢結果按照某字段進行排序後返回。

  • 關鍵字:group by

  • 示例:

    • select house_location from houses group by house_location;

聚合查詢

  • 概述:將關鍵字做爲結果的字段之一返回查詢結果。

  • 關鍵字:count(), sum(), max(), min()

  • 示例

    • select house_location, count(*) as total from houses group by house_location;

    • select sum(age) from people;

組合查詢

  • 概述:使用union將多條查詢語句鏈接,即返回多條查詢語句分別的結果的組合。

  • 關鍵字:union

    • union:默認同加distinct的結果,即去重

    • union distinct:將結果去重後返回

    • union all:將全部結果返回

  • 示例:

    • select name from houses union distinct select name from people;

    • select name from houses union all select name from people;

    • select name from houses union select name from people;

=======================================================

END

相關文章
相關標籤/搜索