首頁 > 資料庫 > Oracle > 主體

oracle表怎麼增加列

青灯夜游
發布: 2022-03-02 18:42:53
原創
36369 人瀏覽過

在oracle中,可以使用「ALTER TABLE ADD」語句來新增一列或多列,語法「ALTER TABLE table_name ADD column_name data_type constraint;」。

oracle表怎麼增加列

本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。

在oracle中,可以使用「ALTER TABLE ADD」語句來新增一列或多列到表中。

要將新列加入到表中,請如下所示使用ALTER TABLE語句:

ALTER TABLE table_name 
ADD column_name data_type constraint;
登入後複製

在上面這個語句中,

  • 首先,在ALTER TABLE子句之後指定要新增列的表的名稱。
  • 其次,指定列名,資料型別及其限制。

請注意,不能新增表格中已經存在的欄位; 這樣做會導致錯誤。另外,ALTER TABLE ADD列語句在表格的最後新增欄位。 Oracle並沒有提供直接的方法來讓您像其他資料庫系統(如MySQL)那樣指定新列的位置。

如果想要新增多個列,請使用下列語法:

ALTER TABLE table_name 
ADD (
    column_name_1 data_type constraint,
    column_name_2 data_type constraint,
    ...
);
登入後複製

在這個語法中,用逗號分隔兩列。

Oracle ALTER TABLE ADD欄位的範例

#下面來建立一個名為members的表。參考以下SQL語句-

-- 12c语法
CREATE TABLE members(
    member_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
    first_name VARCHAR2(50),
    last_name VARCHAR2(50),
    PRIMARY KEY(member_id)
);
登入後複製

以下語句將一個名為birth_date的新欄位加入到members表中:

ALTER TABLE members 
ADD birth_date DATE NOT NULL;
登入後複製

在這個例子中,birth_date列是一個DATE列,它不接受null

假設想要記錄一行的建立和更新的時間。那麼可以再增加兩列created_atupdated_at,如下:

ALTER TABLE
    members ADD(
        created_at TIMESTAMP WITH TIME ZONE NOT NULL,
        updated_at TIMESTAMP WITH TIME ZONE NOT NULL
    );
登入後複製

created_atupdated_at列的資料型別是TIMESTAMP WITH TIME ZONE。這些列也不接受null

要檢查表格中是否存在列,可以從user_tab_cols檢視查詢資料。例如,以下語句將檢查members表是否有first_name欄位。

SELECT
    COUNT(*)
FROM
    user_tab_cols
WHERE
    column_name = 'FIRST_NAME'
    AND table_name = 'MEMBERS';
登入後複製

當想在新增表格之前檢查列中是否存在列時,此查詢就派上用場了。
例如,下面的PL/SQL區塊在新增之前檢查members表格是否有effective_date列。

SET SERVEROUTPUT ON SIZE 1000000
DECLARE
  v_col_exists NUMBER 
BEGIN
  SELECT count(*) INTO v_col_exists
    FROM user_tab_cols
    WHERE column_name = 'EFFECTIVE_DATE'
      AND table_name = 'MEMBERS';

   IF (v_col_exists = 0) THEN
      EXECUTE IMMEDIATE 'ALTER TABLE members ADD effective_date DATE';
   ELSE
    DBMS_OUTPUT.PUT_LINE('The column effective_date already exists');
  END IF;
END;
/
登入後複製

如果第一次執行該區塊,那麼effective_date列將會被加入到members表的結尾。但是,一旦從第二次執行它,將看到以下訊息:

The column effective_date already exists
登入後複製

這與上面編寫的程式的預期一致。

推薦教學:《Oracle教學

以上是oracle表怎麼增加列的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!