HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 ·...

52
HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・サーバ関連技術 第三回 データベース 株式会社クリーク・アンド・リバー社 認定講師 高井

Transcript of HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 ·...

Page 1: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

HTML5 Professional認定試験 Level.1 試験対策

ネットワーク・サーバ関連技術 第三回 データベース

株式会社クリーク・アンド・リバー社 認定講師

高井 歩

Page 2: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

ネットワーク・サーバ関連技術 第三回 データベース

• データベースとは

• データベースの種類と特徴

• データ操作言語、SQLの基本

Page 3: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

データベースとは

Page 4: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

データベースとはData Base Management Systemデータの蓄積 を管理する仕組み

略してDBMS

システム構成図などでは、 筒状のアイコンで表されます

Page 5: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

DBMSの役割• たくさんのデータを効率的に管理する

• データの整合性などを保証する

• データの処理を抽象的に扱う方法を提供する

Page 6: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

問題1DBMSについての説明で正しくないものを選択しなさい。

A) データを効率的に管理するための仕組みである

B) 検索するためのプログラムを作成する必要がある

C) 検索するためのプログラムは作成しなくてもよい

D) データの整合性が確保される

Page 7: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

データベースの種類

Page 8: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

システム構成による分類• クライアント/サーバモデル

• 実際の処理を行うプログラムと操作を行うプログラムが異なっている

• 同時に複数の処理を行う事が出来る

• 処理を行うコンピュータと操作をするコンピュータを分けられる

• スタンドアロンモデル

• 一つのプログラムで操作と処理を行う

• 処理をするコンピュータと操作をするコンピュータは同じ

Page 9: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

データの管理方法による分類• リレーショナルデータベース(RDBMS)

• 表の形で管理する

• 関係データベースとも呼ばれる。

• 現在主流の形式

• キーバリューストア(KVS)

• キーと値(バイナリデータ、XMLやJSONなど)で管理する

• 他のデータとの関係性の低い、個々が独立したデータの管理に向く

Page 10: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

代表的なDBMS製品製品名 システム構成 管理方法

PostgreSQL クライアント/サーバ リレーショナル

Oracle MySQL クライアント/サーバ リレーショナル

Oracle Oracle クライアント/サーバ リレーショナル

Microsoft SQLServer クライアント/サーバ リレーショナル

Microsoft Access スタンドアロン リレーショナル

SQLite スタンドアロン リレーショナル

Amazon DynamoDB クライアント/サーバ キーバリュー

Page 11: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

問題2MySQL,PostgreSQLに共通する特徴の組み合わせで正しいものを選べ

A. クライアント/サーバ、キーバリューストア

B. スタンドアロン、リレーショナル

C. クライアント/サーバ、リレーショナル

D. スタンドアロン、キーバリューストア

Page 12: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

リレーショナルデータベース

• DBMSのうち、関係代数を元に作られたものをリレーショナルデータベース(RDBMS)と言う

• データは表の形式で扱われる

Page 13: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

リレーショナルデータベースのデータ構造member (会員テーブル)

id name sex age type

1 Suzuki M 75 1

2 Ohnuma F 30 2

3 Nojima M 64 3

4 Shimada M 47 2

5 Komine F 63 1

カラム(列) レコード(行)

テーブル(表)カラム名 (列名)

Page 14: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

キーmember (会員テーブル)

id name sex age type

1 Suzuki M 75 1

2 Ohnuma F 30 2

3 Nojima M 64 3

4 Shimada M 47 2

5 Komine F 63 1

候補キー

候補キー

かつ 主キー

レコード(行)を特定できるカラム(列)のことを候補キー、 候補キーの中でも特に選ばれたものを主キーと呼ぶ

Page 15: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

問題3RDBMSについての説明で正しくないものを選択しなさい。

A) データは表の形で扱われる

B) 表の列をレコード、行をカラムともいう

C) レコードを特定できるカラムを候補キーという

D) 主キーは表ごとにひとつまでしか指定できない

Page 16: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

SQL

Page 17: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

SQLとは(1)• リレーショナルデータベースを操作するための「問い合わせ言語」

• 一般的なプログラム言語と違い、結果を得るための条件だけを記述する

• ISOで規格化されているため、RDBMS製品間である程度互換性がある

Page 18: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

SQLとは(2)SQLで出来ること(コマンド)は大きく以下の三種類に分類できます。

• DDL データ定義言語 Data Definition Language テーブル等の作成、変更、削除を行なう

• DML データ操作言語 Data Manipulation Languageデータの追加、検索、変更、削除を行なう

• DCL データ制御言語 Data Control Languageデータ操作をする際に、データの整合性を保つための仕組みを操作する

Page 19: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

SQLiteでSQLを学ぶ• この資料の最後にスタンドアロンのRDBMSであるSQLiteを使用して実際にSQLを使用するための解説を載せています。

• この後出てくる例は実際にSQLiteで試せます。

• ファイルをDLして実行するだけなので、是非実際にSQLを動かしてみて下さい。

Page 20: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

例題用データベースmember (会員テーブル)

id name sex age type

1 Suzuki M 75 1

2 Ohnuma F 30 2

3 Nojima M 64 3

4 Shimada M 47 2

5 Komine F 63 1

member_type (会員種別テーブル)id name

1 無料会員2 有料会員3 特別会員

Page 21: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

データベースの作成まずはデータベースを作成します。

データベースは目安として業務やシステムの大きなまとまり毎に一つ作成することになります。

CREATE DATABASE データベース名;

※SQLiteでは同時に一つしかデータベースを扱えないため、CREATE DATABASEは使用しません。

Page 22: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

テーブルの作成(1)CREATE TABLE member ( id INTEGER PRIMARY KEY, name VARCHAR(100), sex CHAR(1), age INTEGER, type INTEGER);

member (会員テーブル)id name sex age type

CREATE TABLE member (id INTEGER PRIMARY KEY,name VARCHAR(100),sex CHAR(1),age INTEGER,type INTEGER);※SQLiteへのコピペ用

Page 23: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

テーブルの作成(2)CREATE TABLE member ( id INTEGER PRIMARY KEY, name VARCHAR(100), sex CHAR(1), age INTEGER, type INTEGER);

member (会員テーブル)id name sex age type

CREATE TABLE member (id INTEGER PRIMARY KEY,name VARCHAR(100),sex CHAR(1),age INTEGER,type INTEGER);※SQLiteへのコピペ用

カラム名

データ型

主キーの指定

最大文字数

Page 24: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

テーブルの作成(2)

CREATE TABLE member_type ( id INTEGER PRIMARY KEY, name VARCHAR(20) );

member_type (会員種別テーブル)id name

CREATE TABLE member_type (id INTEGER PRIMARY KEY,name VARCHAR(20));※SQLiteへのコピペ用

Page 25: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードを追加する(1)会員テーブルにレコードを追加します。

• INSERT INTO member (id,name,sex,age,type) VALUES (1,'Suzuki','M',75,1);

• INSERT INTO member VALUES (2,'Ohnuma','M',30,2);

INSERT INTO member (id,name,sex,age,type) VALUES (1,'Suzuki','M',75,1);※SQLiteへのコピペ用INSERT INTO member VALUES (2,'Ohnuma','M',30,2);

Page 26: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードを追加する(2)会員テーブルにレコードを追加します。

• INSERT INTO member VALUES (3,'Nojima','M',64,3),(4,'Shimada','F',47,2),(5,'Komine','F',63,1);

INSERT INTO member VALUES (3,'Nojima','M',64,3),(4,'Shimada','F',47,2),(5,'Komine','F',63,1);※SQLiteへのコピペ用

Page 27: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードを追加する(3)会員種別テーブルにレコードを追加します。

• INSERT INTO member_type VALUES (1,'無料会員'),(2,'有料会員'),(3,'特別会員');

INSERT INTO member_type VALUES (1,'無料会員'),(2,'有料会員'),(3,'特別会員');※SQLiteへのコピペ用

Page 28: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードを選択する(1)全てのレコード、全てのカラムを選択する

SELECT * FROM member;

SELECT * FROM member;※SQLiteへのコピペ用

Page 29: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードを選択する(2)名前と年齢だけを選択する

SELECT name,age FROM member;

SELECT name,age FROM member;※SQLiteへのコピペ用

Page 30: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードを選択する(3)63歳より年上のレコードだけを選択する

SELECT * FROM member WHERE age > 63;

SELECT * FROM member WHERE age > 63;※SQLiteへのコピペ用

Page 31: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードを選択する(4)演算子 使用例 説明> age > 40 ageが40より大きい< age < 40 ageが40未満>= age >= 40 ageが40以上<= age <= 40 ageが40以下= sex = 'F' sexが'F'に等しい<> sex <> 'F' sexが'F'で等しくない

IS NULL type IS NULL typeが空(NULL)IS NOT NULL type IS NOT NULL typeが空(NULL)ではない

LIKE name LIKE '%a' nameの末尾が'a'NOT LIKE name NOT LIKE '%a' nameの末尾が'a'ではない

※LIKE,NOT LIKEの値の%はワイルドカードとして どのような文字列でも該当するものとして扱われます。

Page 32: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードを選択する(5)63歳以上の男性のレコードだけを選択する

SELECT * FROM member WHERE age >= 63 AND sex = 'M';

SELECT * FROM member WHERE age >= 63 AND sex = 'M';※SQLiteへのコピペ用

Page 33: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

ソート(1)年齢の昇順で並べ変える場合は次のように指定します。SELECT * FROM member ORDER BY age ASC;

SELECT * FROM member ORDER BY age ASC;※SQLiteへのコピペ用

Page 34: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

ソート(2)年齢の降順で並べ変える場合は次のように指定します。SELECT * FROM member ORDER BY age DESC;

SELECT * FROM member ORDER BY age DESC;※SQLiteへのコピペ用

Page 35: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

テーブルの結合(1)欲しい結果

id name sex age name

1 Suzuki M 75 無料会員

2 Ohnuma F 30 有料会員

3 Nojima M 64 特別会員

4 Shimada M 47 有料会員

5 Komine F 63 無料会員

Page 36: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

テーブルの結合(2)直積を求める

SELECT * FROM member,member_type;

SELECT * FROM member,member_type;※SQLiteへのコピペ用

Page 37: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

テーブルの結合(3)内部結合を求める

SELECT * FROM member JOIN member_type ON member.type = member_type.id;

SELECT * FROM member JOIN member_type ON member.type = member_type.id;※SQLiteへのコピペ用

Page 38: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

テーブルの結合(4)カラムを指定する

SELECT member.id,member.name,sex,age,member_type.name

FROM member JOIN member_type ON member.type = member_type.id;

SELECT member.id,member.name,sex,age,member_type.name FROM member JOIN member_type ON member.type = member_type.id;

※SQLiteへのコピペ用

Page 39: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

テーブルの結合(4)カラムを指定する

SELECT member.id,member.name,sex,age,member_type.name

FROM member JOIN member_type ON member.type = member_type.id;

SELECT member.id,member.name,sex,age,member_type.name FROM member JOIN member_type ON member.type = member_type.id;

※SQLiteへのコピペ用

Page 40: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

問題4以下のSQLの結果は次のいずれになるかSELECT name FROM member WHERE type = 2;

member (会員テーブル)id name sex age type1 Suzuki M 75 12 Ohnuma F 30 23 Nojima M 64 34 Shimada M 47 25 Komine F 63 1

Aid name sex age type2 Ohnuma F 30 24 Shimada M 47 2

BnameOhnumaShimada

Page 41: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードの更新(1)全てのレコードを更新する

UPDATE member SET type = 1;

UPDATE member SET type = 1;

※SQLiteへのコピペ用SELECT * FROM member;

Page 42: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードの更新(2)idが3のレコードを更新する

UPDATE member SET type = 3 WHERE id = 3;

UPDATE member SET type = 3 WHERE id = 3;※SQLiteへのコピペ用SELECT * FROM member;

Page 43: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードの更新(3)idが2か4のレコードを更新する

UPDATE member SET type = 2 WHERE id = 2 OR id = 4;

※SQLiteへのコピペ用UPDATE member SET type = 2 WHERE id = 2 OR id = 4;SELECT * FROM member;

Page 44: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

レコードの削除idが4のレコードを削除する

DELETE FROM member WHERE id = 4;

DELETE FROM member WHERE id = 4;

※SQLiteへのコピペ用SELECT * FROM member;

Page 45: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

質疑応答

Page 46: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

授業終了 お疲れさまでした

Page 47: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

付録 SQLite

Page 48: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

SQLite SQLiteは、PostgreSQLやMySQL等のクライアント/サーバ型のデータベース管理システムとは異なり、スタンドアロン型のデータベース管理システムです。  機能が限られている分、アプリケーションのサイズが小さく、手軽に使用することができます。  機能が限られているといっても、SQLの基本を学ぶには十分な機能を持っています。

Page 49: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

SQLiteのインストールオフィシャルサイトのダウンロードページ ( http://www.sqlite.org/download.html )から、使用しているOS用のsqlite-shellをダウンロードして展開します。 展開するとsqlite3(Windows版はsqlite3.exe)というファイルが作成されます。

アンインストールする場合には、このsqlite3というファイルを削除するだけです。

Page 50: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

SQLiteを起動するsqlite3(sqlite3.exe)をダブルクリックで起動すると、以下のようなウィンドウが開きます。 (OSや環境によって細部は異なります)

Page 51: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

表示の設定を変更する

.header ON

.mode column

上の2行を入力し、SELECTの結果を表示する際にカラム名を表示し、見やすいように表示形式を変更します。

Page 52: HTML5 Professional認定試験 Level.1 試験対策 ネットワーク・ … · 2014-11-28 · データの管理方法による分類 •リレーショナルデータベース(rdbms)

SQLiteを終了するSQLiteを終了する場合は、

• ウィンドウの閉じるボタンをクリックする(この場合は閉じても良いか聞かれます)

• sqlite> と表示されている状態で、”.exit”と入力します。”[プロセスが完了しました]”と表示されたらそのままウィンドウを閉じることができます。