1.データベースを作成します
MySQLをインストールした後、最初にデータベースを作成する必要があります。これは、MySQLのさまざまな機能を使用するための前提条件です。この章では、データベースの基本的な操作について詳しく説明します。主な内容は、データベースの作成、データベースの削除、さまざまなタイプのデータベースストレージエンジン、およびストレージエンジンの選択です。
MySQLがインストールされると、いくつかの必要なデータベースがそのデータディレクトリに自動的に作成されます。「showdatabases;」ステートメントを使用して、次のように既存のすべてのデータベースを表示できます。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mytest |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
ご覧のとおり、データベースリストには4つのデータベースが含まれています。mysqlが必要です。ユーザーのアクセス許可が記述されています。ユーザーはmytestデータベースを使用してテスト作業を行うことがよくあります。他のデータベースについては、次の章で紹介します。
データベースの作成とは、データベースの保存と管理のためにシステムディスク上の領域を分割することです。管理者が権限を設定するときにユーザー用のデータベースを作成する場合は、直接使用できます。それ以外の場合は、データベースを自分で作成する必要があります。
// MySQLでデータベースを作成するための基本的なSQLステートメントの形式は次のとおりです。
CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <
字符集名>] [[DEFAULT] COLLATE <校对规则名>];
説明:
- <データベース名>:作成するデータベースの名前。MySQLデータベースストレージはMySQLデータベースをターゲットの方法で表すため、データベース名はオペレーティングシステムのファイル名規則に準拠している必要があります。MySQLでは大文字と小文字が区別されないことに注意してください。
- 存在しない場合:データベースを作成する前に判断を下し、データベースが現在存在しない場合にのみ操作を実行します。このオプションを使用すると、既存のデータベースを繰り返し作成することによって発生するエラーを回避できます。
- [デフォルト]文字セット:データベースのデフォルトの文字セットを指定します。
mysql> create database db_test1 character set gb2312; //字符集为gb2312
Query OK, 1 row affected (0.01 sec)
mysql> show create database db_test1; //查看数据库字符集
+----------+---------------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------------+
| db_test1 | CREATE DATABASE `db_test1` /*!40100 DEFAULT CHARACTER SET gb2312 */ |
+----------+---------------------------------------------------------------------+
1 row in set (0.00 sec)
2.データベースを削除します
データベースを削除すると、ディスク領域から既存のデータベースがクリアされます。クリア後、データベース内のすべてのデータも削除されます。delete databaseステートメントは、データベースを作成するコマンドに似ています。MySQLでデータベースを削除するための基本的な構文形式は次のとおりです。
DROP DATABASE database_name;
説明:「database_name」は、削除するデータベースの名前です。指定したデータベースが存在しない場合、
エラーが削除されます。
mysql> drop database db_test1;
Query OK, 0 rows affected (0.00 sec)
3.1データベースストレージエンジン
データベースストレージエンジンは、データベースの基盤となるソフトウェアコンポーネントです。データベース管理システム(DBMS)は、データエンジンを使用して、データの作成、クエリ、更新、および削除を行います。異なるストレージエンジンは、異なるストレージメカニズム、インデックス作成手法、ロックレベル、およびその他の機能を提供します。異なるストレージエンジンを使用して、特定の機能を提供することもできます。現在、多くの異なるデータベース管理システムが、さまざまな異なるデータエンジンをサポートしています。MySQLのコアはストレージエンジンです。
3.2 MySQL StorageEngineの概要
MySQLは、トランザクションセーフテーブルを処理するエンジンや非トランザクションセーフテーブルを処理するエンジンなど、さまざまなストレージエンジンを提供します。MySQLでは、サーバー全体で1つのエンジンを使用する必要はなく、特定の要件に応じてテーブルごとに異なるストレージエンジンを使用できます。MySQL5.5でサポートされているストレージエンジンは、InnoDB、MyISAMメモリなどです。
//エンジンのコマンドを表示します:
mysql> show engines\g
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
//デフォルトのストレージエンジンを表示します
mysql> show variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)
1.ストレージエンジンの紹介
- 白のストレージエンジンは、データストレージの形式です。ストレージエンジンが異なれば、機能も異なり、占有するスペースも異なり、読み取りパフォーマンスも異なります。
- データベースストレージエンジンは、データベースの基盤となるソフトウェアコンポーネントです。ストレージエンジンが異なれば、ストレージメカニズムも異なります。
- MySQLでは、サーバー全体で同じストレージエンジンを使用する必要はなく、テーブルごとに異なるストレージエンジンを使用できます。
- MySQLは、InnoDB、MyISAM、Memory、Merge、Archive、CSV、Federatedなどの複数のストレージエンジンをサポートしています。
MyISAMストレージエンジンの機能:
5。MyISAMエンジンはMySQL 5.5より前に使用され、InnoDBエンジンはMySQL 5.5より後に使用されます
。6。MyISAMエンジンは読み取りが速く、占有するリソースが比較的少なく、トランザクションをサポートせず、外部キー制約をサポートしません。ただし、フルテキストインデックス
7をサポートします。読み取りと書き込みは相互にブロックします。つまり、データの読み取り時にデータを書き込むことはできず、データの書き込み時にデータを読み取ることはできません
。8。MyISAMエンジンはインデックスのみをキャッシュでき、データはキャッシュできません。
MyISAMの該当するシナリオ:
- 送金など、トランザクションサポートを必要としないサービス
- データの読み取りが多いビジネスには適していますが、読み取りと書き込みが頻繁に行われるビジネスには適していません。
- 同時実行性が比較的低く、データの変更が比較的少ないビジネス
- ハードウェアリソースが不足しているマシンは、MyISAMエンジンの使用を検討できます
InnoDBストレージエンジンの機能:
- トランザクションデータベースに最適なエンジンは、トランザクションセーフテーブルをサポートし、ロックと外部キーをサポートします
。MySQL5.5.5以降、InnoDBがデフォルトのストレージエンジンです。 - コミット、ロールバック、およびクラッシュリカバリ機能を備え、大量のデータを処理でき、
高いパフォーマンスと効率を備え、外部キーの整合性制約を完全にサポートする、トランザクションセーフなストレージエンジン - 非常に効率的なキャッシュ機能を備えており、ハードウェアに対する要件が高いインデックスとデータをキャッシュできます。
- InnoDBを使用する場合、ibdata1という名前の10MBの自動拡張データファイルと、ib_logfile0およびib_logfile1という名前の2つの5MBログファイルがMySQLデータディレクトリに作成されます。
InnoDBアプリケーションシナリオ:
- トランザクションサポートを必要とするサービス、および高度な並行サービス
- BBS、SNS、Weiboなど、データが頻繁に更新されるシーン。
- リチャージ転送、銀行カード転送など、高いデータ整合性を必要とするサービス
メモリストレージエンジンの機能:
1.メモリストレージエンジンは、データをメモリ内のテーブルに格納して、他のテーブルデータをクエリおよび参照するための迅速なアクセスを提供し
ます。2。メモリストレージエンジンは、HASHおよびBTREEインデックスを実行し、BLOBおよびTEXT列をサポートしませんが、AUTO_INCREMENTをサポートします。列およびNULL値列を含む可能性のあるインデックスの
場合3.メモリテーブルの内容が不要になったら、メモリテーブルが使用していたメモリを解放するには、DELETEFROMまたはTRUNCATETABLEを実行するか、テーブル全体を削除する必要があります。
第二に、ストレージエンジンの選択
- コミット、ロールバック、クラッシュリカバリ機能などのトランザクションセキュリティ機能を提供し、同時実行制御が必要な場合
は、InnoDBが適しています。 - データテーブルが主にレコードの挿入とクエリに使用される場合、MyISAMエンジンはより高い処理効率を提供できます
- データを一時的に保存するだけで、データ量が多くなく、高度なセキュリティが必要ない場合
は、データをメモリに保存するメモリエンジンを選択できます。MySQLは、このエンジンを一時テーブルとして使用し
て中間結果を保存します。クエリ - INSERT操作とSELECT操作しかない場合は、アーカイブエンジンを選択
して、ログ情報のログ記録など、同時実行性の高い挿入操作をサポートできます。アーカイブエンジンを使用できます。
拡張:
mysqlでは、各データベースは最大20億のテーブルを作成でき、1つのテーブルで1024列を定義でき、各行の最大サイズは8092バイトです(テキストと画像の種類のサイズは含まれません)。varchar、nvarchar、またはvarbinaryタイプの列がテーブルで定義されている場合、テーブルに挿入されたデータが8092バイトを超えると、ステートメントは失敗し、エラーメッセージが生成されます。SQL Serverは、各テーブルの行数を直接制限しませんが、データベースのストレージスペースによって制限されます。各データベースの最大スペースは1048516TBであるため、テーブルに使用できる最大スペースは、1048516TBからデータベースシステムテーブルおよびその他のデータベースオブジェクトが占めるスペースを引いたものです。理論的には、ハードドライブが十分に大きいかどうかに応じて、サイズに制限はありません。ほとんどの場合、ハードドライブは十分ではありません。