データベースという言葉は聞いたことがあると思いますが、 システム設計に必要になることがありますので知っておいてください。この記事ではデータベースとはどういうものか、概要を理解することを目的としています。詳細については別途学習してください。
データベースとは
解説記事で一般的な知識を勉強してください。データベースの大御所である オラクルの解説記事 なんか良いかもしれません。もっと気楽な記事もたくさんあります。ここではキーワードを挙げておきます。
データベース | そもそもデータベースとは「データの塊」ですが、狭義にはDBMSのことを指す場合もあります。 |
DBMS | Database Management System はコンピュータ上でデータベースを管理・処理するためのシステムです。 |
SQL | データベースを操作するための言語。 |
DBMSの製品例としては商用では Oracle Database、SQL Server、Microsoft Access、オープンソースでは MySQL、PostgreSQL、SQLite などが有名です。
SQL
SQLの基本的な命令は理解しておきましょう。
- データの選択・表示
1 |
SELECT [表示する要素名] FROM [テーブル名]; |
オプションを追加すると条件に一致するデータだけを抽出したり、並べ替えたりできます。他の命令でも同様です。命令の最後は「;」で終わります。
- データの追加
1 |
INSERT INTO [データを追加したいテーブル名] (要素名A,要素名B) VALUES(要素Aに入れるデータ,要素Bに入れるデータ); |
- データの更新・変更
1 |
UPDATE [テーブル名] SET [更新処理]; |
- データの削除
1 |
DELETE FROM [テーブル名]; |
SQLite 演習
Windows WSL や Mac のターミナルなど Linux 環境があれば簡単に試すことができます。ターミナルで sqlite3 とコマンドを実行して動作しなければインストールしてください。
1 2 |
$ sudo apt-get install sqlite3 # ubuntuの場合 $ brew install sqlite3 # Macのターミナルの場合 |
実際に SQLite を使った例を追いかけてみます。
1 2 3 4 5 6 |
$ sqlite3 SQLite version 3.32.3 2020-06-18 14:16:19 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> |
sqlite3 コマンドを実行すると sqlite のプロンプトが表示されます。ここで実行するコマンドは、「.」で始まるのは sqlite3 に対するコマンド、その他の「;」で終わるのは SQL の命令文です。
1 |
sqlite> .open sample.db |
データベースをオープンしました。無ければ新たに作成されます。別のターミナルで実行しているディレクトリを観察すると sample.db というファイルが見えるはずです。SQLite の場合はデータベースの実体がこのようにひとつのファイルなので簡単に扱うことができます。
1 2 3 |
sqlite> create table addressbook(name,address); sqlite> .schema addressbook CREATE TABLE addressbook(name,address); |
SQL の CREATE 命令でデータベースの中に addressbook というテーブルを作成しました。データの項目は name と address の2つです。テーブルの構造がわからなくなった場合は .schema コマンドで確認できます。
1 2 3 |
sqlite> insert into addressbook (name, address) values ("山田太郎", "大阪市茶屋町"); sqlite> insert into addressbook (name, address) values ("田中一郎", "東京都新宿区"); sqlite> insert into addressbook (name, address) values ("鈴木花子", "名古屋市北区"); |
SQL の INSERT 命令でデータを3件作成しました。
1 2 3 4 5 6 7 8 9 10 11 12 |
sqlite> select name, address from addressbook; 山田太郎|大阪市茶屋町 田中一郎|東京都新宿区 鈴木花子|名古屋市北区 sqlite> select name from addressbook; 山田太郎 田中一郎 鈴木花子 sqlite> select * from addressbook; 山田太郎|大阪市茶屋町 田中一郎|東京都新宿区 鈴木花子|名古屋市北区 |
addressbook テーブルを対象に、SQL の SELECT 命令でデータを抽出しました。指定した項目だけが表示されます。「*」を指定すると全ての項目が表示されます。
1 2 3 4 |
sqlite> delete from addressbook where name = "鈴木花子"; sqlite> select * from addressbook; 山田太郎|大阪市茶屋町 田中一郎|東京都新宿区 |
SQL の DELETE 命令でテーブルから1件のデータを削除しました。
1 |
sqlite> drop table addressbook; |
SQL の DROP 命令でテーブルを削除できます。
1 2 |
sqlite> .quit $ |
.quit で終了しました。
Python
上の例では sqlite3 コマンドを使って SQLite を直接操作しましたが、このような処理をプログラムで記述すればシステム内でデータベースを使うことができます。Flask/Python で住所録を作る演習の中に Python のプログラムがあるので参考に見てください。
コメント