Oracle Direct Seminar
試験対策ポイント解説 「
11g SQL
基礎Ⅰ」<Insert Picture Here>
日本オラクル株式会社
アジェンダ
ORACLE MASTER Oracle Database 11g
概要
「11g SQL
基礎Ⅰ」試験紹介
ポイント解説実務エキスパートの 認定
↑
↓
製品知識の 認定
ORACLE MASTER Bronze
「
Oracle
技術基礎」レベルORACLE MASTER Silver
「データベース管理中級」レベル
ORACLE MASTER Gold
「データベース管理上級」レベル
ORACLE MASTER Platinum
「データベース管理エキスパート」レベル
資格体系
ORACLE MASTER
Platinum
Oracle Database 11g
ORACLE MASTER
Silver
Oracle Database 11g
ORACLE MASTER
Bronze
Oracle Database 11g
Silver DBA11g
Bronze DBA11g 11g SQL 基礎Ⅰ
実技試験
ORACLE MASTER
Gold
Oracle Database 11g Gold DBA11g
基本的な技術を理解し、より高度な技 術者のもとで実践的な作業を行うこと ができるレベル。
基本的なコンセプトの操作方法を理解 し、より高度な技術者のもとで簡単な 操作ができるレベル。
▲各種プロジェクトメンバー、
▲チームメンバー
技術要素を全般的に理解する上級技術者と して、状況に応じた手法の提案や、助言が 行えるレベル。
▲チームリーダー、
▲小規模プロジェクトリーダー
資 格 試 験
各資格に必要な試験の種類
概要
トップレベルのエキスパートとして幅広い 技術力を駆使し、最適な構築、運用や、
適切な障害対策が行えるレベル。
▲エキスパート技術者、技術責任者
▲プロジェクトリーダー
試験の受験方法 / お申込み方法
•
受験方法•
ピアソンVUE
公認テストセ ンター•
団体受験-
所属の企業・団体指定の会場(
オンサイト試験)•
試験のお申込み方法• http://www.oracle.com/jp/education/certification/examinfo-172594-ja.html
•
試験料¥22,260
(税込み)アジェンダ
ORACLE MASTER Oracle Database 11g
概要
「11g SQL
基礎Ⅰ」試験紹介
ポイント解説11g SQL 基礎Ⅰ試験概要
• SQL
を使用してデータの更新、追加、削除および複雑な 条件に基づくデータ検索ができる• Oracle
を使用したシステムを設計/
開発/
運用する場合に 必要な表や索引、ビューなどデータベース・オブジェクトを 適切に作成できる•
試験概要(2011
年9
月現在)•
試験時間 :120
分•
出題数 :55
問•
合格ライン :60%
11g SQL 基礎Ⅰ試験範囲
•
基本的なSQL Select
文の作成•
データの制限およびソート•
単一行関数•
グループ関数を使用したデータの集計•
複数の表からのデータの表示•
副問合せを使用した問合せの解決•
データ操作•
オブジェクトの作成および管理アジェンダ
ORACLE MASTER Oracle Database 11g
概要
「11g SQL
基礎Ⅰ」試験紹介
ポイント解説ポイント解説範囲( 1 )
•
基本的なSQL Select
文の作成•
データの制限およびソート•
単一行関数•
グループ関数を使用したデータの集計•
複数の表からのデータの表示•
副問合せを使用した問合せの解決•
データ操作•
オブジェクトの作成および管理SQL とは
• Structured Query Language
の略•
構造化問合わせ言語である•
米国規格協会(ANSI
)、国際標準化機構(ISO
)のいずれも、リレーショナル・データベース用標準言語として
SQL
を認定表
結果
データベース ユーザー
SQL
文EMPNO NAME JOB SAL DEPTNO
100
武井 社長6000 10
200
山崎 経理3000 20
300
桜井 営業2000 20
400
市川 技術3500 30
500
杉田1000 30
EMP
(社員表)表とは
•
データベース内に格納されているデータベース・オブジェクトで ある•
表には、関連するデータが格納されている•
表には、名前がついている•
表は、縦(列)と横(行)の2次元から構成されている列
行
列
NULL (ヌル)値とは
EMPNO NAME JOB SAL DEPTNO
100
武井 社長6000 10
200
山崎 経理3000 20
300
桜井 営業2000 20
400
市川 技術3500 30
500
杉田1000 30
EMP
(社員表)NULL
値•
行の特定の列に対するデータ値が欠落している場合、その値はNULL
である、またはNULL
を含むといいます• NULL
はゼロまたは空白とは異なる•
ゼロは数値で、空白は文字NULL 値の計算
EMPNO NAME JOB SAL DEPTNO
100
武井 社長6000 10
200
山崎 経理3000 20
300
桜井 営業2000 20
400
市川 技術3500 30
500
杉田 技術30
EMP
(社員表)NULL
値• NULL
に対して、計算を行うことはできない• NULL
は、ゼロとは異なる2100 6100 3100
3600
SAL+100
NULL
値SAL列値に 100を加算
• NULL
に対して計算を行うには、どうすればよい?NVL 関数の使用
EMPNO NAME JOB SAL DEPTNO
100
武井 社長6000 10
200
山崎 経理3000 20
300
桜井 営業2000 20
400
市川 技術3500 30
500
杉田 技術30
EMP(社員表)
NULL値
• NULL
に対して計算を行う際には、NVL
関数を使用• NVL
関数は、NULL
を別の値に置換する関数• NULL
関数の構文:NVL
(列名、値)• NULL
関数の例:NVL
(SAL
、0
)2100 6100 3100
3600 100
NVL(SAL, 0)
+100
0 + 100
SAL
列値に100を加算
問題 1
ある会社の社員表(EMPLOYEES
表)は、ID
列とID
列には各社員の従業員番号(数値)が格納されており、各列にNULL値が格納されている場合のNULL値の扱われ方について、正しいも のを
1
つ選択してください。a.
数値を格納するID
列にNULL
値が格納されている場合のみ、0
とし て扱われるb.
文字データを格納するNULL
値が格納されている場合 のみ、空白として扱われるc.
文字データを格納するNULL
値が格納されている場合 は、空白として扱われ、数値を格納するID
列にNULL
値が格納さ れている場合は0
として扱われるd.
いずれの選択肢も該当しない
ある会社の社員表(EMPLOYEES
表)は、ID
列とID
列には各社員の従業員番号(数値)が格納されており、各列にNULL値が格納されている場合のNULL値の扱われ方について、正しいも のを
1
つ選択してください。a.
数値を格納するID
列にNULL
値が格納されている場合のみ、0
とし て扱われるb.
文字データを格納するNULL
値が格納されている場合 のみ、空白として扱われるc.
文字データを格納するNULL
値が格納されている場合 は、空白として扱われ、数値を格納するID
列にNULL
値が格納さ れている場合は0
として扱われるd.
いずれの選択肢も該当しない解答 1
問題 2
ある会社の社員表(EMPLOYEES
表)は、SAL
列とCOMMISSION
列から構成され ています。SAL
列には給与額(数値)が格納されており、COMMISSION
列には歩 合給の割合(数値)が格納されています。
SAL列の値が3,000で、COMMISSION列値がNULLの場合、
12*SAL*COMMISSION
の値はいくつになりますか。正しいものを
1
つ選択してください。a. 3,000 b. 36,000 c. 0
d. NULL
e. SQL
文の実行が失敗し、エラーとなる解答 2
ある会社の社員表(EMPLOYEES
表)は、SAL
列とCOMMISSION
列から構成され ています。SAL
列には給与額(数値)が格納されており、COMMISSION
列には歩 合給の割合(数値)が格納されています。
SAL列の値が3,000で、COMMISSION列値がNULLの場合、
12*SAL*COMMISSION
の値はいくつになりますか。正しいものを
1
つ選択してください。a. 3,000 b. 36,000 c. 0
d. NULL
e. SQL
文の実行が失敗し、エラーとなる表データの検索( SELECT 文)
EMPNO NAME JOB SAL DEPTNO
100
武井 社長6000 10
200
山崎 経理3000 20
300
桜井 営業2000 20
400
市川 技術3500 30
500
杉田1000 30
EMP表
• SELECT
文の構文SELECT
列名,
列名, … FROM
表名;例1)
EMP
表から全社員の名前(NAME
)を検索SELECT name FROM
emp
;SELECT * FROM
emp
;例
2
)EMP
表から全情報を検索SELECT empno, name, job, sal, deptno FROM emp
;※SQL文では、大文字・小文字は
区別されません。データ検索時に条件を指定( WHERE 句)
EMPNO NAME JOB SAL DEPTNO
100
武井 社長6000 10
200
山崎 経理3000 20
300
桜井 営業2000 20
400
市川 技術3500 30
500
杉田1000 30
EMP
(社員表)• SELECT
文の構文SELECT FROM
WHERE
条件式;
列名 表名
例
3
)EMP
表から部門番号(DEPTNO
)が20である社員の名前(NAME)と給与(SAL)を検索
SELECT name, sal FROM
emp
WHERE deptno = 20;
3000
山崎2000
桜井SAL NAME
検索結果
• ORDER BY
句を使用して検索結果を並び替える• ORDER BY
句はSELECT
文の最後に記述するEMPNO NAME JOB SAL DEPTNO
500
杉田 技術1000 30
300
桜井 営業2000 20
200
山崎 営業部長3000 20
400
市川 技術部長3500 30
100
武井 社長5000 10
SELECT
name, sal FROM
emp
ORDER BY sal;
SAL
列で昇順に並び替え検索結果の並び替え( ORDER BY 句)
SELECT name, sal FROM
emp
ORDER BY sal ASC;
=
昇順 昇順
SELECT
name, sal FROM
emp
ORDER BY sal DESC;
降順
EMP
(社員表)並び替えのルール(昇順の場合)
•
数値は、小さい値が先に表示される•
日付は、古い日付から先に表示される•
英字は、アルファベット順に表示される• NULL
は、最後に表示されるSELECT
文にORDER BY ASC
を指定してデータを検索した場合の動作として、正しいものを
2
つ選択してください。a.
数値は、小さい値が先に表示されるb.
日付は、新しい日付から先に表示されるc.
英字は、アルファベット順に表示されるd. NULL
は、最初に表示される問題 3
SELECT
文にORDER BY ASC
を指定してデータを検索した場合の動作として、正しいものを
2
つ選択してください。a.
数値は、小さい値が先に表示されるb.
日付は、新しい日付から先に表示されるc.
英字は、アルファベット順に表示されるd. NULL
は、最初に表示される解答 3
WHERE 句に指定できる条件
条件式
例
=
、<=
、>=
、<
、>
、< >
、!= WHERE sal < > 1000
等しい 等しくない 給与が
$1000
以外BETWEEN
最小値AND
最大値WHERE sal BETWEEN 1000 AND 3000
給与が$1000
以上、$3000
以下IN (値1、値2、値3、… ) WHERE job IN (‘営業’,’技術’)
職種が営業または技術LIKE
文字列WHERE name LIKE ‘A%’
名前がAではじまる
IS NULL ⇔ IS NOT NULL WHERE email IS NULL
メールアドレスがNULL
※1 文字データを指定する際には、シングル・クォーテーションで囲む
※2 シングル・クォーテーションで囲まれた文字については、大文字・小文字を区別する
問題 4
EMP(社員)表の情報を表示する際に、表に含まれる各列(EMPNO(社員番号)、
NAME(名前)、SAL(給与)に次のような条件を指定しようと思います。
1. EMPNO
が300
より大きく500
より小さいデータのみ表示2. NAME
がC
ではじまるデータのみ表示
3. SAL
がNULLではないもののみ表示
次の
SQL
文を実行した場合、上記3
つの条件のうちいくつ満たされますか。
SELECT empno, job, sal
FROM emp
WHERE empno BETWEEN 300 AND 500 AND name = ‘ C%’
AND sal
!= NULL
a.
1つの条件のみ満たされるb.
2つの条件が満たされるc.
3つすべての条件が満たされるd.
どの条件も満たされない解答 4
EMP(社員)表の情報を表示する際に、表に含まれる各列(EMPNO(社員番号)、
NAME(名前)、SAL(給与)に次のような条件を指定しようと思います。
1. EMPNO
が300
より大きく500
より小さいデータのみ表示2. NAMEがCではじまるデータのみ表示
3. SAL
がNULL
ではないもののみ表示次の
SQL
文を実行した場合、上記3
つの条件のうちいくつ満たされますか。
SELECT empno, job, sal
FROM emp
WHERE empno BETWEEN 300 AND 500 ↑ EMPNO > 300 AND EMPNO < 500 AND name = ‘ C%’ ← LIKE
‘C%’
AND sal != NULL ← IS NOT NULL
a.
1つの条件のみ満たされるb.
2つの条件が満たされるc.
3つすべての条件が満たされるd.
どの条件も満たされない関数 例 結果
UPPER UPPER(‘oracle’) ORACLE
大文字に変換 小文字のoracleを大文字に変換
SUBSTR SUBSTR(‘oracle’, 2, 3) rac
文字列を抽出
oracleの2文字目から3文字分を抽出
ROUND ROUND(45.923, 2) 45.92
四捨五入
45.923を小数点以下2桁になるよう四捨五入
TRUNC TRUNC(3.14) 3
切捨て
3.14
を小数点以下0
桁(整数)になるよう切捨てNVL NVL( comm, 0 )
0
NULL
を実値に変換comm列値がNULLの場合、0に置き換える
関数
次のSQL文を実行しました。
SQL> SELECT ROUND(45.923, 0), TRUNC(45.923)
2
FROM dual;
表示される値はどれですか。
1
つ選択してください。a. 46
と45.9 b. 46
と45 c. 46
と40 d. 50
と45.9 e. 50
と46 f. 50
と40
問題 5
次のSQL
文を実行しました。
SQL> SELECT ROUND(45.923, 0), TRUNC(45.923)
2
FROM dual;
表示される値はどれですか。
1
つ選択してください。a. 46
と45.9
b. 46
と45 ← 45.923
(9
を四捨五入&切捨て)c. 46
と40 d. 50
と45.9 e. 50
と46 f. 50
と40
解答 5
製品表には、次の列が含まれています。次の文の実行結果を選択肢の中から1つ選んで下さい。
SELECT NVL(数量, 0), コスト FROM 製品表
WHERE
製造番号LIKE ‘NF%’ ;
製品番号 詳細 製造番号 数量 コスト
1 A1 NF10032 500 3
2 A2 OT456 2000
3 D2 OT456 1
4 C2 OT456 200 0.7
5 A1 OT456 900 3
6 A1 NF10032 4
7 A2 NF10032 2500
8 C2 OT456 80 1
a.
、b.
、c.
、d.
、数量 コスト
500 3
0 4
2500
数量 コスト
500 3
4 2500
数量 コスト
500 3
4
2500 0
数量 コスト
500 3
0 4
2500 0
問題 6
製品表には、次の列が含まれています。次の文の実行結果を選択肢の中から1つ選んで下さい。
SELECT NVL(数量, 0), コスト FROM 製品表
WHERE 製造番号 LIKE ‘NF%’ ;
製品番号 詳細 製造番号 数量 コスト
1 A1 NF10032 500 3
2 A2 OT456 2000
3 D2 OT456 1
4 C2 OT456 200 0.7
5 A1 OT456 900 3
6 A1 NF10032 4
7 A2 NF10032 2500
8 C2 OT456 80 1
a.
、b.
、c.
、d.
、数量 コスト
500 3
0 4
2500
数量 コスト
500 3
4 2500
数量 コスト
500 3
4
2500 0
数量 コスト
500 3
0 4
2500 0
解答 6
ポイント解説範囲( 2 )
•
基本的なSQL Select
文の作成•
データの制限およびソート•
単一行関数•
グループ関数を使用したデータの集計•
複数の表からのデータの表示•
副問合せを使用した問合せの解決•
データ操作•
オブジェクトの作成および管理データをグループ化し集計する (GROUP BY)
• GROUP BY
句を使用してデータをグループ化できる•
グループ関数を使用して平均(AVG
関数)、合計(
SUM
関数)などのデータの集計ができるSELECT
deptno, sum(sal) FROM
emp
GROUP BY deptno;
EMPNO NAME SAL DEPTNO
100
武井6000 10
200
山崎3000 20
300
桜井2000 20
400
市川3500 30
500
杉田1000 30
DEPTNO SUM(SAL)
10 6000
20 5000
30 4500
EMP
(従業員表)集計値をもとにデータを絞り込む (HAVING)
• HAVING
句を使用して、集計値を条件に指定して データを絞り込むことができる• WHERE
句でグループ関数を指定することはできないEMPNO NAME SAL DEPTNO
100
武井6000 10
200
山崎3000 20
300
桜井2000 20
400
市川3500 30
500
杉田1000 30
EMP
(従業員表)DEPTNO SUM(SAL)
10 6000
20 5000
合計値は5000未満のため表示されない
SELECT
deptno, sum(sal) FROM
emp
GROUP BY deptno
HAVING sum(sal) >= 5000;
問題 7
EMP
表の部門(DEPTNO)
別、職種(JOB_ID
)の合計給与が3000
より多い部門の部 門番号(DEPTNO)
と職種(JOB_ID
)と合計給与SUM
(sal
)を検索しようと思います。検索結果を合計給与の少ないものから順に表示する場合、次の
SELECT
文の( )に該当する選択肢を1つ選んでください。
SQL> SELECT deptno, job_id, SUM(sal) 2 FROM emp
3 GROUP BY deptno, job_id 4 HAVING SUM(sal) > 3000 5 ( ) ;
a. ORDER BY SUM(sal) DESC b. ORDER BY job, SUM(sa
l) c. ORDER BY SUM(sal)
d. ORDER BY sal
解答 7
EMP
表の部門(DEPTNO)
別、職種(JOB_ID
)の合計給与が3000
より多い部門の部 門番号(DEPTNO)
と職種(JOB_ID
)と合計給与SUM
(sal
)を検索しようと思います。検索結果を合計給与の少ないものから順に表示する場合、次の
SELECT
文の( )に該当する選択肢を1つ選んでください。
SQL> SELECT deptno, job_id, SUM(sal) 2 FROM emp
3 GROUP BY deptno, job_id
4 HAVING SUM(sal) > 3000
5 ( ) ;
a. ORDER BY SUM(sal) DESC b. ORDER BY job, SUM(sal) c. ORDER BY SUM(sal)
d. ORDER BY sal
ポイント解説範囲( 3 )
•
基本的なSQL Select
文の作成•
データの制限およびソート•
単一行関数•
グループ関数を使用したデータの集計•
複数の表からのデータの表示•
副問合せを使用した問合せの解決•
データ操作•
オブジェクトの作成および管理•
データを操作するSQL
文(DML
文)
•
新しい行を追加する(INSERT
文)
•
行を変更する(UPDATE
文)
•
行を削除する(DELETE
文)
データの操作
データの追加( INSERT 文)
DEPT表
• INSERT
文の構文例)
DEPT
表に、新しい部署情報を追加INSERT INTO dept (deptno, dname, location) VALUES (40, ‘総務’, ‘外苑前’);
INSERT INTO dept
VALUES (40, ‘
総務’, ‘
外苑前’);
※1 文字や日付を入力する場合は、
シングル・クォーテーションで囲む
※2 列名の個数と、値の個数は同じにする
INSERT INTO 表名 (列名, 列名, ・・・)
VALUES (値, 値,・・・);
DEPTNO DNAME LOCATION
10 CEO
東京20
営業部 赤坂30
技術部 渋谷40
総務 外苑前すべての列に値を入力する場合は、列リストを省略することができる
• WHERE
句を指定して、変更対象行を特定する• WHERE
句を省略するとすべての行が更新されるUPDATE
文の構文UPDATE 表名
SET 列名=値, 列名=値, ・・・
WHERE 条件式
UPDATE emp SET sal = 1500
WHERE empno = 500;
EMPNO NAME SAL DEPTNO
100
武井6000 10
200
山崎3000 20
300
桜井2000 20
400
市川3500 30
500
杉田1000 30
EMP(従業員表)
1500
データを更新する(UPDATE文)
• WHERE
句を指定して、削除対象行を特定する• WHERE
句を省略するとすべての行が削除されるDELETE
文の構文DELETE FROM 表名 WHERE 条件式
DELETE FROM emp WHERE empno = 500;
EMPNO NAME SAL DEPTNO
100
武井6000 10
200
山崎3000 20
300
桜井2000 20
400
市川3500 30
500
杉田1000 30
EMP
(従業員表)データを削除する(DELETE文)
データ操作言語(DML)の文は、( )。( )に該当する選択肢を1つ選んでください。
a.
表の構造は変更するが、表データは変更しない。b.
表データおよび表の構造を変更するc.
表データは変更するが、表の構造は変更しない。問題 8
20 2000
営業
300
桜井10 6000
社長
100
武井20 3000
経理
200
山崎30 3500
技術
400
市川30 1000
500
杉田DEPTNO SAL
JOB NAME
EMPNO
データ操作言語(DML)の文は、( )。( )に該当する選択肢を1つ選んでください。
a.
表の構造は変更するが、表データは変更しない。b.
表データおよび表の構造を変更するc.
表データは変更するが、表の構造は変更しない。解答 8
20 2000
営業
300
桜井10 6000
社長
100
武井20 3000
経理
200
山崎30 3500
技術
400
市川30 1000
500
杉田DEPTNO SAL
JOB NAME
EMPNO
SQL Developer 11 g
SQL Developer
のメニュー・オプションを使用した データ定義言語(DDL
)操作の実行 SQL Developer
のメニュー・オプションを使用した データ操作言語(DML
)操作の実行http://www.oracle.com/jp/education/certification/index.html
チェックリスト
https://secure.oracle.co.jp/direct/inquiry-form.php
Oracle Direct
検索あなたにいちばん近いオラクル
Oracle Direct
まずはお問合せください
Web 問い合わせフォーム フリーダイヤル
専用お問い合わせフォームにてご相談内容を承ります。
※こちらから詳細確認のお電話を差し上げる場合がありますので、ご登録さ れている連絡先が最新のものになっているか、ご確認下さい。
0120 - 155 - 096
※月曜~金曜 9:00~12:00、13:00~18:00
(祝日および年末年始除く)システムの検討・構築から運用まで、
IT
プロジェクト全般の相談窓口としてご支援いたします。システム構成やライセンス/購入方法などお気軽にお問い合わせ下さい。
以上の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。
また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことは できません。以下の事項は、マテリアルやコード、機能を提供することをコミットメン ト(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さ い。オラクル製品に関して記載されている機能の開発、リリースおよび時期につい ては、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。