⚠️この記事は MySQL 8.0.X バージョンに適用されます。
MySQL がインストールされているかどうかを確認するには、コマンドmysql --version
を使用してください。
MySQL データベースへのログイン#
コマンドmysql -h localhost -u root -p
を使用してログインします。
以下のようになります:
-u
の後には MySQL のユーザー名を入力します。-p
はパスワードを入力することを意味します。注意:-p
の後にはスペースはありません。パスワードを入力しない場合、Enter キーを押すとパスワードの入力を求められます。-h
パラメータを使用して、接続したい MySQL サーバーが localhost にあることを指定します。MySQL サーバーが異なるホストやリモートサーバーにある場合は、localhost をそのサーバーのホスト名または IP アドレスに置き換えることができます。
MySQL データベースのバックアップとリストア#
データベースのバックアップ#
mysqldump
ツールを使用してデータベースをバックアップします。基本的な構文は次のとおりです。
mysqldump -u [username] -p[password] [database_name] > [backup_file.sql]
[username]
:MySQL のユーザー名です。[password]
:MySQL のパスワードです。ここでの-p
とパスワードの間にはスペースはありません。[database_name]
:バックアップしたいデータベースの名前です。[backup_file.sql]
:バックアップファイルの名前です。
例:mysqldump -u root -p123456 mydatabase > mydatabase_backup.sql
上記のコマンドは、mydatabase
データベースをmydatabase_backup.sql
ファイルにバックアップします。
データベースのリストア#
例:
mysql -u root -p123456 mydatabase < mydatabase_backup.sql
上記のコマンドは、mydatabase_backup.sqlファイルのデータをmydatabaseデータベースにリストアします。
注意:データベースをリストアする際は、データベースが既に存在している必要があります。まだ作成されていない場合は、まずデータベースを作成する必要があります。
データベースの作成と表示#
データベースの作成#
MySQL では、CREATE DATABASE
ステートメントを使用して新しいデータベースを作成できます。たとえば、名前が「my_database」のデータベースを作成するには、次のコマンドを使用します:
CREATE DATABASE my_database;
データベースの表示#
すべてのデータベースを表示するには、SHOW DATABASES
コマンドを使用します:
SHOW DATABASES;
特定のデータベースを表示するには、まずUSE
コマンドを使用してデータベースを選択し、次にSHOW TABLES
コマンドを使用してそのデータベース内のすべてのテーブルを表示します:
USE my_database;
SHOW TABLES;
テーブルの作成、表示、削除#
テーブルの作成#
CREATE TABLE
ステートメントを使用して新しいテーブルを作成します。たとえば、「my_database」というデータベース内に「my_table」という名前のテーブルを作成するには、次のコマンドを使用します:
USE my_database;
CREATE TABLE my_table (
id INT AUTO_INCREMENT,
name VARCHAR(100),
age INT,
PRIMARY KEY (id)
);
テーブルの表示#
テーブルの構造を表示するには、DESCRIBE
またはDESC
コマンドを使用します:
DESCRIBE my_table;
テーブルの削除#
DROP
ステートメントを使用します(テーブルの構造は保持されません):
DROP TABLE table_name;
DELETE
ステートメントを使用します:
DELETE FROM table_name;
TRUNCATE
ステートメントを使用します:
TRUNCATE TABLE table_name;
ここでのtable_name
は、データを削除するテーブルの名前です。これらの 2 つのコマンドは同じ効果があり、テーブル内のすべてのデータを削除し、テーブルの構造を保持します。ただし、TRUNCATE
は通常よりも速く、テーブルのAUTO_INCREMENT
カウンターをリセットします。大量のデータを削除する場合は、TRUNCATE
がより良い選択肢です。
制約は、テーブルで許可されるデータを規定するために使用されます。テーブルの作成または変更中に、各列に制約を追加できます。以下は、MySQL で一般的な制約のいくつかです:
MySQL の制約#
PRIMARY KEY(主キー)#
-
列レベルの主キー制約
テーブルの列を定義する際に、列を直接主キーとして定義します:CREATE TABLE Persons ( ID int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int );
-
テーブルレベルの主キー制約
すべての列の定義の後、列または複数の列を主キーとして定義します:CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, PRIMARY KEY (ID) );
複合主キー(2 つ以上の列で構成される主キー)を作成する場合は、テーブルレベルでのみ定義できます:
CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, PRIMARY KEY (ID, LastName) );
UNIQUE#
ユニーク制約は、特定の列の各行に一意の値があることを保証します。
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL UNIQUE,
FirstName varchar(255),
Age int
);
NOT NULL#
NOT NULL 制約は、特定の列に NULL 値を持たせないようにします。
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);
FOREIGN KEY(外部キー)#
外部キー制約は、2 つのテーブル間のリンクを壊さないために使用されます。
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(ID)
);
MySQL の CRUD 操作、グループ化と集計関数#
SQL 操作#
テーブルの作成#
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype
);
CREATE TABLE
ステートメントは、データベース内に新しいテーブルを作成します。テーブルの名前と各列の名前を指定することができます。
データの挿入#
-
直接挿入
INSERT INTO table_name VALUES (value1, value2);
-
列を指定して挿入
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
-
複数のデータを同時に挿入
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...), (value4, value5, value6, ...), (value7, value8, value9, ...);
MySQL のテーブル構造の変更#
MySQL では、既存のテーブル構造を変更するためにALTER TABLE
コマンドを使用します。以下は一般的なALTER TABLE
コマンドのいくつかです:
-
列の追加
ALTER TABLE table_name ADD column_name datatype;
-
列の削除
ALTER TABLE table_name DROP COLUMN column_name;
-
列の型の変更
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
-
列の名前の変更
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name datatype;
-
主キーの追加
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
-
主キーの削除
ALTER TABLE table_name DROP PRIMARY KEY;
-
インデックスの追加
ALTER TABLE table_name ADD INDEX index_name (column_name);
-
インデックスの削除
ALTER TABLE table_name DROP INDEX index_name;
-
テーブルの名前の変更
ALTER TABLE old_table_name RENAME TO new_table_name;
レコードの削除#
DELETE FROM table_name
WHERE some_column = some_value;
DELETE
ステートメントは、テーブルからレコード(行)を削除するために使用されます。WHERE
句は、削除するレコードまたはレコードを指定します。WHERE
句を省略すると、すべてのレコードが削除されます。
レコードの更新#
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE some_column = some_value;
UPDATE
ステートメントは、テーブル内のレコード(行)を編集するために使用されます。SET
句は、編集する列を指定し、WHERE
句はレコードを指定します。