「ゼロからはじめるデータベース操作」を読んで --- SQL操作を整理
本記事では、上記の 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
(続きを執筆中・・・)