応用情報技術者試験
情報技術者試験まとめへ

データベース(2)

データベース操作

関係代数演算

集合演算
和(union) A∪B

複数の表に含まれている全ての要素を含む集合。重複を取り除いた集合が返される

差(difference) A−B

AからBの属性を取り除いたもの

積(product)・共通(intersection) A∩B

AとBに共通する属性

直積(cartesian product) A×B

AとBの属性の組合せの集合

固有演算
結合(join) AB

複数の表を共通の列を介して結び付け、新たに一つの表を作成する操作

射影(projection) πα(A)

列名とその並びを指定し、対象とする表から特定の列を抽出する操作
表Aからα列を抽出する

選択(selection) σα(A)

選択条件を指定し、対象となる表から条件をみたす行を抽出する操作

商(division) A÷B

表Bの属性を含む行を表Aから取り出し、表Bの属性以外の値を抽出する操作 商の説明

SQL

SQL-DDL

リレーショナルデータベースのテーブルを制御する言語。テーブル全体の作成・変更・削除などを行う際に使用する

実表の定義(CREATE TABLE)

データベースにデータを格納するには、データベースの構造である表を定義する必要がある

CREATE TABLE 表名
(列名1 データ型 1[列定義 1],
(列名2 データ型 2[列定義 2],
(列名3 データ型 3[列定義 3],
...)

例1
ビュー表の定義(CREATE VIEW)

ある実表をもとにして必要な項目だけを抽出して集め、仮想的に作成する表のこと

CREATE VIEW ビュー名[(ビューの項目名,…)]
AS SELECT 項目名,…FROM 表名
 ※[ ]内は、必要に応じて記述。省略した場合、実表と同じ項目名となる

例2
使用する目的

利用者にデータベース構造を意識させない
正規化によって分割された表を、実際の利用形態に合わせて、見かけ上組み合わせることにより、データ操作を容易にする
セキュリティの観点から、実表での権限を制限して、ビュー表に権限を付与する

ビュー表の権限

何も指定しなければ元となる表に対する権限と同じ権限が与えられる
ビュー表独自の権限を付与することが可能
元となる表に対する権限以上の権限は与えられない

更新可能なビュー

結合関係がない(単一表から構成されている)こと
集合関数や演算を使用してないこと
GROUP BY句が含まれていないこと
DISTINCT句が含まれていないこと
副問合せが含まれていないこと

導出表

関係データベースの操作によって作成される仮想的な表のこと。SQLにおけるビューも導出表の一種

埋込みSQL

C言語、Javeなどの手続型プログラミングに、関係データベースを操作する為のSQLを埋め込む手法。SQLステートメントはコンパイル実行前にSQLプリプロセッサによって前処理される
CURSOR(カーソル)をFETCH文の使用によって問合せ、得られた導出表を1行ずつ親プログラムに引出し、操作する

制約

整合性制約
PRIMARY KEY(主キー制約)

その列が行を一意に識別できること。値は重複してはならず、NULLも許可されない

CHECK(検査制約)

列の値が指定し合条件を満たすこと。(指定の範囲内になければならない)

FOREIGN KEY(参照制約)・REFERENCES(参照整合性制約)

外部キーとして登録される値が、参照する他表の列内に必ず存在しなければならない

UNIQUE(一意性制約)

指定した列で値が重複することは許されないが、NULLの存在は許す

NOT NULL

列の値がNULLでないこと。値入力は必須

CASCADE()

他のビューや制約が参照されていても、削除・更新される。親テーブルの更新・削除に合わせて子テーブルのデータも更新・削除される

SET DEFAULT

指定した列のデフォルト値を変更するときに使用

RESTRICT

指定した表がビューや整合制約により参照されたものである場合、変更はエラーとなり、実行されない

処理権限
項目説明
SELECT問合せ表を検索(参照)する権限
INSERT追加表にレコードを挿入する権限
UPDATE更新表の項目を更新する権限
DELETE削除表のレコードを削除する権限
ROLEロール定義(ユーザ)グループに対しての権限
ALL表に対するすべての権限
権限設定
GRANT

ユーザまたはユーザグループに、テーブルに関する処理権限を与える

REVOKE

ユーザまたはユーザグループに、テーブルに関する処理権限を取り上げる

SELECT文

SQL-DML

実際のデータベースの操作を記述するもの

結合と射影、選択
FROM:使用する表を指定
  複数表を指定可能、別名を指定可能
WHERE:結合条件と選択条件を指定する

例3

集合関数

項目のデータの個数や平均などを計算する場合は、「集合関数(集約関数)」を使 用

SELECT 集合関数(項目名) FROM 表名
名称説明設定例
COUNT検索結果の行数を数えるCOUNT(*)
※すべてのレコード数を数える
COUNT(受注合計)
※項目の合計がNULLの行は数えない
SUM(項目名)項目の値の合計値を求めるSUM(受注合計)
AVG(項目名)項目の値の平均値を求めるAVG(受注合計)
MAX(項目名)項目の値の最大値を求めるMAX(受注合計)
MIN(項目名)項目の値の最小値を求めるMIN(受注 合計)

例9

グループ化(GROUP BY)

“〜ごと”や“〜別”の操作を行うときにはGROUP BYでグループ化が必要
SELECTの後にはグループ化で指定した列名と集合関数しか記述できない

グループ化後の条件指定(HAVING)

グループ化した集計結果に対して、抽出条件を記述する場合にはHAVINGを使用
必ずGROUP BYの後に記述する

SELECT 項目名,… FROM 表名
[WHERE … ]

GROUP BY 項目名,…
HAVING グループ化したデータの検索条件
  ※SELECT文で指定する項目名には集合関数利用可能
  ※[ ]内は、必要に応じて記述する

例10

副問い合わせ

抽出する列と選択条件に使用する列が別の表にある場合に使用する
( )内のSELECT文が先に実行され、その抽出結果が選択条件となる

IN

( )内の抽出結果が1つである場合、( )の前に「=」を使用できるが、複数抽出される可能性がある場合はINを使用する

LIKE

パターンの照会にはLIKEを使用する

範囲指定(BETWEEN AND)

選択の条件として範囲を指定する場合、BETWEEN ANDを使用する

例4

抽出結果の整列(ORDER BY)

並べ替えをする場合はORDER BYを使用

並べ替えが昇順:ASC(省略可)
 降順:DESC

例11

重複行の排除(DISTINCT)

SELECT文の結果に対して重複した行がある場合、その重複を排除するには、 DISRINCT を使用する

SELECT DISTINCT 項目名1(,項目名2,…) FROM 表名
ホスト変数

外部のプログラムからの変数のこと
SQLでは変数名の前に(コロン)をつけて“変数名”とする

 

ページトップへ 次へ