1. 程式人生 > 其它 >資料結構學習筆記(三)——陣列與廣義表

資料結構學習筆記(三)——陣列與廣義表

此文轉載自:https://blog.csdn.net/jdb13942639375/article/details/112272807

SQL基礎:

文章目錄


前言

SQL基礎整理

一、rownum行查詢

  • rownum

    展示指定行的資料資訊:(展示行數小於固定數值的行的列名的資訊)

  • 用法:

    select 列名 from 表名 where rownum <= 數值
    (等價與MySQL中的 LIMIT 和 SQL SELECT 中的TOP)

二、LIKE(模糊查詢)

  • 作用:

    LIKE操作符作用與where中的搜尋條件

  • 用法:

    select 列名1 from 表名 where 列名2 LIKE 檢索條件
    (展示表中列名2等於檢索條件的列名1的資料資訊)
    注:一般LIKE與萬用字元"%"一起使用(模糊查詢)

  • 用法1:

    select * from 表名 where 列名 LIKE ‘%A’
    (展示表中某一列中以A結尾的所有資料資訊)

  • 用法2:

    select * from 表名 where 列名 LIKE ‘%A%’
    (展示表中某一列中包含A的所有資料資訊)

  • 用法3:

    select * from 表名 where 列名 LIKE ‘A%’
    (展示表中某一列中以A開頭的所有資料資訊)

三、萬用字元

符號作用
%代替一個或多個字元
_代替一個字元
[charlist]字元列中的任何單一字元
[^charlist] 或者 [!charlist]不在字元列中的任何單一字元
  • 用法:

    萬用字元"%" 和 “_” 一般在LIKE中使用
    例如:
    select * from 表名 where 列名 like ‘%A%’
    select * from 表名 where 列名 like ‘C_A_S’

    萬用字元[charlist]

    例:select * from 表名 where 列名 like ‘[ASD]%’ (查詢表中某列以A或S或D開頭的列的資料資訊)

萬用字元[!charlist]
例:
select * from 表名 where 列名 like ‘[!ASD]%’
(查詢表中某列不以A或S或D開頭的列的資料資訊)

四、in操作符

  • 作用:

    in操作符作用於where條件中規定多個值

  • 用法:

    select * from 表名 where 列名 in (值1,值2,值3,…)
    (查詢表中某列的值等於 ‘值1’ 或 ‘值2’ 或 ‘值3’…的資料資訊)

五、between…and…操作符

  • 作用:

    between操作符(一般用法為between…and)(包含前包含後)
    between操作符作用與where條件中,選取介於兩個值之間的資料資訊(可以是數值,文字或日期)

  • 用法:

    select * from 表名 where 列名 between 值1 and 值2
    (查詢表中某列資料的值在 ‘值1’ 和 ‘值2’ 之間的資料資訊)
    如果是隻查詢數字型別或者字元型別的資料,包前包後
    select * from test_hsj where id between 1 and 5;

  • 時間用法:

    用法1:

    select * FROM UPLAN WHERE CREATE_DATE 
    BETWEEN to_date('2021-01-04 00:00:00','yyyy-mm-dd hh24:mi:ss') 
    AND to_date('2021-01-05 11:39:07','yyyy-mm-dd hh24:mi:ss')
    

    如果是隻查詢某兩個月之間的資料,會預設從每個月的1號開始查,包前包後

    用法2:

    select * from test_hsj where regdate between 
    to_date('2015-05','yyyy-MM') and to_date('2015-06','yyyy-MM')
    

    如果是隻查詢某兩年之間的資料,會預設從1月1日開始查,包前包後

    用法3:

    select * from test_hsj where regdate between 
    to_date('2015','yyyy') and to_date('2016','yyyy')
    

    注1:
    使用萬用字元時’2021-01-05%'預設為當天00:00:00

    select * FROM UPLAN WHERE CREATE_DATE BETWEEN 
    to_date('2021-01-05%','yyyy-mm-dd hh24:mi:ss') 
    AND 
    to_date('2021-01-06%','yyyy-mm-dd hh24:mi:ss')
    

六、Alias(別名)

  • 作用:

    Alias(as)別名(給表或列名起別名方便記憶書寫)

  • 用法:

    select 列名1 as a1,列名2 as a2 from 表名 as u where u.a2 = ‘aaa’
    (從表中查詢欄位2等於’aaa‘ 的兩個欄位)

七、Join(連線查詢)

  1. Join

    作用:
    Join(連線查詢)(為了得到從多個表中查詢到的完整結果)
    INNER JOIN(內連線查詢)與JOIN相同,連線匹配的行

    結果:
    產生的結果是多個表的交集
    圖示:

    用法:

    select column_name(s)
    from table 1
    INNER JOIN table 2
    ON
    table 1.column_name=table 2.column_name
    

  2. LEFT JOIN(左外連線查詢)

    作用:

    LEFT JOIN(左外連線查詢)返回左表全部行和右表滿足on條件的行,如果左表的行在右表沒有匹配,那麼這一行資料在右表中對應的資料用null代替

    結果:

    產生的結果是左表的全集,右表匹配則有值,沒有匹配則取null
    圖示:

    用法:

    select * from Table A left join Table B 
    on Table A.id = Table B.id
    

  3. RIGHT JOIN(右外連線查詢)

    作用:
    RIGHT JOIN(右外連線查詢)返回右表全部行和左表滿足on條件的行,如果右表的行在左表中沒有匹配則返回null
    結果:
    產生的結果是右表的全集,左表匹配則有值,沒有匹配則取null
    圖示:

    select * from Table A right join Table B
    on Table A.id=Table B.id
    

  4. FULL OUTER JOIN(全連線查詢)

    作用:
    FULL OUTER JOIN(全連線查詢)從左表和右表返回所有的行,如果其中一個表的資料在兩一個表中沒有匹配的行,則對應表的資料用null代替
    結果:
    產生左表和右表的並集。但是需要注意的是,對於沒有匹配的記錄,則會以null做為值。
    圖示:

    select column_name(s)
    from table 1
    FULL OUTER JOIN table 2
    ON table 1.column_name=table 2.column_name
    


    總結join:
    1、A inner join B 取交集。
    2、A left join B 取 A 全部,B 沒有對應的值為 null。
    3、A right join B 取 B 全部 A 沒有對應的值為 null。
    4、A full outer join B 取並集,彼此沒有對應的值為 null。
    5、對應條件在 on 後面填寫。

八、UNION(合併)

  • 作用:

    UNION 操作符用於合併兩個或多個SELECT語句的結果集

    *注:UNION 內部的SELECT語句必須又相同數量的列。列也必須擁有相似的資料型別。同時,每條SSELECT語句中的列順序必須相同。

  • 用法:

    select 列名1 from 表名1 union select 列名2 from 表名2
    (合併從表1查詢出的列1和從表2查詢出來的列2)(列1與列2需要有相似的資料型別)

    *注1:預設UNION操作符選取的是不同的值,同時進行預設規則的排序,如果需要顯示重複的值則使用 UNION ALL

    *注2:UNION 結果集中的列名總是等於 UNION 中第一個 SELECT 語句中的列名。

    *注3:UNION ALL 命令和 UNION 命令幾乎是等效的,不過 UNION ALL 命令會列出所有的值。

  • UNION與UNION ALL區別:

    區別1:取bai結果的交集
    1、duunion: 對兩個結果集進zhi行dao並集操作, 不包括重複行,相當zhuan於distinct, 同時進行預設規則的排序;
    2、union all: 對兩shu個結果集進行並集操作, 包括重複行, 即所有的結果全部顯示, 不管是不是重複;
    區別2:獲取結果後的操作
    1、union: 會對獲取的結果進行排序操作
    2、union all: 不會對獲取的結果進行排序操作
    區別3:

		1、union看到結果中ID=3的只有一條
		select * from student2 where id < 4
		union
		select * from student2 where id > 2 and id < 6
		2、union all 結果中ID=3的結果有兩個
		select * from student2 where id < 4
		union all
		select * from student2 where id > 2 and id < 6

總結
union all只是合併查詢結果,並不會進行去重和排序操作, 在沒有去重的前提下,使用union all的執行效率要比union高

九、SELECT INTO(查詢插入)

  • 作用:

    SELECT INTO 語句作用:從一個表中選取資料,然後把資料插入到另一個表中(常用於建立表的備份復件或者用於對記錄進行存檔)

  • 用法:

    select * into 表名1 from 表名2(把從表2中查到的所有資料儲存到表1中)

    select 列名 into 表名1 from 表名2(把從表2中查到的某一列資料儲存到表1中)

    select * into 表名1 in 資料庫名1 from 表名2(把從表2中查到的某一列資料儲存到資料庫1的表1中)

    也可以使用where條件查詢作為條件或者join連線查詢