29
データベース 第2回 SQL概要 1 2015年4⽉16⽇(⽊) 7・8時限 担当:奥 健太

データベース02 - SQL概要

Embed Size (px)

Citation preview

Page 1: データベース02 - SQL概要

データベース第2回

SQL概要

1

2015年4⽉16⽇(⽊) 7・8時限担当:奥 健太

Page 2: データベース02 - SQL概要

SQL編

回 ⽇付 テーマ2 4/16 SQL概要3 4/23 SQL(CREATE, INSERT, DELETE, UPDATEなど)4 4/30 SQL(SELECT:基本)5 5/7 SQL(SELECT:結合,副問合せ)6 5/14 SQL(VIEW, ALTER, GRANTなど)7 5/21 SQL復習,中間試験(SQL)

2

Page 3: データベース02 - SQL概要

データベースを操作したい

3

番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県/岐⾩県64⼋ヶ岳 2,899⻑野県/⼭梨県72富⼠⼭ 3,776⼭梨県/静岡県87⽩⼭ 2,702岐⾩県/⽯川県92⼤⼭ 1,729⿃取県97阿蘇⼭ 1,592熊本県

⽇本百名⼭

富⼭県にある⼭は?標⾼3,000m以上の⼭は?⼭の情報を追加するには?

Page 4: データベース02 - SQL概要

本⽇の講義で学ぶことRDBMSの⼀つであるMySQLを利⽤できるようにする

SQLの実践を通して,以下を学ぶ データベースの構造と⽤語 SQLの利⽤⽅法 SQLの特徴 SQLの基本形式 SQLの利⽤形態 SQLの機能

Page 5: データベース02 - SQL概要

MySQLとは

5

オープンソースで公開されている関係データベース管理システム(RDBMS)の⼀つ

いつでもクライアントプログラムからの問合せに応答できるようにデータベースエンジンとしてシステムに常駐

mysqld

クライアントプログラム

結果データベース

エンジン

問合せ(クエリ)

UNIX系OS:デーモン

Windows:サービス

Page 6: データベース02 - SQL概要

関係データベース管理システム(RDBMS; Relational DataBase Management System)

6

エドガー・F・コッドが提唱した関係データモデルを採⽤したデータベース管理システム(DBMS)

MySQL, Oracle Database, PostgreSQL, SQLiteなどがある

利点ExcelやCSVなどの簡易データベースより⼤量のデー

タを保存できる⼤量のデータに対し,検索,並べ替え,抽出,集計な

どの処理を⾼速に実⾏できる複数の異なるデータを結合して,⼀つのデータのよう

に取り出すことができるSQLという問合せ⾔語を使ってデータを操作できる

Page 7: データベース02 - SQL概要

SQL; Structured Query Language(構造化問合せ⾔語;)

7

データベースエンジンにアクセスするために標準化された問合せ⾔語

mysqld

クライアントプログラム

結果データベース

エンジン

問合せ(クエリ)

SELECT

INSERT

DELETE

UPDATE

Page 8: データベース02 - SQL概要

MySQLをインストールしよう

8

PCにMySQLをインストールする

RAINBOW環境でMySQLを利⽤する(XamppLiteを利⽤)

*インストール⼿順については,manaba+R上にアップする

Page 9: データベース02 - SQL概要

実践:SQLを使ってみよう

9

Page 10: データベース02 - SQL概要

例;⽇本百名⼭テーブル

10

no name kana altitude system prefecture18蔵王⼭ ざおうさん 1,841奥⽻⼭脈 宮城県/⼭形県22磐梯⼭ ばんだいさん 1,816奥⽻⼭脈 福島県28燧岳 ひうちだけ 2,356越後⼭脈 福島県48剱岳 つるぎだけ 2,999⽴⼭連峰 富⼭県49⽴⼭ たてやま 3,015⽴⼭連峰 富⼭県54槍ヶ岳 やりがたけ 3,180⾶騨⼭脈 ⻑野県/岐⾩県64⼋ヶ岳 やつがたけ 2,899⼋ヶ岳連峰 ⻑野県/⼭梨県72富⼠⼭ ふじさん 3,776独⽴峰 ⼭梨県/静岡県87⽩⼭ はくさん 2,702両⽩⼭地 岐⾩県/⽯川県92⼤⼭ だいせん 1,729中国⼭地 ⿃取県97阿蘇⼭ あそさん 1,592阿蘇カルデラ 熊本県

mountain

*manaba+R上の"mountain.sql"内のSQL⽂を実⾏することで復元できる*(参考)http://ja.wikipedia.org/wiki/⽇本百名⼭

Page 11: データベース02 - SQL概要

データベースの構造

11

MySQL(データベースエンジン)

データベース1

テーブル

データベース2

テーブル

Page 12: データベース02 - SQL概要

テーブルの構造

12

番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県/岐⾩県64⼋ヶ岳 2,899⻑野県/⼭梨県72富⼠⼭ 3,776⼭梨県/静岡県87⽩⼭ 2,702岐⾩県/⽯川県92⼤⼭ 1,729⿃取県

ロウ

カラム

テーブル

主キー

主キー: ロウを⼀意に識別するためのカラム テーブルごとに⼀つだけ設定できる 複数のカラムから構成することもできる

Page 13: データベース02 - SQL概要

データベースの⽤語

13

データベース RDBMSが管理するデータの集合 ⼀つのデータベースエンジンは複数のデータベース

を管理 0個以上のテーブルがある

テーブル(表) データを2次元の表形式で表現 0個以上のロウと1個以上のカラムで構成される

カラム(列) テーブルを構成する各列

ロウ(⾏) テーブルを構成する各⾏

Page 14: データベース02 - SQL概要

SQLの使⽤例(1/2)

14

SELECT * FROM mountain;

SELECT name, altitude FROM mountain WHERE altitude >= 3000;

SELECT COUNT(*) FROM mountain;

SELECT MAX(altitude),MIN(altitude)FROM mountain;

SELECT name,altitude FROM mountain ORDER BY altitude DESC;

Page 15: データベース02 - SQL概要

SQLの使⽤例(2/2)

15

INSERT INTO mountainVALUES(101, '比叡山', 'ひえいざん', 848, '比叡山', '滋賀県/京都府');

UPDATE mountain SET system = '比叡山地' WHERE no = 101;

DELETE FROM mountain WHERE no = 101;

Page 16: データベース02 - SQL概要

SQLの基本形式

16

⼩⽂字と⼤⽂字の区別はない

SELECT * FROM mountain;

⽂の最後はセミコロン(;)で終了する

⽂の機能を⽰すキーワードが先頭に記述される

select * from mountain;

Page 17: データベース02 - SQL概要

SQLの特徴

17

「表」形式という単純で理解しやすい関係データモデル*を基本としている

関係データモデルの裏に,関係代数*などの厳密な形式化が備わっているため,SQLで記述した問合せ内容には曖昧さがない

コンピュータ⾔語でありながら,問合せの表現は英語的である

国際標準であり,その⾔語仕様は統⼀化されている

*詳しくは「関係データモデルと関係代数」の講義で学ぶ

Page 18: データベース02 - SQL概要

SQLの利⽤形態

18

対話的DB操作 利⽤者がデータベースを直接操作するときの対話的⾔

語として利⽤する 静的SQL アプリケーションプログラムの中でデータベースを操

作するときに,プログラム内に直接SQLを記述する 動的SQL アプリケーションプログラム内で,必要なときにSQL

⽂を動的に⽣成し,⽣成したSQLを実⾏する

Page 19: データベース02 - SQL概要

対話的DB操作の例

19

コマンドプロンプトなどで直接SQLを実⾏

Page 20: データベース02 - SQL概要

静的SQLの例

20

SELECT * FROM publications;

プログラム中に埋め込まれたSQLを実⾏

Page 21: データベース02 - SQL概要

動的SQLの例

21

SELECT * FROM xyz WHERE keyword = 'データベース';

ユーザ操作に応じて動的にSQL⽂を⽣成データベース 検索

Page 22: データベース02 - SQL概要

SQL⽂の種類

22

データ定義⾔語(DDL; Data Definition Language) データベース,ユーザ,スキーマ,テーブルを定義

(作成,削除,更新)する⾔語 データ操作⾔語

(DML; Data Manipulation Language) データベースにデータを登録したり,データベース内

のデータを検索,削除,更新したりする⾔語 データ制御⾔語

(DCL; Data Control Language) トランザクション処理*の開始や完了,取消し,アク

セス権の設定等を⾏う⾔語*トランザクションは「トランザクションと同時実⾏制御」の講義で学ぶ

Page 23: データベース02 - SQL概要

SQLの主なコマンド⼀覧(1/2)

23

種類 コマンド 説明

DDL

CREATE DATABASE データベースを作成CREATE TABLE データベース内にテーブルを定義CREATE VIEW データベースにビュー(仮想テー

ブル)を定義DROP TABLE データベースからテーブルを削除DROP VIEW データベースからビューを削除ALTER TABLE テーブル構成を変更

Page 24: データベース02 - SQL概要

SQLの主なコマンド⼀覧(2/2)

24

種類 コマンド 説明

DML

INSERT テーブルにデータを登録DELETE テーブルからデータを削除UPDATE テーブル内のデータを更新SELECT テーブル内からデータを検索して

取り出す

DCL

COMMIT 正常終了を通知ROLLBACK 異常終了を通知GRANT 権限を与えるREVOKE 権限を取り下げる

Page 25: データベース02 - SQL概要

冒頭の問合せは

25

番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県/岐⾩県64⼋ヶ岳 2,899⻑野県/⼭梨県72富⼠⼭ 3,776⼭梨県/静岡県87⽩⼭ 2,702岐⾩県/⽯川県92⼤⼭ 1,729⿃取県97阿蘇⼭ 1,592熊本県

⽇本百名⼭

富⼭県にある⼭は?標⾼3,000m以上の⼭は?⼭の情報を追加するには?

SELECT 山名 FROM 日本百名山 WHERE 都道府県='富山県';

SELECT 山名 FROM 日本百名山 WHERE 標高>=3000;

INSERT INTO 日本百名山 VALUES(...);

Page 26: データベース02 - SQL概要

まとめRDBMSの⼀つであるMySQLを利⽤できるようにした

SQLの実践を通して,以下を学んだ データベースの構造と⽤語 SQLの利⽤⽅法 SQLの特徴 SQLの基本形式 SQLの利⽤形態 SQLの機能

Page 27: データベース02 - SQL概要

まとめMySQL RDBMS SQL

データベース テーブル

カラム ロウ

対話的DB操作 静的SQL動的SQL

DDL DML DCL

主キー

Page 28: データベース02 - SQL概要

本⽇学習したキーワード〜SQL編〜

28

MySQL スクリプトファイルNOT-NULL制約 静的SQL

SQL 制約⼀意性制約 対話的DB操作外部キー制約 ダンプファイル外部キー データ制御⾔語(DCL)仮想テーブル データ操作⾔語(DML)カラム(列) データ定義⾔語(DDL)関係代数 データベース関係データベース管理システム(RDBMS) テーブル(表)関係データモデル テーブル副問合せ完全外部結合 問合せ(クエリ)交差結合 等結合参照整合性制約 動的SQL⾃⼰結合 内部結合⾃然結合 左外部結合集約関数 ビュー主キー 副問合せ主キー制約 右外部結合スカラ副問合せ ロウ(⾏)

Page 29: データベース02 - SQL概要

これまでに学習したキーワード〜SQL編〜

29

MySQL スクリプトファイルNOT-NULL制約 静的SQL

SQL 制約⼀意性制約 対話的DB操作外部キー制約 ダンプファイル外部キー データ制御⾔語(DCL)仮想テーブル データ操作⾔語(DML)カラム(列) データ定義⾔語(DDL)関係代数 データベース関係データベース管理システム(RDBMS) テーブル(表)関係データモデル テーブル副問合せ完全外部結合 問合せ(クエリ)交差結合 等結合参照整合性制約 動的SQL⾃⼰結合 内部結合⾃然結合 左外部結合集約関数 ビュー主キー 副問合せ主キー制約 右外部結合スカラ副問合せ ロウ(⾏)