DMLデータ更新部

1764 ワード

DMLデータ操作言語は2つの大部分に分けられる:1つはクエリーで、1つは更新で、今更新部分を整理します:データ増加:文法:insert intoテーブル名{(列名1、列名2,,,,)}values(値1、値2,)}
日付を挿入するとき:現在の日付(sysdate)to_date()変換、日付フォーマットによる文字列自動変換
例:insert into mycaozy(caozydm,caozyxm,mim,qiy,pinym) values (0300,' ','',0,'yse');注:列名を省略すると、後の値の順序は必ず表の列の順序と同じである.完全なフォーマットを使用して空の値を処理することを推奨します:(1)空の値を明確に設定します:
insert into mycaozy(caozydm,caozyxm,mim,qiy,pinym) values (0300,'   ',null,0,'yse');

(2)不要な内容を書かなくてもよい(列も値も取り除く):
insert into mycaozy(caozydm,caozyxm,qiy,pinym) values (0300,'   ',0,'yse');

あるテーブルの一部のフィールドを別のテーブルに一括挿入します.
insert into caozy (caozydm,caozyxm)  select caozydm,caozyxm from mycaozy;

修正データ:構文:updateテーブル名set列1=値1,列2=値2,where,,,,
データベースが更新されると、他のユーザーは更新中のテーブルに対して操作できません.更新のコミット後、他のユーザーは、1行のデータの一部のフィールドテーブルと別のデータの対応するフィールドを同じに操作する必要があります.
update mycaozy 
set (caozydm,caozyxm) = (select caozydm,caozyxm 
												from mycaozy 
												where caozydm = 1) 
where caozydm = 2

修正中の性能の問題:大規模なウェブサイトを仮定して、3億のユーザーがあって、1つのユーザーの表の中で保存して、すべてのユーザーが登録する時すべて1つのユーザーの最後の登録日を記録する機能を実現して、ある日あなたがすべてのユーザーの表を修正する必要があって、10条のデータを修正するのに1秒の時間が必要だと仮定して、どのように処理してまず、100%の更新のすべてのデータ、いいえ、操作を分割することはできません.まずユーザーをアクティブにし、入るたびにログインする必要があります(ログイン免除の実際はバックグラウンドで完了しています).ログインするときはユーザー民とパスワードを検証する以外に、時間でスペースを交換し、1年かn年で操作を完了する可能性がありますが、これはプログラムの実行にはまったく影響しません.だから私たちは更新操作を実行するとき、必ずwhere句を加えて限定更新を行います.
データ削除:構文:delete fromテーブル名where......操作では、削除操作は慎重にしなければならないが、実際には、物理削除:delete from、直接削除論理削除:論理フィールドflagを追加し、flag=1であれば削除されたことを示し、flag=0では削除されていないことを示す2つの削除操作方式がある.削除操作を実行すると、flagの値を1に変更することになります.また、クエリのたびにwhere限定条件を1つ追加するだけで、where flag=1になります.