MySQL DML ステートメントの概要

MySQL DML ステートメントの概要

DML 操作とは、データベース内のテーブル レコードに対する操作を指し、主にテーブル レコードの挿入 (insert)、更新 (update)、削除 (delete)、クエリ (select) が含まれます。これらは、開発者が日常的に最も頻繁に使用する操作です。

1. 挿入

フォーマット1。

emp(ename,hiredate,sal,deptno) に VALUES('zzx1','2000-01-01','2000',1) を挿入します。

フォーマット2。

emp VALUES('lisa','2003-02-01','3000',2) に INSERT します。

フィールド名を指定する必要はありませんが、値はテーブル フィールドに厳密に対応している必要があります。

フォーマット3。

emp(ename,sal) に VALUES('dony',1000) を挿入します。

NULL 可能フィールド、デフォルト値を持つ非 NULL フィールド、および自動増分フィールドは、INSERT 後のフィールド リストに表示する必要はありません。VALUES の後に対応するフィールド名の VALUE を記述するだけです。

フォーマット4

MySQL では、INSERT ステートメントを使用して複数のレコードを一度に挿入することもできます。

テーブル名にINSERT INTO(フィールド1、フィールド2、......フィールドn)
価値観
(レコード1_値1、レコード1_値2、......レコード1_値n)、
(レコード2_値1、レコード2_値2、......レコード2_値n)、
......
(レコードn_値1、レコードn_値2、......レコードn_値n);

2. 更新

フォーマット 1

UPDATE emp SET sal=4000 WHERE ename='lisa';

フォーマット 2

t1、t2、...tn を更新 SET 
t1.フィールド1=式1,
t2.フィールド2=式2,
...
tn.fieldn=exprn[WHERE条件];

複数のテーブルのデータを同時に更新する

3. 削除

フォーマット 1

DELETE FROM tablename [WHERE CONDITION];

フォーマット 2

DELETE t1,t2,...tn FROM t1,t2,...tn [WHERE CONDITION];

注意:単一テーブル、複数テーブルに関わらず、WHERE条件を追加しないとテーブル内のすべてのレコードが削除されますので、操作には注意してください。

4. クエリ(選択)

基本的な構文:

SELECT * FROM テーブル名 [WHERE 条件];

1. 一意のレコードをクエリするには、distinct キーワードを使用します。

SELECT DISTINCT deptno FROM emp;

2. 条件付きクエリ:

emp から * を選択 WHERE deptno=1;

where の後の条件では、「=」に加えて、>、<、>=、<=、!= などの比較演算子も使用できます。

また、 or や and などの論理演算子を使用して、複数の条件間で複数条件の結合クエリを実行することもできます。

3. 並べ替えと制限:

SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC], field2 [DESC|ASC],...fieldn [DESC|ASC]];

このうち、DESC と ASC はソートキーワードです。
DESC は、フィールドを降順で並べ替えることを意味します (最大が上に、最小が下に)。
ASC は昇順 (一番上が最小、一番下が最大) を意味します。
このキーワードが記述されていない場合、デフォルトは昇順になります。
ORDER BY の後には複数の異なる並べ替えフィールドを続けることができ、各並べ替えフィールドは異なる並べ替え順序を持つことができます。

ソート フィールドの値が同じ場合、同じ値を持つフィールドは 2 番目のソート フィールドに従ってソートされ、以下同様に続きます。ソート フィールドが 1 つしかない場合、同じソート フィールドを持つレコードは順序どおりにソートされません。

SELECT ......[LIMIT offset_start,row_count];

ソートされたレコードのすべてではなく一部のみを表示する場合は、LIMIT キーワードを使用してこれを実現できます。

LIMIT は、レコードをページ内に表示するために ORDER BY と一緒に使用されることが多いです。

注意: limit は SQL92 以降に MySQL によって拡張された構文であり、他のデータベースには適用できません。

4. 集約

多くの場合、会社全体の人数や各部門の人数を数えるなど、いくつかの集計操作を実行する必要があり、そのためには SQL 集合演算を使用する必要があります。

SELECT [フィールド1,フィールド2,......フィールドn] fun_name
テーブル名から
[WHERE 条件]
[GROUP BY フィールド1、フィールド2、......フィールドn
[ロールアップ付き]
[HAVING where_contition];

パラメータの説明は次のとおりです。

  1. fun_name は、実行する集合演算、つまり集計関数を示します。よく使用されるものは、sum(合計)、count(*)(レコード数)、max(最大値)、min(最小値)などです。
  2. GROUP BY キーワードは、分類して集計するフィールドを示します。たとえば、部門別に従業員数をカウントする場合は、group by の後に部門を記述する必要があります。
  3. WITH ROLLUP は、分類集計後に結果を再集計するかどうかを示すオプションの構文です。
  4. HAVING キーワードは、分類された結果が条件によってさらにフィルタリングされることを示します。

注: having と where の違いは、having は集計後に結果をフィルタリングするのに対し、where は集計前にレコードをフィルタリングすることです。ロジックが許す場合は、where を使用して最初にレコードをフィルタリングする必要があります。これにより、結果セットが削減されるため、集計の効率が大幅に向上します。最後に、ロジックに基づいて、再フィルタリングに having を使用するかどうかを確認できます。

5. テーブル結合

テーブル結合は、内部結合と外部結合に分けられます。それらの主な違いは次のとおりです。
内部結合では、2 つのテーブル内で互いに一致するレコードのみが選択されます。
外部結合では、一致しない他のレコードが選択されます。内部結合はよく使用されます。

外部結合は左結合と右結合に分かれており、次のように定義されます。

  1. 左結合: 右側のテーブルに一致するレコードがない場合でも、左側のテーブルのすべてのレコードが含まれます。
  2. 右結合: 左のテーブルと一致しないレコードも含め、右のテーブルのすべてのレコードを含めます。
emp から ename、deptname を選択し、 emp.deptno=dept.deptno で dept を LEFT JOIN します。

6. サブクエリ

場合によっては、クエリを実行するときに必要な条件は別の SELECT ステートメントの結果です。この場合は、サブクエリを使用する必要があります。
サブクエリに使用されるキーワードには、主に in、not in、=、!=、exists、not exists などがあります。

SELECT * FROM emp WHERE deptno IN (SELECT deptno FROM dept);

注: サブクエリとテーブル結合間の変換は、主に次の 2 つの側面で使用されます。

MySQL バージョン 4.1 より前ではサブクエリはサポートされていません。サブクエリを実装するにはテーブル結合が必要です。多くの場合、テーブル結合はサブクエリを最適化するために使用されます。

7. レコードジョイント

特定のクエリ条件に従って 2 つのテーブルのデータをクエリした後、結果が結合されて一緒に表示されるようなアプリケーションによく遭遇します。このとき、この機能を実装するには、union および union all キーワードを使用する必要があります。具体的な構文は次のとおりです。

t1から*を選択
ユニオン|ユニオン すべて
t2から*を選択
......
ユニオン|ユニオン すべて
tn から * を選択します。

UNION と UNION ALL の主な違いは、UNION ALL は結果セットを直接結合するのに対し、UNION は UNION ALL の結果に対して DISTINCT を実行して重複レコードを削除することです。

上記は、編集者が紹介したMySQL DMLステートメントの詳細な説明の要約です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL でよく使われる SQL 文
  • よく使われるMySqlクエリ文を整理する(23種類)
  • 最も完全なMySQLクエリステートメントコレクション
  • MySQL ステートメントの配置と概要の紹介
  • MySQL ファジークエリステートメントコレクション
  • MySQL ステートメントの概要
  • MySQLデータテーブルで使用されるSQL文の配置

<<:  CentOS7にMariaDB 10.2.4をインストールする方法の詳細な説明

>>:  Swiper+echartsは複数のダッシュボードの左右スクロール効果を実現します

推薦する

MySQL binlog を開く手順

Binlog は、MySQL データの変更を記録するために使用されるバイナリ ログ ファイルです。B...

Linuxにpipパッケージをインストールする方法

1. システムの Python バージョンに応じて、pip インストール パッケージをダウンロードし...

js メモリ リークのシナリオ、それらを詳細に監視および分析する方法

目次序文どのような状況でメモリリークが発生する可能性がありますか? 1. 偶発的なグローバル変数2....

Windows7 での Mysql5.7 my.ini ファイルの読み込みパスとデータの場所の変更方法

更新: MySQL の公式 Web サイトにアクセスして MySQL インストーラーをインストールし...

Facebook によるインターネット サービスのほぼ完璧な再設計

<br />出典: http://www.a-xuan.cn/?p=197 先ほどFac...

LinuxでPythonの組み込みバージョンを削除する手順の詳細な説明

大きな落とし穴、Linuxシステムに付属するPythonのバージョンを簡単に削除しないでください1....

MySQLコマンドが中国語で入力できない問題の解決方法

問題を見つける最近、MySQL コマンドを使用して MySQL サーバーに接続したときに、以下のよう...

JS上級編ES6の6つの継承方法

目次1. プロトタイプチェーン継承2. コンストラクタによる継承3. 組み合わせ継承4. プロトタイ...

JavaScript フレームワーク デザイン パターンの詳細な説明

目次動画最優秀選手ムヴヴムVueのソーススパ mpa要素を作成するクラス要約する動画 Model(模...

テーブルレイアウトの長所と短所、そして推奨されない理由

テーブルの欠点1. テーブルは他の HTML タグよりも多くのバイトを占有します。 (ダウンロード時...

ウェブフォーム送信方法の詳細な概要

まず、フォームを送信するいくつかの方法を見てみましょう。 1. <!--一般的な送信ボタン--...

nginxを使用して取得したIPアドレスが127.0.0.1である問題を解決する

IPツールを取得 lombok.extern.slf4j.Slf4j をインポートします。 org....

セマンティック XHTML タグの紹介

まず最初に指摘しておきたいのは、人間は視覚的な区分を通じてコン​​テンツの意味を判断できるが、検索エ...

一時ファイルを作成できないために MySQL が起動できない問題を解決する方法

問題の説明最近、仕事中に問題が発生しました。MySQL が起動に失敗しました。エラー ログは次のとお...

Linux ファイル管理コマンド例の分析 [権限、作成、削除、コピー、移動、検索など]

この記事では、Linux ファイル管理コマンドについて例を挙げて説明します。ご参考までに、詳細は以下...