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

Oracle 建立與管理資料表完整實務教學

     編輯:Oracle 資料庫相關知識

資料表基本操作語法

-- 建立資料表
CREATE TABLE test1 (
  tid   NUMBER,
  tname VARCHAR2(20),
  hiredate DATE DEFAULT SYSDATE
);

-- 新增資料(未指定 hiredate 將自動帶入 SYSDATE)
INSERT INTO test1(tid, tname) VALUES (1, 'Mary');

-- 修改表結構
ALTER TABLE testchar ADD hiredate DATE;          -- 新增欄位
ALTER TABLE testchar MODIFY c CHAR(10);          -- 修改欄位定義
ALTER TABLE testchar DROP COLUMN hiredate;       -- 刪除欄位(需加 COLUMN 關鍵字)

-- 刪除資料表
DROP TABLE testdelete;           -- 移至回收桶
DROP TABLE test1 PURGE;          -- 直接永久刪除

偽欄位 ROWID 與 ROWNUM

  • ROWID:資料列在磁碟上的實體位址,唯一且最快存取路徑。
  • ROWNUM:查詢結果的邏輯序號,隨查詢產生。
SELECT rowid, rownum, empno FROM emp;

CHAR 與 VARCHAR2 差異示範

CREATE TABLE testchar (c CHAR(5), v VARCHAR2(5));
INSERT INTO testchar VALUES ('a','b');
SELECT CONCAT(c,'#'), CONCAT(v,'#') FROM testchar;
-- 結果:'a    #'  vs  'b#'
-- CHAR 固定長度會補空白,VARCHAR2 變長不補空白

完整約束條件建立範例

CREATE TABLE myuser (
  userid   NUMBER CONSTRAINT pk PRIMARY KEY,
  username VARCHAR2(20) CONSTRAINT c_name NOT NULL,
  gender   VARCHAR2(2) CONSTRAINT c_gender CHECK (gender IN ('男','女')),
  email    VARCHAR2(20) CONSTRAINT c_email1 NOT NULL
                    CONSTRAINT c_email2 UNIQUE,
  deptno   NUMBER CONSTRAINT fk REFERENCES dept(deptno)
);

約束測試結果

  • 違反 PK 唯一性:ORA-00001
  • 違反 CHECK 性別限制:ORA-02290

回收桶管理

SHOW RECYCLEBIN;          -- 檢視回收桶
PURGE RECYCLEBIN;         -- 清空回收桶

實務建議

  1. 慣用 VARCHAR2 取代 CHAR 節省空間。
  2. 刪除大量資料表時建議加 PURGE 避免回收桶膨脹。
  3. 約束條件命名規範(如 pk_表名、fk_表名_參考表)利於維護。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved