MySQL入門」カテゴリーアーカイブ

4.MySQL入門 主キー インデックスの設定

ここではMySQLでの主キーの設定ついて解説していきます。

mysql

主キーの設定

CREATE TABLE tb1(id INT PRIMARY KEY);

実行結果

Field Type Null Key Default Extra
id int(11) No PRI

書式
CREATE TABLE テーブル名(カラム名 データ型 PRIMARY KEY);

テーブルを作成したときのコマンドの最後に半角スペースで「PRIMARY KEY」を追加します。
複数定義する場合は、「,」で区切り定義します。

主キーとは

主キーとはレコードのうち1つを特定するのに使われる識別子で、
「値の重複をしない」、「空(null)にすることはできない」とカラムに設定することです。
主キーを設定することで、社員IDや商品IDなど重複しない1つのデータを定義することが可能です。
又、主キーを設定したカラムに重複した値やnullを登録しようとした場合はエラーになり登録することができません。

一意キーの設定

CREATE TABLE tb1(id INT UNIQUE);

実行結果

Field Type Null Key Default Extra
id int(11) YES UNI NULL

書式
CREATE TABLE テーブル名(カラム名 データ型 UNIQUE);

テーブルを作成したときのコマンドの最後に半角スペースで「UNIQUE」を追加します。
複数定義する場合は、「,」で区切り定義します。

一意キーとは

一意キーとは、重複はできませんが、「空(null)」を入力することはできます。

連続番号の設定

CREATE TABLE tb1(id INT AUTO_INCREMENT PRIMARY KEY);

実行結果

Field Type Null Key Default Extra
id int(11) No PRI NULL auto_increment

書式
CREATE TABLE テーブル名(カラム名 データ型 AUTO_INCREMENT PRIMARY KEY);

テーブルを作成したときのコマンドの最後に半角スペースで「AUTO_INCREMENT PRIMARY KEY」を追加します。
複数定義する場合は、「,」で区切り定義します。

連続番号とは

連続番号付のカラムを指定する場合は、データ型は「INT」など整数値に定義します。
連続番号を指定したカラムはデータ挿入時に自動的に「1」、「2」・・・と入力されていきます。

連続番号の初期値を設定

ALTER TABLE tb1 AUTO_INCREMENT=0;

書式
ALTER TABLE テーブル名 AUTO_INCREMENT=初期値;

すでに存在するデータの数値より大きい値であれば「AUTO_INCREMENT」を初期値として設定することができます。

インデックスを設定

CREATE INDEX index_name ON tb1(name);

書式
CREATE INDEX インデックス名 ON テーブル名(カラム名);

インデックスとは

データを検索するとき、データの量が多い場合、全てのデータを検索すると時間がかかってしまいます。
これを解消するためにインデックスを設定し、データの検索にはインデックスを利用し素早い検索を行います。
又、主キーの設定時にインデックスは自動的に追加されます。

インデックスの削除

DROP INDEX index_name tb1;

書式
DROP INDEX インデックス名 テーブル名;

「DROP INDEX」コマンドでインデックスを削除します。

インデックスの確認

SHOW INDEX FROM tb1;

書式
SHOW INDEX FROM テーブル名;

「SHOW INDEX」コマンドでインデックスの確認ができます。

インデックスのまとめ

インデックスを設定することで検索速度を早くすると先ほど解説しましたが、インデックスを設定する項目が適していなかったり、インデックスをたくさんのカラムに設定してしまうと、逆に検索速度が遅くなってしまいます。

例えば重複するデータが多いカラムにはインデックスを設定しないほうがいいです。
重複するデータが少なければ少ないほど、インデックスの効果を発揮します。

3.MySQL入門 カラムの操作

ここではMySQLでのカラムの操作について解説していきます。

mysql

tb1

id name age
INT VARCHAR(10) INT

今回はこのテーブルを例として解説していきます。

データ型の変更

ALTER TABLE tb1 MODIFY id VARCHAR(10);

書式
ALTER TABLE テーブル名 MODIFY カラム名 データ型;

実行後

id name age
VARCHAR(10) VARCHAR(10) INT

このようにカラム名とデータ型を指定すればデータ型の変更が可能です。
しかし、カラムにデータが存在する場合「VARCHAR」から「INT」へなどと変更は行うべきではありません。

カラムの追加

ALTER TABLE tb1 ADD regi DATETIME;

書式
ALTER TABLE テーブル名 ADD カラム名 データ型;

実行後

id name age regi
INT VARCHAR(10) INT DATETIME

これでtb1に日付、時刻で登録日を入力できるカラムが追加されました。

カラムを先頭に追加

ALTER TABLE tb1 ADD regi DATETIME FIRST;

カラムの追加で使用したコマンドの最後に半角スペースで「FIRST」を付け加えれば、追加するカラム「regi」が一番最初に追加されます。

カラムを自由な位置に追加

ALTER TABLE tb1 ADD regi DATETIME AFTER id;

カラムの追加で使用したコマンドの最後に半角スペースで「AFTER カラム名」を付け加えれば、指定したカラム名の後にカラム「regi」が追加されます。

カラムの名前とデータ型をまとめて変更

ALTER TABLE tb1 CHANGE name lastname TEXT;

書式
ALTER TABLE テーブル名 CHANGE 変更前のカラム名 変更後のカラム名 変更後のデータ型;

実行後

id lastname age
INT TEXT INT

今回の変更では「VARCHAR(10)」から「TEXT」にデータ型を変更しただけなので、もともとのデータには影響はありませんが、「TEXT」から「VARCHAR(10)」と変更してしまうと、元のデータが10文字に切れてしまうので注意して変更するようにしてください。

カラムの削除

ALTER TABLE tb1 DROP id;

書式
ALTER TABLE テーブル名 DROP 削除するカラム名;

実行結果

name age
VARCHAR(10) INT

データベースやテーブルやカラム何かを削除するときには「DROP」コマンドを使います。
カラム名を削除すると当然のことですが中のデータも削除されるので注意が必要です。

2.MySQL入門 テーブルの操作

ここではMySQLでのテーブルの操作について解説していきます。

mysql

テーブルの作成

CREATE TABLE tb1(id INT, name VARCHAR(10), age INT);

テーブルの構造

id name age
INT VARCHAR(10) INT

書式
CREATE TABLE テーブル名(カラム名 データ型,・・・);

テーブルを作成するときは「CREATE TABLE」コマンドを使います。
カラム名とデータ型を半角スペースで記述し、カラムごとの記述を「,」で区切ります。
すでに存在するテーブル名を指定した場合エラーになり前からあったテーブルが上書きされる心配はありません。

テーブルの一覧を表示

SHOW TABLES;

「SHOW TABLES」コマンドでテーブルの一覧を表示します。

カラム構造を確認

DESC tb1;

書式
DESC テーブル名;

「DESC」コマンドでテーブルのカラム構造を表示させます。

テーブルとデータのコピー

CREATE TABLE tb2 SELECT * FROM tb1;

書式
CREATE TABLE 新規テーブル名 SELECT * FROM コピーする元のテーブル;

テーブルとデータのコピーには「CREATE TABLE、SELECT、FROM」コマンドを使います。
こうすることでテーブルとデータのコピーができます。

テーブルの構造のみをコピー

CREATE TABLE tb2 LIKE tb1;

書式
CREATE TABLE 新規テーブル名 LIKE コピーする元のテーブル;

テーブルの構造のみをコピーするには「CREATE TABLE、LIKE」コマンドを使います。
こうすることでテーブルの構造のみをコピーできます。

テーブル名の変更

ALTER TABLE tb1 RENAME TO tb2;

書式
ALTER TABLE 変更前のテーブル名 RENAME TO 変更後のテーブル名;

テーブル名の変更をする場合は「ALTER TABLE、RENAME TO」コマンドを使います。
こうすることでテーブル名だけを変更することができます。

テーブルの削除

DROP TABLE tb1;

書式
DROP TABLE 削除するテーブル名;

テーブルの削除には「DROP TABLE」コマンドを使います。
こうすることでテーブルの削除ができます。

1.MySQL入門 データベース

ここではMySQLでのデータベースの操作について解説していきます。

mysql

データベースの作成

CREATE DATABASE db1;

書式
CREATE DATABASE データベース名;

「CREATE DATABASE」、「Create Database」、「create database」は半角であれば大文字小文字の区別はなくコマンドを受け付けてくれます。

データベースの確認

SHOW DATABASES;

今までに作成したデータベースの一覧が表示されます。

データベースの指定

USE db1;

書式
USE データベース名;

使用するデータベースを選択します。

現在使用しているデータベースの表示

SELECT DATABASE();

現在使用しているデータベースを表示させます。

データベースの削除

DROP DATABASE db1;

書式
DROP DATABASE 削除するデータベース名;

データベースを削除します。