how use pl sql insert
このチュートリアルでは、プログラミング例を使用してPL SQL INSERT、UPDATE、DELETE、およびSELECTコマンドを使用する方法について説明します。
この記事では、 PL / SQLシリーズ 。の中に PL / SQLのデータ型、定数、変数 チュートリアルでは、プログラミング例を使用して、PL SQLのデータ型、変数、定数、およびリテラルについて詳しく学習しました。ここでは、PL SQLDMLステートメントとその機能について説明します。
PL / SQL表のデータを操作するためのPLSQL INSERT、DELETE、UPDATE、およびSELECTコマンドについて説明します。
学びから始めましょう!
学習内容:
PL SQLDMLコマンド
テーブルでのINSERT、DELETE、UPDATE、およびSELECTコマンドの実装について理解を始めましょう。これらを総称して、データ操作言語(DML)ステートメントと呼びます。
PL SQLINSERTコマンド
INSERT INTOステートメントは、データをテーブルに挿入するために使用されます。それはと呼ばれます データ操作言語 。テーブル名と列名および値を入力として使用し、テーブルへの値の挿入を実行します。
構文:
Windowsプログラムを実行するオペレーティングシステム
INSERT INTO <> VALUES (<>, <>, …..);挿入される表名と値は、PL SQLINSERT文の必須部分です。オプションで、値が挿入される列名についても言及できます。
以下に示すSQLステートメントを使用してEMPLOYEEテーブルを作成しました。
CREATE TABLE EMPLOYEE ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
PL SQL INSERTを使用したコード実装:
BEGIN INSERT INTO EMPLOYEE VALUES (1, 'FLEX', 34); INSERT INTO EMPLOYEE VALUES (2, 'HARRY', 35); END
上記のコードの出力は次のようになります。
SELECT * from EMPLOYEE;

SELECTに挿入
すべての列に挿入
INSERT INTO SELECTは、SELECTステートメントの結果に基づいて行をテーブルに挿入するために使用されます。テーブルから行を取得して、別のテーブルに挿入する必要がある場合があります。
構文:
INSERT INTO <> (col1, col2, col3) SELECT col1, col2, col3 FROM <> WHERE condition;
INSERT INTO SELECTコマンドでは、ソーステーブルとターゲットテーブルのデータ型が同じである必要があります。ソーステーブルの行全体をターゲットテーブルにコピーする必要がある場合は、WHERE条件を省略できます。
以下に示すSQLステートメントを使用して、MANAGERという別のテーブルを作成しました。
CREATE TABLE MANAGER ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
EMPLOYEEテーブルをもう一度考えてみましょう。
INSERT INTOSELECTを使用したコードの実装:
BEGIN INSERT INTO MANAGER (CODE, NAME, AGE) SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE = 1; END;
上記のコードの出力:

SELECT * from MANAGER;

部分データを挿入
部分的なデータを別のテーブルに挿入することもできます。最初に作成しましょう MANAGERDETAIL 以下のクエリを使用して、EMPLOYEEテーブルのテーブル。
CREATE TABLE MANAGERDETAIL AS SELECT * FROM EMPLOYEE WHERE 1 = 0;
ここに、 WHERE 1 = 0 コードであるEMPLOYEEテーブルの最初の列を参照します。
次に、INSERT INTO SELECTステートメントを使用して、EMPLOYEEテーブルからMANAGERDETAILテーブルにデータを複製します。
INSERT INTOSELECTを使用したコード実装。
BEGIN INSERT INTO MANAGERDETAIL SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE! = 0 END;
上記のコードの出力:

SELECT * from MANAGERDETAIL;

上記の例では、SELECTコマンドの出力にMANAGERDETAIL表の列と一致する値があるため、INSERTコマンドの列名については言及していません。また、WHERE句に条件を含めました。
部分データとリテラルを挿入する
部分的なデータとリテラル値をテーブルに挿入できます。
まず、以下のクエリを使用してMANAGERCONTACTテーブルを作成しましょう。
CREATE TABLE MANAGERCONTACT ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
ここで、もう一度EMPLOYEEテーブルを利用して、EMPLOYEEテーブルからMANAGERCONTACTテーブルにデータを複製してみましょう。
INSERT INTOを使用したコード実装:
BEGIN INSERT INTO MANAGERCONTACT (CODE, NAME, AGE) SELECT CODE, NAME, 0 FROM EMPLOYEE; END;
上記のコードの出力:

SELECT * from MANAGERCONTACT;

上記の例では、EMPLOYEEテーブルから値を取得し、INSERTステートメントに0リテラルを含めて、MANAGERCONTACTテーブルのAGE列の値を0に変更しました。
すべて挿入
INSERT ALLステートメントは、1つまたは複数のテーブルに複数の行を追加するために使用されます。マルチテーブルコマンドとも呼ばれ、条件付きと無条件の2種類があります。
#1)無条件のすべてを挿入
テーブルに複数の行を挿入するには、INSERTALLステートメントを使用します。
構文:
INSERT ALL INTO <> (c1, c2, c3) VALUES (v1, v2, v3) INTO <> (c1, c2, c3) VALUES (v4, v5, v6) INTO <> (c1, c2, c3) VALUES (v7, v8, v9) ここで、c1、c2、c3は列名、v1、v2、v3は挿入する値です。場合によっては、サブクエリの代わりにリテラル値を使用する必要があります。 以下のクエリを使用する必要があります。
SELECT * FROM dual;
以下に示すSQLステートメントを使用してSOCCERPLAYERSテーブルを作成しました。
CREATE TABLE SOCCERPLAYERS ( PLAYERID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COUNTRY VARCHAR (15), PRIMARY KEY (PLAYERID) );
INSERT ALLを使用したコード実装:
BEGIN INSERT ALL INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (4, 'DANIEL', 'USA') INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (8, 'DANNY', 'ITALY') INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (7, 'FRANK', 'FRANCE') SELECT 1 FROM dual; END;
上記のコードの出力:

SELECT * from SOCCERPLAYERS;

上記の例では、INSERTALLコマンドを使用して3つの行がテーブルに一度に挿入されています。
複数の行を複数のテーブルに挿入するには、INSERTALLステートメントを使用します。
構文:
INSERT ALL INTO <> (c1, c2, c3) VALUES (v1, v2, v3) INTO <> (c1, c2, c3) VALUES (v4, v5, v6) INTO <> (c1, c2, c3) VALUES (v7, v8, v9) Subquery;
ここで、c1、c2、c3は列名、v1、v2、v3は挿入する値です。 table_name1、table_name2、table_name3はテーブル名です。
#2)条件付き挿入すべて
INSERT ALLステートメントは、条件によっては、テーブルに複数の行を挿入できます。
構文:
INSERT (ALL | FIRST) WHEN cond1 THEN INTO table_name1 <> VALUES <> WHEN cond2 THEN INTO table_name2 <> VALUES <> ELSE INTO table_name3 <> VALUES <> Subquery;
キーワードALLは、WHERE句のすべての条件を実行するように指定するために使用されます。条件が満たされると、対応するINTO句が実行されます。
キーワードFIRSTが使用されている場合、サブクエリから取得された個々の行ごとに、OracleはWHEN句の基準を上から下に実行します。条件が満たされると、対応するINTO句が実行され、その行の別のWHEN句にジャンプします。
以下に示すSQLステートメントを使用して、VEHICLE、CARS、SMALLCARS、およびLARGECARSテーブルを作成しました。
CREATE TABLE VEHICLE ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) );
以下の値をVEHICLEテーブルに挿入します。
INSERT INTO VEHICLE VALUES (1, 'AUDI', 'RED'); INSERT INTO VEHICLE VALUES (4, 'BMW', 'WHITE'); INSERT INTO VEHICLE VALUES (7, 'KIA', 'GREEN'); CREATE TABLE CARS ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) ); CREATE TABLE SMALLCARS AS SELECT * FROM CARS; CREATE TABLE LARGECARS AS SELECT * FROM CARS;
INSERTALLを使用したコード実装。
BEGIN INSERT ALL WHEN CARID = 1 THEN INTO CARS WHEN CARID = 4 THEN INTO SMALLCARS WHEN CARID = 7 THEN INTO LARGECARS SELECT CARID, NAME, COLOR FROM VEHICLE; END;
上記のコードの出力:

SELECT * from CARS;

SELECT * from SMALLCARS;

SELECT * from LARGECARS;

上記の例では、CARDID値に基づいて3つのテーブルのそれぞれに1つの行が挿入されています。
INSERTALLステートメントには特定の制限があります。
- これは、テーブルに値を挿入するためにのみ使用されます。ビューまたはマテリアライズドビューでは機能しません。
- リモートテーブルに値を挿入することはできません。
- INSERT INTOコマンドが処理できる列の数は、999を超えてはなりません。
- 表コレクションの式は、複数表のINSERTコマンドでは使用できません。
- マルチテーブルのINSERTサブクエリは、シーケンスを使用できません。
PLSQL更新コマンド
UPDATEステートメントは、テーブルの値を変更するために使用されます。とも呼ばれます データ操作言語 。テーブル、列、および値の名前を入力として使用し、テーブルの値の変更を実行します。
構文:
UPDATE <> SET <>=<>, <>=<>,… WHERE <>;SETキーワードは、列の値を新しい値に変更するために使用されます。オプションで、WHEREキーワードを使用します。省略した場合、テーブル全体の指定された列の値が変更されます。
行の単一列を更新する
EMPLOYEEテーブルをもう一度考えてみましょう。
UPDATEを使用したコードの実装:
BEGIN UPDATE EMPLOYEE SET NAME = 'HENRY' WHERE CODE=1; END;
上記のコードの出力:

SELECT * from EMPLOYEE;

行の複数の列を更新する
EMPLOYEEテーブルをもう一度考えてみましょう。
UPDATEを使用したコードの実装:
BEGIN UPDATE EMPLOYEE SET NAME = 'COMO', AGE = 30 WHERE CODE=2; END;
上記のコードの出力:

SELECT * from EMPLOYEE;

複数の行を更新する
EMPLOYEEテーブルをもう一度考えてみましょう。
UPDATEを使用したコードの実装:
BEGIN UPDATE EMPLOYEE SET AGE = AGE +1; END;
上記のコードの出力:

SELECT * from EMPLOYEE;

上記の例では、すべての従業員のAGEが1増加しました。
PLSQL削除コマンド
DELETEステートメントは、テーブルからレコード全体を削除するために使用されます。とも呼ばれます データ操作言語。
構文:
DELETE FROM <> WHERE <>;キーワードFROMは必須ではなく、FROMがクエリに追加された場合、または追加されなかった場合、DELETEステートメントは同じ結果を生成します。オプションで、WHEREキーワードを使用します。省略した場合、テーブル全体が削除されます。
テーブルから単一行を削除します
EMPLOYEEテーブルをもう一度考えてみましょう。
DELETEを使用したコードの実装:
任意のサイトからのビデオダウンロードソフトウェア
BEGIN DELETE FROM EMPLOYEE WHERE CODE=2; END;
上記のコードの出力:

SELECT * from EMPLOYEE;

テーブルから複数の行を削除する
MANAGERDETAILテーブルについてもう一度考えてみましょう。
DELETEを使用したコードの実装:
BEGIN DELETE FROM MANAGERDETAIL WHERE CODE > 0; END;
上記のコードの出力:

SELECT * from MANAGERDETAIL;

テーブルから行全体を削除します
VEHICLEテーブルをもう一度考えてみましょう。
DELETEを使用したコードの実装:
BEGIN DELETE FROM VEHICLE; END;
上記のコードの出力:

SELECT * from VEHICLE;

PLSQL選択コマンド
SELECTステートメントは、データベースからデータをフェッチするために使用されます。 SELECT INTO文は、データベースから値を取得し、PL / SQLによって導入されたローカル変数にそれらを格納するために使用されます。
SELECTステートメントのみを使用すると、単一のレコードが返されます。 SELECTステートメントが複数の値をフェッチしている場合、 TOO_MANY_ROWS PL / SQLによって例外がスローされます。 SELECT INTOステートメントを使用している間、変数に少なくとも1つの値を割り当てます。ただし、データベースからレコードがフェッチされない場合、 何もデータが見つかりませんでした 例外がスローされます。
列の数とそのタイプは、INTOキーワードの変数とそのタイプの数と同じである必要があります。値は、SELECTステートメントで定義されたのと同じ順序でデータベースから取得されます。
SELECTステートメント内のWHEREキーワードはオプションであり、特定の条件を満たすレコードを取得できます。 DELETE、UPDATE、およびINSERTコマンドを使用したSELECTクエリには、INTO句がないことに注意してください。
構文:
SELECT <>, <>, ..<> INTO <>, <>, … <> FROM <> WHERE <>;テーブルのすべての列からデータを取得する
EMPLOYEEテーブルをもう一度考えてみましょう。
SELECTを使用したコードの実装:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=1; END;
上記のコードの出力:

例外をスローするSELECTステートメントを使用したコード実装:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=2; END;
上記のコードの出力:

データベースにCODE2の従業員がいないため、SELECTステートメントが指定された条件に一致する行を取得できなかったため、データが見つからないという例外がスローされます。
テーブルの列からデータをフェッチする
EMPLOYEEテーブルをもう一度考えてみましょう。
BEGIN SELECT CODE FROM EMPLOYEE; END;
上記のコードの出力:

テーブルの複数の列からデータを取得する
EMPLOYEEテーブルをもう一度考えてみましょう。
BEGIN SELECT CODE, NAME FROM EMPLOYEE; END;
上記のコードの出力:

上記の例では、2つの列CODEとNAMEがSELECTステートメントに追加されています。
よくある質問と回答
Q#1)SQLのINSERT、UPDATE、およびDELETEとは何ですか?
回答: INSERT、UPDATE、およびDELETEは、データの操作と更新に役立つSQLのコマンドです。 INSERTステートメントは、行をテーブルに挿入します。 DELETEステートメントはテーブルから行を削除し、UPDATEステートメントはテーブルの行の値を更新します。
Q#2)SQLのビューでINSERT、UPDATE、およびDELETEを実行できますか?
回答: はい、SQLのビューでINSERT、UPDATE、およびDELETEを実行できます。ビューがテーブル間で結合されている場合、INSERTアクションとUPDATEアクションのみを実行でき、DELETE操作は実行できません。 DROPステートメントは、ビューを削除するために使用されます。
Q#3)INSERT DDLまたはDMLですか?
回答: INSERTはDMLまたはデータ操作言語です)。他のDMLステートメントには、UPDATE、DELETEなどが含まれます。 DDLステートメントは、テーブル、スキーマ、およびデータベースを作成できます。
Q#4)JOIN IN削除クエリを使用できますか?
回答: はい、DELETEコマンドでINNER JOINステートメントを使用して、テーブルから行を削除できます。
Q#5)切り捨てコマンドと削除コマンドの違いは何ですか?
回答: TRUNCATEはDDLステートメントであり、DELETEはDMLです。 TRUNCATEコマンドは、テーブル全体を削除することができます。テーブルの整合性は維持されません。 DELETEステートメントは、テーブル上の特定のデータのみを削除できます。また、削除の条件を組み込むこともできます。
Q#6)DML、DCL、およびDDLとは何ですか?
回答: SQLステートメントのタイプは、DML、DCL、およびDMLです。
データ定義言語またはDDLには、ALTER、DROP、CREATE、RENAME、TRUNCATE、COMMENTなどのコマンドが含まれています。データ操作言語またはDMLには、INSERT、DELETE、MERGE、UPDATE、CALL、LOCK TABLE、EXPLAINPLANなどのコマンドが含まれています。
データ制御言語またはDCLには、GRANTやREVOKEなどのコマンドが含まれています。
Q#7)切り捨てはドロップよりも速いですか?
回答: はい、TRUNCATE操作はDROPよりも高速です。 TRUNCATEコマンドは、テーブルからデータを削除するだけです。 DROPコマンドは、テーブル構造とデータをテーブルから消去します。
結論
このチュートリアルでは、PLSQLコマンドに関する知識を深めるために不可欠ないくつかの基本的な概念について詳しく説明しました。 以下のトピックについて説明しました。
- データ操作言語コマンド。
- PL SQLINSERTの使用法。
- PL SQLUPDATEの使用法。
- PL SQLDELETEの使用法。
- PL SQLSELECTの使用法。
<< PREV Tutorial | 次のチュートリアル>>
推奨読書
- 例のある初心者向けのPLSQLチュートリアル| PL / SQLとは
- PL SQLカーソルと文字列:コード例を含むチュートリアル
- PL SQLのデータ型、変数、定数、リテラル
- PL SQL日時形式:PL / SQLの日付および時刻関数
- PL SQLパッケージ:例を含むOracle PL / SQLパッケージのチュートリアル
- MySQL Insert Into Table –Insertステートメントの構文と例
- MySQLUpdateステートメントチュートリアル-クエリの構文と例の更新
- MySQLDeleteステートメント-Deleteコマンドの構文と例
^