例示する DML(データ操作言語)とは、データベースの追加、削除、変更を行うための操作命令のことです。主にINSERT、UPDATE、DELETEの3種類があり、それぞれ挿入、更新、削除を表します。これはMySQLを学習する際に必ず習得しなければならない基礎知識です。 構文中の[]内の内容は省略できます。 INSERT操作 行ごとに挿入 構文の形式は次のとおりです。 t_name[(column_name1,columnname_2,...)]に値(val1,val2)を挿入します。 または、t_name に挿入して、column_name1 = val1、column_name2 = val2 を設定します。 1. フィールド名と値は、数、タイプ、位置が一貫している必要があります。一致していない場合は例外が発生する可能性があります。 2. 非 null フィールドに挿入された値が必要です。そうでない場合は、非 null 例外メッセージが報告されます。 null を許可するフィールドにデータを入力しない場合は、フィールドも値も表示されないか、値が null に置き換えられます。 3. 数値型の場合、値を一重引用符で囲む必要はありません。文字型や日付型などの他の型の場合、値を一重引用符で囲む必要があります。 4. テーブル名の後のcolumn_nameを省略すると、テーブルのすべてのフィールドをカバーすることを意味します。値の順序はテーブル内のフィールドの順序と一致している必要があります。 5. 上記の 2 番目の文法は記述が複雑で、現在ではほとんど使用されていません。 テストしてみましょう: mysql> desc `user1`; +---------+--------------+------+-----+---------+----------------+ | フィールド | タイプ | Null | キー | デフォルト | 追加 | +---------+--------------+------+-----+---------+----------------+ | id | bigint(20) | NO | PRI | NULL | auto_increment | | 名前 | varchar(20) | NO | | NULL | | | 年齢 | int(11) | いいえ | | 0 | | | アドレス | varchar(255) | はい | | NULL | | +---------+--------------+------+-----+---------+----------------+ 4行セット mysql> `user1`(name,age,address) に値 ('brand',20,'fuzhou') を挿入します。 クエリは正常、1 行が影響を受けました mysql> `user1`(age,address) に値(20,'fuzhou') を挿入します。 1364 - フィールド「name」にデフォルト値がありません mysql> `user1` に値 ('sol'、21、'xiamen') を挿入します。 1136 - 列数が行 1 の値数と一致しません mysql> `user1` に値(null、'sol'、21、'xiamen')を挿入します。 クエリは正常、1 行が影響を受けました mysql> `user1` から * を選択します。 +----+-------+-----+---------+ | ID | 名前 | 年齢 | 住所 | +----+-------+-----+---------+ | 3 | ブランド | 20 | 福州 | | 4 | ソル | 21 | 厦門 | +----+-------+-----+---------+ 2行セット バッチ挿入 構文の形式は次のとおりです。 t_name [(column_name1,column_name2)] に値 (val1_1,val1_2),(val2_1,val2_2)... を挿入します。 または、t_name [(column_name1,column_name2)] に挿入し、o_name1,o_name2 を o_t_name [where condition] から選択します。 1. 上記の最初の構文では、values の後の値の数は、一致する列の数と等しくする必要があります。データ挿入の効率を向上させるために、カンマで区切られた複数の値を設定できます。 2. 2 番目の構文では、選択クエリ内のフィールドの数、順序、およびタイプと、挿入されたデータ内のフィールドが一致している必要があります。挿入フィールドは省略可能で、その場合 t_name テーブルのすべてのフィールドが挿入されます。条件はオプションです。 テストしてみましょう: mysql> `user1`(name,age,address) に値 ('brand',20,'fuzhou'),('sol',21,'xiamen') を挿入します。 クエリは正常、2 行が影響を受けました 記録: 2 重複: 0 警告: 0 mysql> `user1` から * を選択します。 +----+-------+-----+---------+ | ID | 名前 | 年齢 | 住所 | +----+-------+-----+---------+ | 5 | ブランド | 20 | 福州 | | 6 | ソル | 21 | 厦門 | +----+-------+-----+---------+ 2行セット mysql> desc `user2`; +---------+--------------+------+-----+---------+----------------+ | フィールド | タイプ | Null | キー | デフォルト | 追加 | +---------+--------------+------+-----+---------+----------------+ | id | bigint(20) | NO | PRI | NULL | auto_increment | | 名前 | varchar(20) | NO | | NULL | | | 年齢 | int(11) | いいえ | | 0 | | | アドレス | varchar(255) | はい | | NULL | | | 性別 | int(11) | いいえ | | 1 | | +---------+--------------+------+-----+---------+----------------+ 5行セット mysql> `user2` (name,age,address,sex) に挿入します。`user1` から name,age,address,null を選択します。 クエリは正常、2 行が影響を受けました 記録: 2 重複: 0 警告: 0 mysql> `user2` から * を選択します。 +----+-------+-----+--------+------+ | ID | 名前 | 年齢 | 住所 | 性別 | +----+-------+-----+--------+------+ | 7 | ブランド | 20 | 福州 | 1 | | 8 | ソル | 21 | 厦門 | 1 | +----+-------+-----+--------+------+ 2行セット 更新操作 データ更新 構文の形式は次のとおりです。 t_nameを更新[[as] alias] [alias.]column_name1 = val1,[alias.]column_name2 = val2 [where condition]を設定します。 1. エイリアスは別名を意味します。エイリアスが簡単であればあるほど、認識性が向上します。識別しやすく、操作が便利です。エイリアスがない場合は、テーブル名がエイリアスになります。 2. as エイリアスの as もオプションであり、where 条件もオプションであるため、ユーザーは更新のために特定の条件を満たす必要なデータを選択できます。 テストしてみましょう: mysql> `user2` から * を選択します。 +----+-------+-----+--------+------+ | ID | 名前 | 年齢 | 住所 | 性別 | +----+-------+-----+--------+------+ | 7 | ブランド | 20 | 福州 | NULL | | 8 | ソル | 21 | 厦門 | NULL | +----+-------+-----+--------+------+ 2行セット mysql> `user2` を u2 として更新します。u2.name = 'hero'、u2.age=23、u2.sex=1、id=7 を設定します。 クエリは正常、1 行が影響を受けました 一致した行: 1 変更された行: 1 警告: 0 mysql> `user2` から * を選択します。 +----+------+-----+--------+------+ | ID | 名前 | 年齢 | 住所 | 性別 | +----+------+-----+--------+------+ | 7 | ヒーロー | 23 | 福州 | 1 | | 8 | ソル | 21 | 厦門 | NULL | +----+------+-----+--------+------+ 2行セット 別の方法としては、異なるエイリアスといくつかの制限条件を使用して、複数のテーブルを同時に更新する方法があります。ただし、エラーが発生しやすく、保守が難しいため、この方法はお勧めできません。 削除操作 削除方法 構文の形式は次のとおりです。 delete [alias] from t_name [[as] alias] [where condition]; 1. 上記のように、alias は別名を表します。別名がない場合は、テーブル名が別名になります。 2. テーブルに別名がある場合は、削除コマンドの後に別名を続ける必要があります。そうしないと、データベースは例外を報告します。 テストしてみましょう: mysql> `user2` から * を選択します。 +----+------+-----+--------+------+ | ID | 名前 | 年齢 | 住所 | 性別 | +----+------+-----+--------+------+ | 7 | ヒーロー | 23 | 福州 | 1 | | 8 | ソル | 21 | 厦門 | NULL | +----+------+-----+--------+------+ 2行セット mysql> エイリアスとして `user2` から削除します。性別は 1 です。 1064 - SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'as alias where sex=1' の近くで使用する正しい構文を確認してください。 mysql> `user2` から、sex=1 のエイリアスを削除します。 クエリは正常、1 行が影響を受けました mysql> `user2` から * を選択します。 +----+------+-----+--------+------+ | ID | 名前 | 年齢 | 住所 | 性別 | +----+------+-----+--------+------+ | 8 | ソル | 21 | 厦門 | NULL | +----+------+-----+--------+------+ セット内の1行 3. テーブル内のすべてのデータを削除する場合は、最後に where 条件を含める必要はありませんが、注意して使用してください。 mysql> `user2` から * を選択します。 +----+-------+-----+----------+-----+ | ID | 名前 | 年齢 | 住所 | 性別 | +----+-------+-----+----------+-----+ | 8 | ソル | 21 | 厦門 | 0 | | 10 | ブランド | 21 | 福州 | 1 | | 11 | ヘレン | 20 | 泉州 | 0 | +----+-------+-----+----------+-----+ 3行セット mysql> `user2` から削除します。 クエリは正常、3 行が影響を受けました mysql> `user2` から * を選択します。 空のセット 切り捨てによる削除 構文の形式は次のとおりです。 t_nameを切り捨てます。 mysql> `user2` から * を選択します。 +----+-------+-----+----------+-----+ | ID | 名前 | 年齢 | 住所 | 性別 | +----+-------+-----+----------+-----+ | 12 | ブランド | 21 | 福州 | 1 | | 13 | ヘレン | 20 | 泉州 | 0 | | 14 | ソル | 21 | 厦門 | 0 | +----+-------+-----+----------+-----+ 3行セット mysql> `user2` を切り捨てます。 クエリは正常です。影響を受けた行は 0 行です mysql> `user2` から * を選択します。 空のセット これは delete と非常によく似ていますが、データを再挿入すると、自動増分主キーが再び 1 から開始されますが、delete では元の自動増分値が直接追加されます。下の id フィールドを参照してください。 mysql> `user2` (名前、年齢、住所、性別) に値を挿入します ('brand'、21、'fuzhou'、1)、('helen'、20、'quanzhou'、0)、('sol'、21、'xiamen'、0); クエリは正常、3 行が影響を受けました 記録: 3 重複: 0 警告: 0 mysql> `user2` から * を選択します。 +----+-------+-----+----------+-----+ | ID | 名前 | 年齢 | 住所 | 性別 | +----+-------+-----+----------+-----+ | 1 | ブランド | 21 | 福州 | 1 | | 2 | ヘレン | 20 | 泉州 | 0 | | 3 | ソル | 21 | 厦門 | 0 | +----+-------+-----+----------+-----+ 3行セット では、切り捨てと削除の違いは何でしょうか?整理してみましょう。 切り捨てと削除の比較 1. 切り捨てとは、テーブル内のデータをクリアしてテーブル内のスペースを解放することを意味しますが、テーブルのスキーマ定義 (テーブル構造) は削除されません。 Where 条件がないため、特定の行を削除するのではなく、テーブル全体がクリアされます。 2. 削除ステートメントは、テーブル内のデータ行を削除するために使用されます。削除のディメンションと範囲を制御する条件を続けることができます。テーブルから行が削除されるたびに、行の削除操作は、ロールバック操作の可能性のあるトランザクションとしてログに保存されます。 3. 切り捨てと削除の類似点は、データのみが削除され、関連するテーブル構造とその列、制約、インデックスなどは変更されないことです。 4. 外部キーによって制約されている場合、切り捨ては使用できません。where 句のない削除ステートメントのみ使用できます。 5. 切り捨て操作はログに記録され、削除操作はロールバック セグメントに配置されます。実行された場合、トランザクションがコミットされた後にのみ有効になります。したがって、削除は削除トリガー (存在する場合) をトリガーしますが、切り捨てはトリガーしません。 6. 上記のテストのように自動インクリメント フィールドが含まれている場合、切り捨てメソッドがクリアされた後、自動インクリメント列の値は 1 に初期化されます。 削除方法は、さまざまな状況に応じて判断する必要があります (すべてのデータが削除され、データベースが再起動されていない場合は、以前の max+1 が使用されます。データベースが再起動されると、自動インクリメント列の初期値が再計算されます)。 7. drop もあります。drop ステートメントは、テーブルの構造、データ、テーブルに依存する制約、トリガー、インデックスなどを含むテーブルを削除します。 上記はMySQLデータ操作-DMLステートメントの詳細な内容です。MySQL dmlステートメントの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
目次基本的な設定バージョンとDockerイメージについて始めるelasticsearch.ymlにつ...
質問1:エラーを報告する書き込み方法: GRANT OPTION を使用して、'123123...
Redux はシンプルな状態マネージャーです。その歴史をたどることはしません。使用法の観点から見ると...
まずは緑色の無料インストール版のMySQLをダウンロードします。任意のフォルダに入れて構いません。今...
序文最近、データベースのテーブルに 2 つのフィールドを追加しました。その後、ディスク容量不足のよう...
先ほど MySQL パスワードを設定したのに、外食したり荷物を受け取ったりするときにパスワードを忘れ...
序文オプションの連鎖演算子 (?.) を使用すると、チェーン内の各参照が有効であることを明示的に検証...
土曜日、本番サーバー上の Redis サーバーが利用できなくなり、エラー メッセージは次のようになり...
目次1. はじめに1. コンポーネントデータ2. コンポーネントページのレイアウト1. ロゴエリアの...
JavaScript は現在、毎年新しいバージョンがリリースされており、より便利で効率的な新しい演算...
n 個のアイテムがあり、これらのアイテムをグリッド レイアウトの列に並べ替える必要があるとします。列...
1. コマンドの紹介ifconfig (ネットワーク インターフェイスを構成する) コマンドは、ネッ...
<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...
CSS3 はアニメーションを作成でき、多くの Web ページのアニメーション画像、Flash アニメ...
背景このバグは滾動條占據空間ことで発生していました。いくつかの情報を確認して、ようやく解決しました。...