在oracle中,可以利用「ALTER TABLE MODIFY」語句來修改字段,語法為「ALTER TABLE 表名MODIFY 字段名需要執(zhí)行的操作;」;常用操作有:修改列的可見性、更改列的預設值、修改虛擬列的表達式等。
本教學操作環(huán)境:Windows7系統(tǒng)、Oracle 11g版、Dell G3電腦。
oracle資料庫怎麼修改字段
在oracle中,可以利用「ALTER TABLE MODIFY
」語句來修改字段,更改現(xiàn)有字段的定義。
要變更表格中列的定義,請如下所示使用ALTER TABLE MODIFY
列語法:
ALTER TABLE 表名 MODIFY 字段名 需要執(zhí)行的操作;
語句很直接。要修改表格的列,需要指定要執(zhí)行的列名,表名和操作。
Oracle允許執(zhí)行多種操作,但以下是主要常用的操作:
#修改列的可見性
允許或不允許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;
執(zhí)行上面查詢語句,得到以下結(jié)果-
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;
執(zhí)行再次查詢表中數(shù)據(jù),得到以下結(jié)果-
以下語句傳回accounts
表除了full_name
列以外的所有欄位中傳回資料:
SELECT * FROM accounts;
這是因為full_name
列是不可見的。若要將列從不可見變?yōu)榭梢?,請使用下列語句:
ALTER TABLE accounts MODIFY full_name VISIBLE;
2. 允許或不允許null範例
下列語句將email
列更改為接受非空(not null
)值:
ALTER TABLE accounts MODIFY email VARCHAR2( 100 ) NOT NULL;
但是,Oracle發(fā)出以下錯誤:
SQL Error: ORA-02296: cannot enable (OT.) - null values found
因為當將列從可為null
改為not null
時,必須確?,F(xiàn)有資料符合新限制條件(也就是說,如果原來資料中NULL
是不行的)。
為了解決這個問題,首先更新email
列的值:
UPDATE accounts SET email = LOWER(first_name || '.' || last_name || '@oraok.com') ;
請注意,LOWER()函數(shù)將字串轉(zhuǎn)換為小寫字母。
然後改變email
列的限制:
ALTER TABLE accounts MODIFY email VARCHAR2( 100 ) NOT NULL;
現(xiàn)在,它應該就會如預期般運作了。
3. 擴大或縮短列範例的大小
#假設要將國際程式碼新增到phone
列上,例如:前綴加上 86
。在修改列的值之前,必須使用以下語句擴大phone
列的大小:
ALTER TABLE accounts MODIFY phone VARCHAR2( 24 );
現(xiàn)在,我們可以更新電話號碼的資料了:
UPDATE accounts SET phone = '+86 ' || phone;
以下語句驗證更新:
SELECT * FROM accounts;
執(zhí)行上面查詢語句結(jié)果中,應該可以看到原始電話號碼前綴有加上 86
的國際區(qū)號了。
要縮短列的大小,請確保列中的所有資料都符合新的大小。
例如,嘗試將phone
列的大小縮減到12
個字元:
ALTER TABLE accounts MODIFY phone VARCHAR2( 12 );
Oracle資料庫發(fā)出以下錯誤:
SQL Error: ORA-01441: cannot decrease column length because some value is too big
要解決這個問題,首先,應該從電話號碼中刪除國際代碼(即: 86
):
UPDATE accounts SET phone = REPLACE( phone, '+86 ', '' );
REPLACE()函數(shù)用一個新的子字串替換一個子字串。在這種情況下,它將用空字串替換 86
。
然後縮短phone
列的大?。?/p>
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;
執(zhí)行上面查詢語句,可以看到以下結(jié)果
5. 修改列的默認值
添加一個名為status
的新列,默認值為1
到accounts
表中。參考以下語句 -
ALTER TABLE accounts ADD status NUMBER( 1, 0 ) DEFAULT 1 NOT NULL ;
當執(zhí)行了該語句,就會將accounts
表中的所有現(xiàn)有行的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' );
現(xiàn)在,查詢accounts
表中的數(shù)據(jù):
SELECT * FROM accounts;
執(zhí)行上面查詢語句,應該看類似下面的結(jié)果?
正如所看到的那樣,ID
為4
的賬戶的status
列的值是0
。
推薦教程:《Oracle教程》
以上是oracle資料庫怎麼修改字段的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

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

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

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

學習Java不走彎路的關(guān)鍵是:1.理解核心概念和語法;2.多實踐;3.理解內(nèi)存管理和垃圾回收;4.加入在線社區(qū);5.閱讀別人的代碼;6.了解常見庫和框架;7.學習處理常見錯誤;8.制定學習計劃並循序漸進。這些方法能幫助你高效掌握Java編程。

學Java需要學習基礎(chǔ)語法、面向?qū)ο缶幊?、集合框架、異常處理、多線程、I/O流、JDBC、網(wǎng)絡編程以及高級特性如反射和註解。 1.基礎(chǔ)語法包括變量、數(shù)據(jù)類型、運算符和控制流語句。 2.面向?qū)ο缶幊毯w類、對象、繼承、多態(tài)、封裝和抽象。 3.集合框架涉及ArrayList、LinkedList、HashSet和HashMap等。 4.異常處理通過try-catch塊確保程序健壯性。 5.多線程編程需要理解線程生命週期和同步。 6.I/O流用於數(shù)據(jù)讀寫和文件操作。 7.JDBC用於與數(shù)據(jù)庫交互。 8.網(wǎng)絡編程通過S

安裝MySQL8.0的關(guān)鍵在於按步驟操作並註意常見問題。 Windows上推薦使用MSI安裝包,步驟包括下載安裝包、運行安裝程序、選擇安裝類型、設置root密碼、啟用服務啟動,並註意端口衝突或手動配置ZIP版;Linux(如Ubuntu)則通過apt安裝,步驟為更新源、安裝服務器、運行安全腳本、檢查服務狀態(tài)及修改root認證方式;無論哪個平臺,都應修改默認密碼、創(chuàng)建普通用戶、設置防火牆、調(diào)整配置文件以優(yōu)化字符集等參數(shù),確保安全性與正常使用。

使用JDBC連接Oracle數(shù)據(jù)庫連接池的步驟包括:1)配置連接池,2)從連接池獲取連接,3)執(zhí)行SQL操作,4)關(guān)閉資源。使用OracleUCP可以有效管理連接,提高性能。

在MongoDB中查看所有數(shù)據(jù)庫的方法是輸入命令“showdbs”。 1.該命令只顯示非空數(shù)據(jù)庫。 2.可以通過“use”命令切換數(shù)據(jù)庫並插入數(shù)據(jù)使其顯示。 3.注意內(nèi)部數(shù)據(jù)庫如“l(fā)ocal”和“config”。 4.使用驅(qū)動程序時需用“l(fā)istDatabases()”方法獲取詳細信息。 5.“db.stats()”命令可查看數(shù)據(jù)庫詳細統(tǒng)計信息。

集成Oracle數(shù)據(jù)庫與Hadoop的主要原因是利用Oracle的強大數(shù)據(jù)管理和事務處理能力,以及Hadoop的大規(guī)模數(shù)據(jù)存儲和分析能力。集成方法包括:1.使用OracleBigDataConnector將數(shù)據(jù)從Oracle導出到Hadoop;2.使用ApacheSqoop進行數(shù)據(jù)傳輸;3.通過Oracle的外部表功能直接讀取Hadoop數(shù)據(jù);4.使用OracleGoldenGate實現(xiàn)數(shù)據(jù)同步。

SQL常用語句包括:1.CREATETABLE創(chuàng)建表,如CREATETABLEemployees(idINTPRIMARYKEY,nameVARCHAR(100),salaryDECIMAL(10,2));2.CREATEINDEX創(chuàng)建索引,如CREATEINDEXidx_nameONemployees(name);3.INSERTINTO插入數(shù)據(jù),如INSERTINTOemployees(id,name,salary)VALUES(1,'JohnDoe',75000.00);4.SELECT查

直接查詢管理員密碼在安全性上是不推薦的做法。 Oracle數(shù)據(jù)庫的安全設計原則是避免明文存儲密碼。替代方法包括:1.使用SQL*Plus重置SYS或SYSTEM用戶密碼;2.通過DBMS_CRYPTO包驗證加密後的密碼。
