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

Oracle 資料物件分析 (上):表與視圖建立、管理、CTAS、ALTER TABLE 全攻略

     編輯:Oracle 資料庫相關知識

建立基本表

CREATE TABLE products (
  prod_id    NUMBER(4),
  prod_name  VARCHAR2(20),
  stock_qty  NUMBER(5,3)
);
  • 同步定義欄位/表級約束、預設值 (DEFAULT)。

資料字典視圖三層

前綴範圍範例
USER_擁有USER_TABLES, USER_TAB_COLUMNS
ALL_可存取ALL_TABLES, ALL_TAB_COLUMNS
DBA_全庫DBA_TABLES, DBA_TAB_COLUMNS

命名規則

  • ≤ 30 字元、首字母英文、可含數字/_/#/$、建議業務語義化。

CTAS (CREATE TABLE AS SELECT)

CREATE TABLE emp_copy AS SELECT * FROM employees;
CREATE TABLE dept_10 AS SELECT * FROM departments WHERE dept_id = 10;

限制:不複製索引、約束、觸發器、權限;涉及 LONG 型別失效。

ALTER TABLE 完整操作

1. 新增欄位

ALTER TABLE orders ADD order_date DATE;

既有列新欄位值為 NULL。

2. 修改欄位

ALTER TABLE orders MODIFY (quantity NUMBER(10,3), status VARCHAR2(15));
  • 可增大 CHAR/VARCHAR2 長度、NUMBER 精度。
  • 縮減長度/改型別:欄位必須全 NULL。
  • NUMBER 精度可增減,但不可降低小數位精度。

3. 刪除欄位 (8i+)

-- 立即刪除
ALTER TABLE orders DROP COLUMN status CASCADE CONSTRAINTS;
-- 標記未用 (釋放字典、索引、統計,不釋放磁碟)
ALTER TABLE orders SET UNUSED COLUMN status;
-- 真正釋放空間
ALTER TABLE orders DROP UNUSED COLUMNS;

CASCADE CONSTRAINTS 同步刪除涉及該欄的多欄約束。

視圖基礎

CREATE VIEW v_emp_dept AS
SELECT e.emp_id, e.emp_name, d.dept_name
FROM employees e JOIN departments d ON e.dept_id = d.dept_id;
  • 邏輯查詢封裝,不佔儲存空間 (物化視圖除外)。
  • 可更新視圖條件:單一基表、含主鍵、無聚合/群組/集合運算/ROWMID/偽欄位。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved