SQL上級(1) - MySQLのメタデータとインデックス

1.mysqlメタデータ

次の3つのMySQLの情報を知りたい場合があります。

  • 検索結果:SELECT、UPDATE、またはDELETE文によって影響を受けるレコードの数。
  • 情報データベースとデータテーブル:データベースは、構成情報とデータテーブルが含まれています。
  • MySQLサーバの情報:データベース・サーバの現在の状態、およびバージョン番号が含まれています。
    MySQLのコマンドプロンプトでは、我々は簡単に多くのサーバー情報を取得することができます。

サーバーのメタデータを取得します。

次のコマンド構文は、MySQLのコマンドプロンプトで使用することができますまた、このようなPHPスクリプトとして、スクリプトで使用することができます。

コマンド 説明
SELECT VERSION() サーバのバージョン
データベースを選択() 現在のデータベース名(または戻り空気)
ユーザーを選択します() 現在のユーザー名
SHOWステータス サーバステータス
バリアブルの表示 サーバーの構成変数

2.mysql機能

一般的に使用される高度な機能に加えて、文字列関数、数値関数、日付関数が含まれます。

2.1一般的な文字列関数

CHAR_LENGTH(s)文字列の数を返す
文字列に複数の文字列CONCAT(S1、S2 ... SN)文字列S1、S2、
REVERSE(s)はTRIM(複数可) ...

2.2デジタル機能

LOG / MIN / MAX / SIN / COS ...

2.3日付関数

DATE()/ LOCALTIME()/ YEAR(D)...

2.4高度な機能

VERSION()は、データベースのバージョン番号を返し
、ユーザが()現在のユーザ戻り
SYSTEM_USER()は現在のユーザ返す
式が空であるかどうかを決定するためにISNULL(式)

3.MySQLインデックス

効率的な運用のためのビルドMySQLのMySQLのインデックスが非常に重要であり、指数が大幅にMySQLのの検索速度を向上させることができます。
サブインデックス別指数と組合せ指数。

  • 別のインデックス、すなわち単一の列インデックスを含む、テーブルは、複数の個別のインデックスを持つことができ、これは複合インデックスではありません。
  • 組み合わせ指数、すなわち、複数の列を含むインデックス。

あなたは、インデックスを作成するときは、必ずインデックスが(通常はWHERE句の条件など)SQLクエリアプリケーション内の条件であることを確認する必要があります。
実際には、インデックスはまた、エンティティテーブルを記録するために主キーとインデックスフィールド、及びポイントを保持するテーブルです。
上記のインデックスを使用することの利点について話しているが、インデックスのあまり使用は乱用につながります。そのため、インデックスもその欠点があります。それは、テーブルの更新速度が低下する一方、インデックスが大幅に、クエリの速度を増加したものの、このようなテーブルのINSERT、UPDATE、およびDELETEなど、。あなたがテーブルを更新する場合、MySQLはデータを保存するだけでなく、インデックスファイルについて保存することだけではありませんので。
インデックスファイルのインデックスは、ディスクスペースを占めています。

3.1一般的な指標

3.1.1インデックスの作成

これは、最も基本的な指標である、それは任意の制限はありません。それは、次の方法を作成しました:

CREATE INDEX indexName ON mytable(username(length));
//创建索引
create index id on B(A_ID);

CHAR、VARCHAR型の場合は、長さがフィールドの実際の長さよりも小さくすることができ、BLOBとTEXTタイプの場合、長さを指定する必要があります。

3.1.2変更テーブル構造(インデックスの追加)

ALTER table tableName ADD INDEX indexName(columnName)

3.1.3直接指定する場合、テーブルを作成します。

CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX [indexName] (username(length))
);

3.1.3削除index構文

DROP INDEX [indexName] ON mytable;

3.2一意のインデックス

索引列の値は一意であるが、自由な値を許可する必要があります。それは異なっている、以前の一般的な指標に似ています。それは、インデックスの組み合わせであれば、列の値は一意である必要があります。それは、次の方法を作成しました:

3.2.1インデックスの作成

CREATE UNIQUE INDEX indexName ON mytable(username(length))

3.2.2変更テーブル構造

ALTER table mytable ADD UNIQUE [indexName] (username(length))

3.2.3直接指定する場合、テーブルの作成

CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
UNIQUE [indexName] (username(length))
);

3.3 ALTERコマンドを使用してインデックスを追加およびドロップ

インデックスデータテーブルを追加するための4つの方法があります。

  • ALTER TABLE tbl_name内のADD PRIMARY KEY(column_listを):この文は、インデックスの値がユニークである必要があり、NULLにすることはできないことを意味し、主キーを追加します。
  • ALTER TABLE tbl_name内のADD UNIQUEのINDEX_NAME(column_listを):この文は、インデックス値が一意である必要があります作成されます(NULLに加えて、NULLが複数回表示される場合があります)。
  • ALTERテーブルtbl_name ADD索引INDEX_NAME(column_listを):インデックス値が複数回発生する可能性があり、通常のインデックスを追加します。
  • ALTER TABLE tbl_name内ADDのFULLTEXTのINDEX_NAME(column_listを):この文は、インデックスがフルテキストインデックスのために、FULLTEXTで指定します。

次の例では、テーブルにインデックスを追加することです:

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

また、インデックスALTERコマンドを削除するにはDROP句を使用することができます。次の例に、削除インデックスを試してみてください。

mysql> ALTER TABLE testalter_tbl DROP INDEX c;

主キーを追加および削除する3.4使用ALTERコマンド

唯一のプライマリキーインデックスを追加するとき、あなたはデフォルトのプライマリキーは(NOT NULL)が空でないことを確認する必要があり、主キー列に基づいて行動することができます。例としては、次のとおりです:

mysql> ALTER TABLE testalter_tbl MODIFY itcast INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (itcast);

また、主キーを削除するには、ALTERコマンドを使用することができます。

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

単にあなたが主キーを削除するとPRIMARY KEYを指定していますが、インデックスを削除するとき、あなたは、インデックスの名前を知っている必要があります。

3.5番組インデックス情報

あなたは、関連するインデックス情報テーブルを一覧表示するには、SHOW INDEXコマンドを使用することができます。情報を追加することにより、出力をフォーマットするためにGを\することができます。
次の例を試してみてください。

mysql> SHOW INDEX FROM table_name; \G
mysql> show index from B;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+------
---+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality |
Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+------
---+---------------+
| B | 0 | PRIMARY | 1 | A_ID | A | 3 | NULL | NULL | | BTREE
| | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+------
---+---------------+

4.MySQL総務

MySQLのトランザクションは、主に大規模なデータ操作、プロセスの高い複雑のために使用されています。たとえば、人事管理システムでは、あなたがある人を、削除、あなたはスタッフの基本的な情報を削除する必要がある、とスタッフは、データベース操作文は、トランザクションを構成するように、などのメール、記事、などの関連情報を、削除する必要があります!

唯一のMySQLデータベースエンジンでのみサポート取引InnoDBデータベースやテーブルを使用していました。

  • トランザクションは、SQL文の大部分は、いずれかのすべての実行またはすべての実行されないことを保証するために、データベースの整合性を維持するために使用することができます。
  • 挿入、更新、削除の文のトランザクション管理
  • (も不可分として知られている原子性、)原子性、一貫性(一貫性)、アイソレーション(も独立として知られている分離、)、永続性(耐久性):一般的に言って、トランザクションが4つの条件(ACID)を満たす必要があります。
    • 原子性:1つのトランザクション(トランザクション)内のすべての操作が完了または全て完了していない場合、リンクの途中で終わりません。トランザクションの実行中にエラーが発生したトランザクションが同じことを行ったことがないとして、それは、トランザクションの開始前の状態に(ロールバック)にロールバックされます。
    • 一貫性:トランザクションが開始され、トランザクションの終了後に、データベースの整合性が破損していない前に。書き込まれたデータは、データの正確性を含め、デフォルトのルールのすべてに完全に準拠しなければならないことを、この手段、およびフォローアップデータベースのシリーズは、自然発生的にスケジュールされた作業を完了することができます。
    • 分離:同時トランザクション・データベースの複数の同時読み取りおよび書き込み機能を可能にし、そのデータを変更する複数のトランザクションが同時に矛盾したデータにクロス実行結果を実行するとき、分離を防止することができます。トランザクション分離は、非コミット読み取り(読み取りコミットされていない)、コミット読み取り(コミット読み取り)、反復可能読み取り(反復可能読み取り)及びシリアライズ(直列化)を含む異なるレベルに分割されます。
    • 耐久性:トランザクションの後、データへの変更は、システム障害が失われることはありません場合でも、永続的です。

4.1、トランザクション制御文:

BEGINあるいはSTART TRANSACTION;トランザクションを明示的に開きます。

  • COMMIT;またをCOMMIT WORKを使用するが、両者は等価であることができます。コミットにトランザクションをコミットすると、データベースは、すべての変更を永続的になってきました。
  • ROLLBACKは、ROLLBACK作業を用いることができるが、両者は等価です。ロールバックエンドユーザー・トランザクションと進行中のコミットされていないすべての変更を撤回します。
  • SAVEPOINT識別子; SAVEPOINTは、あなたがトランザクション内のセーブポイントを作成することができ、トランザクションは複数持つことができます
  • SAVEPOINT;
  • RELEASE SAVEPOINT識別子、例外がスローされますステートメントを実行し、そこには何のセーブポイントに指定されている場合、セーブポイントトランザクションを削除しません。
  • ROLLBACK TO識別子、ロールバックマーカーにトランザクション、
    SETのTRANSACTION;トランザクション分離レベルを設定するために使用されます。InnoDBストレージエンジンは、READを有するトランザクション分離レベルを提供します
  • UNCOMMITTED、READは、REPEATABLE READ和SERIALIZABLEを犯しました。

4.2、MYSQL取引二つの主な方法があります。

1、BEGINと、ROLLBACKは、達成するためにCOMMIT

  • トランザクションを開始BEGIN
  • ROLLBACKトランザクションのロールバック
  • トランザクションの確認をCOMMIT

2、直接使用のSETは、MySQLの自動コミットモードを変更するには:

  • 無効に自動送信する= 0のSET AUTOCOMMIT
  • SET AUTOCOMMIT = 1は、自動コミットを有効
    基礎がありケース説明:MySQLの総務
公開された122元の記事 ウォンの賞賛1 ビュー7329

おすすめ

転載: blog.csdn.net/qq_36079912/article/details/104507877