目錄
oracle資料庫怎麼修改字段
Oracle ALTER TABLE MODIFY列範例
首頁 資料庫 Oracle oracle資料庫怎麼修改字段

oracle資料庫怎麼修改字段

Mar 02, 2022 pm 06:13 PM
oracle 資料庫

在oracle中,可以利用「ALTER TABLE MODIFY」語句來修改字段,語法為「ALTER TABLE 表名MODIFY 字段名需要執行的操作;」;常用操作有:修改列的可見性、更改列的預設值、修改虛擬列的表達式等。

oracle資料庫怎麼修改字段

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

oracle資料庫怎麼修改字段

在oracle中,可以利用「ALTER TABLE MODIFY」語句來修改字段,更改現有字段的定義。

要變更表格中列的定義,請如下所示使用ALTER TABLE MODIFY列語法:

ALTER TABLE 表名 
MODIFY 字段名 需要执行的操作;
登入後複製

語句很直接。要修改表格的列,需要指定要執行的列名,表名和操作。

Oracle允許執行多種操作,但以下是主要常用的操作:

  • #修改列的可見性

  • 允許或不允許NULL值

  • 縮短或擴大列的大小

  • #更改列的預設值

  • #修改虛擬列的表達式

要修改多個列,請使用下列語法:

ALTER TABLE 表名
MODIFY (
    字段名1 action,
    字段名2 action,
    ...
);
登入後複製

Oracle ALTER TABLE MODIFY列範例

#首先,為示範建立一個名為accounts的新表:

-- 12c语法
CREATE TABLE accounts (
    account_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
    first_name VARCHAR2(25) NOT NULL,
    last_name VARCHAR2(25) NOT NULL,
    email VARCHAR2(100),
    phone VARCHAR2(12) ,
    full_name VARCHAR2(51) GENERATED ALWAYS AS( 
            first_name || ' ' || last_name
    ),
    PRIMARY KEY(account_id)
);
登入後複製

其次,向accounts表中插入一些行:

INSERT INTO accounts(first_name,last_name,phone)
VALUES('Trinity',
       'Knox',
       '410-555-0197');


INSERT INTO accounts(first_name,last_name,phone)
VALUES('Mellissa',
       'Porter',
       '410-555-0198');


INSERT INTO accounts(first_name,last_name,phone)
VALUES('Leeanna',
       'Bowman',
       '410-555-0199');
登入後複製

第三,透過使用下面的SELECT語句驗證插入操作:

SELECT
    *
FROM
    accounts;
登入後複製
登入後複製
登入後複製
登入後複製

執行上面查詢語句,得到以下結果-

oracle資料庫怎麼修改字段

1. 修改列的可見性

在Oracle 12c中,可以將表列定義為不可見或可見。不可見列不可用於查詢,如:

SELECT
    *
FROM
    table_name;
登入後複製

或者,

DESCRIBE table_name;
登入後複製

都是查到不到不可見列的。

但是,可以透過在查詢中明確指定不可見列來查詢:

SELECT
    invisible_column_1,
    invisible_column_2
FROM
    table_name;
登入後複製

預設情況下,表列是可見的。可以在建立表格或使用ALTER TABLE MODIFY列語句時定義不可見列。

例如,以下語句使full_name列不可見:

ALTER TABLE accounts 
MODIFY full_name INVISIBLE;
登入後複製

執行再次查詢表中數據,得到以下結果-

oracle資料庫怎麼修改字段

以下語句傳回accounts表除了full_name列以外的所有欄位中傳回資料:

SELECT
    *
FROM
    accounts;
登入後複製
登入後複製
登入後複製
登入後複製

這是因為full_name列是不可見的。若要將列從不可見變為可見,請使用下列語句:

ALTER TABLE accounts 
MODIFY full_name VISIBLE;
登入後複製

2. 允許或不允許null範例

下列語句將email列更改為接受非空(not null)值:

ALTER TABLE accounts 
MODIFY email VARCHAR2( 100 ) NOT NULL;
登入後複製
登入後複製

但是,Oracle發出以下錯誤:

SQL Error: ORA-02296: cannot enable (OT.) - null values found
登入後複製

因為當將列從可為null改為not null時,必須確保現有資料符合新限制條件(也就是說,如果原來資料中NULL是不行的)。

為了解決這個問題,首先更新email列的值:

UPDATE 
    accounts
SET 
    email = LOWER(first_name || '.' || last_name || '@oraok.com') ;
登入後複製

請注意,LOWER()函數將字串轉換為小寫字母。

然後改變email列的限制:

ALTER TABLE accounts 
MODIFY email VARCHAR2( 100 ) NOT NULL;
登入後複製
登入後複製

現在,它應該就會如預期般運作了。

3. 擴大或縮短列範例的大小

#假設要將國際程式碼新增到phone列上,例如:前綴加上 86。在修改列的值之前,必須使用以下語句擴大phone列的大小:

ALTER TABLE accounts 
MODIFY phone VARCHAR2( 24 );
登入後複製

現在,我們可以更新電話號碼的資料了:

UPDATE
    accounts
SET
    phone = '+86 ' || phone;
登入後複製

以下語句驗證更新:

SELECT
    *
FROM
    accounts;
登入後複製
登入後複製
登入後複製
登入後複製

執行上面查詢語句結果中,應該可以看到原始電話號碼前綴有加上 86的國際區號了。

oracle資料庫怎麼修改字段

要縮短列的大小,請確保列中的所有資料都符合新的大小。

例如,嘗試將phone列的大小縮減到12個字元:

ALTER TABLE accounts 
MODIFY phone VARCHAR2( 12 );
登入後複製
登入後複製

Oracle資料庫發出以下錯誤:

SQL Error: ORA-01441: cannot decrease column length because some  value is too big
登入後複製

要解決這個問題,首先,應該從電話號碼中刪除國際代碼(即: 86):

UPDATE
    accounts
SET
    phone = REPLACE(
        phone,
        '+86 ',
        ''
    );
登入後複製

REPLACE()函數用一個新的子字串替換一個子字串。在這種情況下,它將用空字串替換 86

然後縮短phone列的大小:

ALTER TABLE accounts 
MODIFY phone VARCHAR2( 12 );
登入後複製
登入後複製

#4. 修改虛擬列

##假設以以下兩列的格式填入全名:

last_name, first_name
登入後複製

為此,可以變更虛擬列

full_name的表達式,如下所示:

ALTER TABLE accounts 
MODIFY full_name VARCHAR2(52) 
GENERATED ALWAYS AS (last_name || ', ' || first_name);
登入後複製

以下语句验证修改:

SELECT
    *
FROM
    accounts;
登入後複製
登入後複製
登入後複製
登入後複製

执行上面查询语句,可以看到以下结果

oracle資料庫怎麼修改字段

5. 修改列的默认值

添加一个名为status的新列,默认值为1accounts表中。参考以下语句 -

ALTER TABLE accounts
ADD status NUMBER( 1, 0 ) DEFAULT 1 NOT NULL ;
登入後複製

当执行了该语句,就会将accounts表中的所有现有行的status列中的值设置为1

要将status列的默认值更改为0,请使用以下语句:

ALTER TABLE accounts 
MODIFY status DEFAULT 0;
登入後複製

可以在accounts表中添加一个新行来检查status列的默认值是0还是1

INSERT INTO accounts ( first_name, last_name, email, phone )
VALUES ( 'Julia',
         'Madden',
         'julia.madden@oraok.com',
         '410-555-0200' );
登入後複製

现在,查询accounts表中的数据:

SELECT
  *
FROM
  accounts;
登入後複製

执行上面查询语句,应该看类似下面的结果 

oracle資料庫怎麼修改字段

正如所看到的那样,ID4的账户的status列的值是0

推荐教程:《Oracle教程

以上是oracle資料庫怎麼修改字段的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MySQL:世界上最受歡迎的數據庫的簡介 MySQL:世界上最受歡迎的數據庫的簡介 Apr 12, 2025 am 12:18 AM

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

oracle打不開怎麼辦 oracle打不開怎麼辦 Apr 11, 2025 pm 10:06 PM

Oracle 打不開的解決辦法包括:1. 啟動數據庫服務;2. 啟動監聽器;3. 檢查端口衝突;4. 正確設置環境變量;5. 確保防火牆或防病毒軟件未阻止連接;6. 檢查服務器是否已關閉;7. 使用 RMAN 恢復損壞的文件;8. 檢查 TNS 服務名稱是否正確;9. 檢查網絡連接;10. 重新安裝 Oracle 軟件。

為什麼要使用mysql?利益和優勢 為什麼要使用mysql?利益和優勢 Apr 12, 2025 am 12:17 AM

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

oracle游標關閉怎麼解決 oracle游標關閉怎麼解決 Apr 11, 2025 pm 10:18 PM

解決 Oracle 游標關閉問題的方法包括:使用 CLOSE 語句顯式關閉游標。在 FOR UPDATE 子句中聲明游標,使其在作用域結束後自動關閉。在 USING 子句中聲明游標,使其在關聯的 PL/SQL 變量關閉時自動關閉。使用異常處理確保在任何異常情況下關閉游標。使用連接池自動關閉游標。禁用自動提交,延遲游標關閉。

oracle怎麼循環創建游標 oracle怎麼循環創建游標 Apr 12, 2025 am 06:18 AM

Oracle 中,FOR LOOP 循環可動態創建游標, 步驟為:1. 定義游標類型;2. 創建循環;3. 動態創建游標;4. 執行游標;5. 關閉游標。示例:可循環創建游標,顯示前 10 名員工姓名和工資。

oracle數據庫怎麼停止 oracle數據庫怎麼停止 Apr 12, 2025 am 06:12 AM

要停止 Oracle 數據庫,請執行以下步驟:1. 連接到數據庫;2. 優雅關機數據庫(shutdown immediate);3. 完全關機數據庫(shutdown abort)。

HDFS配置CentOS需要哪些步驟 HDFS配置CentOS需要哪些步驟 Apr 14, 2025 pm 06:42 PM

在CentOS系統上搭建Hadoop分佈式文件系統(HDFS)需要多個步驟,本文提供一個簡要的配置指南。一、前期準備安裝JDK:在所有節點上安裝JavaDevelopmentKit(JDK),版本需與Hadoop兼容。可從Oracle官網下載安裝包。環境變量配置:編輯/etc/profile文件,設置Java和Hadoop的環境變量,使系統能夠找到JDK和Hadoop的安裝路徑。二、安全配置:SSH免密登錄生成SSH密鑰:在每個節點上使用ssh-keygen命令

甲骨文在商業世界中的作用 甲骨文在商業世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

See all articles