やりながら学べる基本の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はデフォルト値が表示されます。KeyとExtraはキー設定や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で有効な数値を入れてしまうとその数値が入ってしまい、次回からはその数値からの連番になります。基本的には、常にnullか0を挿入して連番付けは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、図解で一覧に進みましょう。