oracle總結之八 DDL

2021-08-31 10:12:53 字數 3789 閱讀 8524

建立與管理表

資料庫中物件:有表、檢視、索引、序列、同義詞等。

表:基本的資料儲存的集合,由行與列組成

序列: 提供有規律的數值

索引:提高查詢效率

同義詞:給物件起的別名。

oracle資料庫中的表

使用者自定義表

表名和列名的命名規範:

必須以字母開頭

必須在 1–30 個字元之間

必須只能包含 a–z, a–z, 0–9, _, $, 和 #

必須不能和使用者定義的其他物件重名

必須不能是oracle 的保留字

建立表必須具備:

必須具備:create table許可權和 儲存空間

必須指定:

表名,列名, 資料型別, 尺寸

建立表的語法

create table [schema.]table

(column datatype [default expr][, ...]);

資料型別如下:

資料型別 描述

varchar2(size) 可變長字元資料

char(size) 定長字元資料

number(p,s) 可變長數值資料

date 日期型資料

long 可變長字元資料,最大可達到2g

clob 字元資料,最大可達到4g

raw (long raw) 原始的二進位制資料

blob 二進位制資料,最大可達到4g

bfile 儲存外部檔案的二進位制資料,最大可達到4g

rowid 行位址

建立表的分析:

在資料庫中必須遵循一定的規範 這些規範稱為正規化.目前關聯式資料庫有6種方式,資料庫只需要滿足3nf即可,需要使用正規化對資料庫中表進行處理.

下面我以學生資訊為例分析:

學號,學生姓名,出生日期,學生性別,所屬班級,所屬院系,系主任姓名,課程編號,成績

分析:學號:sid 資料型別 varchar2

學生姓名:sname

出生日期:sbirth date

學生性別:s***

所屬班級:sclass

所屬院系:sdep

系主任姓名:dname

課程編號:cid

成績 grade number(5,2)

建立學生資訊表

根據如上資訊可以建立儲存的表 學生資訊表 包含以上的全部資訊,但非規範。

分析設計過程:

必須滿足3nf正規化 但前提必須滿足1,2nf

屬性不可再分(1nf) ==一對多關係

學生資訊表:sid,sname,sbirth,s***,sclass,sdep,dname

成績表: sid cid grade

(前提必須滿足1nf )表中的所有非主屬性都完全依賴於任一候選鍵。

sid->sname

sid->sbirth

sid->s***

sid->sclass

sdep->dname

--其他普通屬性不應當存在部分依賴於主要屬性->此普通屬性應當被分離到新的表中去

s(sid,sname,sbirth,s***,sclass,sdep)

d(sdep,dname)

g(sid,cid,grade)

(前提滿足2nf)表中的每乙個非主屬性都不傳遞依賴於任何候選鍵。

s(sid,sname,sbirth,s***,sclass,sdep)

d(sdep,dname)

g(sid,cid,grade)

在滿足2nf後 分析:

sid->sclass

sclass->sdep

sid->sdep

s(sid,sname,sbirth,s***,sclass)

cd(sclass,sdep)

d(sdep,dname)

g(sid,cid,grade)

oracle資料字典

2.1查詢使用者自定義表

//查詢使用者定義的表的名稱

sql> select table_name from user_tables;

//查詢使用者自定表的詳細特徵

sql> select * from user_tables

//等效於

sql> select * from tabs;

2.2查詢使用者定義的各種資料庫物件

sql> select distinct object_type from user_objects;

2.3 檢視使用者定義的表、檢視、序列和同義詞

sql> select * from user_catalog;

使用者自定表

使用 alter table 語句可以:

追加新的列

修改現有的列

為新追加的列定義預設值

刪除乙個列

使用 alter table 語句追加, 修改, 或刪除列的語法.

追加alter table table

add (column datatype [default expr] [, column datatype]...);

修改alter table table

modify (column datatype [default expr] [, column datatype]...);

刪除alter table table

drop column (column_name);

修改列的名稱

alter table table_name rename column old_column_name

to new_column_name

案例://採用子查詢建立customer表 表的結構域users表完全一致

sql> create table customer as select * from users;

//為customer表新增新的列 email 型別varchar2(20)

sql> alter table customer add email varchar2(20);

//修改某個欄位的型別

sql> alter table customer modify email number(4);

//刪除某個字段

sql> alter table customer drop column email;

//修改表的某個欄位的名稱

sql> alter table customer rename column address to addr;

刪除表資料和結構都被刪除

所有正在執行的相關事物被提交

所有相關索引被刪除

drop table 語句不能回滾

修改物件的名稱

執行rename語句改變表, 檢視, 序列, 或同義詞的名稱

必須是物件的擁有者

//修改物件的名稱操作

sql> rename customer to customers;

清空表truncate table 語句:

刪除表中所有的資料

釋放表的儲存空間

truncate語句不能回滾

可以使用 delete 語句刪除資料

//清空表的操作

sql> truncate table customers;

總結:您已經學會如何使用ddl語句建立, 修改, 刪除, 和重新命名表.

語句 描述

create table 建立表

alter table 修改表結構

drop table 刪除表

rename 重新命名表

truncate 刪除表中的所有資料,並釋放儲存空間

oracle總結之八 DDL語句

建立與管理表 資料庫中物件 有表 檢視 索引 序列 同義詞等。表 基本的資料儲存的集合,由行與列組成 檢視 從表中抽出的邏輯上相關的資料集合。序列 提供有規律的數值 索引 提高查詢效率 同義詞 給物件起的別名。o racle資料庫中的表 1 使用者自定義表 表名和列名的命名規範 l 必須以字母開頭 ...

Oracle高可用環境之DDL操作

高可用環境之ddl操作 在這之前,應該有鎖與阻塞的基礎知識。ddl鎖 note 執行ddl會先commit當前會話操作,再執行ddl,即ddl是非原子性操作。x型別鎖 truncate drop alter table drop add modify等絕大部分ddl,會在表上持有x型別的tm鎖。s型...

DDL語句總結

ddl 資料庫定義語言 由create,alter,truncate,drop 組成。1.create 建立表 create table 表名 屬性名 屬性型別 約束條件 2.alter 修改表結構 1.新增新的列 alter table 表名 add 列名 型別 default 2.改變列的順序 ...