Upload
kenta-oku
View
133
Download
2
Embed Size (px)
Citation preview
データベース第2回
SQL概要
1
2015年4⽉16⽇(⽊) 7・8時限担当:奥 健太
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
データベースを操作したい
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以上の⼭は?⼭の情報を追加するには?
本⽇の講義で学ぶことRDBMSの⼀つであるMySQLを利⽤できるようにする
SQLの実践を通して,以下を学ぶ データベースの構造と⽤語 SQLの利⽤⽅法 SQLの特徴 SQLの基本形式 SQLの利⽤形態 SQLの機能
MySQLとは
5
オープンソースで公開されている関係データベース管理システム(RDBMS)の⼀つ
いつでもクライアントプログラムからの問合せに応答できるようにデータベースエンジンとしてシステムに常駐
mysqld
クライアントプログラム
結果データベース
エンジン
問合せ(クエリ)
UNIX系OS:デーモン
Windows:サービス
関係データベース管理システム(RDBMS; Relational DataBase Management System)
6
エドガー・F・コッドが提唱した関係データモデルを採⽤したデータベース管理システム(DBMS)
MySQL, Oracle Database, PostgreSQL, SQLiteなどがある
利点ExcelやCSVなどの簡易データベースより⼤量のデー
タを保存できる⼤量のデータに対し,検索,並べ替え,抽出,集計な
どの処理を⾼速に実⾏できる複数の異なるデータを結合して,⼀つのデータのよう
に取り出すことができるSQLという問合せ⾔語を使ってデータを操作できる
SQL; Structured Query Language(構造化問合せ⾔語;)
7
データベースエンジンにアクセスするために標準化された問合せ⾔語
mysqld
クライアントプログラム
結果データベース
エンジン
問合せ(クエリ)
SELECT
INSERT
DELETE
UPDATE
MySQLをインストールしよう
8
PCにMySQLをインストールする
RAINBOW環境でMySQLを利⽤する(XamppLiteを利⽤)
*インストール⼿順については,manaba+R上にアップする
実践:SQLを使ってみよう
9
例;⽇本百名⼭テーブル
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/⽇本百名⼭
データベースの構造
11
MySQL(データベースエンジン)
データベース1
テーブル
データベース2
テーブル
テーブルの構造
12
番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県/岐⾩県64⼋ヶ岳 2,899⻑野県/⼭梨県72富⼠⼭ 3,776⼭梨県/静岡県87⽩⼭ 2,702岐⾩県/⽯川県92⼤⼭ 1,729⿃取県
ロウ
カラム
テーブル
主キー
主キー: ロウを⼀意に識別するためのカラム テーブルごとに⼀つだけ設定できる 複数のカラムから構成することもできる
データベースの⽤語
13
データベース RDBMSが管理するデータの集合 ⼀つのデータベースエンジンは複数のデータベース
を管理 0個以上のテーブルがある
テーブル(表) データを2次元の表形式で表現 0個以上のロウと1個以上のカラムで構成される
カラム(列) テーブルを構成する各列
ロウ(⾏) テーブルを構成する各⾏
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;
SQLの使⽤例(2/2)
15
INSERT INTO mountainVALUES(101, '比叡山', 'ひえいざん', 848, '比叡山', '滋賀県/京都府');
UPDATE mountain SET system = '比叡山地' WHERE no = 101;
DELETE FROM mountain WHERE no = 101;
SQLの基本形式
16
⼩⽂字と⼤⽂字の区別はない
SELECT * FROM mountain;
⽂の最後はセミコロン(;)で終了する
⽂の機能を⽰すキーワードが先頭に記述される
select * from mountain;
SQLの特徴
17
「表」形式という単純で理解しやすい関係データモデル*を基本としている
関係データモデルの裏に,関係代数*などの厳密な形式化が備わっているため,SQLで記述した問合せ内容には曖昧さがない
コンピュータ⾔語でありながら,問合せの表現は英語的である
国際標準であり,その⾔語仕様は統⼀化されている
*詳しくは「関係データモデルと関係代数」の講義で学ぶ
SQLの利⽤形態
18
対話的DB操作 利⽤者がデータベースを直接操作するときの対話的⾔
語として利⽤する 静的SQL アプリケーションプログラムの中でデータベースを操
作するときに,プログラム内に直接SQLを記述する 動的SQL アプリケーションプログラム内で,必要なときにSQL
⽂を動的に⽣成し,⽣成したSQLを実⾏する
対話的DB操作の例
19
コマンドプロンプトなどで直接SQLを実⾏
静的SQLの例
20
SELECT * FROM publications;
プログラム中に埋め込まれたSQLを実⾏
動的SQLの例
21
SELECT * FROM xyz WHERE keyword = 'データベース';
ユーザ操作に応じて動的にSQL⽂を⽣成データベース 検索
SQL⽂の種類
22
データ定義⾔語(DDL; Data Definition Language) データベース,ユーザ,スキーマ,テーブルを定義
(作成,削除,更新)する⾔語 データ操作⾔語
(DML; Data Manipulation Language) データベースにデータを登録したり,データベース内
のデータを検索,削除,更新したりする⾔語 データ制御⾔語
(DCL; Data Control Language) トランザクション処理*の開始や完了,取消し,アク
セス権の設定等を⾏う⾔語*トランザクションは「トランザクションと同時実⾏制御」の講義で学ぶ
SQLの主なコマンド⼀覧(1/2)
23
種類 コマンド 説明
DDL
CREATE DATABASE データベースを作成CREATE TABLE データベース内にテーブルを定義CREATE VIEW データベースにビュー(仮想テー
ブル)を定義DROP TABLE データベースからテーブルを削除DROP VIEW データベースからビューを削除ALTER TABLE テーブル構成を変更
SQLの主なコマンド⼀覧(2/2)
24
種類 コマンド 説明
DML
INSERT テーブルにデータを登録DELETE テーブルからデータを削除UPDATE テーブル内のデータを更新SELECT テーブル内からデータを検索して
取り出す
DCL
COMMIT 正常終了を通知ROLLBACK 異常終了を通知GRANT 権限を与えるREVOKE 権限を取り下げる
冒頭の問合せは
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(...);
まとめRDBMSの⼀つであるMySQLを利⽤できるようにした
SQLの実践を通して,以下を学んだ データベースの構造と⽤語 SQLの利⽤⽅法 SQLの特徴 SQLの基本形式 SQLの利⽤形態 SQLの機能
まとめMySQL RDBMS SQL
データベース テーブル
カラム ロウ
対話的DB操作 静的SQL動的SQL
DDL DML DCL
主キー
本⽇学習したキーワード〜SQL編〜
28
MySQL スクリプトファイルNOT-NULL制約 静的SQL
SQL 制約⼀意性制約 対話的DB操作外部キー制約 ダンプファイル外部キー データ制御⾔語(DCL)仮想テーブル データ操作⾔語(DML)カラム(列) データ定義⾔語(DDL)関係代数 データベース関係データベース管理システム(RDBMS) テーブル(表)関係データモデル テーブル副問合せ完全外部結合 問合せ(クエリ)交差結合 等結合参照整合性制約 動的SQL⾃⼰結合 内部結合⾃然結合 左外部結合集約関数 ビュー主キー 副問合せ主キー制約 右外部結合スカラ副問合せ ロウ(⾏)
これまでに学習したキーワード〜SQL編〜
29
MySQL スクリプトファイルNOT-NULL制約 静的SQL
SQL 制約⼀意性制約 対話的DB操作外部キー制約 ダンプファイル外部キー データ制御⾔語(DCL)仮想テーブル データ操作⾔語(DML)カラム(列) データ定義⾔語(DDL)関係代数 データベース関係データベース管理システム(RDBMS) テーブル(表)関係データモデル テーブル副問合せ完全外部結合 問合せ(クエリ)交差結合 等結合参照整合性制約 動的SQL⾃⼰結合 内部結合⾃然結合 左外部結合集約関数 ビュー主キー 副問合せ主キー制約 右外部結合スカラ副問合せ ロウ(⾏)