Oracle 數據庫之表的簡單操作(一)

1.數據定義語句(DDL)

    DDL語句英文全稱是Data Definition Language,主要用來定義<Create>、修改<Alter>、刪除<Drop>Oracle數據庫中的各種對象。

1.1 Create Table

create Table語句用來在數據庫中創建表,以下代碼就是在數據庫中創建student表:

<span style="font-family:Microsoft YaHei;">CREATE TABLE student             --指定表名稱
(
   stuid      INT,                  --添加id字段
   stuname    VARCHAR2 (64),     --添加name字段
   email   VARCHAR2 (64)         -- 添加email字段
);</span>

在創建表的同時可以對錶中的字段添加基本的約束。於是我們可以將上述代碼優化如下:

<span style="font-family:Microsoft YaHei;">CREATE TABLE student                        --指定表名稱
(
   stuid       INT NOT NULL UNIQUE,            --添加id字段
   stuname     VARCHAR2 (64) NOT NULL,      --添加name字段
   email    VARCHAR2 (64)                   -- 添加email字段
);</span>
其中not null表示該字段的數據不能爲空,unique表示該列的值是唯一的不能重複。

除了使用上述方法來創建表之外,我們還可以使用create table tablename as select ...語法創建和student表相同結構的表。

<span style="font-family:Microsoft YaHei;">CREATE TABLE student_copy AS SELECT * FROM student;</span>
但是,要注意的是:

①:這樣創建的表不能複製約束條件與列的默認值,這需要手工重新添加

②:不能爲新表指定表空間,默認情況下采用的是當前用戶的表空間

③:原表不能包含大對象的數據類型


1.2 Alter語句

    Alter語句用來修改數據庫對象,可以修改表、視圖、索引、觸發器的定義等。
<span style="font-family:Microsoft YaHei;">-- 向student表中添加address字段,且該字段爲非空
ALTER TABLE student ADD address VARCHAR2 (128) NOT NULL;


-- 修改student表中的stuname字段長度爲128
ALTER TABLE student MODIFY stuname VARCHAR2 (128);


-- 將student表中的email字段重命名爲my_email
ALTER TABLE student RENAME COLUMN email TO my_email;


-- 刪除student表中的email字段
ALTER TABLE student DROP COLUMN my_email;</span>

2.表之間的約束

    表之間的約束是用來保證數據完整性的一套機制,約束是數據庫服務器強制用戶必須遵守的業務邏輯。Oracle中常見的約束有以下幾種。
(1)、非空約束
(2)、唯一約束
(3)、檢查約束
(4)、主鍵約束
(5)、外鍵約束

2.1 主鍵約束

    創建主鍵約束方法一:
<span style="font-family:Microsoft YaHei;">CREATE TABLE student
(
   stuid        NUMBER PRIMARY KEY,       --主鍵約束,唯一且非空
   stuname   VARCHAR2 (64),
   email     VARCHAR2 (64)
);</span>

使用primary key關鍵字對id列進行修飾,表示將id作爲主鍵(唯一且非空),但這是最簡單的指定主鍵的方式,不推薦這麼做。

建議使用constraint關鍵字,使用列級別的constraint來創建主鍵:

<span style="font-family:Microsoft YaHei;">CREATE TABLE student
(
   stuid     NUMBER CONSTRAINTS student_PK PRIMARY KEY,
   stuname   VARCHAR2(64) CONSTRAINTS  stuname_nn NOT NULL,
   email     VARCHAR2 (64)
);</span>

這樣可以顯示地創建約束,並且能夠爲主鍵指定名稱,我們可以在user_constraints數據字典表中查詢對應約束的相關信息。


創建表級別的主鍵:

<span style="font-family:Microsoft YaHei;">CREATE TABLE student
(
   stuid     NUMBER,
   stuname   VARCHAR2 (64) CONSTRAINTS stuname_nn NOT NULL,
   email     VARCHAR2 (64),
   grade     NUMBER,
   CONSTRAINTS student_PK PRIMARY KEY (stuid)
);</span>
在爲表創建主鍵時,應該考慮一下規則:

①:主鍵應該是對用戶沒有意義的,例如最好不要使用身份證號碼作爲表的主鍵

②:主鍵應該是單列的,這樣可以提高數據篩選的性能

③:主鍵不能被更新

④:主鍵不能包含動態的數據,比如不要用時間戳作爲主鍵

⑤:主鍵最好是計算機自動生成的,在Oracle中可以使用序列作爲主鍵

2.2外鍵約束

外鍵約束又稱爲引用約束,用來在多個表之間定義關係,強制引用完整性。

創建班級表Grade

<span style="font-family:Microsoft YaHei;">CREATE TABLE grade
(
   gradeid     NUMBER,
   gradedesc   VARCHAR2 (200),
   CONSTRAINTS grade_PK PRIMARY KEY (gradeid)
);</span>
當我們要描述學生A屬於哪一個年級時,可以通過在student表中添加外鍵約束grade字段

<span style="font-family:Microsoft YaHei;">CREATE TABLE student
(
   stuid     NUMBER,
   stuname   VARCHAR2 (64) CONSTRAINTS stuname_nn NOT NULL,
   email     VARCHAR2 (64),
   grade     NUMBER,
   CONSTRAINTS student_PK PRIMARY KEY (stuid),
   CONSTRAINTS student_FK_grade FOREIGN KEY
      (grade)
       REFERENCES grade (gradeid)
);</span>

<span style="font-family:Microsoft YaHei;">ALTER TABLE SCOTT.STUDENT ADD (
  CONSTRAINT STUDENT_FK_GRADE 
  FOREIGN KEY (GRADE) 
  REFERENCES SCOTT.GRADE (GRADEID)
  ENABLE VALIDATE);</span>



























    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章