sql >> データベース >  >> RDS >> Mysql

MySQLでデータベースとテーブルを作成および削除する方法


    はじめに

    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 :基本的な作成ステートメント。 プレースホルダーは、使用するテーブルの名前に置き換える必要があります。
    • :テーブル内の基本列を定義します。 プレースホルダーは、列に使用する名前に置き換える必要があります。 列のMySQLデータ型を指定します。テーブル内に格納されるデータは、受け入れられる列構造と列データ型に準拠している必要があります。
    • :列の制約はオプションの制約であり、データに追加の要件を追加します。たとえば、エントリがnull、一意、または正の整数でないことを要求できます。
    • :テーブルの制約は列の制約に似ていますが、複数の列の相互作用が含まれます。たとえば、 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の公式ドキュメントをご覧ください。




    1. PostgreSQLでtransaction_timestamp()がどのように機能するか

    2. データベース内のすべてのテーブルのサイズを取得する

    3. PL / SQLでスレッドを使用できますか?

    4. PostgreSQLはすべてのコンテンツを削除します