はじめに
MySQLは、管理するデータをテーブルとデータベース内に保持します。テーブルは、列とデータ型の事前定義されたスキーマ内にデータを格納します。データベースは、複数のテーブル、インデックス、プロシージャを保持できる構造であり、特権、カスタマイズなどのスコープを定義するのに役立ちます。
このガイドでは、MySQLでテーブルとデータベースを作成する方法を説明します。両方の構造のいくつかの機能を管理する方法を示し、次に、それらが不要になった場合にそれらを削除してクリーンアップする方法について説明します。
前提条件
このガイドに従うには、 mysql
を使用して管理者権限を持つユーザーでMySQLサーバーにログインする必要があります。 コマンドラインクライアント。
root
でログインしたくない場合 MySQL管理者アカウント。ユーザーには少なくともCREATE
が必要です。 このガイドで説明されているアクションを実行する特権。
次のように入力して、ユーザーが使用できる権限を確認できます。
SHOW GRANTS\G
新しいデータベースを作成するにはどうすればよいですか?
最初に行う方法は、新しいデータベースを作成することです。 MySQLでは、データベースには、通常は単一のプロジェクトに関連するテーブル、インデックス、プロシージャ、およびその他のリソースが含まれています。これらの各リソースはデータベース内に作成する必要があるため、新しいデータベースの作成方法を学ぶことは良い最初のステップです。
新しいデータベースの作成に使用される基本的な構文は次のようになります。
CREATE DATABASE <db_name>;
を置き換えます コマンドを実行する前に、データベースに付けたい名前を付けてください。このコマンドは、指定された名前でデータベースを作成し、現在のユーザーを新しいデータベースの所有者として設定します。
データベースは、文字セット、照合、および暗号化プロパティにシステム全体のデフォルトを使用します。
- 文字セット: 新しいデータベースの文字セットを設定します。これは、大文字、小文字、数字と見なされる文字に影響を与えるローカリゼーションオプションです。
- COLLATE: 照合を設定します 、またはデータベースの並べ替え順序。これは、アイテムが注文されたときにどのように整理されるかを決定するローカリゼーションオプションです。
- 暗号化: 新しいデータベースの暗号化を設定します。これはブールオプションであり、「はい」の場合は「Y」、いいえの場合は「N」のいずれかになります。
次のように入力すると、インストールに使用できる文字セットを見つけることができます。
SHOW CHARACTER SET;
同様に、次のように入力すると、使用可能な照合を見つけることができます。
SHOW COLLATION;
これらのパラメーターの1つにデフォルト以外の値を指定する場合は、次のようにメインの作成ステートメントの後にパラメーターを追加することで指定できます。
CREATE DATABASE <db_name> CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_0900_ai_ci' ENCRYPTION = 'Y';
このガイドの例に従うには、 school
というデータベースを作成します インスタンスのデフォルトのロケール設定とUTF8文字セットを使用する:
CREATE DATABASE school CHARACTER SET = 'utf8mb4';
これにより、指定した仕様を使用して新しいデータベースが作成されます。
既存のデータベースを一覧表示
サーバーで使用可能なデータベースを一覧表示するには、次のように入力します。
SHOW DATABASES;
これにより、環境内で現在定義されている各データベースが一覧表示されます。
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
指定した設定が新しいschool
に適用されたことを確認できます SHOW CREATE DATABASE
を使用したデータベース コマンド:
SHOW CREATE DATABASE school;
出力には、データベースの作成に使用されたコマンドとオプションが表示され、適用されたデフォルト値でオプションが埋め込まれます。
+----------+----------------------------------------------------------------------------------------------------------------------------------+ Database | Create Database |+----------+----------------------------------------------------------------------------------------------------------------------------------+ school | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |+----------+----------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)
MySQLで別のデータベースに変更する方法
データベースが作成されたら、いくつかの異なる方法でデータベースを操作できます。
最初のオプションは、使用するすべてのコマンドの引数としてデータベースを指定することです。ただし、データベースのオブジェクトに関連する複数のコマンドを実行している場合に時間を節約するために、データベースを「切り替える」または「使用」して、実行するデータベース関連のコマンドのデフォルトコンテキストとして新しいデータベースを設定することもできます。 。
別のデータベースに変更するには、次のように入力します。
USE <db_name>;
この場合、 school
に切り替えることができます 次のように入力して作成したデータベース:
USE school;
データベース内にテーブルを作成する
データベースを作成したら、データを保存および管理するためのテーブルやその他のオブジェクトを内部で定義できます。 MySQLでは、テーブルはテーブル名、列定義(これらには、名前、データ型、制約などが含まれます)、およびテーブルオプションで構成されます。
MySQLのCREATE TABLE
の構文は何ですか コマンド?
MySQLのCREATETABLE
を使用してテーブルを作成するための基本的な構文 コマンドは次のようになります:
CREATE TABLE <table_name> ( <column_name> <data_type> [<column_constraint>], [<table_constraint>,]);
上記のコマンドテンプレートを次のコンポーネントに分解できます。
-
CREATE TABLE
:基本的な作成ステートメント。 -
-
-
DATE_OF_BIRTH
をチェックするテーブル制約を設定できます。DATE_OF_DEATH
の前です テーブルで。
テーブルがまだ存在しない場合にのみテーブルを作成するにはどうすればよいですか?
MySQLのデフォルトの動作では、すでに存在するテーブルを作成しようとするとエラーが発生します。ただし、オプションの IF NOT EXISTS
この動作をオーバーライドするために、作成ステートメントに句を追加できます。
IF NOT EXISTS
を使用できます CREATE TABLE
の後のコマンドに挿入することで句 フレーズ、ただしテーブル名の前:
CREATE TABLE IF NOT EXISTS table_name ( column_name TYPE [column_constraint], [table_constraint,]);
これにより、コマンドの動作が次のように変更されます。指定されたテーブル名がすでに存在する場合、MySQLはエラーではなく警告を生成します。コマンドの残りの動作は同じままです。
MySQLデータベース内でのテーブルの作成
上記のコマンドテンプレートは、基本的なテーブルを作成するのに十分です。この例をさらに進めるために、 school
に2つのテーブルを作成します。 データベース。 1つのテーブルはsupplies
と呼ばれます もう1人はteachers
と呼ばれます :
supply
表には、次のフィールドが含まれます:
- id: 学用品の種類ごとに一意のID。
- 名前: 特定の学校のアイテムの名前。
- 説明: アイテムの簡単な説明。
- メーカー: アイテムメーカーの名前。
- 色: アイテムの色。
- 在庫: 特定の種類の学校用品のために私たちが持っているアイテムの数。これは0未満であってはなりません。
supply
を作成できます 次のSQLを使用した上記の品質のテーブル:
CREATE TABLE supplies ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), description VARCHAR(255), manufacturer VARCHAR(255), color VARCHAR(255), inventory INT CHECK (inventory >= 0));
これにより、 supply
が作成されます school
内のテーブル データベース。 PRIMARY KEY
列制約は、テーブル内のレコードを一意に識別できる列を示すために使用される特別な制約です。そのため、制約は、列をnullにすることはできず、一意である必要があることを指定します。 MySQLは、クエリ速度を上げるために主キー列のインデックスを作成します。
次のように入力して、新しいテーブルが存在することを確認します。
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies |+------------------+1 row in set (0.01 sec)
次のように入力して、スキーマが定義を反映していることを確認できます。
SHOW CREATE TABLE supplies\G
*************************** 1. row *************************** Table: suppliesCreate Table: CREATE TABLE `supplies` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `description` varchar(255) DEFAULT NULL, `manufacturer` varchar(255) DEFAULT NULL, `color` varchar(255) DEFAULT NULL, `inventory` int DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `supplies_chk_1` CHECK ((`inventory` >= 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec
指定した列、データ型、制約は出力に表示されますが、順序と表示は異なる場合があります。
次に、 Teachers
を作成します テーブル。この表には、次の列が表示されている必要があります。
- id :一意の従業員識別番号。
- first_name :先生の名。
- last_name :先生の名前。
- 件名 :教師が教えるために雇われている主題。
- grade_level :教えるために雇われている生徒の学年レベル。
Teachers
を作成します 次のSQLを使用した上記のスキーマのテーブル:
CREATE TABLE teachers ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), subject VARCHAR(255), grade_level INT);
主キーと外部キーを使用してテーブルを作成する方法
他のMySQLガイドのいくつかで、主キーと外部キーを使用したテーブルの作成に関する情報を見つけることができます。主キーと外部キーはどちらもMySQL内のデータベース制約のタイプです。
主キーは、同じテーブル内の行全体で一意であることが保証されている特別な列です。すべての主キーを使用して、特定の行を一意に識別できます。主キーは、各行が主キー列に対して一意の値を持つことを保証するだけでなく、行に NULL
が含まれないことも保証します。 その列の値。多くの場合、MySQLの主キーは、自動的に割り当てられる増分主キーを指定するために次の形式を使用します。 id INT AUTO_INCREMENT PRIMARY KEY
。
外部キーは、あるテーブルの1つまたは複数の列が別のテーブルに含まれる値と一致することを保証する方法です。これにより、テーブル間の参照整合性が確保されます。
MySQLでテーブルを表示する方法
MySQLでは、探している情報に応じて、いくつかの異なる方法でテーブルを一覧表示できます。
データベース内で使用可能なテーブルを確認するには、次のように入力します。
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies | teachers |+------------------+2 rows in set (0.00 sec)
テーブルのスキーマが仕様と一致していることを確認することもできます:
DESCRIBE teachers;
+--------------+--------------+------+-----+---------+----------------+ Field | Type | Null | Key | Default | Extra |+--------------+--------------+------+-----+---------+----------------+ id | int | NO | PRI | NULL | auto_increment | name | varchar(255) | YES | | NULL | | description | varchar(255) | YES | | NULL | | manufacturer | varchar(255) | YES | | NULL | | color | varchar(255) | YES | | NULL | | inventory | int | YES | | NULL | |+--------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)
教師コード> テーブルは私たちの定義と一致しているようです。
ALTER TABLE
を使用してテーブルを変更する方法 コマンド
MySQLの既存のテーブルのスキーマを変更する必要がある場合は、 ALTER TABLE
を使用できます。 指図。 ALTER TABLE
コマンドはCREATETABLE
と非常によく似ています コマンドですが、既存のテーブルで動作します。
テーブル構文を変更する
MySQLでテーブルを変更するための基本的な構文は、次のようになります。
ALTER TABLE <table_name> <change_command> <change_parameters>;
テーブルにさまざまなオプションを設定する、列を追加または削除する、タイプや制約を変更するなど、必要な変更の正確なタイプを示します。
コマンドの一部には、MySQLが変更を完了するために必要な追加情報が含まれています。
テーブルへの列の追加
ADD
を使用して、MySQLテーブルに列を追加できます。 コマンドを変更します。変更パラメータには、 CREATE TABLE
で指定するのと同じように、列名、タイプ、およびオプションが含まれます。 コマンド。
たとえば、 missing_column
という列を追加するには text
の some_table
というテーブルに入力します 、次のように入力します:
ALTER TABLE some_table ADD missing_column text;
テーブルからの列の削除
代わりに、既存の列を削除する場合は、 DROP COLUMN
を使用できます。 代わりにコマンド。ドロップする列の名前を変更パラメーターとして指定する必要があります:
ALTER TABLE some_table DROP COLUMN useless_column;
列のデータ型を変更する
列のデータ型を変更するには、 ALTER COLUMN
を使用できます MODIFY COLUMN
を使用してコマンドを変更します 列コマンド。このコンテキストのパラメータには、列名とその新しいタイプが含まれます:
ALTER TABLE resident MODIFY COLUMN id INT;
その他のテーブルの変更
ALTER TABLE
を使用すると、他の多くの種類の変更を行うことができます。 指図。使用可能なオプションの詳細については、 ALTER TABLE
の公式MySQLドキュメントを確認してください。 。
テーブルを削除する
テーブルを削除する場合は、 DROP TABLE
を使用できます。 SQLステートメント。これにより、テーブルとその中に保存されているデータが削除されます。
基本的な構文は次のようになります:
DROP TABLE <table_name>;
これにより、テーブルが存在する場合は削除され、テーブル名が存在しない場合はエラーがスローされます。
テーブルが存在する場合は削除し、存在しない場合は何もしない場合は、 IF EXISTS
を含めることができます。 ステートメント内の修飾子:
DROP TABLE IF EXISTS <table_name>;
他のテーブルまたはオブジェクトに依存関係があるテーブルは、それらの依存関係が存在する間はデフォルトで削除できません。
supply
を削除します 次のように入力して以前に作成したテーブル:
DROP TABLE supplies;
Teachers
を維持します データベースを削除するステートメントがテーブルなどのすべての子オブジェクトも削除することを示すデータベース。
データベースを削除する
DROP DATABASE
ステートメントは、指定されたデータベースを削除するようにMySQLに指示します。基本的な構文は次のようになります:
DROP DATABASE <database_name>;
を置き換えます 削除するデータベースの名前を持つプレースホルダー。これにより、データベースが見つかった場合は削除されます。データベースが見つからない場合、エラーが発生します:
DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist
データベースが存在する場合は削除し、それ以外の場合は何もしない場合は、オプションの IF EXISTS
を含めます。 オプション:
DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)
これにより、データベースが削除されるか、データベースが見つからない場合は何も実行されません。
school
を削除するには このガイドで使用したデータベースについては、システム上の既存のデータベースを一覧表示してください。
SHOW DATABASES;
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
school
を削除します 次のコマンドを使用したデータベース:
DROP DATABASE school;
これにより、 school
が削除されます Teachers
と一緒にデータベース 内で定義されたテーブル。
結論
この記事では、MySQLを使用してデータベースとテーブルを作成および削除する方法の基本について説明しました。これらは、データベースシステムをセットアップし、データの構造を定義するために必要な最も基本的なコマンドの一部です。
前述のように、このMySQLチュートリアルでカバーされているSQLステートメント、特に CREATE TABLE
ステートメント、システムの動作を変更するために使用できる多くの追加パラメータがあります。これらの詳細については、MySQLの公式ドキュメントをご覧ください。