自己整理的學習資料——DB2 V8資料庫基礎(十九)

rheet1978發表於2008-10-17

3.5    高階sql簡單介紹

3.5.1   查詢間使用運算詞

l         UNION 運算子

UNION 運算子通過組合其他兩個結果表(例如 TABLE1 TABLE2)並消去表中任何重複行而派生出一個結果表。當 ALL UNION 一起使用時(即 UNION ALL),不消除重複行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2

l         EXCEPT 運算子

EXCEPT 運算子通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重複行而派生出一個結果表。當 ALL EXCEPT 一起使用時 (EXCEPT ALL),不消除重複行。

l         INTERSECT 運算子

INTERSECT 運算子通過只包括 TABLE1 TABLE2 中都有的行並消除所有重複行而派生出一個結果表。當 ALL INTERSECT 一起使用時 (INTERSECT ALL),不消除重複行。

注:使用運算詞的幾個查詢結果行必須是一致的。

3.5.2   外連線

l         left outer join

左外連線(左連線):結果集幾包括連線表的匹配行,也包括左連線表的所有行。

l         right outer join:

右外連線(右連線):結果集既包括連線表的匹配連線行,也包括右連線表的所有行。

l         full outer join

全外連線:不僅包括符號連線表的匹配行,還包括兩個連線表中的所有記錄。

 

注:複合外連線按照從左到右的順序執行連線,左邊連線的結果集和右邊連線

3.5.3   超級分組和移動函式

l         grouping sets:用來在單個sql中形成多級分組。

例:select company_id,node_id,count(customer_id) from customer group by grouping sets(company_id,node_id)

l         rollup:可以在單個資料庫操作中形成多個分組。

select company_id,node_id,count(customer_id) from customer group by

rollup(company_id,node_id)

注:rollup操作不是可交換的操作,指定使用者組的順序是很重要的。

l         cube 生成分組表中分組的所有組合。

例:select company_id,node_id,count(customer_id) from customer group by

cube(company_id,node_id)

l         over:移動函式可以幫助實現移動的資料分析

Select date,avg(qty) over(order by date rows between 1 preceding and 1 following) as values from sale

 

3.5.4   常用函式介紹

具體參見《SQL Reference Volume 1

l         轉化為數字型別的型別轉化函式:

如果引數是一個數字表示式,返回與其相對應的浮點數,否則返回錯誤程式碼

              DOUBLE() FLOAT()

    SELECT  DOUBLE('5678')  FROM  TEST;

  返回整型常量中的數字、字串或者日期、時間的整數表示.

INT()

         SELECT  ID, INT(‘111’) FROM TEST;

  返回整型常量中的數字、字串或者時間戳64位長整數表示.

BIGINT()

         SELECT  ID,BIGINT(time) FROM TEST;

SELECT  ID,BIGINT(“111”) FROM TEST;

返回整型常量中的數字、字串的短整數表示.

SMALLINT()

SELECT  ID, SMALLINT (“111”) FROM TEST;

  返回一個數值的單精度浮點數表示.

REAL()

         SELECT  REAL(10)  FROM  TEST;

返回一個數值、decimal的字串、integer的字串floating-point的字串、日期、時間或時間戳decimal數值

              DEC[IMAL]()

              SELECT DEC(11) FROM TEST

       返回一個表示為字串的值的16進製表示

HEX()

SELECT  HEX(16)  FROM  TEST;

  返回小於或等於引數的最大整數.

FLOOR()

         SLECT  FLOOR(88.93)   FROM   TEST;

 

l         轉化為字串型別的型別轉化函式:

返回日期時間型,字串,整數,十進位制或雙精度浮點數的字串表示

CHAR()

    SELECT  CHAR(SALARY,',')  FROM  TEST;

  返回具有由引數指定的ASCII碼的字元,引數可以是INTEGER or SMALLINT

         CHR()

    SELECT  CHAR(167)  FROM  TEST;

  返回字串、日期型、圖形串的可變長度的字串表示.

VARCHAR()

  SELECT   VARCHAR(name,50)  FROM TEST ;

返回SMALLINT,INTEGER, BIGINT or DECIMAL數的字串值

       DIGITS ()

       SELECT  DIGITS(id) FROM TEST

 

系統格式原因,本節未完。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9524210/viewspace-471547/,如需轉載,請註明出處,否則將追究法律責任。

相關文章