sql >> データベース >  >> RDS >> Oracle

OracleのINSERTステートメント

    oracleのINSERTステートメントは、DML(データ操作言語)コマンドです。これは、OracleデータベースのOracleテーブルに新しい行を挿入するために使用されます

    Syntax
    

    INSERT INTO <table_name>
    (col1, col2, ... column_n )
    VALUES
    (value1, value2, ... value_n );

    ここ
    table_name :新しいレコードを挿入する必要があるテーブル
    col1、col2 :はテーブルの列です
    value1、value2…。 :テーブル内のcol1、col2…に対応する値です

    この構文でテーブルに挿入される行は1つだけです

    EMPテーブルにレコードを入力するとします。次に

    insert into emp (emp_id, emp_name,dept_id,first_name,last_name,salary)
    values ('101','JOHN', 10,'JOHN' ,'ROGER', 3000);

    重要な注意

    • 正しい順序で値を指定し、テーブルの各列の値が指定されている場合は、列名を指定する必要はありません。
    • 文字値を一重引用符で囲むことをお勧めします。

    テーブルにNull値を挿入する方法

    いくつかの列にnull値を設定する場合は、挿入コマンドで列を省略できます

    insert into emp (emp_id, emp_name,dept_id,salary)
    values ('101','JOHN', 10, 3000);

    Selectステートメントを使用して挿入

    selectステートメントを使用してテーブルに挿入することもできます

    INSERT INTO <table_name>
    (col1, col2, ... column_n ) select col1, col2, ... column_n from < table_name2>

    このメソッドは、複数の行に挿入するために使用できます

    • ここでvalues句を使用する必要はありません
    • 機能させるには、挿入の列を選択クエリと一致させる必要があります
    • 正しい順序で値を指定し、テーブルの各列の値が指定されている場合は、列名を指定する必要はありません。
    Example
    insert into emp_master (emp_id ,salary) 
    select emp_id ,salary from emp;
    
    INSERT INTO emp_master (emp_id ,salary) 
      WITH sal AS ( 
        SELECT 201,5000    FROM dual UNION ALL 
        SELECT 201, 10000   FROM dual UNION ALL 
        SELECT 204, 10004 FROM dual UNION ALL 
        SELECT 7, 5675476    FROM dual 
      ) 
      SELECT * FROM sal;
    
    
    

    テーブルに日付関数を挿入

    テーブルにoracledateデータ型の列があるとすると、sysdate関数を使用して挿入ステートメントに日付を入力できます

    insert into emp (emp_id,emp_name,salary,hire_date) values 
    ( '10','JOHN',1000, sysdate);
    
    insert into emp (emp_id,emp_name,salary,hire_date) values 
    ( '10','JOHN',1000, sysdate -1);

    または、特定の日付を指定する必要がある場合は、日付「DD-MON-YYYY」の標準形式を使用できます。この時間はデフォルトで深夜になります

    insert into emp (emp_id,emp_name,salary,hire_date) values 
    ( '10','JOHN',1000, '18-AUG-2018');

    または、しばらくして別の形式でデータを入力する必要がある場合は、to_date関数を使用できます

    insert into emp (emp_id,emp_name,salary,hire_date) values 
    ( '10','JOHN',1000, TO_DATE('2018/08/18 01:02:44', 'yyyy/mm/dd hh24:mi:ss'));
    
    

    Oracleはすべてのステートメントを挿入します

    Oracleのinsertallステートメントは、テーブルに複数の行を一度に追加するのに役立ちます。または、同じ挿入ステートメントを使用して、異なるテーブルに複数の行を追加することもできます。

    1つのテーブルの構文

    INSERT ALL INTO
    <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
    <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
    <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
    SELECT * FROM dual;

    複数のテーブルの構文

    INSERT ALL INTO
    <table_name1> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
    <table_name2> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
    <table_name3> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
    SELECT * FROM dual;

    これは

    と同等です
    INSERT  INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n );
    INSERT  INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
    INSERT  INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )

    insert all into
    emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('101','JOHN', 10,'JOHN' ,'ROGER', 2000)
    emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('102','SMITH', 10,'JOHN' ,'ROGER', 3000)
    emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('103','BILL', 10,'JOHN' ,'ROGER', 4000)
    SELECT * FROM dual;

    insert all into
    emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('101','JOHN', 10,'JOHN' ,'ROGER', 2000)
    dept (dept_no, dept_name,dept_location) values ('20','BILLING', 'NEWYORK)
    emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('103','BILL', 10,'JOHN' ,'ROGER', 4000)
    SELECT * FROM dual;

    すべてのステートメントを挿入は、以下の方法でも使用できます

    insert all 
     INTO emp (emp_id, emp_name,dept_id,salary) values (id,name, dept_no, sal)
     INTO dept (dept_no, dept_name,dept_location) values (dept_no,dept_name,location)
     WITH names AS ( 
         SELECT 4 id, 'John' name,10 dept_no,'LABOUR' dept_name,'INDIA' location, 45000 sal    FROM dual UNION ALL 
         SELECT 5 id, 'Mac' name,20 dept_no,'FIRE' dept_name,'INDIA' location, 567000 sal   FROM dual UNION ALL 
         SELECT 6 id, 'Ruth' name,30 dept_no,'HEALTH' dept_name,'INDIA' location, 5600 sal FROM dual UNION ALL 
         SELECT 8 id, 'bill' name,40 dept_no,'WATER' dept_name,'INDIA' location, 158750 sal     FROM dual 
       ) 
       SELECT * FROM names ;

    すべてのステートメントを挿入する際に条件ステートメントを使用することができます

    insert all 
     WHEN 1=1 THEN 
     INTO emp (emp_id, emp_name,dept_id,salary) values (id,name, dept_no, sal)
     WHEN dept_no IS NOT NULL THEN 
     dept (dept_no, dept_name,dept_location) values (dept_no,dept_name,location)
     WITH names AS ( 
         SELECT 4 id, 'John' name,10 dept_no,'LABOUR' dept_name,'INDIA' location, 45000 sal    FROM dual UNION ALL 
         SELECT 5 id, 'Mac' name,20 dept_no,'FIRE' dept_name,'INDIA' location, 567000 sal   FROM dual UNION ALL 
         SELECT 6 id, 'Ruth' name,30 dept_no,'HEALTH' dept_name,'INDIA' location, 5600 sal FROM dual UNION ALL 
         SELECT 8 id, 'bill' name,40 dept_no,'WATER' dept_name,'INDIA' location, 158750 sal     FROM dual 
         SELECT 9 id, 'July' name,NULL dept_no,NULL dept_name,NULL location, 158750 sal     FROM dual 
       ) 
       SELECT * FROM names ;

    oracleのinsertステートメントのこのコンテンツが気に入っていただければ幸いです。十分な例を挙げて、テーブルで挿入を実行するさまざまな方法を説明しました。

    関連記事

    OracleのUpdateステートメント:OracleのUpdateステートメントを使用して、OracleデータベースのOracleテーブルの既存の行を変更します。更新は複数の方法で実行できます。
    Oracleのテーブルからの削除ステートメント:Oracleのテーブルからの削除は、行を削除するために使用されます。 DELETE行は、EXISTS / NOT EXISTS句、サブクエリに基づくテーブル、カスケードを使用して実行できます
    Oracleでテーブルを変更する方法:Oracleでテーブルを変更すると、列の変更、制約の削除と追加、データ型の変更に使用されますテーブル列の、テーブルストレージパラメータを変更します。
    テーブル追加列オラクルを変更する方法:テーブル追加列オラクルを変更する方法に関する有用な洞察。 oracle11gで導入された高速追加列機能の詳細も
    挿入に関するOracleのドキュメント

    に記載されています。
    1. 簡単な方法特定のテーブルの主キーとして適切な列を選択する

    2. MySQLで次/前のレコードを取得する方法は?

    3. PostgreSQLでの並列unnest()とソート順

    4. SQLビュー:SQLでビューを操作する方法は?