目次
Oracle データベースのフィールドを変更する方法
Oracle ALTER TABLE MODIFY列の例
ホームページ データベース Oracle Oracleデータベースのフィールドを変更する方法

Oracleデータベースのフィールドを変更する方法

Mar 02, 2022 pm 06:13 PM
oracle データベース

Oracle では、「ALTER TABLE MODIFY」ステートメントを使用してフィールドを変更できます。構文は「ALTER TABLE テーブル名 MODIFY フィールド名 実行する必要がある操作」です。一般的な操作には次のものが含まれます: 列の可視性の変更、列のデフォルト値の変更、仮想列を変更する式など。

Oracleデータベースのフィールドを変更する方法

このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle データベースのフィールドを変更する方法

Oracle では、「ALTER TABLE MODIFY」ステートメントを使用してフィールドを変更し、既存のフィールドの値。定義。

テーブル内の列の定義を変更するには、次のように ALTER TABLE MODIFYcolumn 構文を使用します。

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)
);
ログイン後にコピー

2 番目に、新しいテーブルを作成します。テーブルを accounts テーブルにいくつかの行を挿入します: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">INSERT INTO accounts(first_name,last_name,phone) VALUES(&amp;#39;Trinity&amp;#39;, &amp;#39;Knox&amp;#39;, &amp;#39;410-555-0197&amp;#39;); INSERT INTO accounts(first_name,last_name,phone) VALUES(&amp;#39;Mellissa&amp;#39;, &amp;#39;Porter&amp;#39;, &amp;#39;410-555-0198&amp;#39;); INSERT INTO accounts(first_name,last_name,phone) VALUES(&amp;#39;Leeanna&amp;#39;, &amp;#39;Bowman&amp;#39;, &amp;#39;410-555-0199&amp;#39;);</pre><div class="contentsignin">ログイン後にコピー</div></div>

Third

、次の SELECT ステートメントを使用して挿入操作を確認します: <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">SELECT * FROM accounts;</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>上記のクエリ ステートメントを実行すると、次の結果が得られます -

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

列を非表示にします: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">ALTER TABLE accounts MODIFY full_name INVISIBLE;</pre><div class="contentsignin">ログイン後にコピー</div></div> テーブル内のクエリ データを再度実行すると、次の結果が得られます-

Oracleデータベースのフィールドを変更する方法次のステートメントは、

full_name

列を除く accounts テーブルのすべての列のデータを返します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">SELECT * FROM accounts;</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>これは ## のためです。 #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 || &#39;.&#39; || last_name || &#39;@oraok.com&#39;) ;
ログイン後にコピー
LOWER()

関数は文字列を変換することに注意してください。小文字にします。

次に、email

列の制約を変更します:

ALTER TABLE accounts 
MODIFY email VARCHAR2( 100 ) NOT NULL;
ログイン後にコピー
ログイン後にコピー
これで、期待どおりに動作するはずです。

3. 列のサイズを拡大または縮小する例

国際コードを phone## に追加するとします。 # 列 (例:

86

をプレフィックスとして付けます)。列の値を変更する前に、次のステートメントを使用して phone 列のサイズを拡張する必要があります: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">ALTER TABLE accounts MODIFY phone VARCHAR2( 24 );</pre><div class="contentsignin">ログイン後にコピー</div></div> これで、電話番号データを更新できます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">UPDATE accounts SET phone = &amp;#39;+86 &amp;#39; || phone;</pre><div class="contentsignin">ログイン後にコピー</div></div>次のステートメント検証更新:

<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">SELECT * FROM accounts;</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>

上記のクエリ ステートメントの実行結果では、元の電話番号の国際市外局番の前に

86

が付いていることが確認できるはずです。 。

#列のサイズを短くするには、列内のすべてのデータが新しいサイズに適合することを確認してください。

Oracleデータベースのフィールドを変更する方法たとえば、

phone

列のサイズを

12

文字に削減しようとすると、<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">ALTER TABLE accounts MODIFY phone VARCHAR2( 12 );</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>Oracle Database は次のエラーを発行します: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">SQL Error: ORA-01441: cannot decrease column length because some value is too big</pre><div class="contentsignin">ログイン後にコピー</div></div>この問題を解決するには、まず電話番号から国際コードを削除する必要があります (例:

86

):

UPDATE
    accounts
SET
    phone = REPLACE(
        phone,
        &#39;+86 &#39;,
        &#39;&#39;
    );
ログイン後にコピー

REPLACE() 関数は部分文字列を次のように置き換えます。新しい文字列。この場合、 86 は空の文字列に置き換えられます。

次に、phone 列のサイズを短くします:

<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">ALTER TABLE accounts MODIFY phone VARCHAR2( 12 );</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>

4. 仮想列

# を変更します。 ##前提条件 次の 2 列形式でフルネームを入力します:

last_name, first_name
ログイン後にコピー
これを行うには、仮想列 full_name

の式を次のように変更します。
ALTER TABLE accounts 
MODIFY full_name VARCHAR2(52) 
GENERATED ALWAYS AS (last_name || &#39;, &#39; || first_name);
ログイン後にコピー

以下语句验证修改:

<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">SELECT * FROM accounts;</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>

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

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 ( &#39;Julia&#39;,
         &#39;Madden&#39;,
         &#39;julia.madden@oraok.com&#39;,
         &#39;410-555-0200&#39; );
ログイン後にコピー

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

SELECT
  *
FROM
  accounts;
ログイン後にコピー

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

Oracleデータベースのフィールドを変更する方法

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

推荐教程:《Oracle教程

以上がOracleデータベースのフィールドを変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

オラクルを開けない場合はどうすればよいですか オラクルを開けない場合はどうすればよいですか 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 Cursorを閉じる問題を解決する方法 Oracle Cursorを閉じる問題を解決する方法 Apr 11, 2025 pm 10:18 PM

Oracle Cursorの閉鎖問題を解決する方法には、次のものが含まれます。 Scopeが終了した後に自動的に閉じるように、for update句のカーソルを宣言します。使用句のカーソルを宣言して、関連するPL/SQL変数が閉じられたときに自動的に閉じるようにします。例外処理を使用して、例外の状況でカーソルが閉じていることを確認します。接続プールを使用して、カーソルを自動的に閉じます。自動送信を無効にし、カーソルの閉鎖を遅延させます。

Oracle Loopでカーソルを作成する方法 Oracle Loopでカーソルを作成する方法 Apr 12, 2025 am 06:18 AM

Oracleでは、forループループは動的にカーソルを作成できます。手順は次のとおりです。1。カーソルタイプを定義します。 2。ループを作成します。 3.カーソルを動的に作成します。 4。カーソルを実行します。 5。カーソルを閉じます。例:カーソルをサイクルごとに作成して、上位10人の従業員の名前と給与を表示できます。

Oracleデータベースを停止する方法 Oracleデータベースを停止する方法 Apr 12, 2025 am 06:12 AM

Oracleデータベースを停止するには、次の手順を実行します。1。データベースに接続します。 2。すぐにシャットダウンします。 3.シャットダウンは完全に中止します。

HDFSでCentosを構成するために必要な手順 HDFSでCentosを構成するために必要な手順 Apr 14, 2025 pm 06:42 PM

CENTOSシステムにHadoop分散ファイルシステム(HDFS)を構築するには、複数のステップが必要です。この記事では、簡単な構成ガイドを提供します。 1.初期段階でJDKをインストールする準備:すべてのノードにJavadevelopmentKit(JDK)をインストールすると、バージョンはHadoopと互換性がある必要があります。インストールパッケージは、Oracleの公式Webサイトからダウンロードできます。環境変数構成: /etc /プロファイルファイルを編集し、JavaおよびHadoop環境変数を設定して、システムがJDKとHadoopのインストールパスを見つけることができるようにします。 2。セキュリティ構成:SSHパスワードなしログインSSHキーを生成する:各ノードでSSH-KeyGenコマンドを使用する

ビジネスの世界におけるオラクルの役割 ビジネスの世界におけるオラクルの役割 Apr 23, 2025 am 12:01 AM

Oracleはデータベース会社だけでなく、クラウドコンピューティングとERPシステムのリーダーでもあります。 1。Oracleは、データベースからクラウドサービスおよびERPシステムへの包括的なソリューションを提供します。 2。Oraclecloudは、AWSとAzureに挑戦し、IAAS、PAAS、SAASサービスを提供します。 3. e-businesssuiteやfusionApplicationsなどのOracleのERPシステムは、企業がオペレーションを最適化するのに役立ちます。

See all articles