SQLとは

まず初めに、SQLとはどのようなものかについてご紹介します。

SQLはデータベースを操作する際に用いる言語のことで、プログラミング言語とは異なります。

データベースの中には、数千〜数百万件もの膨大なデータが格納されていますが、SQLを使用する

ことにより新たにデータを挿入したり、既存のデータを検索したりといった作業を効率よく行う

ことができます。

以上のことを踏まえて、更にSQLについて深く掘り下げていきたいと思います。

SQLの種類

こちらでは、実際にSQLを使用するにあたって覚えておきたい3種類の言語についてご紹介します。

データベースやテーブルに対して、作成や削除・設定の変更をしたりする場合に使用されるSQL命令文。

CREATE / DROP / ALTER / TRUNCATE が該当する。

データベースに対して、データを追加・更新・削除などを行うために使用されるSQL命令文。

SELECT / INSERT / UPDATE / DELETE が該当する。

上記で挙げたDDLやDMLの利用を制御するためのSQL命令文。

GRANT / REVOGE が該当する。

これら3種類の言語は、SQLを用いてデータベースを操作する際に必須となる知識なので、

理解を深めておく必要があります。

また上記の中で紹介したSQL文に関しては、順を追ってご紹介します。

データ定義言語(DDL)について

2.SQLの種類で紹介した、CREATEDROPALTERTRUNCATEについて説明します。

新たにデータベースやテーブルを作成する際に使用する。

◯データベースの作成

CREATE DATABASE <<データベース名>>;

◯テーブルの作成

CREATE TABLE <<テーブル名>> (
   [カラム名1] [データ型] NOT NULL PRIMARY KEY,
   [カラム名2] [データ型] [NOT NULL or NULL],
                  :
                  :
);

こちらに登場するデータ型に関してはこちらPRIMARY KEYに関してはこちらへ。

既存のデータベースやテーブルの削除を行う際に使用する。

◯データベースの削除

DROP DATABASE <<データベース名>>;

◯テーブルの削除

DROP TABLE <<テーブル名>>;

既存のデータベースやテーブルに対して、変更を行う際に使用する。

◯データベースの変更

ALTER DATABASE <<データベース名>>;

◯テーブルに新たなカラムを追加する

ALTER TABLE <<テーブル名>> ADD
   [カラム名1] [データ型] [NOT NULL or NULL],
   [カラム名2] [データ型] [NOT NULL or NULL];  

◯テーブル名とカラム名の定義を変更する

ALTER TABLE <<テーブル名>> 
ALTER COLUMN [変更するカラム名] [データ型];

◯テーブル内のカラムを削除する

ALTER TABLE <<テーブル名>>
DROP COLUMN [カラム名]; 

テーブル内のデータを全て削除する際に使用する。(但し、テーブルの設定などは残る。)

TRUNCATE TABLE <<テーブル名>>;

似た役割を持つDROPとDELETEとの違いに関しては、こちらへ。

データ操作言語(DML)について

2.SQLの種類で紹介した、SELECTINSERTUPDATEDELETEについて説明します。

テーブル内のデータを抽出・検索する際に使用する。

その際、FROM句を使用して、データを取り出したいテーブルを指定する。

◯基本となる形

SELECT *
FROM <<テーブル名>>;

*(アスタリスク)・・・テーブル内の全項目を指定する

※指定した項目のみ抽出する場合には、*の代わりにカラム名を指定する

◯複数項目を抽出する

SELECT [カラム名1], [カラム名2], ...
FROM <<テーブル名>>;

また上記の構文に加え、より詳細な条件を追加してデータを抽出する方法もあります。

それを紹介しているページは、こちらへ。

テーブル内にデータを挿入する際に使用する。

INSERT INTO <<テーブル名>>
(カラム名1, カラム名2, ...) VALUES (データ1, データ2, ...);

テーブルに登録されている値を更新する際に使用する。

データを更新する際には、WHERE句を使用しなければ全ての行のデータが更新されてしまうので、

絶対に忘れてはならない。

UPDATE <<テーブル名>>
SET [更新するカラム名] = [更新するデータ]
WHERE [更新する条件];

また、一度に複数列のデータを更新する場合には、更新内容を「,(カンマ)」で区切って列挙する。

UPDATE <<テーブル名>>
SET [更新するカラム名1] = [更新するデータ1], [更新するカラム名2] = [更新するデータ2]
WHERE [更新する条件];

テーブルに登録されているデータを削除する際に使用する。

DELETE文を使用する際には、WHERE句を使用しなければ全ての行が削除されてしまうため、

絶対に忘れてはならない。

また、ここでいう「データ」とは1行全てを指します。

DELETE 
FROM <<テーブル名>>
WHERE [条件];

データ制御言語(DCL)について

2.SQLの種類で紹介した、GRANTREVOGEについて説明します。

1人または複数のユーザーに対して、オブジェクト(テーブルやビューなど)に関する権限を

付与する。

GRANT [権限名] ON <<オブジェクト名>>
TO [ユーザー名]
[WITH GRANT OPTION];

権限名は以下を使用して指定する。(カンマ区切りで複数選択が可能)

・SELECT : 参照

・INSERT : 行の追加

・DELETE : 行の削除

・UPDATE : データの更新(※UPDATE [カラム名] : 特定列のデータ更新)

・ALL PRIVILEGES : 上記全て

オブジェクト名は、テーブル名またはビュー名を指定する。

ユーザー名は、該当権限を与えるユーザーを指し、ユーザー名ロール名PUBLIC

(全てのユーザー)を指定する。

※省略可能ではあるが、該当権限自体を他のユーザーに権限ごと付与する場合は

WITH GRANT OPTIONを指定する。

1人または複数のユーザーに対して、オブジェクトに関するアクセス権限を取り消す。

REVOGE [権限名] ON <<オブジェクト名>>
FROM [ユーザー名];