欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          oracle數(shù)據(jù)庫怎么修改字段

          在oracle中,可以利用“ALTER TABLE MODIFY”語句來修改字段,語法為“ALTER TABLE 表名 MODIFY 字段名 需要執(zhí)行的操作;”;常用操作有:修改列的可見性、更改列的默認值、修改虛擬列的表達式等。

          oracle數(shù)據(jù)庫怎么修改字段

          本教程操作環(huán)境:Windows7系統(tǒng)、Oracle 11g版、Dell G3電腦。

          oracle數(shù)據(jù)庫怎么修改字段

          在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列示例

          首先,為演示創(chuàng)建一個名為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é)果 –

          oracle數(shù)據(jù)庫怎么修改字段

          1. 修改列的可見性

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

          SELECT     * FROM     table_name;

          或者,

          DESCRIBE table_name;

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

          但是,可以通過在查詢中顯式指定不可見列來查詢:

          SELECT     invisible_column_1,     invisible_column_2 FROM     table_name;

          默認情況下,表列是可見的??梢栽趧?chuàng)建表或使用ALTER TABLE MODIFY列語句時定義不可見列。

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

          ALTER TABLE accounts  MODIFY full_name INVISIBLE;

          執(zhí)行再次查詢表中數(shù)據(jù),得到以下結(jié)果 –

          oracle數(shù)據(jù)庫怎么修改字段

          以下語句返回accounts表除了full_name列以外的所有列中返回數(shù)據(jù):

          SELECT     * FROM     accounts;

          這是因為full_name列是不可見的。要將列從不可見變?yōu)榭梢姡埵褂靡韵抡Z句:

          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)有數(shù)據(jù)符合新約束(也就是說,如果原來數(shù)據(jù)中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)在,它應(yīng)該就會按預(yù)期那樣工作了。

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

          假設(shè)要添加國際代碼到phone列上,比如:前綴加上+86。 在修改列的值之前,必須使用以下語句擴大phone列的大?。?/p>

          ALTER TABLE accounts  MODIFY phone VARCHAR2( 24 );

          現(xiàn)在,我們可以更新電話號碼的數(shù)據(jù)了:

          UPDATE     accounts SET     phone = '+86 ' || phone;

          以下語句驗證更新:

          SELECT     * FROM     accounts;

          執(zhí)行上面查詢語句結(jié)果中,應(yīng)該可以看到原電話號碼前綴有加上+86的國際區(qū)號了。

          oracle數(shù)據(jù)庫怎么修改字段

          要縮短列的大小,請確保列中的所有數(shù)據(jù)都符合新的大小。

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

          ALTER TABLE accounts  MODIFY phone VARCHAR2( 12 );

          Oracle數(shù)據(jù)庫發(fā)出以下錯誤:

          SQL Error: ORA-01441: cannot decrease column length because some  value is too big

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

          UPDATE     accounts SET     phone = REPLACE(         phone,         '+86 ',         ''     );

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

          然后縮短phone列的大?。?/p>

          ALTER TABLE accounts  MODIFY phone VARCHAR2( 12 );

          4. 修改虛擬列

          假設(shè)按以下兩列的格式填寫全名:

          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é)果

          oracle數(shù)據(jù)庫怎么修改字段

          5. 修改列的默認值

          添加一個名為status的新列,默認值為1accounts表中。參考以下語句 –

          ALTER TABLE accounts ADD status NUMBER( 1, 0 ) DEFAULT 1 NOT NULL ;

          當執(zhí)行了該語句,就會將accounts表中的所有現(xiàn)有行的status列中的值設(shè)置為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í)行上面查詢語句,應(yīng)該看類似下面的結(jié)果

          oracle數(shù)據(jù)庫怎么修改字段

          正如所看到的那樣,ID4的賬戶的status列的值是0。

          推薦教程:《Oracle教程》

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號