Postgreslに値がまだ存在しない場合は行を挿入します

Insert Row If Values Don T Already Exist Postgresl



データベース管理システムを理解して操作することで、データベースに関する変更に慣れることができました。これには通常、特定のテーブルに適用される関数の作成、挿入、更新、および削除が含まれます。今回の記事では、挿入方法によってデータがどのように管理されるかを見ていきます。挿入したいテーブルを作成する必要があります。 Insertステートメントは、テーブルの行に新しいデータを追加するために使用されます。 PostgreSQLのinsertsステートメントは、クエリを正常に実行するためのいくつかのルールをカバーしています。最初に、テーブル名に続いて、行を挿入する列名(属性)を指定する必要があります。次に、VALUE句の後にコンマで区切って値を入力する必要があります。最後に、すべての値は、特定のテーブルの作成時に属性リストのシーケンスが提供されるのと同じ順序である必要があります。

構文

>> 入れる の中へテーブル名((column1、)。 ((「value1」、「value2」)。;

ここで、列はテーブルの属性です。キーワードVALUEは、値を入力するために使用されます。 「値」は、入力するテーブルのデータです。







PostgreSQLシェル(psql)への行関数の挿入

postgresqlのインストールが正常に完了したら、データベース名、ポート番号、およびパスワードを入力します。 Psqlが開始されます。次に、それぞれクエリを実行します。





例1:INSERTを使用して新しいレコードをテーブルに追加する
構文に従って、次のクエリを作成します。テーブルに行を挿入するために、customerという名前のテーブルを作成します。それぞれのテーブルには3つの列が含まれています。特定の列のデータ型は、その列にデータを入力し、冗長性を回避するために言及する必要があります。テーブルを作成するためのクエリは次のとおりです。





>> 作成 テーブルお客様((idint名前 varchar ((40)。、 国varchar ((40)。)。;

テーブルを作成した後、個別のクエリに手動で行を挿入してデータを入力します。まず、属性に関する特定の列のデータの精度を維持するために、列名について説明します。次に、値が入力されます。値は変更なしで挿入されるため、単一のコマによってエンコードされます。



>> 入れる の中へお客様((id、名前、 国)。 ((「1」「アリア」、「パキスタン」);

挿入が成功するたびに、出力は0 1になります。これは、一度に1行が挿入されることを意味します。前述のクエリでは、データを4回挿入しました。結果を表示するには、次のクエリを使用します。

>> 選択する*からお客様;

例2:単一のクエリで複数の行を追加する際にINSERTステートメントを使用する
同じアプローチがデータの挿入に使用されますが、挿入ステートメントを何度も導入することはありません。特定のクエリを使用して、一度にデータを入力します。 1つの行のすべての値は、次のクエリを使用して区切られます。必要な出力が得られます。

例3:別のテーブルの数値に基づいて1つのテーブルに複数の行を挿入する
この例は、あるテーブルから別のテーブルへのデータの挿入に関連しています。 aとbの2つのテーブルについて考えてみます。表aには、名前とクラスの2つの属性があります。 CREATEクエリを適用することにより、テーブルを導入します。テーブルの作成後、挿入クエリを使用してデータが入力されます。

>> 作成 テーブル((名前 varchar ((30)。クラス varchar ((40)。)。;
>> 入れる の中へ ((「アムナ」、1)。((「ビーシュマ」、」2')。((「javed」、」3')。(('下'、4')。;

超過理論を使用して、4つの値がテーブルに挿入されます。 selectステートメントを使用して確認できます。

同様に、すべての名前とサブジェクトの属性を持つテーブルbを作成します。同じ2つのクエリが、対応するテーブルのレコードの挿入とフェッチに適用されます。

>> 作成 テーブルNS((allnames varchar((30)。、件名varchar((70)。)。;

選択した理論によってレコードを取得します。

>> 選択する*からNS;

テーブルの値を挿入するには NS 表では、次のクエリを使用します。このクエリは、テーブル内のすべての名前が次のように機能するように機能します NS テーブルに挿入されます 表のそれぞれの列に特定の数が出現した回数を示す数を数える NS 。 b.allnamesは、テーブルを指定するためのオブジェクト関数を表します。 Count(b.allnames)関数は、発生総数をカウントするために機能します。すべての名前が一度に出現するため、結果の列には1つの番号が付けられます。

>> 入れる の中へ((名前クラス)。 選択するb.allnames、カウント((b.allnames)。 からNSグループ b.allnames;

例4:存在しない場合は行にデータを挿入する
このクエリは、行が存在しない場合に行を入力するために使用されます。まず、提供されたクエリは、行がすでに存在するかどうかをチェックします。すでに存在する場合、データは追加されません。また、データが連続して存在しない場合は、新しい挿入が保持されます。ここで、tmpは、しばらくの間データを格納するために使用される一時変数です。

>> 入れる の中へNS((すべての名前、件名)。 選択する*から ((選択する「キンザ」なのでallnames、 'islamiat'なので主題)。 なのでtmpどこ いいえ 存在する (( 選択するallnamesからNSどこallnames=「サンダス」制限 1)。;

例5:INSERTステートメントを使用したPostgreSQLアップサート
この関数には2つの種類があります。

  • 更新:競合が発生した場合、 レコードがテーブル内の既存のデータと一致する場合、新しいデータで更新されます。
  • 競合が発生した場合は、何もしないでください :レコードがテーブル内の既存のデータと一致する場合、レコードをスキップするか、エラーが見つかった場合、そのレコードも無視されます。

最初に、いくつかのサンプルデータを含むテーブルを作成します。

>> 作成 テーブルtbl2((IDINT 主要な 名前 キャラクターの変化)。;

テーブルを作成した後、クエリを使用してtbl2にデータを挿入します。

>> 入れる の中へtbl2 ((1「uzma」)。((2「アブドゥル」)。((3「ハムナ」)。((4「ファティマ」)。((5'shiza')。((6'ジャベリア');

競合が発生した場合は、以下を更新します。

>>入れる の中へtbl2 ((8'乗る')。 オン対立((ID)。 NS アップデート 設定 名前=除外。名前;

最初に、ID8の競合クエリと名前Ridaを使用してデータを入力します。同じIDの後に同じクエリが使用されます。名前が変更されます。これで、テーブル内の同じIDで名前がどのように変更されるかがわかります。

>> 入れる の中へtbl2 ((8'仕事')。 オン対立((ID)。 NS アップデート 設定 名前 =除外。名前;

ID 8で競合が発生したため、指定された行が更新されます。

競合が発生した場合は、何もしないでください

>> 入れる の中へtbl2 ((9'Hira')。 オン対立((ID)。 NS なし;

このクエリを使用して、新しい行が挿入されます。その後、同じクエリを使用して、発生した競合を確認します。

>>入れる の中へtbl2 ((9'Hira')。 オン対立((ID)。 NS なし;

上の画像によると、クエリINSERT 0 0の実行後、データが入力されていないことがわかります。

結論

データベース関係の冗長性を減らすために、データが存在しないか、レコードが見つかった場合に挿入が完了しないテーブルに行を挿入するという概念を理解しました。