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は複数のダッシュボードの左右スクロール効果を実現します

推薦する

反応自動構築ルーティングの実装

目次順序1. 集中ルーティング2. ファイルディレクトリ3. CompileRouterを作成する4...

MySQLデータファイルの保存場所を表示する方法

次のような疑問が湧くかもしれません。MySQLをローカル (自分のコンピュータ) にインストールした...

Nginx で Brotli 圧縮アルゴリズムを有効にする方法の例

Brotli は、Zopfli よりも 20 ~ 26% 高い圧縮率を実現できる新しいデータ形式です...

Windows10システムにMySQL 5.7.17をインストールする

オペレーティング システム win10 MySQL は、公式 Web サイトからダウンロードした 6...

dns-prefetch とは何ですか? フロントエンドの最適化: DNS の事前解決によりページ速度が向上します

目次背景1. dns-prefetch とは何ですか? 2. dns-prefetch を設定するに...

データベースSQL SELECTクエリの仕組み

私たちは Web 開発者として、プロの DBA ではありませんが、データベースなしではやっていけませ...

このような大画面のデジタルスクロール効果が必要になる場合があります

大画面のデジタル スクロール効果は、最近の作業における大画面 UI ダイアグラムから生まれました。U...

間違った MySQL コマンドをキャンセルしたい場合はどうすればいいですか?

間違った mysql コマンドを入力したのでキャンセルしたいです。どうすればいいですか? ctrl ...

JS はシンプルなブロック崩しピンボールゲームを実装します

この記事では、ブロック崩しピンボールゲームを実装するためのJSの具体的なコードを参考までに紹介します...

Docker を使用した Redis マスタースレーブレプリケーションの実践の詳細説明

目次1. 背景2. 操作手順3. Dockerをインストールする4. 主なサービス構成5. サービス...

標準SQL更新ステートメントの3つの用途についての簡単な理解

1. 環境: MySQL-5.0.41-win32 Windows XP プロフェッショナル2. テ...

MySQL の完全バックアップとクイックリカバリ方法

過去 15 日間のデータをバックアップするシンプルな MySQL 完全バックアップ スクリプト。バッ...

MySQL シリーズ 6 のユーザーと認証

目次チュートリアルシリーズ1. ユーザー管理1. ユーザーアカウント2. アカウントの追加と削除3....

Dockerfile テキストファイルの使用例の分析

Dockerfile は、イメージをビルドするために使用されるテキスト ファイルです。テキスト コン...

フレックスレイアウトの互換性の問題の概要

1. W3C バージョンの flex 2009年版フラグ: display: box; または bo...