多くのシステム開発では、データベースを利用してデータを格納し利用しています。
本記事では、データベース操作言語であるSQLの基礎知識とまず最初に覚えるべき3種類の命令文についてご紹介していきたいと思います。
SQLとは?
まずSQLに関する概要を簡単に説明した後に、3種類の命令文についてご紹介していきます。
データベース言語
SQLはデータベースを操作するための専用言語で、各種データベースで利用出来るように、ANSI(米国国家規格協会)とISO(国際標準化機構)により標準化が実施されています。
データベースには「Oracle」「Microsoft SQL Server」「MySQL」「PostgreSQL」などが存在し、ベンダーが提供する有料のものから、オープンソースとして公開されているものまで様々です。
各データベースで、データ格納用のテーブル作成やデータの格納、ユーザー権限の付与などを行うことを目的としてSQLが利用されます。
プログラミング言語との違い
データベース言語はプログラミング言語と良く混同されますが、厳密にはプログラミング言語には分類されません。
あくまでデータベースを操作するための言語であり、システム開発のプログラミング言語として利用することは出来ません。
プログラミング言語はコンピューターを操作する言語であり、データベース言語はデータベースを操作するための言語のため、役割が異なると認識しておきましょう。
3種類のSQL命令文を理解しよう
SQLを学ぶ上で理解しておくべき、3種類の命令文が存在します。
「データ定義言語(Data Definition Language)」「データ操作言語(Data Manipulation Language)」「データ制御言語(Data Control Language)」の3つです。
データ定義言語(Data Definition Language)
データ定義言語は「DDL」と略される命令文で、テーブルやインデックスといった定義情報も作成・削除変更を行うための命令文です。
- CREATE: テーブルなどの定義情報作成
- ALTER: テーブルなどの定義情報変更
- DROP: テーブルなどの定義情報削除
- TRUNCATE: テーブルデータの削除
データ操作言語(Data Manipulation Language)
データ操作言語は「DML」と略される命令文で、データベースにデータを挿入・検索・更新・削除を行うための命令文です。
- SELECT: データを検索
- INSERT: データを挿入
- UPDATE: データを更新
- DELETE: データを削除
データ制御言語(Data Control Language)
データ制御言語は「DCL」と略される命令文で、データベースへのアクセスを制御するための命令文です。
- GRANT: ユーザー権限付与
- REVOKE: ユーザー権限剥奪
- BEGIN: トランザクション開始
- COMMIT: トランザクション確定
- ROLLBACK: トランザクション取り消し
3種類のSQL命令文を実行してみよう
では上記3つのSQL命令文を実行して具体的に確認していきましょう。
DDLコマンドサンプル
まずはDDLコマンドを各種確認していきます。
テーブル作成
テーブル作成には「CREATE TABLE」文を利用します。
CREATE TABLE sample_table(id int, name varchar(30));
サンプルでは「sample_table」という名前のテーブルに「id(int型)」と「name(varchar型)」のカラムを作成しています。
テーブル定義変更
作成した「sample_table」の定義情報を変更するには「ALTER TABLE」文を利用します。
今回は「id」列に主キー制約を付与したいと思います。
ALTER TABLE sample_table ADD PRIMARY KEY(id);
サンプルでは、ALTER TABLEでテーブル名を指定し、「ADD PRIMARIY KEY」で引数に設定した「id」列に主キー制約を設定しました。
テーブル削除
テーブル削除には「DROP TABLE」文を利用します。
DROP TABLE sample_table;
DROP TABLEの後ろにテーブル名を記述すると、指定したテーブルがデータベースから削除されます。
テーブルデータ削除
テーブルデータの削除には「TRUNCATE」文を利用します。
TRUNCATE TABLE sample_table;
「TRUNCATE」文では指定したテーブル内の全てのデータが削除されます。
DMLコマンドサンプル
続いてDMLコマンドについても確認していきます。
データ追加
データ追加には「INSERT」文を利用します。
INSERT INTO sample_table VALUES(1, "テスト1");
「INSERT INTO」の後ろにテーブル名を指定し、「VALUES」の後ろにカラムの順番通り「値」をカンマ区切りで入力することでデータが追加されます。
データ検索
データ検索には「SELECT」文を利用します。
SELECT * FROM sample_table WHERE id = 1;
「SELECT」の後ろには、取得したいカラム名をカンマ区切りで入力するか、サンプルのように「*」を指定することで全てのカラムデータを取得することが出来ます。
「FROM」の後ろには、テーブル名を指定し、WHERE区の後ろで条件を指定します。
条件を指定しない場合には、テーブルに格納された全てのレコードが検索対象です。
データ更新
データ更新には「UPDATE」文を利用します。
UPDATE sample_table SET name = "テスト1変更" WHERE id = 1;
「UPDATE」の後ろにテーブル名を設定し、「SET」の後ろに変更したいカラム名と値、「WHERE」句で変更したいレコードの条件を記述します。
データ削除
データ削除には「DELETE」文を利用します。
DELETE FROM sample_table WHERE id = 1;
「DELETE FROM」の後ろにテーブル名を設定し、「WHERE」句で変更したいレコードの条件を記述します。
UPDATE句同様、WHERE句で条件を指定しなかった場合、テーブルの全レコードが削除対象となってしまうため、注意が必要です。
DCLコマンドサンプル
各種DCLコマンドについても同様に確認しておきましょう。
ユーザー権限付与
ユーザー権限付与には「GRANT」文を利用します。
GRANT CREATE ON *.* to user1@localhost;
「GRANT」の後ろに権限を付与したいコマンドを入力し、「ON」の後ろに権限付与レベルを指定、 「to」の後ろにユーザー名を指定することで権限の付与が可能です。
- グローバルレベル: *.*
- データベースレベル: データベース名.*
- テーブルレベル: データベース名.テーブル名
ユーザー権限剥奪
ユーザー権限剥奪には「REVOKE」文を利用します。
REVOKE CREATE ON *.* FROM user1@localhost;
GRANT文と基本的な構成は同じで、ユーザーを指定する「TO」の部分が「FROM」に変更となります。
トランザクション
トランザクション開始には「BEGIN」文を利用します。
BEGIN;
追加・更新など任意のSQL文を実行し、確定する場合は「COMMIT」、取り消す場合には「ROLLBACK」文を実行します。
COMMIT;
または
ROLLBACK;
さいごに: 3種類のSQL命令文をきちんと理解することが脱初心者への鍵
本記事では、SQLの基本として3種類の命令文に関する役割と実行方法についてご紹介してきました。
今回のサンプルで紹介した内容は、あくまで一部の機能であり、詳細な使い方については都度確認するようにしてください。
SQLには様々なコマンドが存在しますが、最初に覚えるべきは今回ご紹介した3種類の命令文です。
基本をしっかりと抑えた上で、少しずつ応用的なSQL文が作成出来るように学習していきましょう。
「WHERE」句で条件を記述しなかった場合、「SET」に記述した内容が全てのレコードに適用されるため、注意が必要です。