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制約で指定できます.テーブルに空でない制約のあるフィールドが存在し、挿入時にフィールドの値が宣言されていない場合は、挿入に成功しません.
学生情報表を例にとると、宣言法の単行挿入文法は次のようになります.
これにより、t_に1行のデータを挿入できます.studentテーブルにあります.クラスを記録するclassesフィールドなど、テーブルに他のフィールドがある場合は、insert時に宣言せずに値を指定できます.デフォルト値として記録されます.
各カラムのフィールド名を宣言せずに直接値を指定することもできますが、カラムがない場合は値を指定し、指定順はテーブルのフィールド順に完全に従う必要があります.一般的に実際の開発ではこの方式は推奨されず、コードのメンテナンスが困難になります.例を書いてみましょう
は、nullの値を直接指定し、フィールドに空の値を割り当てることができます.
2.サブクエリ方式複数行挿入
サブクエリ法により、複数行のデータを一度に挿入できますが、これらのデータはデータベースに既存であり、ストレージ中に適用するのに適しています.ユーザーがページから入力したデータがデータベースにない場合は、単行で挿入する必要があります.
サブクエリ法は、挿入時特有のものではなく、多くの場所で適用されます.
表構造と表データのレプリケーション例を紹介します.テーブル構造をコピーする場合、where条件が絶対に成立しないことで、構造のみをコピーしてデータをコピーしない効果を達成できます.
レプリケーション後のテーブルでは、valuesセクションをselectに変更するサブループで挿入できます.もちろん、各カラムに値を指定する方法で、各カラム名を宣言することをお勧めします.
このようにして、クエリーの結果セットを指定したテーブルに挿入できます.クエリーは、結果セットの各カラムのデータ型が宣言と一致している限り、複数のテーブルでクエリーを結合したり、クエリーの結果フィールドを操作して挿入したりすることができます.
DELETE
不要なデータはdelete文で削除できます.
delete文where条件の制限を加えない場合、テーブル全体が削除されます.ここで注意しなければならないのは、truncateとの違いで、すべてクリアデータですが、truncateはDDL文で、行ごとに削除される操作軌跡がなく、効率が速いことです.
where条件制限を追加することによって、特定の行を削除します.
where条件の書き方は、文規則に合致する限りサポートされ、明確な論理があれば、特定の行または複数の行を削除することができます.where条件でマルチテーブル連携が必要な場合はexistsを使用できます.
UPDATE
表に既存のデータを変更する必要がある場合は、update-set-whereを使用して実現します.
はwhere条件を書くことができて、where条件に所望のデータを丸めることができて、しかも文法が簡潔で、効率的で、1つの技術の仕事です.基礎文法をマスターしてから、もっと重要なのは、実際の開発で多くの思考を使い、経験した実際のシーンが多くなると、生き生きと活用することができます.
は、set値の場合、指定された値であってもよいし、別のクエリselectから出た値であってもよい.
このupdateは、従業員番号1の従業員給与を更新し、他の従業員給与の平均数(avg関数は平均数)とすることを意味します.
なぜ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関数は平均数)とすることを意味します.