Informix SQL 語句詳解 (1)

火星人 @ 2014-03-12 , reply:0
←手機掃碼閱讀

  本文出自: http://go3.163.com/~axiom999/


1. CREATE DATABASE database_name [WITH LOG IN 「pathname」]

創建資料庫。

database_name:資料庫名稱。

「pathname」:事務處理日誌文件。

創建一database_name.dbs目錄,存取許可權由GRANT設定,無日誌文件就不能使用

BEGIN WORK等事務語句(可用START DATABASE語句來改變)。

可選定當前資料庫的日誌文件。

如:select dirpath form systables where tabtype = 「L」;

例:create databse customerdb with log in 「/usr/john/log/customer.log」;



DATABASE databse-name [EXCLUSIVE]
選擇資料庫。

database_name:資料庫名稱。

EXCLUSIVE:獨佔狀態。

存取當前目錄和DBPATH中指定的目錄下的資料庫,事務中處理過程中不要使用此語句。

例:dtabase customerdb;



3. CLOSE DATABASE

關閉當前資料庫。

database_name:資料庫名稱。

此語句之後,只有下列語句合法:

CREATE DATABASE; DATABASE; DROP DATABSE; ROLLFORWARD DATABASE;

刪除資料庫前必須使用此語句。

例:close database;



4. DROP DATABASE database_name

刪除指定資料庫。

database_name:資料庫名稱。

用戶是DBA或所有表的擁有者;刪除所有文件,但不包括資料庫目錄;不允許刪除當前資料庫(須先關閉當前資料庫);事務中處理過程中不能使用此語句,通過ROLLBACK WORK 也不可將資料庫恢復。

例:drop databse customerdb;



5. CREATE [TEMP] TABLE table-name (column_name datatype [NOT NULL], …)

[IN 「pathname」]

創建表或臨時表。

table-name :表名稱。

column_name:欄位名稱。

data-type:欄位數據類型。

path-name:指定表的存放位置

TEMP用於指定建立臨時表;表名要唯一,欄位要唯一;有CONNECT許可權的用戶可建立臨時表;創建的表預設允許CONNECT用戶存取,但不可以ALTER。

例:create table user

( c0 serial not null, c1 char (10),

c2 char(2),

c3 smallint,

c4 decimal(6,3),

c5 date

) in 「usr/john/customer.dbs/user;



6. ALTER TABLE

ALTER TABLE table-name

{ADD (newcol_name newcol_type [BEFORE oldcol_name], …) | DROP (oldcol_name, …)

| MODIFY (oldcol_name newcol_type [NOT NULL], … )}, …

修改表結構。

table-name:表名稱。

newcol_name:新欄位名稱

newcol_type:新欄位類型

oldcol_name:老欄位名稱

可以使用單個或多個ADD子句、DROP子句、MODIFY子句,但某個字句失敗,操作即中止;原欄位是NULL,不允許MODIFY為NOT NULL,除非所有NULL欄位中均非空,反之可以;ALTER使用者是表的擁有者或擁有DBA許可權,或被授權;事務中處理過程中不要使用此語句。

例:alter table user

add ( c6 char(20) before c5);



7. RENAME TABLE oldname TO newname

修改表名。

oldname:原名稱。

newname:新名稱。

RENAME使用者是表的擁有者或擁有DBA許可權,或被授權;事務中處理過程中不要使用此語句。

例:rename user to bbb;



8. DROP TABLE table-name

刪除表。

table-name:表名稱。

刪除表意味著刪除其中所有數據、各欄位上的索引及對錶的賦權、視圖等;用戶不能刪除任何系統目錄表;語句使用者是表擁有者或擁有DBA許可權,事務中處理過程中不要使用此語句。



9. RENAME COLUMN table.oldcolumn, TO newcolumn

修改欄位名。

table.oldcolumn:表名及原欄位名稱

newcolumn:新欄位名稱。

語句使用者是表的擁有者或擁有DBA許可權或有ALTER許可權的用戶,事務中處理過程中不要使用此語句。

例:rename column user.c6 to c7;



10. CREATE VIEW view-name column-list

CREATE VIEW view-name column-list AS select_statement [WITH CHECK OPTION]

創建視圖。

view-name:視圖名稱。

column-list:欄位列表。

select_statement:SELECT語句。

以下語句不使用視圖:ALTER TABLE,DROP INDEX,ALTER INDEX,LOCK TABLE,CREATE INDEX, RENAME TABLE;視圖將延用基表的欄位名,對表達式等虛欄位和多表間欄位重名必須指明標識其欄位名;若對視圖中某些欄位命名,則所有欄位都必須命名;視圖中數據類型延用基表中的數據類型,虛欄位起訣於表達式;不能使用ORDER BY和UNION子句;對視圖中所有的欄位要有SELECT許可權;事務中處理過程中使用此語句,即使事務回滾,視圖也將建立,不能恢復。

例:create view v_user as select * from user where c1 = 「B1」;



11. DROP VIEW view-name

刪除視圖。

view-name:視圖名稱。

用戶可刪除自己建立的視圖;視圖的後代視圖也被刪除;事務中處理中不要使用此語句。

例:drop view v_user;



12. CREATE INDEX

CREATE [UNIQUE/DISTINCT] [CLUSTER] INDEX index_name ON table_name

([column_name ASC/DESC],…)

創建索引。

index_name:索引名稱。

table_name:表名稱。

column_name:欄位名稱。

UNIQUE/DISTINCT:唯一索引。

CLUSTER:使表的物理存放順序按索引排列。

ASC/DESC:升序或降序,預設升序。

語句執行時,將表的狀態置為EXCLUSIVE;複合索引最多包含8個欄位,所有欄位長度和不得大於120位元組;事務中處理過程中使用此語句,即使事務回滾,索引將建立,不能恢復。

例:create cluster index ix_user on user(c5);



13. ALTER INDEX index-name TO [NOT] CLUSTER

修改索引性質。

index-name:索引名稱。

TO [NOT] CLUSTER:去掉或加上CLUSTER屬性。

語句執行時,將表的狀態置為EXCLUSIVE;事務中處理過程中使用此語句,即使事務回滾,索引性質將改變,不能恢復。

例:alter index ix_user to not cluster;



14. DROP INDEX index-name

刪除索引。

index-name:索引名稱。

語句使用者是索引的擁有者或擁有DBA許可權,事務中處理過程中不要使用此語句,否則事務無法恢復。

例:drop index ix_user;



15. CREATE SYNONYM synonym FOR table-name

創建同義名。

synonym:同義名

table-name:表名稱

資料庫的創建者可以使用同義名;沒有賦予同義名許可權的用戶不能使用同義名;同義名不能和表名相同;事務中處理過程中不要使用此語句。

例:create synonym user_alias for user;



16. DROP SYNONYM synonym

刪除同義名。

synonym:同義名

可以刪除自己建立的同義名;事務中處理過程中不要使用此語句,否則無法恢復。

例:drop synonym user_alias;



17. UPDATE STATISTICS [FOR TABLE table-name]

更新資料庫的統計數字。

table-name:表名稱

此語句僅作用於當前資料庫;可提高查詢效率;只有執行此語句,才改變統計數據。

例:update statistics for table user;





[火星人 via ] Informix SQL 語句詳解 (1)已經有670次圍觀

http://www.coctec.com/docs/linux/show-post-74148.html