支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

データベースは、情報システムに欠かすことのできない存在です。 データベースに指示を送り操作するものが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》

【RDBMSの主な機能】
機能 内容
SQLの実行 データの検索・並べ替え・登録・更新・削除を行う
アクセス権設定 ユーザー毎にアクセス権を設定する
データの完全性 不正なデータによる登録や更新を防ぐ
トランザクション処理 複数のユーザーが同時に同一のデータを参照・更新した場合に、
データの不整合を防ぐ
障害からの復旧 障害が起こった場合に、復旧を行う


【代表的なRDBMS】
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の基本ルール》

  • 記述形式に関するルール
  • 1)SQL文の途中で改行できる
    2)SQL文の先頭や途中に半角の空白を入れることができる
    3)末尾にセミコロン(;)を付けてSQL文の終了を明示することがある
    SELECT 商品名 , 金額 
      FROM 商品一覧 
     WHERE 金額 > 4000;
    
  • コメントの書き方は、次の2種類
  • 1)--コメント(行末)
    2)/*コメント*/
    --作成日:2020年10月21日
    /*金額 > 4000 の「商品名」と「金額」を「商品一覧」テーブル
     から取得する*/
    SELECT 商品名 , 金額 
      FROM 商品一覧 
     WHERE 金額 > 4000;
    
  • 予約語に関するルール
  • 1)命令に使う単語(SELECT,WHERE 等)は予約語である
    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)
  • データベースを操作(検索・挿入・更新・削除)するために使われます。
    検索・挿入・更新・削除を4大命令文と言います。 4大命令文は次回ご紹介します。
    【DMLの命令文】
    命令文 説明
    SELECT テーブルを検索して目的のデータを取得する
    INSERT テーブルに新しいデータを挿入する
    UPDATE テーブルに既にあるデータを更新する
    DELETE テーブルに既にある行を削除する
    ※ある特定の列だけ削除はできない


  • データ定義言語(DDL:Data Definition Language)
  • データベース内のオブジェクト(データベース、テーブル 等)を操作(作成・削除)するために使われます。
    【DDLの命令文】
    命令文 説明
    CREATE 新しいオブジェクトを作成する
    DROP 作成したオブジェクトを削除する
    ALTER 作成したオブジェクトの内容を変更する
    TRUNCATE テーブル内の全ての行を削除する


  • トランザクション制御言語(TCL:Transaction Control Language)
  • トランザクションを制御(開始、終了)するために使われます。
    【TCLの命令文】
    命令文 説明
    BEGIN トランザクション処理を開始する
    COMMIT トランザクション処理中の変更を確定して終了する
    ROLLBACK トランザクション処理中の変更を取り消して終了する
    SAVEPOINT ロールバックするポイントを作成する
    SET TRANSACTION トランザクションの設定を行う


  • データ制御言語(DCL:Data Control Language)
  • ユーザーに対する権限(データベースへのアクセス権)を設定するために使われます。
    データベース管理者のみが使用します。
    【TCLの命令文】
    命令文 説明
    GRANT 権限を付与する
    REVOKE 権限を剥奪する


まとめ

SQLの概要」についてご紹介しました。
お役に立てると幸いです。