[できるPRO MySQL できるPROシリーズ Kindle版] まとめ

Logo

できるPRO MySQL できるPROシリーズ Kindle版の内容をまとめる。

View the Project on GitHub nekonisi/MySQL

01_行を特定する列を設定

概要

主キー

概要

主キーとユニークキーとの違い

項目 主キー ユニークキー
重複する値 × ×
NULL ×

複合主キー

サンプル

事前準備(データベースの作成)

CREATE DATABASE dekirusample2;
USE dekirusample2;
MariaDB [(none)]> CREATE DATABASE dekirusample2;
Query OK, 1 row affected (0.02 sec)

MariaDB [(none)]> USE dekirusample2;
Database changed

主キーの指定

CREATE TABLE members(
		id INT PRIMARY KEY,
		name VARCHAR(16)
		);
MariaDB [dekirusample2]> CREATE TABLE members(id INT PRIMARY KEY, name VARCHAR(16));
Query OK, 0 rows affected (0.07 sec)

行を挿入

INSERT INTO members VALUES(0, '小西昂輔');
MariaDB [dekirusample2]> INSERT INTO members VALUES(0, '小西昂輔');
Query OK, 1 row affected (0.01 sec)
INSERT INTO members VALUES(0, '太宰治');
MariaDB [dekirusample2]> INSERT INTO members VALUES(0, '太宰治');
ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'
INSERT INTO members (name) VALUES('上司幾太');
MariaDB [dekirusample2]> INSERT INTO members (name) VALUES('上司幾太');
ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'
INSERT INTO members VALUES(NULL, '大庭葉蔵');
MariaDB [dekirusample2]> INSERT INTO members VALUES(NULL, '大庭葉蔵');
ERROR 1048 (23000): Column 'id' cannot be null

ユニークキー

概要

サンプル

ユニークキーを指定

ALTER TABLE members 
ADD COLUMN mailid VARCHAR(32) UNIQUE KEY;
MariaDB [dekirusample2]> ALTER TABLE members ADD COLUMN mailid VARCHAR(32) UNIQUE KEY;
Query OK, 0 rows affected (0.19 sec)
Records: 0  Duplicates: 0  Warnings: 0

行の挿入

INSERT INTO members values (2, '直治', 'naoji');
MariaDB [dekirusample2]> INSERT INTO members values (2, '直治', 'naoji');
Query OK, 1 row affected (0.01 sec)
INSERT INTO members values (3, 'なおじ', 'naoji');
MariaDB [dekirusample2]> INSERT INTO members values (3, 'なおじ', 'naoji');
ERROR 1062 (23000): Duplicate entry 'naoji' for key 'mailid'
INSERT INTO members values (3, 'なおじ', NULL);
MariaDB [dekirusample2]> INSERT INTO members values (3, 'なおじ', NULL);
Query OK, 1 row affected (0.01 sec)

実行結果確認

SELECT * FROM members;
MariaDB [dekirusample2]> SELECT * FROM members;
+----+----------+--------+
| id | name     | mailid |
+----+----------+--------+
|  0 | 小西昂輔 | NULL   |
|  2 | 直治     | naoji  |
|  3 | なおじ   | NULL   |
+----+----------+--------+
3 rows in set (0.02 sec)