(自分用メモ)ITキーワード覚え書き 第1回「SQL、ファンクション」

------------------------------------------------------------

[日記リンク集]

第0回「テンプレート」 ※この回だけ「友人の友人まで公開」設定

http://SNS.jp/view_diary.pl?id=1961016692&owner_id=4707587

第1回「SQL、ファンクション」

→今回

------------------------------------------------------------

[今回の投稿日時]

2017/6/18 11:00頃

[今回のテーマ]

SQL

ファンクション(Oracle Database)

ROWNUM

DECODEとCASE

結合(JOIN)

[キーワード]

SQL(Secured Query Language)

[概要]

関係データベース管理システム(RDBMS)を操作するための言語。

関係データベースからデータを登録・更新・参照するための

命令文(コマンド)の総称。

Oracle Database、MySQLMicrosoft SQL Serverなど、

いくつか種類があり、少しずつ仕様が異なっている。

[使用例など]

「社員名簿」という名前のテーブルから、

「社員番号が0001である人の社員名」を参照するためのSQL

-- SELECTで「何を参照するか」を指定

SELECT

社員名

-- FROMで「どこから参照するか」を指定

FROM

社員名簿

-- WHEREで「何を用いて参照するか」を指定

WHERE

社員番号 = 0001;

[派生]

・データベース(database)

直訳すると「データの基地」という意味。

データを1か所に集めて管理しやすくしたもの。

DBMS

データベース管理システム。

データベースの管理・運用をしやすくするためのシステム。

RDBMS

関係データベース管理システム

テーブル(=データを入れるルールを定義した「箱」)の

関連付けによってデータを表現する「関係データベース」を

管理するためのシステム。

DML(Data Manipulation Language)

データ操作言語。データを検索・登録・更新・削除するなど、

データに対して何かしらの操作を行うための言語。

使用例の「SELECT」も、DMLの一種。

DDL(Data Definition Language)

データ定義言語。テーブルやファンクション(後述)の作成・削除、

データベースにアクセスするユーザの権限作成や削除など、

データそのものを定義するために使う言語の総称。

[参考(URL・書籍など)]

http://www.atmarkit.co.jp/ait/articles/1112/19/news130.html

『徹底攻略 応用情報技術者教科書 平成29年度』(インプレス)

[キーワード]

ファンクション(Oracle Database)

[概要]

ストアドプログラムの一種。

以下の特徴を持っている。

・プログラム実行時に「戻り値」が存在する

・一定条件を満たせば、SQL文に組み込んで使用できる

[使用例など]

-- 社員名参照ファンクションを作ってみる

CREATE OR REPLACE FUNCTION 社員名参照ファンクション

(

対象番号 IN 社員名簿.社員番号%TYPE

)

RETURN 対象社員名

IS

対象社員名 社員名簿.社員名%TYPE;

BEGIN

SELECT

社員名

INTO

対象社員名

FROM

社員名簿

WHERE

社員番号 = 対象番号;

RETURN 対象社員名;

END

/

-- 社員名参照ファンクションをSELECTの中で使用する

SELECT

社員番号

,社員名参照ファンクション(社員番号)

FROM

社員名簿;

[派生]

・ストアドプログラム

データベースに対して発行する一連の処理を一塊にして、

関係データベース管理システム内にあらかじめ格納したもの。

「よく使う計算式なので、最初から名前を付けて保存しておこう」

ということ。

・プロシージャ

ストアドプログラムの一種。Procedure=手続き。

ファンクションに比較的近いが、以下の点で異なる。

1.戻り値(RETURN文)を持っていない

→ただし、引数を「OUT」で指定しておくことで、

 パラメータを取得すること自体は可能。

2.ファンクションは「戻り値を返す」ことが基本的な目的だが、

 プロシージャは「処理を行う」ことが基本的な目的。

・パッケージ

ストアドプログラムの一種。

似た処理の複数のプロシージャやファンクション、変数定義を

一塊にしたストアドプログラム。

CREATE PACKAGEでファンクションやプロシージャの名前を定義し、

CREATE PACKAGE BODYで実際の処理を定義する。

CREATE PACKAGE パッケージ名

AS

(ファンクションやプロシージャの仕様部1);

(ファンクションやプロシージャの仕様部2);

END;

/

CREATE PACKAGE BODY パッケージ名

AS

(変数定義など)

(ファンクションやプロシージャの仕様部1+本体部1);

(ファンクションやプロシージャの仕様部2+本体部2);

END パッケージ名;

/

・トリガー

ストアドプログラムの一種。

「社員名簿に新しい社員が登録された時」など、

何かしらの処理をきっかけに自動で起動するプログラム。

CREATE TRIGGER トリガー名

-- 社員名簿が登録/更新/削除された後でトリガー起動

AFTER INSERT OR UPDATE OR DELETE ON 社員名簿

BEGIN

(起動する処理)

END;

/

[参考(URL・書籍など)]

http://oracle-chokotto.com/ora_function_c.html

http://oracle-abc.wikidot.com/function

http://www.oracle.co.jp/forum/thread.jspa?threadID=8009332

http://oracle-chokotto.com/ora_package.html

http://oracle-chokotto.com/ora_trigger.html

Oracleデータベースの基本と仕組み』(秀和システム)

[次回のキーワード]

ROWNUM、DECODEとCASE、結合(JOIN)

[次回の投稿予定日時]

2017/6/21(水)までに

------------------------------------------------------------