天天看點

Oracle之DDL管理表(create/alter/drop)

一、Oracle體系結構

Oracle之DDL管理表(create/alter/drop)

二、表空間管理

1.建立表空間

--建立表空間
    create tablespace 表空間名稱
    datafile '資料檔案名' 
    size 表空間大小 
    autoextend on(自動擴充) 
    next 每次擴充的大小;
           

2.删除表空間 

--删除表空間
    drop tablespace 表空間名稱;
           

3.執行個體 

--建立表空間mark
    create tablespace mark
    datafile 'c:\mark.dbf'
    size 100m
    autoextend on
    next 10m;

    --删除表空間mark
    delete tablespace mark;
           

三、使用者管理

1.建立使用者指定預設表空間

--建立一個使用者
    create user 使用者名 
    identified by 密碼
    default tablespace 表空間名稱;
           

2.使用者授權

--使用者授權
    grant connect,resource,dba to 使用者名稱;
           

3.執行個體 

--建立一個使用者tom
    create user tom
    identified by tom
    default tablespace mark;
    --使用者授權(為使用者賦予角色)
    grant connect,resource,dba to tom;
           

四、表管理

1.建立表

--建立表
    create table 表名(
        列名  列的類型 [列的限制],
        列名  列的類型  [列的限制]      
    );
           
字段類型 中文說明 限制條件 其它說明
CHAR 固定長度字元串 最大長度2000 bytes
VARCHAR2 可變長度的字元串 最大長度4000 bytes

可做索引的最大長度749

Byte/char,預設情況用的是Byte

NCHAR 根據字元集而定的固定長度字元串 最大長度2000 bytes
NVARCHAR2 根據字元集而定的可變長度字元串 最大長度4000 bytes
DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS) 經過嚴格測試,無千年蟲問題
LONG 超長字元串 最大長度2G(231-1) 足夠存儲大部頭著作
RAW 固定長度的二進制資料 最大長度2000 bytes 可存放多媒體圖象聲音等
LONG RAW 可變長度的二進制資料 最大長度2G 同上
BLOB 二進制資料 最大長度4G
CLOB 字元資料 最大長度4G
NCLOB 根據字元集而定的字元資料 最大長度4G
BFILE 存放在資料庫外的二進制資料 最大長度4G
ROWID 資料表中記錄的唯一行号 10 bytes ********.****.****格式,*為0或1
NROWID 二進制資料表中記錄的唯一行号 最大長度4000 bytes
NUMBER(P,S) 數字類型 P為整數位,S為小數位
DECIMAL(P,S) 數字類型 P為整數位,S為小數位
INTEGER 整數類型 小的整數
FLOAT 浮點數類型 NUMBER(38),雙精度
REAL 實數類型 NUMBER(63),精度更高
限制名稱 限制描述
PRIMARY KEY 主鍵限制,鍵列必須具有唯一性且非空
UNIQUE 唯一性限制,鍵列必須具有唯一性但允許為空
NOT NULL 非空限制,鍵列中必須有值
CHECK

檢查限制,對鍵列實施一些簡單的規則,如

check(sex in('男','女'));

FOREIGN KEY (多表)外鍵限制,從表A中的記錄,必須是存在于主表B中
--添加外鍵限制
    alter table 從表 add foreign key(從表中某字段) references 主表(主表中某字段);
           
--強制删除表(不建議使用) : 先删除外鍵關聯表的外鍵限制,然後再删除自己
    drop table category cascade constraint;


    --級聯删除
    ----添加外鍵限制,使用級聯限制,在删除的時候,使用級聯删除
    alter table 從表 add foreign key(從表某字段) references 主表(主表某字段) on delete cascade;
           

  2.使用子查詢語句建立表

注意:

子查詢語句建立表隻會複制表結構和表中的資料,不會複制列的限制  

如果查詢語句有結果, 就是複制 表結構和資料

如果查詢語句沒有結果, 就是複制 表結構 

create table 表名 as 查詢語句;  --複制表  
           
create table emp as select * from scott.emp;
           

3.修改表

--修改表名   
    rename table 舊表名 to 新表名;

    --删除表   
    drop table 表名;

    --添加一列
    alter table 表名 add 列名 資料類型(長度) [限制];

    --添加多列
    alter table 表名 add (
                列名1 資料類型(長度) [限制],
                列名2 資料類型(長度) [限制],
                ....
            );

    --修改列名
    alter table 表名 rename column 舊列名 to 新列名;

    --修改列屬性
    alter table 表名 modify 要修改的字段名 類型(長度) [限制];

    --删除列
    alter table 表名 drop column 列名;