MySQL ステートメントの配置と概要の紹介

MySQL ステートメントの配置と概要の紹介

SQL (Structured Query Language) ステートメント、つまり構造化クエリ言語は、リレーショナル データベースを操作および検索するための標準言語です。 SQL ステートメントは一般に次のカテゴリに分類されます。

  1. DCL(データベース制御言語)ステートメント:主にGRANTとREVOKEの2つのキーワードで完了します。
  2. DDL (データベース定義言語) ステートメント: 主に 4 つのキーワード (CREATE、ALTER、DROP、TRUNCATE) で完了します。
  3. DML (データベース操作言語) ステートメント: 主に 3 つのキーワード (INSERT、UPDATE、DELETE) で完了します。
  4. クエリステートメント: 主にSELECTステートメントによって完了します
  5. トランザクション制御文: 主に3つのキーワードCOMMIT、ROLLBACK、SAVEPOINTで完了します。

注: SQL ステートメントでは大文字と小文字が区別されないため、create と CREATE は同じです。

1. DCLステートメント

DCL ステートメントは、ユーザー権限の承認と取り消しに使用されます。さまざまなユーザーの権限を制御し、データベースのセキュリティを強化し、データベースのメンテナンスを実行できます。通常、データベース管理者はスーパーユーザー root を使用して操作を実行します。

MySQL の権限付与コマンドは grant で、権限取り消しコマンドは revoke です。

1. 許可書の形式:

library.table の権限リストを、"password" で識別される username@'ip' に付与します。

2. 権限を取り消す形式:

library.table の権限リストを username@'ip' から取り消します。

2. DDLステートメント

データベース オブジェクト:

テーブル、データ ディクショナリ、制約、ビュー、インデックス、関数、ストアド プロシージャ、トリガー

CREATE、ALTER、および DELETE キーワードは、それぞれデータベース オブジェクトの作成、変更、および削除に使用されます。ここでは、テーブルに対する最も一般的な操作を例として使用します。

  • データベースのデータ型については、次の URL を参照してください: //www.jb51.net/article/55853.htm
  • データベース整合性制約については、https://www.jb51.net/article/154000.htm を参照してください。

1.作成:

CREATE TABLE [スキーマ名.] テーブル名 (
この表の列の定義
);

例えば

CREATE TABLEテスト(
StuId VARCHAR(8) 主キー、
StuName VARCHAR(30) NOT NULL、
StuAge SMALLINT NOT NULL、
StuBirth 日時
);

注: テーブル構造を表示します: DESCRIBE テーブル名;

2.変更:

1) 列を追加します。

ALTER TABLE テーブル名
列columnName1データ型を追加します[デフォルトの式] [FIRST|AFTER colName];
columnName1: 新しく追加された列の名前。
データ型: データ型;
デフォルトの expr: 整合性制約;
FIRST|AFTER colName: 挿入位置。デフォルトでは、最後の列に挿入されます。FIRST は最初の列にあります。AFTER colName は指定された列の後に挿入されます。

例えば

ALTER TABLE テスト
列 StuMajor を追加します。VARCHAR(20) NOT NULL AFTER StuName;

2) 列を変更する

ALTER TABLE テーブル名 CHANGE oldName newName データ型;

例えば

ALTER TABLE test CHANGE StuBirth 誕生日年を変更します。

3) 列を削除する

ALTER TABLE テーブル名 DROP 列 columnName;

例えば

ALTER TABLE テストで列 StuMajor を削除します。

4) テーブル名を変更する

ALTER TABEL テーブル名 RENAME TO 新しいテーブル名;

例えば

テーブル test を変更して、名前を student に変更します。

3.ドロップ

テーブルを削除する
DROP TABLE テーブル名;

例えば

DROP TABLE 学生;

4.切り捨て

テーブル内のすべてのデータを削除しながらもその構造を保持することを「切り捨て」と呼びます。
TRUNCATE TABLE テーブル名;

例えば

TRUNCATE TABLE 学生;

3. DMLステートメント

1. 挿入

標準の SQL ステートメントでは、一度に 1 行のデータしか挿入できませんが、MySQL ではこれを拡張して、一度に複数行のデータを挿入できるようにします。

データを挿入します:

テーブル名に VALUES (値1、値2、...) を挿入します。

複数のレコードを挿入します:

テーブル名にINSERT INTO VALUES (値1、値2、...)、(値1、値2、...)、(値1、値2、...);

例えば

学生に VALUES('001','Lisa',20,1997),('002','Rose',21,1996) を挿入します。

2.更新

テーブル名を更新します。SET COLUMN1 = VALUE1[, COLUMN2 = VALUE2]...
[WHERE条件];

たとえば、20 歳以上のすべての学生の年齢に 1 を加算します。

学生を更新します。SET StuAge = StuAge+1 WHERE StuAge>20;

3.削除

DELETE FROM テーブル名 [WHERE CONDITION];

例: 1997年生まれの学生情報をすべて削除する

誕生日が 1997 である学生から削除します。

4. クエリステートメント

1. 単一テーブルクエリ:

列1、列2を選択...
データソースから[WHERE条件]
[GROUP BY 列名]
[ORDER BY 列名 DESC|ASC]

たとえば、コンピューターサイエンスを専攻する学生を選択し、学生 ID の降順で並べ替えて、学生名のみを表示します。

学生からStuNameを選択 
StuMajor = 'CS'の場合
ORDER BY StuId DESC;

2. 複数テーブルクエリ:

1) 単純な外部結合方式

VALUE1[,VALUE2]を選択します...
テーブル名1、テーブル名2から
ここで、tableName1.column1 = tableName2.column2[AND ...];
WHEREの後に接続条件とクエリ条件が続きます

2) 自己とのつながり: 時には自分自身とつながることが必要であり、これを自己とのつながりと呼びます。

例えば

次の表があります

テーブルempを作成します(
id INT AUTO_INCRETMENT 主キー、
名前 VARCAHR(255)、
マネージャーID INT、
FOREIGN KEY(managerId) は temp(id) を参照します
);

記録は4つあります

ID名 マネージャーID
1 aaa ヌル
2 1 1
3 ccc 1
4 ddd 1

テーブルをクエリします:

SELECT employee.id、employee.name 従業員名、manager.name マネージャー名 FROM emp employee、emp manager
ここで、 employee.managerId = manager.id;

このクエリは、自己結合を使用して従業員と管理者の関係を表示します。

  • employee.name 従業員名、manager.name マネージャー従業員名とマネージャー名の名前が変更され、列を表示するときに従業員名とマネージャー名が表示されます。
  • FROM emp employee、emp manager 2 つの同一のテーブルを区別し、異なる名前を付ける必要があります。
  • WHERE employee.managerId = manager.id は結合条件です

複数のテーブル接続の詳細については、以下を参照してください。
https://www.jb51.net/article/154006.htm

5. トランザクション処理

1. トランザクションは、1 つまたは複数のデータベース操作シーケンスで構成される論理実行単位です。

この一連の操作は、完全に実行するか、完全に中止する必要があります。プログラムとトランザクションはまったく異なる概念です。一般的に、プログラムには複数のトランザクションが含まれる場合があります。 MySQL には複数のエンジンがあり、最もよく使用される 2 つのエンジンは InnoDB と MyISAM です。InnoDB はトランザクションをサポートしますが、MyISAM はサポートしません。これらは config 構成ファイルで変更できます。

2. 取引の4つの特徴:

  • アトミック性: トランザクションは、アプリケーション内の最小の実行単位です。
  • 一貫性: トランザクション実行の結果、データベースは 1 つの一貫性のある状態から別の一貫性のある状態に変更される必要があります。一貫性は原子性によって保証される
  • 分離: 各トランザクションの実行は互いに干渉しません。
  • 耐久性: 永続性とも呼ばれ、トランザクションがコミットされると、データに加えられた変更はすべて物理データベースに保存されることを意味します。

これら4つの特性はACID特性とも呼ばれます

3. データベース トランザクションは、DML ステートメント、DDL ステートメント、および DCL ステートメントのセットで構成されます。

  • DML文はデータを操作する
  • DDL ステートメントと DCL ステートメントの両方がトランザクションをコミットするため、DDL ステートメントと DCL ステートメントはそれぞれ 1 つだけです。

4. 取引の提出:

  • コミットを表示: コミット
  • 自動コミット: DDL/DCL ステートメント

MySQL はデフォルトでトランザクション (自動コミット) をオフにします。デフォルトでは、ユーザーが DML ステートメントを入力すると、操作がコミットされます。トランザクションをオンにするには、次のステートメントで自動コミットを設定できます。

SET AUTOCOMMIT = {0|1} 0 は自動コミットをオフにする(トランザクションを開く)、1 は自動コミットをオンにする(トランザクションを閉じる)

5. トランザクションのロールバック

トランザクションに含まれるデータベース操作が失敗した場合、トランザクションはロールバックされ、トランザクション内のすべての操作は無効になります。 2つの方法:

  • ロールバックを表示: ロールバック
  • 自動ロールバック: システムエラーまたは強制終了

6. 例:

一時的にトランザクションを開始するだけの場合は、start transaction または begin を使用して一時的なトランザクションを開始できます。その後の DML ステートメントは、トランザクションがコミットまたはロールバックされるまですぐには実行されません。

例1

始める;
学生にVALUES(NULL,'001','aaa')を挿入します。
学生にVALUES(NULL,'002','bbb')を挿入します。
学生にVALUES(NULL,'003','ccc')を挿入します。
学生から*を選択; ①
ロールバック;
学生から*を選択; ②

① クエリステートメントの結果には、挿入されたデータが含まれます。ただし、この時点で別のコマンドラインウィンドウでステートメントを実行すると、上記の 3 つのデータは表示されません。これは、トランザクションの分離を反映しています。これらの 3 つのデータは、実際には物理データベースに書き込まれません。

ロールバック操作が実行されると、begin以降の3つのデータはクエリステートメントの結果に表示されなくなります②

例2

学生にVALUES(NULL,'001','aaa')を挿入します。
学生にVALUES(NULL,'002','bbb')を挿入します。
セーブポイント p;
学生にVALUES(NULL,'003','ccc')を挿入します。
学生から*を選択; ①
p にロールバックします。
学生から*を選択; ②

MySQLでは中間点を設定するためのキーワードSAVEPOINTも用意されており、これを使ってロールバック位置を設定することができます。①のクエリ文の結果には3つの挿入データの結果が含まれていますが、②のクエリ結果には中間点p以降に挿入されたデータは含まれていません。中間点へのロールバックではトランザクションは終了しないことに注意してください。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

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

<<:  React における同期および非同期 setState の問題のコード分析

>>:  CentOS 8/RHEL 8 に Cockpit をインストールして使用する方法

推薦する

vite2.0+vue3 モバイルプロジェクトの詳細な説明

1. 関連する技術的なポイントバイト版ヴュー3 ts統合ルーティングvuexを統合するAxiosを統...

Centos7にTenda U12ワイヤレスネットワークカードドライバーをインストールする際の問題を解決する

解決プロセス:方法1: CentOS7.3 のデフォルトのカーネル バージョンは低く、3.10.0-...

Tomcat の 404 エラーの解決方法の詳細な説明

Tomcat テストで 404 問題が発生します。問題は次のとおりです。 HTTP ステータス 40...

SQL グループ化により重複を削除し、他のフィールドで並べ替える

必要:あるフィールドの同一項目を結合し、別の時間フィールドで並べ替えます。例:初めに テーブルから都...

MySQL 接続制御プラグインの紹介

目次1. 接続制御プラグイン(connection_control)の紹介1.1 connectio...

Nginx+ModSecurity セキュリティモジュールの導入

目次1. ダウンロード2. 展開1.Nginxのデプロイメント2. ModSecurityの展開3....

一般的なMysql DDL操作の概要

図書館管理ライブラリを作成する データベースを作成します [存在しない場合] ライブラリ名;ライブラ...

ウェブページ制作TDは隠し表示もオーバーフロー可能

おそらく、この記事にこのようなタイトルを付けると、誰かがこう尋ねるでしょう。「なぜまだテーブルに注目...

Vueで背景色と透明度を設定する方法

背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...

jsはCanvasを使用して複数の画像を1つの実装コードにマージします

解決 関数 mergeImgs(リスト) { const imgDom = document.cre...

Vite+ElectronでVUE3デスクトップアプリケーションを素早く構築

目次1. はじめに2. Viteプロジェクトを作成する1. viteをインストールする2. プロジェ...

Linux (CentOS7) に Tomcat をインストールし、Tomcat をスタートアップ項目として設定します (tomcat8 を例に挙げます)

目次TomcatをインストールするTomcat 圧縮パッケージをダウンロードTomcatには3つの主...

基礎知識: ウェブサイトのアドレスの前の http はどういう意味ですか?

HTTPとは何ですか?ウェブサイトを閲覧したいときは、ブラウザのアドレス バーにウェブサイトのアド...

Vue のスロットスコープの詳細な理解(初心者向け)

Baidu には slot-scope に関する記事が既にたくさんありますが、以前よく学習しておら...

mysql ビュー関数の分析と使用例

この記事では、例を使用して MySQL ビューの機能と使用方法を説明します。ご参考までに、詳細は以下...