Oracle-DML文:追加、削除、変更

7528 ワード

ツールバーの
  • なぜDML文が必要なのですか?
  • DMLのキーワード
  • INSERT
  • 1.宣言単行挿入
  • 2.サブクエリ方式マルチロー挿入
  • DELETE
  • UPDATE

  • なぜDML文が必要なのですか?
    データベースでDDL文でテーブル構造を作成した後、データのスケルトンを構築しただけで、意味のあるデータ情報は別途書き込む必要があります.
      この書き込みの動作は、PL/SQLのDML文で実現する必要がある.書き込みに加え、既存データの修正や削除操作もDML文に属する.
      DML:Data Manipulation Language、データ操作言語.
    DMLのキーワード
     我々は表中のデータの増加、削除、変更操作をDML文に帰し、時には「調査」もDML文に帰納するが、クエリー操作をDQL文と呼ぶことが多い.
      DMLの増加、削除、変更キーワードは以下の通りである.
    キーワード
    さぎょう
    INSERT
    追加、テーブルへの新規データの挿入
    DELETE
    削除、テーブルの既存のデータを削除
    UPDATE
    変更、テーブルの既存データの変更
    INSERT
    INSERT INTO-VALuES文を使用して、新しいデータを挿入します.リレーショナル・データベースでは、データは1行1行に表示されるので、挿入と削除は、行全体のデータに対して行われます.
    一般に、レコードを挿入する方法は2つあります.1.宣言単行挿入2.サブクエリ方式の複数行挿入
    1.宣言単行挿入
     宣言単行挿入は、明示的に宣言されたテーブルフィールドとそれに対応する値をテーブルに挿入し、宣言されていないテーブルフィールドをデフォルト値に設定することで、適用とインタラクティブに使用される挿入方法です.デフォルト値は、テーブルのdefault制約で指定できます.テーブルに空でない制約のあるフィールドが存在し、挿入時にフィールドの値が宣言されていない場合は、挿入に成功しません.
      学生情報表を例にとると、宣言法の単行挿入文法は次のようになります.
    	insert into t_student(s_id,name,age,gender)
    	values(1,'  ',20,'male');
    

    これにより、t_に1行のデータを挿入できます.studentテーブルにあります.クラスを記録するclassesフィールドなど、テーブルに他のフィールドがある場合は、insert時に宣言せずに値を指定できます.デフォルト値として記録されます.
      各カラムのフィールド名を宣言せずに直接値を指定することもできますが、カラムがない場合は値を指定し、指定順はテーブルのフィールド順に完全に従う必要があります.一般的に実際の開発ではこの方式は推奨されず、コードのメンテナンスが困難になります.例を書いてみましょう
    	insert into t_student
    	values(2,'  ',18,'male',null);
    

      は、nullの値を直接指定し、フィールドに空の値を割り当てることができます.
    2.サブクエリ方式複数行挿入
     サブクエリ法により、複数行のデータを一度に挿入できますが、これらのデータはデータベースに既存であり、ストレージ中に適用するのに適しています.ユーザーがページから入力したデータがデータベースにない場合は、単行で挿入する必要があります.
    サブクエリ法は、挿入時特有のものではなく、多くの場所で適用されます.
     表構造と表データのレプリケーション例を紹介します.テーブル構造をコピーする場合、where条件が絶対に成立しないことで、構造のみをコピーしてデータをコピーしない効果を達成できます.
    	create table t_student_copy as select * from t_student where 1 = 2;
    

    レプリケーション後のテーブルでは、valuesセクションをselectに変更するサブループで挿入できます.もちろん、各カラムに値を指定する方法で、各カラム名を宣言することをお勧めします.
    	insert into t_student_copy(s_id,name,age,gender,classes)
    	select s_id,name,age+1,gender,classes
    	from t_student r
    	where r.classes = 'A';
    

      このようにして、クエリーの結果セットを指定したテーブルに挿入できます.クエリーは、結果セットの各カラムのデータ型が宣言と一致している限り、複数のテーブルでクエリーを結合したり、クエリーの結果フィールドを操作して挿入したりすることができます.
    DELETE
      不要なデータはdelete文で削除できます.
      delete文where条件の制限を加えない場合、テーブル全体が削除されます.ここで注意しなければならないのは、truncateとの違いで、すべてクリアデータですが、truncateはDDL文で、行ごとに削除される操作軌跡がなく、効率が速いことです.
    	delete from t_student;
    

      where条件制限を追加することによって、特定の行を削除します.
    	delete from t_student r where r.gender not in  ('male','female');
    

      where条件の書き方は、文規則に合致する限りサポートされ、明確な論理があれば、特定の行または複数の行を削除することができます.where条件でマルチテーブル連携が必要な場合はexistsを使用できます.
    UPDATE
     表に既存のデータを変更する必要がある場合は、update-set-whereを使用して実現します.
    	update    
    		set    1 =  ,
    			   2 =  ,
    			 ....
    	where   
    

      はwhere条件を書くことができて、where条件に所望のデータを丸めることができて、しかも文法が簡潔で、効率的で、1つの技術の仕事です.基礎文法をマスターしてから、もっと重要なのは、実際の開発で多くの思考を使い、経験した実際のシーンが多くなると、生き生きと活用することができます.
      は、set値の場合、指定された値であってもよいし、別のクエリselectから出た値であってもよい.
    	update t_emp r
    		set r.sal = (select avg(t.sal) from t_emp t where t.emp_id != 1)
    	where r.emp_id = 1;
    

    このupdateは、従業員番号1の従業員給与を更新し、他の従業員給与の平均数(avg関数は平均数)とすることを意味します.