1. 程式人生 > 實用技巧 >ORACLE DDL語句

ORACLE DDL語句

資料定義(DDL Data Definition Language):用於建立、刪除和管理資料庫、資料表及檢視與索引。DDL語句通常包括物件的建立(CREATE)、修改(ALTER)以及刪除(DROP)等命令。

一、oracle欄位型別

1、字元資料型別
CHAR型別:使用者存放字串資料,定義形式為CHAR[(n)],以CHAR型別存放的字串中的每個字元和符號佔用一個位元組的儲存空間。n表示字元所佔的儲存空間,n的值範圍為1~2000,即最多可容納2000個字元。若不指定n值,則系統預設值為1。如果輸入的字串的個數小於n,則系統會以後空格自動補齊n個字元,但在取出時會自動去除末尾的空格。若輸入的資料超過n個字元則會截掉超出部分。

VARCHAR2型別:使用者存放可變長的字串,具體定義時指明最大長度n。

LONG型別:用來存放可變長度的字串資料,最多能儲存佔用2GB空間大小的文字資料。
注:在一個表中只能有一個LONG型別欄位,並且LONG型別欄位不能被定義為主鍵或唯一約束;不能建立索引;不能用作儲存過程的引數

2、數字資料型別
NUMBER型別:用於存放可變長度的數值,允許正負值、0,格式為NUMBER(P,S),其中P表示資料總長度,取值範圍為1~38,;S表示小數位數,取值範圍為-84~127之間的數字。如果輸入超過設定的值則會被擷取,如NUMBER(6,3)輸入15.23181,欄位實際儲存的值為15.232(四捨五入)

3、日期時間型別
DATE型別:用於存放日期和時間資料

TIMESTAMP型別:與DATE基本相同,但不同的是TIMESTAMP會包含小數秒

4、RAW資料型別
RAW型別:用於存放結餘位元組的二進位制資料,最對能存放2000個位元組,沒有預設大小,所以在使用時要指定大小,可以建立索引

LONG RAW型別:用於存放可變長度的二進位制資料,最多能存放2GB,受限跟LONG一樣。

5、LOB資料型別
CLOB型別(CHARACTER LOB):用於存放大量字元資料,可以存放非結構化的xml文件。

BLOB型別(BINARY LOB):可以存放較大的二進位制物件,如圖形、音視訊等資料。

二、建表語句
CREATE TABLE <TABLENAME>
(
<COLUMN1> <DATATYPE> [NOT NULL] [DEFAULT <預設值>],
<COLUMN2> <DATATYPE> [NOT NULL] [DEFAULT <預設值>],
...
<COLUMN3> <DATATYPE>
);

注:<>符號表示必填,[]符號表示可選,其他為sql語法關鍵字:CREATE TABLE。需要注意標點符號

1、帶主鍵的建立方式

eg1:聯合主鍵pk_t_user

begin
execute immediate 'drop table t_user cascade constraints';
commit;
exception when others then commit;
end;
/
create table t_user  (
   id NUMBER(10) not null,
   name varCHAR2(200) not null,
   age NUMBER(2) not null,
   status NUMBER(1) not null,
   craetetime date default sysdate,
   constraint pk_t_user primary key (id,name)
);

eg2:單列主鍵,主鍵名由系統給定

begin
execute immediate 'drop table t_user cascade constraints';
commit;
exception when others then commit;
end
/
create table t_user  (
   id NUMBER(10) not null primary key,
   name varCHAR2(200) not null,
   age NUMBER(2) not null,
   status NUMBER(1) not null
);

eg3:新增主鍵

alter table t_user add constraint pk_t_user primary key(id,name);

以上為新增主鍵的三種方式。

三、修改欄位

修改欄位型別

語法:ALTER TABLE 表名 MODIFY 欄位名 DATETYPE[<長度>];

alter table t_user modify status integer;

修改欄位名稱

語法:ALTER TABLE 表名 RENAME OLDCOLUMN TO NEWCOLUMN;

alter table t_user rename column status to state;

注:修改欄位型別時,當前欄位的資料型別與要轉換成的資料型別需相互相容。
且以下欄位型別不可修改:
a、資料型別為test、image、ntext、timestamp
b、有unique約束的欄位
c、設有預設值的欄位
d、重複的欄位
e、計算的或用在計算的欄位中
f、用於check約束的欄位

四、新增欄位
語法一:alter table 表名 add 欄位名 資料型別;

alter table t_user add city varchar2(100);--無預設值

語法二:alter table 表名 add 欄位名 資料型別 default<預設值> ;

alter table t_user add city varchar2(100) default '北京';--有預設值

五、刪除欄位
語法:alter table 表名 drop column 欄位名;

alter table t_user drop column city;

如果欄位有約束條件,則需要先刪除約束:alter table tablename drop constraint 約束名|預設值。