データベースとSQL

データベースの構成

RDBMS(Relational DataBase Management System)のシステム構成は、一般的にクライアント/サーバ型になっている。データベースに読み書きにするために、クライアントはサーバに対してSQL文を送信する。

image.png

項目 説明
クライアント データベースを利用するプログラム
サーバ データベースを読み書きするプログラム
データベース ハードディスクなどに保存されているデータ
SQL 「どんなデータが欲しいか」や「どこのデータを書き換えて欲しい」などのSQLで書いた文

テーブルの構成

RDBMSでは、2次元の表でデータを管理していて、この表のことをテーブルと呼び、下記のような単語が使われている。 image.png

RDBMSでは、レコード単位でデータを読み書きする。

SQLの概要

SQL(Structured Query Language)はデータベースを操作するために開発された言語で、最近はISOによって定められた標準規格に準拠した標準SQLのサポートが進んでいる。ただ、RDMBSごとに微妙な差異がある部分もあるため、一部は方言に則った書き方をする必要がある。

SQLの文は大きく3種類に分類される。

  • DDL(Data Definition Language):データベースやテーブルなどの作成や削除を行う。DDLに分類される命令は次の通り。

    命令名 説明
    CREATE データベースやテーブルなどの作成
    DROP データベースやテーブルなどの削除
    ALTER データベースやテーブルなどの構成変更
  • DML(Data Manipulation Language):テーブルの行を検索、変更を行う。DMLに分類される命令は次の通り。

    命令名 説明
    SELECT テーブルからレコードを検索
    INSERT テーブルに新規レコードを登録
    UPDATE テーブルのレコードを更新
    DELETE テーブルのレコードを削除
  • DCL(Data Control Language):データベースに対して行なった変更を確定したり取り消したり、ユーザの権限変更なども行う。DCLに分類される命令は次の通り。

    命令名 説明
    COMMIT データベースに対して行なった変更の確定
    ROLLBACK データベースに対して行なった変更の取り消し
    GRANT ユーザに操作権限を与える
    REVOKE ユーザから操作権限を奪う

何はともあれ、テーブルを作ってみる。

docker exec -it postgres bash # postgreコンテナに入る
psql -U postgres -d shop # postgreを起動してshopデータベースに接続する

下記コマンドを実行してテーブルを作る。

CREATE TABLE Shohin
(shohin_id CHAR(4) NOT NULL,
shohin_mei VARCHAR(100) NOT NULL,
shohin_bunrui VARCHAR(32) NOT NULL,
hanbai_tanka INTEGER  ,
shiire_tanka INTEGER  ,
torokubi DATE   ,
PRIMARY KEY (shohin_id));

作ったテーブルの構成を確認する。

\d shohin;
                          Table "public.shohin"
    Column     |          Type          | Collation | Nullable | Default 
---------------+------------------------+-----------+----------+---------
 shohin_id     | character(4)           |           | not null | 
 shohin_mei    | character varying(100) |           | not null | 
 shohin_bunrui | character varying(32)  |           | not null | 
 hanbai_tanka  | integer                |           |          | 
 shiire_tanka  | integer                |           |          | 
 torokubi      | date                   |           |          | 
Indexes:
    "shohin_pkey" PRIMARY KEY, btree (shohin_id)

テーブルにレコードを登録する。

BEGIN TRANSACTION;
INSERT INTO shohin VALUES ('0001', 'Tシャツ','衣服',1000,500,'2009-09-20');
COMMIT;

テーブルデータを確認する。

select * from shohin;
 shohin_id | shohin_mei | shohin_bunrui | hanbai_tanka | shiire_tanka |  torokubi  
-----------+------------+---------------+--------------+--------------+------------
 0001      | Tシャツ    | 衣服          |         1000 |          500 | 2009-09-20
(1 row)

参考