eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

Similar documents
Microsoft PowerPoint - db03-5.ppt

1,.,,,., RDBM, SQL. OSS,, SQL,,.

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

Microsoft Word - SQL.rtf

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

Microsoft Word - Android_SQLite講座_画面800×1280

プレポスト【問題】

PowerPoint Presentation

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO

Chapter Two

PowerPoint プレゼンテーション

SQLite データベース IS04 組み込み 1

Chapter Two

結合演算 ( 復習 ) データベース論 (9) R 社員番号 氏名麻生太郎安部晋三与謝野馨森喜朗 部門経理課営業課総務課営業課 S 部門経理課営業課総務課 電話 問合せ言語と SQL(2) R S 社員番号

標準化 補足資料

Microsoft PowerPoint pptx

,, create table drop table alter table

1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058

Microsoft PowerPoint - 講義補助資料2017.pptx

PowerPoint プレゼンテーション

データベースS

関係データベース

データベース工学 2011年度資料

アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2

CMP2-3SQL2b.pptx

SQL 基礎 (6) JOIN 句 - データの結合 作成日 : 2016/02/22 作成者 : 西村 更新履歴 更新日 更新概要 作業者 2016/02/22 新規作成 西村 はじめに この資料では 下記のような JOIN によるテーブル ( データ ) の結合について簡単に説明します INNE

情報科学概論 第6回

Oracle Database Connect 2017 JPOUG

Basic descriptive statistics

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

1 ex01.sql ex01.sql ; user_id from (select user_id ;) user_id * select select (3+4)*7, SIN(PI()/2) ; (1) select < > from < > ; :, * user_id user_name

7-1- 基 RDB に関する基礎知識 1 独立行政法人情報処理推進機構

cmpsys13w14-15_database.ppt

データベース 【1:データベースシステムとは】

WDI-Slides-05.pptx

PowerPoint Presentation

橡j_Oracle_whitepaper.PDF

第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

08_takata

3 - 正しい SQL ( 方言を排除した SQL 文の記述方法 )

Sequel のすすめ 私が SQL を嫌いな理由 とみたまさひろ RubyHiroba Sequel のすすめ - 私が SQL を嫌いな理由 Powered by Rabbit 2.0.7

ICT-Literacy1

CodeGear Developer Camp

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第7版   None

はじめに 本書では GridDB Advanced Edition における SQL の記述方法および 注意事項について記載しています GridDB Advanced Edition をご使用になる前に 必ずお読みください なお 本書で説明する機能は GridDB Advanced Edition

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

tkk0408nari

はじめに コース概要と目的 Oracle を使用した開発 管理を行う上でのファースト ステップとして リレーショナル データベース管理ソフトウェアである Oracle の役割 基本機能 基本アーキテクチャを幅広く理解することを目的としています 受講対象者 これから Oracle を使用する方 データ

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第8版  

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

ii II Web Web HTML CSS PHP MySQL Web Web CSS JavaScript Web SQL Web

~モバイルを知る~ 日常生活とモバイルコンピューティング

SQL (2) データベース論 Ⅰ 第 7 回 URL 作成者末次文雄 C

untitled

MxLogonサーバサイドツールキット用UI

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

目次 1. データモデルと SQL( 復習 ) 2.SQL の特徴 3.SQL の文法 4. データ定義 ( 基本編 ) 5.DB 管理 ( 基本編 ) 6. データ操作 ( 基本編 ) 7. レポート課題 8. 参考書ほか

データベースアクセス

~モバイルを知る~ 日常生活とモバイルコンピューティング

Caché SQL に関するよくある質問

クエリの作成が楽になるUDF

スライド タイトルなし

Microsoft PowerPoint - system8.ppt

Web 環境におけるレイヤー別負荷の 2 違い DB サーバ AP サーバ 後ろのレイヤーほど負荷が高く ボトルネックになりやすい

KTest

ハイウォーターマークを知る

10th Developer Camp - B5

Windowsユーザーの為のOracle Database セキュリティ入門

Oracle Direct Seminar <Insert Picture Here> 試験対策ポイント解説 11g SQL 基礎 Ⅰ 日本オラクル株式会社

Webシステム授業資料

目次 更新履歴... 1 はじめに... 3 レコードセット?... 3 準備... 5 SQL でデータを取得する... 6 データのループ処理... 7 列の値を取得する... 7 対象行を変更する (MoveFirst, MoveNext, MovePrevious, MoveLast)...

Microsoft Word - tutorial3-dbreverse.docx

データベースS 演習資料

Si 知識情報処理

データベース暗号化ツール「D’Amo」性能検証

问题集 ITEXAMPASS 1 年で無料進級することに提供する

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

Microsoft Word - PHP_SQLServer2012

PowerPoint プレゼンテーション

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

: ORDER BY

モデリング操作ガイド (データベースモデリング編)

SOC Report

データセンターの効率的な資源活用のためのデータ収集・照会システムの設計

Wiki Wiki Wiki...


この文章に含まれる情報は 公表の日付の時点での Microsoft Corporation の考え方を表しています 市場の変化に応える必要 があるため Microsoft は記載されている内容を約束しているわけではありません この文書の内容は印刷後も正しいとは保障で きません この文章は情報の提供の

PA4

マニュアル訂正連絡票

Taro13-006linux4.jtdc


PowerPoint Presentation

はじめに コースの概要と目的条件分岐の方法や複雑な集計の手法など SQL のコーディングの幅を広げるためのテクニックについて説明します また パフォーマンスを考慮した記述方法や正しい結果を取得するための記述方法などについても あわせて説明します 本コースでは 実践的な SQL の記述手法を広く浅く紹

n n n ( ) n Oracle 16 PostgreSQL 3 MySQL

基本サンプル

はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

HeartCoreインストールマニュアル

Transcription:

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索する 違うデータに変更する 要らなくなったデータを削除する 各システムごとに障害対策も含めて 正確にこのようなデータ処理のプログラムを作ることは大変なことです そこでこのデータ処理のプログラムを毎回作らなくても 呼び出して各処理を実行することが可能なシステムが作られました それがデータベース管理システムへと発展してきました データベースモデル 追加 変更 探索 削除などの汎用的な命令が使えて 障害対策も含む機能であるデータベース管理システムは 階層モデル ネットワークモデル 関係 ( リレーショナル ) モデルに大別できます そして現在最も数多く利用されているのが関係 ( リレーショナル ) モデルです このモデルのデータベース管理システムとしては oracle, sql server, db2, postgresql, mysql などが有名です そしてこれに使われる操作用の言語が SQL です リレーショナルデータベースのイメージ リレーショナルデータベースで使う 2 次元の表形式は 例えば次のようなイメージです 破線の部分が行で 表は行の集合で構成されます そして 1 行の情報は データの特徴を表現する各データ型の列の集合で成り立ちます なおリレーショナル用語では列の各情報を 属性 行を タプル と呼びます 一般に1 行が現実世界における一つのまとまったデータになるように表を作り 複数の表の関連を定義して管理します 具体的には表の名前とそれを構成する列の名前で SQL によって操作します なお 行をレコードと呼ぶことがあります データベース操作の SELECT で選択した列と行を得る 次の表が membertbl の名前で存在する場合 memberid lastname firstname が列の名前です この表から memberid が s102035 である行の lastname と firstname を取得する SQL は次の表現です SELECT firstname, lastname FROM membertbl WHRER memberid = s102035 この操作の実行で得られるのは次の情報です ここで memberid ように 表の中から ある 1 行 を特定することができる列を主キーと呼びます また 次郎 や 山田 のように 行と列が交差した値が格納される個々の部分をフィールドと呼びます なお上記表のイメージだけでは判断できませんが 列の中で ほかの表との関連付けのために使用される列は外部キーと呼びます

eラーニング資料 e ラーニングの制作目標 データベース編 42 ページ SQL とは 計算表はシートで全体が見える状態で扱いますが データベースは扱うデータ量が膨大で全体が見えない状態でも操作できるようになっています RDBMS(Relational Database Management System: リレーショナルデータベース管理システム ) は一般的に複数のデータベースを管理できます そして1つのデータベースの中に複数の表があって その表が関連し合って動作します RDBMS を経由してデータベースの操作を行うための言語が SQL(Structured Query Language: 構造化問い合わせ言語 ) です SQL の命令は データ定義機能 (DDL:Data Definition Language) データ操作機能 (DML:Data Manipulation Language) データ制御機能(DCL:Data Control Language) の三つの機能に分類されます 操作の分類 RDBMS(Relational Database Management System) で使う SQL(Structured Query Language: 構造化問 い合わせ言語 ) の操作は次のように 3 つに分類されます 機能分類操作対応する命令 DDL:Data Definition Language DML:Data Manipulation Language DCL:Data Control Language 表や視点を定義して作成 表や視点を削除 列名変更 さまざまな変更 照会, 問い合わせ 挿入 変更 更新 削除 権限を与える CREATE TABLE CREATE VIEW DROP TABLE DROP VIEW ALTER TABLE ~ RENME ~TO~ ALTER TABLE ~ SELECT ~ FROM INSERT INTO ~ WHERE ~ UPDATE ~ SET ~=~ WHERE ~ DELETE FROM ~ WHERE ~ GRANT PRIVILEGES ON~ FROM 権限を取り上げる REVOKE PRIVILEGES ON~ FROM データベースを作って操作するユーザを指定し 操作の接続をする RDBMS(Relational Database Management System: リレーショナルデータベース管理システム ) では 一つのデータベースで 複数の表を関連付けて作成します 一つの RDBMS で複数のデータベース名を管理できます まずデータベースに名前を付けて作成し それを扱えるユーザを作ります システムにより操作方法に違いがありますが 例えば elearn の名前のデータベース作成する場合であれば 次のようなコマンド操作です CREATE DATABASE elearn; そして次にユーザを作成して このデータベースをアクセスできる権限を与えます 例えば elearn のデータベースに 192.168.~の IP アドレスのホストから接続して 無制限に操作可能な権限を 'e_admin' のユーザに与える場合の SQL の DCL は次のような表現です GRANT ALL PRIVILEGES ON elearn.* TO 'e_admin'@'192.168.%.%'; 一般にデータベースシステムはコンソール用のアクセスツールが用意されています oracle であれば sqlplus コマンドです Mysql であれば 92.168.0.77 のサーバにある elearn のデータベースへ e_admin のユーザが接続し SQL で操作するためのコマンドは次のように実行します mysql --user=e_admin --host= ホスト IP アドレスなど --password= elearn

e ラーニング資料 e ラーニングの制作目標 データベース編 43 ページ 表を作ってレコードを追加する 一般にコンソール用のアクセスツールで 表の作成などが可能です 上記のような表を作る場合 まず 次のような SQL の DDL で表の構造を作ります CREATE TABLE membertbl( memberid CHAR(8) NOT NULL, -- (8 文字型 ) lastname CHAR(10), -- (10 文字型 ) firstname CHAR(10), city CHAR(10), address CHAR(20), tel CHAR(15), mail CHAR(20), PRIMARY KEY (memberid) ); ここで CAHR は文字のデータ型を意味してカッコの中が文字数です また NOT NULL の制約で データをセットしなければ使えない指定をしています なお PRIMARY KEY (memberid) により主キーを memberid に設定しています そして次のような SQL の DML でデータを挿入します INSERT INTO membertbl (memberid,lastname,firstname,city,address,tel,mail,passwd) VALUES ('s102031',' 山田 ',' 太郎 ','tokyo',' 新宿区西新宿 2-8-1','03-5321-1111','tarou@mail2.com'); 表にレコードを追加する またレコードの削除紹介 SQL のコマンドは セミコロン ; で完結します 上記のような membertbl の名前の表に行を追加して次の表のようにしたい この追加で使う DML の SQL 表現は次のようになります INSERT INTO membertbl VALUES ('s102933',' 斉藤 ',' 太郎 ',' 名古県 ',' 佐賀市城内 1 丁目 1-59','0952-24-2111','tarou2@mail.com'), ('s102934',' 高橋 ',' 花子 ',' 岩手県 ',' 盛岡市内丸 10 番 1 号 ','019-651-3111','hanako@mail2.com'); なお memberid が s102031 の行を削除する DML の SQL 表現は次のようになります DELETE FROM membertbl WHERE memberid = s102031 ; 表の一部を変更する 列の追加や削除 上記のような membertbl の名前の表に passwd の列を追加して次の表のようにしたい この列の追加で使う DDL の SQL 表現は次のようになります ( 属性は 255 文字までの可変長 ) ALTER TABLE membertbl ADD (passwd VARCHAR(255)); 上記の s102031 の passwd を abc123 に変更する DML の SQL 表現は次のようになります UPDATE membertbl SET passwd='abc123' WHERE memberid = 's102031'; なお この追加した列を削除する DDL の SQL 表現は次のようになります ALTER TABLE membertbl DROP passwd;

e ラーニング資料 e ラーニングの制作目標 データベース編 44 ページ 表の操作例 membertbl の名前の表が次のようにあります 1 重複する行を除いて lastname を表示する SQL は次のようなります SELECT DISTINCT lastname FROM membertbl; 2 lastname が ' 山田 ' で city が 'tokyo' の memberid を得る SQL は次の 2 通りできます SELECT memberid FROM membertbl WHERE lastname = ' 山田 ' AND city = 'tokyo'; SELECT memberid FROM membertbl WHERE NOT(lastName <> ' 山田 ' OR city <> 'tokyo'); 3 firstname のデータの最後が ' 子 ' で終わる名前の memberid と firstname を得る SELECT memberid, firstname FROM membertbl WHERE firstname LIKE '% 子 '; SELECT memberid, firstname FROM membertbl WHERE firstname LIKE ' 子 '; 4 's102031' から 's102035' の範囲内において memberid, lastname, firstname を得る WHERE memberid BETWEEN 's102031' AND 's102035'; 5 カッコ () 内に列挙したデータに一致するもの得るデータを得る WHERE memberid IN ('s102031','s102934','s102035'); 6 上記の表示で memberid のデータをキーにして昇順で表示する WHERE memberid IN ('s102031','s102934','s102035') ORDER BY memberid ASC; 7 上記の表示で memberid のデータをキーにして降順で表示する WHERE memberid IN ('s102031','s102934','s102035') ORDER BY memberid DESC; 8 レコードの列を数える なお 実行結果の列名を別名で表示する SELECT count(*) as ' レコード件数 ' FROM membertbl; 9 グループごとのカウント (lastname で集計 ) SELECT lastname,count(lastname) as ' 人数 ' FROM membertbl GROUP BY lastname; 10 グループごとの処理結果に対しする条件抽出 (lastname 集計が 2 以上 ) SELECT lastname,count(lastname) as ' 人数 ' FROM membertbl GROUP BY lastname HAVING count(lastname) >= 2;

e ラーニング資料 e ラーニングの制作目標 データベース編 45 ページ 表を作ってレコードを追加する 列のデータ型紹介 一般にコンソール用のアクセスツールで 表の作成などが可能です 上記のような表を作る場合 まず 次のような SQL の DDL で表の構造を作ります CREATE TABLE plantbl ( planid CHAR(5) NOT NULL, URI CHAR(15), pageorder REAL DEFAULT 1, previd CHAR(5), level INTEGER DEFAULT 0, title VARCHAR(128), PRIMARY KEY (planid) ); -- ID -- URI -- この数が小さい順に利用 -- 前にクリアすべき planid -- 難易度 -- タイトル ここで PRIMARY KEY (planid) により主キーを planid に設定しています DEFAULT の制約で データセットしない場合の初期値を設定しています CHAR REAL INTEGER VARCHAR のデータ型はそれぞれ 文字 小数点可能な数値 整数 可変長文字列です そして次のような SQL の DML でデータを挿入します INSERT INTO plantbl (planid,uri,title) VALUES ('m1011','m101.html',' データベース管理 '); 表にレコードを追加して 表示操作 上記のような plantbl の名前の表に 次の行を追加する SQL を実行する INSERT INTO plantbl (planid,uri,pageorder, previd, title) VALUES ('m1012','m101.html',2,'m1011',' データベース管理 '), ('m1021','m102.html',3,'m1012',' データベースモデル '), ('m1031','m103.html',4,'m1021',' リレーショナルデータベースのイメージ '); その後で 全てを列 行を表示する DML の SQL 表現は次のようになります SELECT * FROM plantbl; これで得られる表示は次のようになります 上記のような plantbl の名前の表がある場合で 集合関数を使った例を示します 1 最大値を得る max 関数を使って pageorder が最も大きい値を求めます SELECT max(pageorder) FROM plantbl; 2 pageorder が最も大きい値の行を表示させる ( サブクエリーと呼ばれる手法 ) SELECT * FROM plantbl WHERE pageorder IN (SELECT max(pageorder) FROM plantbl); 3 PageOrder の平均を求めます SELECT AVG(pageOrder) FROM plantbl; 4 上記クエリーをサブクエリーに使って 平均を超える列を求める SELECT * FROM plantbl WHERE pageorder > (SELECT AVG(pageOrder) FROM plantbl);

e ラーニング資料 e ラーニングの制作目標 データベース編 46 ページ 既存表を参照する表を作って レコードを追加する 上記のような membertbl と plantbl の表を使って次の logtbl の名前の表を作る例です CREATE TABLE logtbl ( memberid CHAR(8) NOT NULL,-- memberid の ID time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, planid CHAR(5) NOT NULL, -- plantbl の ID clerflag INTEGER,-- 1: クリア, 0 が未クリア FOREIGN KEY (memberid) REFERENCES membertbl(memberid), FOREIGN KEY (planid) REFERENCES plantbl(planid), PRIMARY KEY (memberid, time) ); -- FOREIGN の指定で 既存の表の列を参照させています INSERT INTO logtbl (memberid,time,planid,clerflag) VALUES ('s102031','2013-10-21 10:10:00','m1011',1), ('s102035','2013-10-21 10:30:00','m1011',1), ('s102099','2013-10-23 11:45:00','m1012',1), ('s102031','2013-10-23 11:50:00','m1021',1); 上記 3 つの表 (membertbl と plantbl と ogtbl) で 操作する例 1 logtbl の表と membertbl の表を logtbl.memberid = membertbl.memberid の 条件で 内部結合 して表示すると右の表が得られます 内部結合では表の他方で存在しない列がある行を出しません この SQL を 3 通り以下に示す SELECT planid, time,logtbl.memberid, firstname FROM logtbl,membertbl WHERE logtbl.memberid = membertbl.memberid; SELECT planid, time,logtbl.memberid, firstname FROM logtbl INNER JOIN membertbl ON logtbl.memberid = membertbl.memberid; SELECT planid, time,logtbl.memberid, firstname FROM membertbl INNER JOIN logtbl ON logtbl.memberid = membertbl.memberid; なお INNER は省略可能です 2 plantbl の表と logtbl の表と membertbl の表をの 内部結合 例です logtbl.memberid = membertbl.memberid と plantbl.planid = logtbl.planid の結合条件にした例で 上記と下記アンダーラインが同じで カッコで上記表を得て それに plantbl の title を結合するような記述です 下に示すようにカッコを使います SELECT plantbl.planid, title, time,logtbl.memberid, firstname FROM plantbl INNER JOIN( logtbl INNER JOIN membertbl ON logtbl.memberid = membertbl.memberid) ON plantbl.planid = logtbl.planid; 3 logtbl の表と membertbl の表を 左に外部結合する例です (OUTER の記述は省略できます ) SELECT planid, time,logtbl.memberid, firstname FROM logtbl LEFT OUTER JOIN membertbl ON logtbl.memberid = membertbl.memberid; 左の logtbl に在る s102099 は membertbl に存在しませんが 左結合なので表示しています