「ゼロからはじめるデータベース操作」を読んで --- SQL操作を整理

投稿者: MUTA-dev投稿日: 2025年08月27日更新日: 2025年10月06日
カテゴリ:技術
タグ:DBSQLPostgreSQL

本記事では、上記の SQL 第2版 ゼロからはじめるデータベース操作を読んで学んだ内容を記録していきます。

データベースってなに?

データベースとは、大量のデータを保存し、コンピュータから効率よくアクセスできるように加工したデータの集まりのことです。そして、データベースを管理するコンピュータシステムをDBMS(Database Management System) と呼びます。

DBMSにはいろいろな種類がある

DBMSにはいろいろな種類があっておおむね5種類に分類できます。

  • 階層型データベース
  • リレーショナルデータベース(RDB)
  • オブジェクト指向データベース(OODB)
  • XMLデータベース(XMLDB)
  • キー・バリュー型データストア(KVS)

現在最も使われているのはRDBで、SQL(Structured Query Language) という専用の言語を用いてデータを操作します。RDBは列と行からなる2次元の表形式になっています。このような構造のDBMSのことをRDBMSと呼びます。RDBMSの例としては、PostgreSQL, MySQL, Oracle Databaseなどがあります(MySQL, PostgreSQLは聞いたことある...)。

非リレーショナルなデータベースとしてはNoSQLがあります。KVSがこれに当たりますね。キー(Key)と値(Value)の組み合わせだけの単純なデータ構造をしているので非常に高速なデータの読み書きが可能です。例としてはRedisがあります。

本記事ではRDBMSについて取り上げます。

データベースのシステム構成

RDBMSを利用する際のシステム構成は以下のようなクライアント/サーバ型が一般的です。

graph LR
	A["(クライアント)"
	データベースを
	利用するプログラム]
	B["(サーバ)"
	*RDBMS*
	データベースを
	読み書きする
	プログラム]
	C["データベース
	(ハードディスクなどに
	保存してある)"]
	A == SQL文 ==> B
	B == 要求したデータ ==> A
	B <==> C

テーブルの構成

RDBは表形式(テーブル)になっています。テーブルの列はカラムと呼び、テーブルに保存する項目を表します。テーブルの行はレコードと呼び、1件のデータに相当します。RDBでは、行単位でデータを読み書きします。

標準SQLとは

SQLにはISOで定められた標準規格があり、それに準拠したSQLを標準SQLと呼びます。以前はRDBMSごとに、方言がありましたが最近は標準SQLサポートが進んできているので、この標準SQLを覚えれば様々なRDBMSでSQL文が書けるようになります。

SQLの書き方

SQLは、いくつかのキーワードと、テーブル名や列名などを組み合わせて1つの文として、操作の内容を記述します。SQL文は、RDBMSに与える命令は3つに分類されます。

  • DDL(Data Definition Language)

DDLはデータベースやテーブルに対して操作を行うことが出来ます。 ex) CREATE, DROP, ALTER

  • DML(Data Manipulation Language)

DMLは、テーブルの行に対して操作を行うことが出来ます。 ex) SELECT, INSERT , UPDATE, DELETE

  • DCL(Data Control Language)

DCLはデータベースに対して行った変更を確定したり取り消したりします。 ex) COMMIT, ROLLBACK, GRANT, REVOKE

これらのうち、実際に使用されるSQL文の90%はDMLらしいです。

テーブルの作成

テーブルを作成するためには、事前にデータベースを作成する必要があります。RDBMS上にデータベースを作成するにはCREATE DATABASE 文というSQL文を実行します。

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

データベースを作成したら、次にCREATE TABLE 文でテーブルをその中に作成します。

CREATE TABLE <テーブル名>
(<列名1> <データ型> <この列の制約>
 <列名2> <データ型> <この列の制約>
 <列名3> <データ型> <この列の制約>
 ・・・
 <このテーブルの制約1>, <このテーブルの制約2>, ・・・);

データ型の指定は必須ですが、制約は列ごとに必要に応じて指定することもできるし、最後にまとめて記述することもできます。データ型は主に、INTEGER型やCHAR型(固定長文字列)、VARCHAR型(可変長文字列)、DATE型があります。また、制約としては、NOT NULL(必ずデータが入っていなければならない、という制約)、PRIMARY KEY (主キー制約)などがあります。

テーブルの削除と変更

テーブルを削除するSQL文は以下のようにDROP TABLE文を書きます。

DROP TABLE <テーブル名>;

削除したテーブルとデータは復活できません。

テーブル定義の変更を行うには、ALTER TABLE文を使用します。 列を追加する場合は、次のようになります。

ALTER TABLE <テーブル名> ADD COLUMN <列の定義>;

反対に、列を削除する場合は、次のようになります。

ALTER TABLE <テーブル名> DROP COLUMN <列名>;

以下に例を示します。 追加

ALTER TABLE my_table ADD COLUMN my_column VARCHAR(100)

削除

ALTER TABLE my_table DROP COLUMN my_column

(続きを執筆中・・・)