SQL1
はじめに
データベースは、情報システムに欠かすことのできない存在です。 データベースに指示を送り操作するものがSQLです。 このSQLについて2回にわたってご紹介します。
第1回目となる今回は、以下の内容をご紹介します。
(1)データベース
1-1 データベース概要
データベース(DB:Database)とは、ある特定のテーマ(氏名、電話番号、商品名 等)に沿ったデータを集めたものです。データが一つに集められているので、効率的な管理が可能になり使いやすくなります。
データベースの例として、次のようなものがあります。
- 電話帳
- 会員名簿
- 商品一覧
特にITにおけるデータベースは、電子的媒体にファイル形式などで保存・蓄積したものといえます。
データベースの種類として、「ツリー型データベース」、「ネットワーク型データベース」、「リレーショナル・データベース」などがあります。
現在の主流は、表形式でデータを管理する「リレーショナル・データベース(RDB:Relational Database)」です。
1-2 データベース管理システム(DBMS)
SQLは、データベースを操作する際に使用する言語ですが、データベースに直接送るものではありません。SQLを送る相手は、データベース管理システム(DBMS:Database Manegement System)と呼ばれるソフトウェアです。
このDBMSがSQLの指示を受け取って、データベースを操作してくれます。 また、DBMSのうち、リレーショナル・データベースを管理するものを、RDBMS(Relational Database Manegement System)といいます。
RDBMSは、ソフトウェア商品として有償で販売されているものやOSS(オープンソースソフトウェア)として無償で公開されているます。
RDBMSの種類は様々ですが、基本的な機能は同じです。ただし、製品によって使用できるSQLの命令文や記述方法に違いがあります。
《RDBMSの主な機能・代表的なRDBMS》
機能 | 内容 |
SQLの実行 | データの検索・並べ替え・登録・更新・削除を行う |
アクセス権設定 | ユーザー毎にアクセス権を設定する |
データの完全性 | 不正なデータによる登録や更新を防ぐ |
トランザクション処理 | 複数のユーザーが同時に同一のデータを参照・更新した場合に、 データの不整合を防ぐ |
障害からの復旧 | 障害が起こった場合に、復旧を行う |
RDBMS | 有償 / OSS |
提供元 |
Oracle Database | 有償 | Oracle |
DB2 | 有償 | IBM |
SQL Server | 有償 | Microsoft |
MySQL | OSS | Oracle |
PostgreSQL | OSS | PostgreSQL Global Development Group |
(2)SQL
2-1 基本ルール
SQLの基本ルールをご紹介します。 この基本ルールは、どのRDBMSでも共通します。《SQLの基本ルール》
- 記述形式に関するルール
- コメントの書き方は、次の2種類
- 予約語に関するルール
2)SQL文の先頭や途中に半角の空白を入れることができる
3)末尾にセミコロン(;)を付けてSQL文の終了を明示することがある
SELECT 商品名 , 金額
FROM 商品一覧
WHERE 金額 > 4000;
2)/*コメント*/
--作成日:2020年10月21日
/*金額 > 4000 の「商品名」と「金額」を「商品一覧」テーブル
から取得する*/
SELECT 商品名 , 金額
FROM 商品一覧
WHERE 金額 > 4000;
2)予約語の記述は、大文字・小文字の区別はない
3)テーブル名や列名に予約語は使用できない
2-2 データ型
SQL文に書かれたデータ自体をリテラルと呼びます。 シングルクォーテーション「'」で囲まれたリテラルは「文字列」もしくは「日付」として扱われ、「'」で囲まれていないリテラルは「数値」として扱われます。尚、「日付」として扱われるためには、'2020-10-21'のように一定の形式で記述する必要があります。
つまり、「123」と「'123'」で意味が異なるということです。前者が数値の123であるのに対して、後者は文字列の123です。
「123」は数値なので計算に使えますが、「'123'」は文字列なので計算に使えません。
列名 | 備考 |
商品コード | 'XX001'のような5桁の商品コード |
商品名 | 'ABC参考書'など |
金額 | 商品の代金 |
登録日 | 'YYYY-MM-DD'で登録 |
INSERT INTO商品一覧
VALUES ('XXX123' , '本' , '2000' , '2020-10-21')
/*商品一覧テーブルに追加→VALUES (商品コード , 商品名 , 金額 , 登録日)*/
上記のSQL文は、本来数値を入れなければいけない金額に対して文字列の「'2000'」を格納してしまっています。
このようなミスを防ぐために、列毎にデータ型を定めることになっています。ただし、利用可能なデータ型(型の名称、取扱可能桁数の範囲、フォーマット形式 等)は、DBMSによって異なるので注意が必要です。
データ型 | データ種別 |
INTEGER型 | 整数 |
DECIMAL型 FLOAT型 REAL型 |
小数 |
CHAR型 | 文字列(固定長、バイト単位) |
VARCHAR型 | 文字列(可変長、バイト単位) |
DATE型 | 日付 |
TIME型 | 時刻 |
先程の商品一覧テーブルにデータ型を追加すると次のように表現できます。 CHAR型やVARCHAR型は、CHAR(10)やVARCHAR(50)のようにカッコ()内に格納できる最大バイト数を指定します。
列名 | データ型 | 備考 |
商品コード | CHAR(5) (固定長文字列 最大5バイト) |
'XX001'のような5桁の商品コード |
商品名 | VARCHAR(200) (可変長文字列 最大200バイト) |
'ABC参考書'など |
金額 | INTEGER | 商品の代金 |
登録日 | DATE | 'YYYY-MM-DD'で登録 |
2-3 SQLの種類
SQLは、次の4種類に分けることができます。《SQLの種類》
- データ操作言語(DML:Data Manipulation Language) データベースを操作(検索・挿入・更新・削除)するために使われます。
- データ定義言語(DDL:Data Definition Language) データベース内のオブジェクト(データベース、テーブル 等)を操作(作成・削除)するために使われます。
- トランザクション制御言語(TCL:Transaction Control Language) トランザクションを制御(開始、終了)するために使われます。
- データ制御言語(DCL:Data Control Language) ユーザーに対する権限(データベースへのアクセス権)を設定するために使われます。
検索・挿入・更新・削除を4大命令文と言います。 4大命令文は次回ご紹介します。
命令文 | 説明 |
SELECT | テーブルを検索して目的のデータを取得する |
INSERT | テーブルに新しいデータを挿入する |
UPDATE | テーブルに既にあるデータを更新する |
DELETE | テーブルに既にある行を削除する ※ある特定の列だけ削除はできない |
命令文 | 説明 |
CREATE | 新しいオブジェクトを作成する |
DROP | 作成したオブジェクトを削除する |
ALTER | 作成したオブジェクトの内容を変更する |
TRUNCATE | テーブル内の全ての行を削除する |
命令文 | 説明 |
BEGIN | トランザクション処理を開始する |
COMMIT | トランザクション処理中の変更を確定して終了する |
ROLLBACK | トランザクション処理中の変更を取り消して終了する |
SAVEPOINT | ロールバックするポイントを作成する |
SET TRANSACTION | トランザクションの設定を行う |
データベース管理者のみが使用します。
命令文 | 説明 |
GRANT | 権限を付与する |
REVOKE | 権限を剥奪する |
まとめ
「SQLの概要」についてご紹介しました。
お役に立てると幸いです。