首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 資料庫物件核心解析:表、視圖與約束管理

     編輯:Oracle 資料庫相關知識

掌握 Oracle 物件,邁向資料庫專家之路

Oracle 資料庫中最基礎的物件是表與視圖,此外尚有約束、序列、函數、預存程序、套件、觸發器等。所有資料庫操作本質上都是對這些物件的操作,深入理解它們是學好 Oracle 的關鍵捷徑。

表與視圖:資料儲存與邏輯呈現

表是資料儲存的基本結構。Oracle 8 引入分區表與物件表,8i 新增暫存表,功能日益強大。視圖則是一或多個基表資料的邏輯表達式,不佔用實體儲存空間,提供資料安全與簡化查詢的雙重優勢。

建立表的完整語法與實務範例

CREATE TABLE products (
    PROD_ID     NUMBER(4),
    PROD_NAME   VARCHAR2(20),
    STOCK_QTY   NUMBER(5,3)
);

上例建立 products 表,定義三欄位及其資料型態與長度。建表時可同時指定完整性約束(如 NOT NULL)與預設值,預設值在插入資料時若欄位為 NULL 則自動生效。

資料字典視圖:掌握表結構中繼資料

常用字典視圖包含:

  • DBA_TABLES / ALL_TABLES / USER_TABLES(及其 _ALL_TABLES 變體)
  • DBA_TAB_COLUMNS / ALL_TAB_COLUMNS / USER_TAB_COLUMNS

依權限範圍選擇對應視圖即可查詢表與欄位定義。

命名規範與從現有表建立新表

表名最長 30 字元,須以字母開頭,可含數字、底線、#、$。建議命名能描述業務含義。利用 CREATE TABLE ... AS SELECT ... 可從查詢結果快速建表,欄位型態長度自動推導:

CREATE TABLE emp AS SELECT * FROM employee;
CREATE TABLE y AS SELECT * FROM x WHERE no = 2;

注意:若查詢涉及 LONG 型態,此語法將失效。

ALTER TABLE:表結構變更全攻略

1. 新增欄位

ALTER TABLE orders ADD order_date DATE;

既有資料列新欄位值預設為 NULL。

2. 修改欄位屬性

ALTER TABLE orders MODIFY (
    quantity NUMBER(10,3),
    status   VARCHAR2(15)
);

修改規則:

  • 字元型可增加長度,數值型可增加精度
  • 縮減長度/變更型態時,該欄所有資料必須為 NULL
  • 十進位精度可增可減,但不可降低精度

3. 刪除欄位與標記未用

ALTER TABLE table_name DROP COLUMN col_name CASCADE CONSTRAINTS;
ALTER TABLE table_name SET UNUSED COLUMN col_name;

刪除欄位會同步移除相關索引與約束;大表刪除耗時長時,建議先標記 UNUSED,離峰時段再實際釋放空間。

完整性約束:資料品質的守門人

約束分表層級與欄層級,常見類型:

  • PRIMARY KEY:唯一識別,不允許 NULL
  • UNIQUE:唯一值,允許單一 NULL
  • FOREIGN KEY:參考完整性,維護父子表關係
  • CHECK:自訂驗證規則
  • NOT NULL:強制非空

善用約束讓資料庫自動守護資料正確性,減少應用層驗證邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved