絵でわかるWebプログラミング入門

やりながら学べる基本のSQL入門

MySQLでの基本的なSQLをいっしょに学んでいきましょう。

データベースを作る

MySQLでデータベースを新たに作るにはCREATE DATABASEというSQLを使います。

		CREATE DATABASE school;

これで「school(学校)」というデータベースが作成されます。

SHOWを使うと指定した情報を表示してくれます。

		SHOW DATABASES;

「データベースを見せて」という意味のSQLです。DATABASESは複数形なので注意です。次のSQLも同じ意味です。

		SHOW SCHEMAS;

これらのSQLを実行するとデータベースの一覧が表示されます。いま作った「school」というデータベースも表示されます。作った覚えのないデータベースも表示されますが、デフォルトで用意されているものなので気にしないでください。


データベースを使うには次のようにUSEを使います。

		USE school;

「このデータベース使うよ」という意味のSQLです。

テーブルを作る

テーブルを作成するにはCREATE TABLEというSQLを使います。書き方は次のようになります。

		CREATE TABLE テーブル名(
			列名 データ型やその他の設定,
			列名 データ型やその他の設定,
			...
		);

具体的には次のように書きます。

		CREATE TABLE teacher(
			id INT,
			age INT
		);

このSQLを実行すると「id」と「name」という列を持った「teacher(先生)」というテーブルが「school」データベース内に作成されます。

INTというのはINTEGER(整数)の略で列のデータ型を示しています。INTを設定した場合は整数以外は挿入できません。

INT以外にもVARCHARという文字列型などがあります。


テーブルを表示する場合にもSHOWが使えます。

		SHOW TABLES;

テーブル個別の情報を表示するにはDESCまたはDESCRIBEを使います。

		DESC teacher;

Fieldは列名、Typeはデータ型です。Nullは未設定値を許可するかどうか、Defaultはデフォルト値が表示されます。KeyExtraはキー設定やAUTO_INCREMENTなどの列の情報です。AUTO(自動)_INCREMENT(加算)というのは自動で連番を付ける設定です。


設定を変えてもう一度テーブルを作ってみましょう。

		CREATE TABLE student(
			id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
			name VARCHAR(100),
			score INT DEFAULT 0
		);

VARCHARの(括弧内)の数字は最大文字数を示します。またPRIMARY KEY(主キー)というのは重複を許さない行に付ける設定です。同じ値を挿入しようとするとエラーを出してくれます。


DESCで前回(下)と見比べてみましょう。

データを挿入する

テーブルに1行単位でデータを挿入したいときは次のSQLを使います。

		INSERT INTO student VALUES(null,'太郎',70);

「student」テーブルのカラム(列)設定は「id」、「name(名前)」、「score(点数)」でした。(括弧内)の値がその順番で「student」テーブルに格納されます。


「id」はAUTO_INCREMENTが設定してあるので自動で連番が付きます。サンプルのSQLではnullとしていますが、0などでも正しい連番を入れてくれます。INSERTで有効な数値を入れてしまうとその数値が入ってしまい、次回からはその数値からの連番になります。基本的には、常にnull0を挿入して連番付けはMySQLに任せるようにします。


もう1行データを追加してみましょう。

		INSERT INTO student VALUES(null,'花子',85);

「id」は自動で加算され、「2」が入っているはずです。

データを抽出する

データを抽出して表示したい場合はSELECTを使います。

次のSQLは全ての行の全ての列を表示します。

		SELECT * FROM student;

MySQLでは、SELECT文中の*は「全ての列」という意味です。


全ての列ではなく、特定の列を指定したい場合はカンマで区切って列名を書きます。

		SELECT name,score FROM student;

WHEREを使うと条件を付けて行を特定することができます。

		SELECT * FROM student WHERE score > 80;

データを更新する

データを更新して修正したい場合は次のUPDATEというSQLを使います。

		UPDATE student SET name='健太郎';

このSQLを実行すると全ての行の名前が「健太郎」に更新されてしまいます。


行を特定して修正したい場合にはSELECTのときと同じように「WHERE」を使って条件を指定します。

		UPDATE student SET name='花子' WHERE id=2;

このSQLは「student」テーブルの「id」が「2」の行の「name」を「花子」に更新します。

データを削除する

データを削除したい場合はDELETEを使います。

UPDATEのときと同じようにWHEREで行を特定しないと全ての行が削除されます。

		DELETE FROM student WHERE name='健太郎';

このSQLは「student」テーブルの「name」が「健太郎」である行を削除します。

「健太郎」が複数存在した場合は「健太郎」全員が消されます。

テーブルを削除する

テーブルを削除するには次のSQLを使います。

		DROP TABLE student;
		DROP TABLE teacher;

次のようにカンマで区切ると一度に複数デーブルを消すことができます。

		DROP TABLE student,teacher;

データベースを削除する

最後にデータベースを削除するSQLを紹介して、今回の入門を終わりにします。

		DROP DATABESE school;

さいごに

この入門ページで大体の感覚がつかめたでしょうか?

もう少し詳しく学習するためによく使うSQL、図解で一覧に進みましょう。