teradata中的部分sql命令

HELP 幫助用戶瞭解數據庫中各種對象的結構
SHOW 幫助用戶瞭解某種對象的定義,即返回其DDL語句
EXPLAIN 返回一個SQL語句經優化處理後的執行步驟,注意並未真正執行
FALLBACK 對數據加以保護的一種方式,是冗餘的備份
RENAME 對錶重命名
NULLIFZERO 對數據作累計處理時,忽略零值
ZEROIFNULL 對數據作累計處理時,將空值作零處理
WITH...BY 對詳細數據記錄作分類統計(Sub-Total)時有用
MODIFY USER/DATABASE  對用戶/數據庫對象作動態修改而無需數據庫重組


HELP  命令     參數           說明
HELP DATABASE databasename;  可以顯示一個指定數據庫所包含的所有對象
HELP USER username;  顯示某個用戶中所包含對象的信息
HELP TABLE tablename;  顯示某張表的信息
HELP VIEW viewname;  顯示某個視圖的信息
HELP MACRO macroname;  顯示某個宏的信息
HELP COLUMN table or viewname.*;  顯示錶/視圖的各列的信息
HELP COLUMN table or viewname.colname . . ., colname;  顯示錶/視圖某幾列的信息
HELP INDEX tablename;  顯示某個表中的所有索引定義
HELP STATISTICS tablename;  顯示錶的統計
HELP CONSTRAINT table or viewname.constraintname;  顯示定義在某個表/視圖上的約束定義
HELP JOIN INDEX join_indexname;  顯示連接索引的定義
HELP TRIGGER triggername;  顯示觸發器的信息
HELP PROCEDURE procedurename;  顯示存儲過程的信息
HELP PROCEDURE procedurename ATTRIBUTES;
HELP 'SQL';  得到所有SQL命令的列表信息
HELP 'SQL sqlcommand';  得到某個特定SQL命令的使用方法


如要知道這些數據庫對象是用什麼樣的DDL命令創建的,則要使用SHOW命令:
SHOW命令 參數
SHOW TABLE Tablename ;
SHOW VIEW Viewname;
SHOW MACRO Macroname;
SHOW INDEX Tablename;
SHOW JOIN INDEX join_indexname;
SHOW TRIGGER Triggername;
SHOW PROCEDURE Procedurename;



EXPLAIN命令:利用EXPLAIN命令,可以瞭解Teradata執行一個SQL交易請求的詳細過程和計劃,這對於更進一步地理解Teradata的查詢處理機制有很大的幫助。另一方面,對於複雜SQL交易的調試來說,這也是不可缺少的一個工具。

利用EXPLAIN解釋一個SQL交易的方法很簡單,就是在原來SQL語句的前面加上EXPLAIN即可,其它完全不變。


在LIKE結構的字符串中,'%'和'_'可以作爲通配符使用,但是如果需要匹配這些字符本身(比如查找95%),即把它們作爲一般字符時使用,我們可以通過定義ESCAPE字符來達到這個目的,緊跟在ESCAPE字符後的’%’和’_’作爲一般字符看待。

例:
LIKE ''%A%�A__'' ESCAPE ''A''

在這個表達式中,將字母A定義爲ESCAPE字符,其中:
! 第一個%爲通配符;
! 第一個A和其後的%聯合表示字符%;
! 第三個%爲通配符;
! 第二個A和其後的A聯合表示字符A;
! 第四個A和其後的’_’聯合表示字符_;
! 最後一個’_’爲通配符。


對於表達式的操作數如果是字符,ANSI標準中是區分大小寫的,如果不要區分大小寫,可以使用UPPER函數將其轉換成大寫字母來進行匹配。Teradata缺省不區分大小寫,如果要區分,可以使用其擴展參數CASESPECIFIC。


NULL的使用

NULL的說明:
! NULL顯示沒有數據的字段
! NULL表示不存在或未發現的值
! NULL既不是數字類型也不是字符類型
! 具有NULL值的字段可以被壓縮,不佔任何空間

NULL也可以參與運算,其運算規則爲:
! NULL在算術運算中產生的結果爲NULL(空)
! NULL在比較運算中產生的結果爲False
! UNKNOWN DATA, MISSING DATA和NULL是同樣的含義
! 當進行升序排列時,NULL在數字列排列在負數前,在字符列排列在空格
前。




CREATE MACRO macroname AS ( . . . );  定義宏
EXECUTE macroname;  執行宏語句
SHOW MACRO macroname;  顯示宏定義
REPLACE MACRO macroname AS ( . . . );  改變宏定義
DROP MACRO macroname;  從字典中刪除宏定義
EXPLAIN EXEC macroname;  顯示宏執行的解釋


EXISTS在子查詢中的使用

EXISTS可以使用在子查詢中,用來表示查詢至少返回一行。如果前面加上否定詞NOT,則表示查詢時無記錄存在。EXISTS可以代替IN,而NOT EXISTS可以代替NOT IN。


CHARACTERS函數

CHARACTERS函數也是Teradata的擴展,用於計算VARCHAR型數據字段的實際字符串長度。CHARACTERS函數可以簡寫成CHARACTER、CHARS或者CHAR。


TRIM函數

ANSI標準的TRIM函數用於去除字符數據中前頭或後端的空格或者二進制數據(BYTE與VARBYTE)中前頭或後端的零。在Teradata缺省模式下,TRIM (<expression>)只能去除後端的空格或二進制零。


SELECT CAST (salary_amount AS FORMAT ''$$$,$$9.99'');

SELECT (1000/salary_amount) * 100
(FORMAT 'ZZ9%')
(TITLE 'Increase Percentage')
FROM employee
WHERE employee_number = 1004;

SELECT (CAST (1000/salary_amount) * 100 AS FORMAT 'ZZ9%'
TITLE 'Increase Percentage') FROM ...

FORMAT短語中可以使用的格式化字符主要爲:
$ 美元標識符
9 數字位
Z 將數字中的前綴零去除
, 在指定位置插入逗號
. 指定小數點位置
- 在指定位置插入連字號
/ 在指定位置插入斜線
% 在指定位置插入百分號
X 字符數據,每個X代表一個字符
G 圖形數據.一個G代表一個邏輯字符(雙字節)
B 在指定位置插入空格


對日期的格式化處理

在Teradata中,日期數據的缺省輸出格式是:YY/MM/DD,這和ANSI標準是一樣的。而ANSI標準建議的日期顯示格式是:YYYY-MM-DD。

其它一些常用的日期顯示格式列舉如下,其中的B表示空格。
   YYYY/MM/DD'
   YYYY-MM-DD'
   YYYY.DDD'
   DBMMMBYYYY'
   MMBDD,BYYYY'
   YYYYBMMMBDD'
   YY/MM/DD'
   D-MM-YY'
   YBDDD'
   MM'

下面是一些對日期進行格式化的例子。
   句法                        結果
   FORMAT 'YYYY/MM/DD'         1996/03/27
   FORMAT 'DDbMMMbYYYY'        27 Mar 1996
   FORMAT 'mmmBdd,Byyyy'       Mar 27, 1996
   FORMAT 'DD.MM.YYYY'         27.03.1996
   FORMAT 'MM/DD/YY'           03/27/96
   FORMAT 'MMM.DD.YY'          Mar.27.96
   FORMAT 'yy -- mm -- dd'     96 -- 03 -- 27
   FORMAT 'DDDYY'              08696

SELECT last_name,first_name,hire_date (FORMAT 'mmmBdd,Byyyy')
FROM employee
ORDER BY last_name;

利用FORMAT短語,可以將字符字段或表達式進行截取處理,這種處理隻影響顯示格式,而不會影響數據的內部存儲格式。


Teradata的屬性函數

屬性函數     返回信息說明
TYPE         數據類型
TITLE        標題短語
FORMAT       格式短語
NAMED        NAMED子句
CHARACTERS   字符個數


Teradata DDL允許在創建表時指定表的物理屬性,包括:
   A. SET 不允許記錄重複,例:CREATE SET TABLE table1 ...
   B. MULTISET 允許記錄重複,例:CREATE MULTISET TABLE table1 ...
   C. 數據保護要結合FALLBACK和JOURNAL (流水或日誌)。
      FALLBACK是Teradata的一種數據保護機制,數據表的每一條記錄都同時存放兩份,而且位於不同的AMP所控制的存儲單元中;當數據發生問題或者AMP失敗時,可以利用存放在其他AMP上的數據保證對數據表的訪問。
        - FALLBACK 使用FALLBACK保護機制
        - NO FALLBACK 不使用FALLBACK保護機制
      日誌有BEFORE和AFTER兩種,分別保存了一條記錄變化前後的狀態。當系統出錯時,可以利用日誌進行恢復。
   D. 存儲空間選項
      DATABLOCKSIZE用來指定數據塊大小,最小的數據塊爲6144字節,最大的數據塊是32256字節。
      FREESPACE用來定義在每個磁盤柱面上保留的空間(0-75%)。
   例:
      CREATE MULTISET TABLE table_1
      , FALLBACK, NO JOURNAL
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章