Oracle Databaseへは、SQL*PlusやSQL Developerなどのクライアント・プログラムからのみ接続できます。
注意: クライアント・プログラムを使用してOracle Databaseに接続した後、そのクライアント・プログラムのコマンドを入力して実行します。詳細は、クライアント・プログラムのマニュアルを参照してください。 |
この章の内容は、次のとおりです。
SQL*Plusは、Oracle Databaseにアクセス可能なクライアント・プログラムです。この項では、SQL*Plusを起動し、Oracle Databaseに接続する方法を示します。
SQL*PlusからOracle Databaseへ接続するには、次の手順を実行します。
Windowsシステムで行う場合は、Windowsのコマンド・プロンプトを表示します。
コマンド・プロンプトで、sqlplus
と入力してから[Enter]キーを押します。
ユーザー名のプロンプトで、ユーザー名を入力してから[Enter]キーを押します。
パスワードのプロンプトで、パスワードを入力してから[Enter]キーを押します。
注意: セキュリティのため、パスワードは画面上に表示されません。 |
Oracle Databaseインスタンスに接続されます。
SQL*Plus環境に入っています。 SQL>
プロンプトで、SQL*Plusコマンド、SQL文、PL/SQL文およびオペレーティング・システムのコマンドを入力して実行できます。
SQL*Plusを終了するには、exit
と入力して[Enter]キーを押します。
注意: SQL*Plusを終了するとSQL*Plusセッションは終了されますが、Oracle Databaseインスタンスは停止されません。 |
例2-1では、SQL*Plusを起動し、Oracle Databaseに接続し、SQLのSELECT
文を実行して、SQL*Plusを終了します。ユーザーの入力は太字になっています。
例2-1 SQL*PlusからOracle Databaseへの接続
> sqlplus SQL*Plus: Release 12.1.0.1.0 Production on Thu Dec 27 07:43:41 2012 Copyright (c) 1982, 2012, Oracle. All rights reserved. Enter user-name:your_user_name
Enter password:your_password
Connected to: Oracle Database 12c Enterprise Edition Release - 12.1.0.1.0 64bit Production SQL> select count(*) from employees; COUNT(*) ---------- 107 SQL> exit Disconnected from Oracle Database 12c Enterprise Edition Release - 12.1.0.1.0 64bit Production >
参照:
|
SQL Developerは、Oracle Databaseにアクセス可能なクライアント・プログラムです。Oracle Database 12cリリース (12.1)では、SQL Developerバージョン4.0以降の使用をお薦めします(このバージョンは次の場所からダウンロード可能)。
http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/
この項では、SQL Developerがシステムにインストールされていることを前提として、SQL Developerを起動し、Oracle Databaseに接続する方法を示します。SQL Developerがインストールされていないシステムの場合、インストール手順の詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。
SQL DeveloperからOracle Databaseに接続するには、次の手順を実行します。
SQL Developerを起動します。
手順は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。
システムでSQL Developerを最初に起動する場合、java
.exe
へのフルパスを入力するよう求められます(例: C:\Program Files\Java\jdk1.6.0_021\bin\java.exe
)。プロンプトに続けてフルパスを入力するか、または参照を行い、[Enter]キーを押します。
「接続」フレームで、「接続の作成」アイコンをクリックします。
「データベース接続の作成/選択」で、次の手順を実行します。
「接続名」、「ユーザー名」および「パスワード」の各フィールドに適切な値を入力します。
セキュリティのため、入力したパスワードの文字はアスタリスクで表示されます。
「パスワード」フィールドの近くに「パスワードの保存」チェック・ボックスがあります。デフォルトでは、選択解除されています。デフォルトを受け入れることをお薦めします。
「Oracle」ペインが表示されない場合は、「Oracle」タブをクリックします。
「Oracle」ペインでデフォルト値を受け入れます。
(デフォルト値は、接続タイプ: 基本、ロール: デフォルト、ホスト名: localhost、ポート: 1521、SIDオプション: 選択、SIDフィールド: xeです。)
「テスト」ボタンをクリックします。
接続がテストされます。接続が成功すると、「ステータス」インジケータが空白から「成功」
に変わります。
テストが成功したら、「接続」をクリックします。
「データベース接続の作成/選択」ウィンドウが閉じます。「接続」フレームに、手順 3で「接続名」フィールドに入力した名前の接続が表示されます。
SQL Developer環境に入っています。
SQL Developerを終了するには、「ファイル」メニューから「終了」を選択します。
注意: SQL Developerを終了するとSQL Developerセッションは終了されますが、Oracle Databaseインスタンスは停止されません。次回SQL Developerを起動するときには、これまでの手順で作成した接続が残っています。SQL Developerでは、手順3で入力したパスワードを要求されます(「パスワードの保存」チェック・ボックスを選択していない場合のみ)。 |
参照:
|
この項では、HR
アカウントをロック解除し、このマニュアルの例やチュートリアルで使用するHR
サンプル・スキーマを所有するユーザーHR
として、Oracle Databaseに接続する方法を示します。
このドキュメントのチュートリアルと例を実行するには、ユーザーHR
としてOracle Databaseに接続する必要があります。
この項の内容は次のとおりです。
この項では、HR
アカウントのロックを解除し、パスワードをリセットする方法を説明します。
デフォルトでは、HR
スキーマがインストールされた際にHR
アカウントがロックされ、パスワードが期限切れになります。 HR
アカウントがロック解除されていないと、ユーザーHR
としてOracle Databaseに接続することができません。
注意: 次の手順では、ALTER USER システム権限を持つユーザーの名前とパスワードが必要です。 |
HRアカウントをロック解除し、パスワードをリセットするには、次の手順を実行します。
SQL*Plusを使用して、ALTER
USER
のシステム権限があるユーザーとしてOracle Databaseに接続します。
SQL>
プロンプトで、HR
アカウントをロック解除し、パスワードをリセットします。
注意: セキュアなパスワードを選択してください。セキュアなパスワードの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
ALTER USER HR ACCOUNT UNLOCK IDENTIFIED BY password;
システムから次のように応答が返されます。
User altered.
HR
アカウントがロック解除され、パスワードがpassword
になりました。
これでユーザーHR
として、パスワードpassword
を使用して、Oracle Databaseに接続できます。
参照:
|
この項では、ユーザーHR
としてSQL*PlusからOracle Databaseに接続する方法を説明します。
ユーザーHRとして、SQL*PlusからOracle Databaseへ接続するには、次の手順を実行します。
注意: この作業では、HR アカウントのパスワードが必要です。 |
Oracle Databaseに接続している場合は、現在の接続をクローズします。
「SQL*PlusからOracle Databaseへの接続」の指示に従って、手順3でユーザー名HR
を入力し、手順4でHR
アカウントのパスワードを入力します。
これで、ユーザーHR
としてOracle Databaseに接続しました。
参照: SQL*Plusを使用したHR の接続の作成例は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。 |
この項では、ユーザーHR
としてSQL DeveloperからOracle Databaseに接続する方法を説明します。
ユーザーHRとしてSQL DeveloperからOracle Databaseに接続するには、次の手順を実行します。
注意: この作業では、HR アカウントのパスワードが必要です。 |
「SQL DeveloperからOracle Databaseへの接続」の指示に従って、手順3で次の値を入力します。
「接続名」にhr_conn
と入力します。
(異なる名前を入力できますが、このマニュアルのチュートリアルでは、接続にhr_conn
という名前を付けたと想定します。)
「ユーザー名」には、HR
と入力します。
「パスワード」には、HR
アカウントのパスワードを入力します。
これで、ユーザーHR
としてOracle Databaseに接続しました。
この項の内容は次のとおりです。
注意: HR としてSQL*PlusからOracle Databaseに接続していない場合、「ユーザーHRとしてSQL*PlusからOracle Databaseへの接続」を参照してから、この項に戻ってください。 |
SQL*Plusを使用して、静的データ・ディクショナリ・ビューUSER_OBJECTS
に問い合せ、HR
スキーマに属するオブジェクトを表示できます。
例2-2では、HR
スキーマに属するオブジェクトの名前およびデータ型を表示する方法を示しています。
例2-2 SQL*PlusによるHRスキーマ・オブジェクトの表示
COLUMN OBJECT_NAME FORMAT A25 COLUMN OBJECT_TYPE FORMAT A25 SELECT OBJECT_NAME, OBJECT_TYPE FROM USER_OBJECTS ORDER BY OBJECT_TYPE, OBJECT_NAME;
結果は次のようになります。
OBJECT_NAME OBJECT_TYPE ------------------------- ------------------------- COUNTRY_C_ID_PK INDEX DEPT_ID_PK INDEX DEPT_LOCATION_IX INDEX EMP_DEPARTMENT_IX INDEX EMP_EMAIL_UK INDEX EMP_EMP_ID_PK INDEX EMP_JOB_IX INDEX EMP_MANAGER_IX INDEX EMP_NAME_IX INDEX JHIST_DEPARTMENT_IX INDEX JHIST_EMPLOYEE_IX INDEX JHIST_EMP_ID_ST_DATE_PK INDEX JHIST_JOB_IX INDEX JOB_ID_PK INDEX LOC_CITY_IX INDEX LOC_COUNTRY_IX INDEX LOC_ID_PK INDEX LOC_STATE_PROVINCE_IX INDEX REG_ID_PK INDEX ADD_JOB_HISTORY PROCEDURE SECURE_DML PROCEDURE DEPARTMENTS_SEQ SEQUENCE EMPLOYEES_SEQ SEQUENCE LOCATIONS_SEQ SEQUENCE COUNTRIES TABLE DEPARTMENTS TABLE EMPLOYEES TABLE JOBS TABLE JOB_HISTORY TABLE LOCATIONS TABLE REGIONS TABLE SECURE_EMPLOYEES TRIGGER UPDATE_JOB_HISTORY TRIGGER EMP_DETAILS_VIEW VIEW 34 rows selected.
参照:
|
SQL*Plusでは、SQL*PlusコマンドDESCRIBE
を使用してHR
スキーマのEMPLOYEES
表の列のプロパティを表示したり、SQL文SELECT
を使用してデータを表示したりできます。表の別のプロパティを表示するには、静的データ・ディクショナリ・ビュー(USER_CONSTRAINTS
、USER_INDEXES
、USER_TRIGGERS
など)を使用します。
例2-3では、HR
スキーマのEMPLOYEES
表のプロパティを表示する方法を示しています。
例2-3 SQL*PlusによるEMPLOYEES表のプロパティの表示
DESCRIBE EMPLOYEES
結果:
Name Null? Type ----------------------------------------- -------- ------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
例2-4では、HR
スキーマのEMPLOYEES
表のデータの一部を表示する方法を示しています。
例2-4 SQL*PlusによるEMPLOYEES表のデータの表示
COLUMN FIRST_NAME FORMAT A20 COLUMN LAST_NAME FORMAT A25 COLUMN PHONE_NUMBER FORMAT A20 SELECT LAST_NAME, FIRST_NAME, PHONE_NUMBER FROM EMPLOYEES ORDER BY LAST_NAME;
結果は次のようになります。
LAST_NAME FIRST_NAME PHONE_NUMBER ------------------------- -------------------- -------------------- Abel Ellen 011.44.1644.429267 Ande Sundar 011.44.1346.629268 Atkinson Mozhe 650.124.6234 Austin David 590.423.4569 Baer Hermann 515.123.8888 Baida Shelli 515.127.4563 Banda Amit 011.44.1346.729268 Bates Elizabeth 011.44.1343.529268 ... Urman Jose Manuel 515.124.4469 Vargas Peter 650.121.2004 Vishney Clara 011.44.1346.129268 Vollman Shanta 650.123.4234 Walsh Alana 650.507.9811 Weiss Matthew 650.123.1234 Whalen Jennifer 515.123.4444 Zlotkey Eleni 011.44.1344.429018 107 rows selected.
参照:
|
この項の内容は次のとおりです。
このチュートリアルではSQL Developerを使用してHR
スキーマに属するオブジェクトを表示する方法(つまり、HR
スキーマを参照する方法)を説明します。
注意: ユーザーHR としてSQL DeveloperからOracle Databaseに接続していない場合、「ユーザーHRとしてSQL DeveloperからOracle Databaseへの接続」を参照してから、このチュートリアルに戻ってください。 |
HRスキーマを参照するには、次の手順を実行します。
「接続」フレームで、hr_conn
アイコンの左にあるプラス記号(+)をクリックします。
データベースに接続していない場合は、「接続情報」ウィンドウが開きます。データベースに接続している場合は、hr_conn
の情報が展開されます(手順2の「「OK」をクリックします」の後の情報を参照)。
「接続情報」ウィンドウが開かれた場合は、次のようにします。
「ユーザー名」フィールドに、hr
と入力します。
「パスワード」フィールドに、ユーザーhr
のパスワードを入力します。
「OK」をクリックします。
hr_conn
の情報を展開します。プラス記号がマイナス記号(-)に変わり、hr_conn
アイコンの下に「表」、「ビュー」、「索引」などの項目があるスキーマ・オブジェクト・タイプのリストが表示されます(マイナス記号をクリックすると、hr_conn
の情報が閉じます。マイナス記号はプラス記号に変わり、リストは非表示になります)。
参照:
|
このチュートリアルでは、SQL Developerを使用してHR
スキーマのEMPLOYEES
表のプロパティとデータを確認する方法を説明します。
EMPLOYEES表のプロパティとデータを表示するには、次の手順を実行します。
「接続」フレームで、「表」を展開します。
「表」の下に、HR
スキーマにある表のリストが表示されます。
表EMPLOYEESを選択します。
Oracle SQL Developerウィンドウの右側フレームの「列」ペインに、この表にあるすべての列のリストが表示されます。各列の右側に、名前やデータ型などのプロパティがあります。(列のすべてのプロパティを参照するには、水平スクロール・バーを右に動かします。)
右側のフレームで、「データ」タブをクリックします。
「データ」ペインが表示され、この表にあるすべてのレコードの番号付きリストが表示されます。(さらにレコードを参照するには、垂直スクロール・バーを下へ移動します。さらにレコードの列を参照するには、水平スクロール・バーを右へ移動します。)
「制約」ペインが表示され、この表に対するすべての制約のリストが表示されます。各制約の右側には、名前、型、検索条件などのプロパティがあります。(制約のすべてのプロパティを参照するには、水平スクロール・バーを右へ動かします。)
適切なタブをクリックして、他のプロパティを参照します。
EMPLOYEES
表を作成するためのSQL文を確認するには、「SQL」タブをクリックします。SQL文は、EMPLOYEES
という名前のペインに表示されます。このペインを閉じるには、名前EMPLOYEES
の右のxをクリックします。
参照: SQL Developerのユーザー・インタフェースの詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。 |
この項の内容は次のとおりです。
注意: この項のチュートリアルおよび例を実行するには、ユーザーHR としてSQL DeveloperからOracle Databaseに接続する必要があります。手順は、「ユーザーHRとしてのSQL DeveloperからOracle Databaseへの接続」を参照してください。 |
問合せ、つまりSQLのSELECT
文は、1つ以上の表またはビューからデータを選択します。
SELECT select_list FROM source_list
select_list
は、データが選択される列を指定し、source_list
は、それらの列を含む表またはビューを指定します。
別のSQL文内にネストされた問合せは、副問合せと呼ばれます。
SQL*Plus環境では、SQL>
プロンプトで問合せ(またはその他の任意のSQL文)を入力できます。
SQL Developer環境では、ワークシートで問合せ(またはその他の任意のSQL文)を入力できます。
参照:
|
この項では、ワークシートを使用してSQL Developerで問合せを実行する方法を説明します。
注意: ワークシートは問合せに限定されておらず、任意のSQL文の実行に使用できます。 |
SQL Developerにおいて問合せを実行するには、次の手順を実行します。
SQL Developerの右側のフレームに、hr_conn
ペインが表示されます。
「ワークシート」サブペインが表示されない場合は、「ワークシート」タブをクリックします。
手順 3に進みます。
「SQLワークシート」アイコンをクリックします。
「接続の選択」ウィンドウが開かれた場合は、次のようにします。
「接続」フィールドの値がhr_conn
ではない場合は、メニューからその値を選択します。
「OK」をクリックします。
ペインに、hr_conn
というラベルのタブと、「ワークシート」および「クエリー・ビルダー」という2つのサブペインが表示されます。ワークシートにはSQL文を入力できます。
ワークシートに問合せ(SELECT
文)を入力します。
「文の実行」アイコンをクリックします。
問合せが実行されます。ワークシートの下に「問合せ結果」ペインが表示され、問合せの結果が表示されます。
「hr_conn」
タブの下で、「クリア」アイコンをクリックします。
問合せが消去され、ワークシートに別のSQL文を入力できます。別のSQL文を実行すると、その結果が前に実行したSQL文の結果のかわりに「問合せ結果」ペインに表示されます。
参照: SQL Developerでのワークシートの使用の詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。 |
このチュートリアルは、EMPLOYEES
表の列を選択する方法を示します。
EMPLOYEES表のすべての列を選択するには、次の手順を実行します。
hr_conn
というタブが含まれるペインがあれば、それを選択します。そうでない場合は、「SQL Developerにおける問合せの実行」にあるように、「SQLワークシート」アイコンをクリックします。
ワークシートに、次の問合せを入力します。
SELECT * FROM EMPLOYEES;
「文の実行」アイコンをクリックします。
問合せが実行されます。ワークシートの下に「問合せ結果」ペインが表示され、EMPLOYEES
表のすべての列が表示されます。
注意: パスワードやクレジット・カード情報などの機密データを保存する列が含まれる表でSELECT * を使用する場合は十分に注意してください。 |
参照: 別の方法でSQL Developerで表データを表示する他の方法の詳細は、「チュートリアル: SQL DeveloperによるEMPLOYEES表のプロパティとデータの表示」を参照してください。 |
このチュートリアルでは、EMPLOYEES
表のFIRST_NAME
列、LAST_NAME
列およびDEPARTMENT_ID
列のみを選択する方法を示します。
FIRST_NAME、LAST_NAMEおよびDEPARTMENT_IDのみを選択するには、次の手順を実行します。
hr_conn
というタブが含まれるペインがあれば、それを選択します。そうでない場合は、「SQL Developerにおける問合せの実行」にあるように、「SQLワークシート」アイコンをクリックします。
「ワークシート」ペインに問合せが含まれている場合、「クリア」アイコンをクリックして問合せを消去します。
ワークシートに、次の問合せを入力します。
SELECT FIRST_NAME, LAST_NAME, DEPARTMENT_ID FROM EMPLOYEES;
「文の実行」アイコンをクリックします。
問合せが実行されます。ワークシートの下に「問合せ結果」ペインが表示され、次のような問合せの結果が表示されます。
FIRST_NAME LAST_NAME DEPARTMENT_ID -------------------- ------------------------- ------------- Donald OConnell 50 Douglas Grant 50 Jennifer Whalen 10 Michael Hartstein 20 Pat Fay 20 Susan Mavris 40 Hermann Baer 70 Shelley Higgins 110 William Gietz 110 Steven King 90 Neena Kochhar 90 FIRST_NAME LAST_NAME DEPARTMENT_ID -------------------- ------------------------- ------------- Lex De Haan 90 ... Kevin Feeney 50 107 rows selected.
問合せ結果を表示する際に、デフォルトの列ヘッダーは列名です。新規のヘッダーの下に列が表示されるようにするには、列名の直後に新規のヘッダー(別名)を指定します。別名により、問合せの期間に対する列名が変更されますが、データベース内の対応する名前は変更されません。
例2-5の問合せは、「チュートリアル: 表の特定の列の選択」の問合せと同じ列を選択しますが、列の別名も指定します。別名が二重引用符で囲まれていないので、大文字で表示されます。
例2-5 新規のヘッダーの下での選択された列の表示
SELECT FIRST_NAME First, LAST_NAME last, DEPARTMENT_ID DepT FROM EMPLOYEES;
結果は次のようになります。
FIRST LAST DEPT -------------------- ------------------------- ---------- Donald OConnell 50 Douglas Grant 50 Jennifer Whalen 10 Michael Hartstein 20 Pat Fay 20 Susan Mavris 40 Hermann Baer 70 Shelley Higgins 110 William Gietz 110 Steven King 90 Neena Kochhar 90 FIRST LAST DEPT -------------------- ------------------------- ---------- Lex De Haan 90 ... Kevin Feeney 50 107 rows selected.
列の別名を二重引用符で囲むと、例2-6のように、大/小文字の区別が保持され、別名に空白を使用することも可能です。
例2-6 列の別名における大/小文字の区別の保持および空白の使用
SELECT FIRST_NAME "Given Name", LAST_NAME "Family Name" FROM EMPLOYEES;
結果は次のようになります。
Given Name Family Name -------------------- ------------------------- Donald OConnell Douglas Grant Jennifer Whalen Michael Hartstein Pat Fay Susan Mavris Hermann Baer Shelley Higgins William Gietz Steven King Neena Kochhar Given Name Family Name -------------------- ------------------------- Lex De Haan ... Kevin Feeney 107 rows selected.
参照: 列の別名(c_alias )を含むSELECT 文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
指定された条件に一致するデータのみを選択するには、SELECT
文にWHERE
句を含めます。WHERE
句には、任意のSQL条件を使用できます(SQL条件の詳細は、『Oracle Database SQL言語リファレンス』を参照してください)。
例2-7の問合せは、部門90に所属する従業員のデータのみを選択します。
例2-7 1つの部門からのデータの選択
SELECT FIRST_NAME, LAST_NAME, DEPARTMENT_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 90;
結果は次のようになります。
FIRST_NAME LAST_NAME DEPARTMENT_ID -------------------- ------------------------- ------------- Steven King 90 Neena Kochhar 90 Lex De Haan 90 3 rows selected.
部門100、110および120の従業員のデータのみを選択する場合は、このWHERE
句を使用します。
WHERE DEPARTMENT_ID IN (100, 110, 120);
例2-8の問合せは、姓が「Ma」で始まる従業員のデータのみを選択します。
例2-8 同じ部分文字列で始まる姓を持つデータの選択
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE LAST_NAME LIKE 'Ma%';
結果は次のようになります。
FIRST_NAME LAST_NAME -------------------- ------------------------- Jason Mallin Steven Markle James Marlow Mattea Marvins Randall Matos Susan Mavris 6 rows selected.
姓にmaが含まれる従業員のデータのみを選択する場合は、このWHERE
句を使用します。
WHERE LAST_NAME LIKE '%ma%';
例2-9の問合せは、給与が少なくとも11000であり、かつ歩合率がNULLではないという2つの条件をテストします。
例2-9 2つの条件を満たすデータの選択
SELECT FIRST_NAME, LAST_NAME, SALARY, COMMISSION_PCT "%"
FROM EMPLOYEES
WHERE (SALARY >= 11000) AND (COMMISSION_PCT IS NOT NULL);
結果は次のようになります。
FIRST_NAME LAST_NAME SALARY % -------------------- ------------------------- ---------- ---------- John Russell 14000 .4 Karen Partners 13500 .3 Alberto Errazuriz 12000 .3 Gerald Cambrault 11000 .3 Lisa Ozer 11500 .25 Ellen Abel 11000 .3 6 rows selected.
参照:
|
問合せの結果を表示する場合に、ORDER
BY
句で順序を指定しないと、レコードは任意の順序になります。
例2-10の問合せの結果は、LAST_NAME
を基準に昇順(デフォルト)でソートされます。
また、SQL Developerでは、ORDER
BY
句を省略し、列の名前をダブルクリックしてソートすることもできます。
例2-10 LAST_NAMEによる選択されたデータのソート
SELECT FIRST_NAME, LAST_NAME, HIRE_DATE
FROM EMPLOYEES
ORDER BY LAST_NAME;
結果:
FIRST_NAME LAST_NAME HIRE_DATE -------------------- ------------------------- --------- Ellen Abel 11-MAY-04 Sundar Ande 24-MAR-08 Mozhe Atkinson 30-OCT-05 David Austin 25-JUN-05 Hermann Baer 07-JUN-02 Shelli Baida 24-DEC-05 Amit Banda 21-APR-08 Elizabeth Bates 24-MAR-07 ... FIRST_NAME LAST_NAME HIRE_DATE -------------------- ------------------------- --------- Jose Manuel Urman 07-MAR-06 Peter Vargas 09-JUL-06 Clara Vishney 11-NOV-05 Shanta Vollman 10-OCT-05 Alana Walsh 24-APR-06 Matthew Weiss 18-JUL-04 Jennifer Whalen 17-SEP-03 Eleni Zlotkey 29-JAN-08 107 rows selected
例2-11に示すように、ソート基準を選択リストに含める必要はありません。
例2-11 選択対象ではない列による選択されたデータのソート
SELECT FIRST_NAME, HIRE_DATE FROM EMPLOYEES ORDER BY LAST_NAME;
結果:
FIRST_NAME HIRE_DATE -------------------- --------- Ellen 11-MAY-04 Sundar 24-MAR-08 Mozhe 30-OCT-05 David 25-JUN-05 Hermann 07-JUN-02 Shelli 24-DEC-05 Amit 21-APR-08 Elizabeth 24-MAR-07 ... FIRST_NAME HIRE_DATE -------------------- --------- Jose Manuel 07-MAR-06 Peter 09-JUL-06 Clara 11-NOV-05 Shanta 10-OCT-05 Alana 24-APR-06 Matthew 18-JUL-04 Jennifer 17-SEP-03 Eleni 29-JAN-08 107 rows selected.
参照: ORDER BY 句を含むSELECT 文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
すべての従業員のFIRST_NAME
、LAST_NAME
およびDEPARTMENT_NAME
を選択する場合を考えます。FIRST_NAME
およびLAST_NAME
はEMPLOYEES
表にあり、DEPARTMENT_NAME
はDEPARTMENTS
表にあります。どちらの表にもDEPARTMENT_ID
があります。この場合、例2-12の問合せを使用できます。このような問合せを結合と呼びます。
例2-12 2つの表からのデータの選択(2つの表の結合)
SELECT EMPLOYEES.FIRST_NAME "First",
EMPLOYEES.LAST_NAME "Last",
DEPARTMENTS.DEPARTMENT_NAME "Dept. Name"
FROM EMPLOYEES, DEPARTMENTS
WHERE EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID
ORDER BY DEPARTMENTS.DEPARTMENT_NAME, EMPLOYEES.LAST_NAME;
結果:
First Last Dept. Name -------------------- ------------------------- ------------------------------ William Gietz Accounting Shelley Higgins Accounting Jennifer Whalen Administration Lex De Haan Executive Steven King Executive Neena Kochhar Executive John Chen Finance ... Jose Manuel Urman Finance Susan Mavris Human Resources David Austin IT ... Valli Pataballa IT Pat Fay Marketing Michael Hartstein Marketing Hermann Baer Public Relations Shelli Baida Purchasing ... Sigal Tobias Purchasing Ellen Abel Sales ... Eleni Zlotkey Sales Mozhe Atkinson Shipping ... Matthew Weiss Shipping 106 rows selected.
テーブル名修飾子は、結合内の一方の表にのみ現れる列名に対してはオプションですが、両方の表に現れる列名に対しては必須です。次の問合せは、例2-12の問合せと同等です。
SELECT FIRST_NAME "First", LAST_NAME "Last", DEPARTMENT_NAME "Dept. Name" FROM EMPLOYEES, DEPARTMENTS WHERE EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID ORDER BY DEPARTMENT_NAME, LAST_NAME;
修飾された列名を使用する問合せを読みやすくするには、次の例のように、表の別名を使用します。
SELECT FIRST_NAME "First", LAST_NAME "Last", DEPARTMENT_NAME "Dept. Name" FROM EMPLOYEES e, DEPARTMENTS d WHERE e.DEPARTMENT_ID = d.DEPARTMENT_ID ORDER BY d.DEPARTMENT_NAME, e.LAST_NAME;
FROM
句で別名を作成するのではなく、次の例のように、問合せの中で先に作成することも可能です。
SELECT e.FIRST_NAME "First", e.LAST_NAME "Last", d.DEPARTMENT_NAME "Dept. Name" FROM EMPLOYEES e, DEPARTMENTS d WHERE e.DEPARTMENT_ID = d.DEPARTMENT_ID ORDER BY d.DEPARTMENT_NAME, e.LAST_NAME;
参照: 結合の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
問合せのselect_list
には、SQL演算子およびSQLファンクションを含むSQL式が含まれます。これらの演算子およびファンクションは、オペランドおよび引数として表データを持つことが可能です。SQL式を評価して、得られた値が問合せの結果に表示されます。
この項の内容は次のとおりです。
参照:
|
SQLは、基本的な算術演算子として+
(加算)、-
(減算)、*
(乗算)および/
(除算)をサポートしています。
例2-13の問合せは、部門90に所属する各従業員のLAST_NAME
、SALARY
(月給)および年間賃金をSALARY
の降順で表示します。
数値ファンクションは、数値入力を受け取り、数値を返します。各数値ファンクションは、評価される各行に対し、値を1つ返します。SQLがサポートする数値ファンクションのリストと説明については、『Oracle Database SQL言語リファレンス』を参照してください。
例2-14の問合せは、数値ファンクションROUND
を使用して、部門100の各従業員の日給を1セント未満は四捨五入して表示します。
例2-14 数値データの四捨五入
SELECT LAST_NAME,
ROUND (((SALARY * 12)/365), 2) "Daily Pay"
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 100
ORDER BY LAST_NAME;
結果:
LAST_NAME Daily Pay ------------------------- ---------- Chen 269.59 Faviet 295.89 Greenberg 394.52 Popp 226.85 Sciarra 253.15 Urman 256.44 6 rows selected.
例2-15の問合せは、数値ファンクションTRUNC
を使用して、部門100の各従業員の日給を1ドル未満は切り捨てて表示します。
例2-15 数値データの切捨て
SELECT LAST_NAME,
TRUNC ((SALARY * 12)/365) "Daily Pay"
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 100
ORDER BY LAST_NAME;
結果:
LAST_NAME Daily Pay ------------------------- ---------- Chen 269 Faviet 295 Greenberg 394 Popp 226 Sciarra 253 Urman 256 6 rows selected.
参照: SQL数値ファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
連結演算子(||)は、1番目の文字列に2番目の文字列を追加することによって、2つの文字列を1つに結合します。たとえば、'a'||'b'='ab'
となります。この演算子を使用すると、例2-16の問合せのように、2つの列または式の情報をレポートの同じ列の中に結合できます。
例2-16 文字データの連結
SELECT FIRST_NAME || ' ' || LAST_NAME "Name"
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 100
ORDER BY LAST_NAME;
結果:
Name ---------------------------------------------- John Chen Daniel Faviet Nancy Greenberg Luis Popp Ismael Sciarra Jose Manuel Urman 6 rows selected.
参照: 連結演算子の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
文字ファンクションは、文字入力を受け取ります。多くは文字の値を返しますが、数値を返すものもあります。各文字ファンクションは、評価される各行に対し、値を1つ返します。SQLがサポートする文字ファンクションのリストと説明については、『Oracle Database SQL言語リファレンス』を参照してください。
UPPER
、INITCAP
およびLOWER
ファンクションは文字引数をそれぞれ、すべて大文字、頭文字のみ大文字および、すべて小文字で表示します。
例2-17の問合せは、LAST_NAME
を大文字で、FIRST_NAME
は頭文字を大文字で他は小文字で、EMAIL
を小文字で表示します。
例2-17 文字データの大/小文字の変更
SELECT UPPER(LAST_NAME) "Last", INITCAP(FIRST_NAME) "First", LOWER(EMAIL) "E-Mail" FROM EMPLOYEES WHERE DEPARTMENT_ID = 100 ORDER BY EMAIL;
結果:
Last First E-Mail ------------------------- -------------------- ------------------------- FAVIET Daniel dfaviet SCIARRA Ismael isciarra CHEN John jchen URMAN Jose Manuel jmurman POPP Luis lpopp GREENBERG Nancy ngreenbe 6 rows selected.
参照: SQL文字ファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
日時ファンクションは、DATE
、タイムスタンプ、間隔の値を操作します。各日付ファンクションは、評価される各行に対し、値を1つ返します。SQLがサポートする日付ファンクションのリストと説明については、『Oracle Database SQL言語リファレンス』を参照してください。
各DATE
およびタイムスタンプの値として、Oracle Databaseには、次の情報が格納されています。
Year
Month
Date
Hour
Minute
Second
タイムスタンプの値として、Oracle Databaseには、指定した精度の秒の小数部分も格納されます。また、タイムゾーンを格納するには、データ型TIMESTAMP
WITH
TIME
ZONE
またはTIMESTAMP
WITH
LOCAL
TIME
ZONE
を使用します。
DATE
データ型の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
TIMESTAMP
データ型の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
その他のタイムスタンプ・データ型および間隔データ型の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
例2-18の問合せは、EXTRACT
およびSYSDATE
ファンクションを使用して、部門100の各従業員が何年間雇用されているかを表示します。SYSDATE
ファンクションは、システム・クロックの現在日時をDATE
値として返します。SYSDATE
ファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。EXTRACT
ファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
例2-18 日付間の年数の表示
SELECT LAST_NAME,
(EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE)) "Years Employed"
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 100
ORDER BY "Years Employed";
結果:
LAST_NAME Years Employed ------------------------- -------------- Popp 5 Urman 6 Chen 7 Sciarra 7 Greenberg 10 Faviet 10 6 rows selected.
例2-19の問合せは、SYSTIMESTAMP
ファンクションを使用して、現在のシステム日付と時間を表示します。SYSTIMESTAMP
ファンクションは、TIMESTAMP
値を返します。SYSTIMESTAMP
ファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
問合せのFROM
句内のDUAL
表は、Oracle Databaseがデータ・ディクショナリとともに自動的に作成する1行の表です。 SELECT
文を使用して定数式を計算する場合は、DUAL
から選択します。 DUAL
には行が1つしかないため、定数が返されるのは1回のみです。DUAL
からの選択の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
例2-19 システム日付および時間の表示
SELECT EXTRACT(HOUR FROM SYSTIMESTAMP) || ':' || EXTRACT(MINUTE FROM SYSTIMESTAMP) || ':' || ROUND(EXTRACT(SECOND FROM SYSTIMESTAMP), 0) || ', ' || EXTRACT(MONTH FROM SYSTIMESTAMP) || '/' || EXTRACT(DAY FROM SYSTIMESTAMP) || '/' || EXTRACT(YEAR FROM SYSTIMESTAMP) "System Time and Date" FROM DUAL;
結果は、現在のSYSTIMESTAMP
の値に依存しますが、次の形式で表示されます。
System Time and Date ------------------------------------------------------------------- 18:17:53, 12/27/2012
参照: SQL日付ファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
変換ファンクションは、あるデータ型を他のデータ型に変換します。SQLがサポートする変換ファンクションのリストと説明については、『Oracle Database SQL言語リファレンス』を参照してください。
例2-20の問合せは、TO_CHAR
ファンクションを使用して、HIRE_DATE
値(DATE
型)をFMMonth
DD
YYYY
書式の文字値に変換します。 FM
は、月名から先頭と末尾の空白を削除します。 FMMonth
DD
YYYY
は、日付時間書式モデルの一例です。日付時間書式モデルの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
例2-20 日付から文字列への書式テンプレートを使用した変換
SELECT LAST_NAME,
HIRE_DATE,
TO_CHAR(HIRE_DATE, 'FMMonth DD YYYY') "Date Started"
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 100
ORDER BY LAST_NAME;
結果:
LAST_NAME HIRE_DATE Date Started ------------------------- --------- ----------------- Chen 28-SEP-05 September 28 2005 Faviet 16-AUG-02 August 16 2002 Greenberg 17-AUG-02 August 17 2002 Popp 07-DEC-07 December 7 2007 Sciarra 30-SEP-05 September 30 2005 Urman 07-MAR-06 March 7 2006 6 rows selected.
例2-21の問合せは、TO_NUMBER
ファンクションを使用して、POSTAL_CODE
値(VARCHAR2
型)を、計算で使用するNUMBER
型の値に変換します。
例2-21 文字列から数値への変換
SELECT CITY,
POSTAL_CODE "Old Code",
TO_NUMBER(POSTAL_CODE) + 1 "New Code"
FROM LOCATIONS
WHERE COUNTRY_ID = 'US'
ORDER BY POSTAL_CODE;
結果:
CITY Old Code New Code ------------------------------ ------------ ---------- Southlake 26192 26193 South Brunswick 50090 50091 Seattle 98199 98200 South San Francisco 99236 99237 4 rows selected.
集計ファンクションは、行のグループを取得し、単一の結果行を返します。行のグループは表またはビュー全体です。SQLがサポートする集計ファンクションのリストと説明については、『Oracle Database SQL言語リファレンス』を参照してください。
集計ファンクションは、1つまたは複数の列ごとに問合せ結果をグループ化するGROUP
BY
句を各グループの結果ともに使用する場合に、特に有効です。
例2-22の問合せは、COUNT
ファンクションおよびGROUP
BY
句を使用して、各マネージャに対してレポートする人数を表示します。ワイルドカード文字*
は、レコード全体を表します。
例2-22 各グループの行数のカウント
SELECT MANAGER_ID "Manager", COUNT(*) "Number of Reports" FROM EMPLOYEES GROUP BY MANAGER_ID ORDER BY MANAGER_ID;
結果:
Manager Number of Reports ---------- ----------------- 100 14 101 5 102 1 103 4 108 5 114 5 120 8 121 8 122 8 123 8 124 8 145 6 146 6 147 6 148 6 149 6 201 1 205 1 1 19 rows selected.
例2-22は、従業員の1人がマネージャにレポートしないことを示しています。次の問合せは、その従業員の名、姓および役職を選択します。
COLUMN FIRST_NAME FORMAT A10;
COLUMN LAST_NAME FORMAT A10;
COLUMN JOB_TITLE FORMAT A10;
SELECT e.FIRST_NAME,
e.LAST_NAME,
j.JOB_TITLE
FROM EMPLOYEES e, JOBS j
WHERE e.JOB_ID = j.JOB_ID
AND MANAGER_ID IS NULL;
結果:
FIRST_NAME LAST_NAME JOB_TITLE ---------- ---------- ---------- Steven King President
問合せで、集計値が指定された条件を満たす行のみを返すには、問合せのHAVING
句で集計ファンクションを使用します。
例2-23の問合せは、毎年給与に$1,000,000を超える額を費やしている部門の部門と給与額を表示します。
例2-23 条件を満たす行への集計ファンクションの制限
SELECT DEPARTMENT_ID "Department",
SUM(SALARY*12) "All Salaries"
FROM EMPLOYEES
HAVING SUM(SALARY * 12) >= 1000000
GROUP BY DEPARTMENT_ID;
結果:
Department All Salaries ---------- ------------ 50 1876800 80 3654000
例2-24の問合せは、複数の集計ファンクションを使用して、各JOB_ID
の給与の統計を表示します。
例2-24 統計情報を得るための集計ファンクションの使用
SELECT JOB_ID, COUNT(*) "#", MIN(SALARY) "Minimum", ROUND(AVG(SALARY), 0) "Average", MEDIAN(SALARY) "Median", MAX(SALARY) "Maximum", ROUND(STDDEV(SALARY)) "Std Dev" FROM EMPLOYEES GROUP BY JOB_ID ORDER BY JOB_ID;
結果:
JOB_ID # Minimum Average Median Maximum Std Dev ---------- ---------- ---------- ---------- ---------- ---------- ---------- AC_ACCOUNT 1 8300 8300 8300 8300 0 AC_MGR 1 12008 12008 12008 12008 0 AD_ASST 1 4400 4400 4400 4400 0 AD_PRES 1 24000 24000 24000 24000 0 AD_VP 2 17000 17000 17000 17000 0 FI_ACCOUNT 5 6900 7920 7800 9000 766 FI_MGR 1 12008 12008 12008 12008 0 HR_REP 1 6500 6500 6500 6500 0 IT_PROG 5 4200 5760 4800 9000 1926 MK_MAN 1 13000 13000 13000 13000 0 MK_REP 1 6000 6000 6000 6000 0 PR_REP 1 10000 10000 10000 10000 0 PU_CLERK 5 2500 2780 2800 3100 239 PU_MAN 1 11000 11000 11000 11000 0 SA_MAN 5 10500 12200 12000 14000 1525 SA_REP 30 6100 8350 8200 11500 1524 SH_CLERK 20 2500 3215 3100 4200 548 ST_CLERK 20 2100 2785 2700 3600 453 ST_MAN 5 5800 7280 7900 8200 1066 19 rows selected.
参照: SQL集計ファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
NULL
関連ファンクションは、NULL
値の処理を容易にします。SQLがサポートするNULL
関連ファンクションのリストと説明については、『Oracle Database SQL言語リファレンス』を参照してください。
例2-25の問合せは、姓がB
で始まる従業員の姓と歩合を返します。従業員が歩合を受け取らない場合(つまり、COMMISSION_PCT
がNULL
の場合)、NVL
ファンクションは、NULL
を"Not Applicable"で置換します。
例2-25 文字列によるNULL値の置換
SELECT LAST_NAME,
NVL(TO_CHAR(COMMISSION_PCT), 'Not Applicable') "COMMISSION"
FROM EMPLOYEES
WHERE LAST_NAME LIKE 'B%'
ORDER BY LAST_NAME;
結果:
LAST_NAME COMMISSION ------------------------- ---------------------------------------- Baer Not Applicable Baida Not Applicable Banda .1 Bates .15 Bell Not Applicable Bernstein .25 Bissot Not Applicable Bloom .2 Bull Not Applicable 9 rows selected.
例2-26の問合せは、NVL2
ファンクションを使用して、姓がB
で始まる従業員の姓、給与および収入を返します(COMMISSION_PCT
がNULL
でない場合、収入は給与と歩合の合計であり、COMMISSION_PCT
がNULL
の場合、収入は給与のみです)。
例2-26 NULL値と非NULL値に対する異なる式の指定
SELECT LAST_NAME, SALARY,
NVL2(COMMISSION_PCT, SALARY + (SALARY * COMMISSION_PCT), SALARY) INCOME
FROM EMPLOYEES WHERE LAST_NAME LIKE 'B%'
ORDER BY LAST_NAME;
結果:
LAST_NAME SALARY INCOME ------------------------- ---------- ---------- Baer 10000 10000 Baida 2900 2900 Banda 6200 6820 Bates 7300 8395 Bell 4000 4000 Bernstein 9500 11875 Bissot 3300 3300 Bloom 10000 12000 Bull 4100 4100 9 rows selected.
参照:
|
CASE
式を使用すると、サブプログラムを呼び出すことなく、SQL文でIF
... THEN
... ELSE
論理を使用できます。CASE
式には、単純と検索の2種類あります。
例2-27の問合せは、単純CASE
式を使用し、各国コードの国名を表示します。
例2-27 問合せでの単純CASE式の使用
SELECT UNIQUE COUNTRY_ID ID, CASE COUNTRY_ID WHEN 'AU' THEN 'Australia' WHEN 'BR' THEN 'Brazil' WHEN 'CA' THEN 'Canada' WHEN 'CH' THEN 'Switzerland' WHEN 'CN' THEN 'China' WHEN 'DE' THEN 'Germany' WHEN 'IN' THEN 'India' WHEN 'IT' THEN 'Italy' WHEN 'JP' THEN 'Japan' WHEN 'MX' THEN 'Mexico' WHEN 'NL' THEN 'Netherlands' WHEN 'SG' THEN 'Singapore' WHEN 'UK' THEN 'United Kingdom' WHEN 'US' THEN 'United States' ELSE 'Unknown' END COUNTRY FROM LOCATIONS ORDER BY COUNTRY_ID;
結果:
ID COUNTRY -- -------------- AU Australia BR Brazil CA Canada CH Switzerland CN China DE Germany IN India IT Italy JP Japan MX Mexico NL Netherlands SG Singapore UK United Kingdom US United States 14 rows selected.
例2-28の問合せは、検索CASE
式を使用して、勤続年数に基づいて推奨される給与の値上げを表示します。
例2-28 問合せでの検索CASE式の使用
SELECT LAST_NAME "Name", HIRE_DATE "Started", SALARY "Salary", CASE WHEN HIRE_DATE < TO_DATE('01-Jan-90', 'dd-mon-yy') THEN TRUNC(SALARY*1.15, 0) WHEN HIRE_DATE < TO_DATE('01-Jan-95', 'dd-mon-yy') THEN TRUNC(SALARY*1.10, 0) WHEN HIRE_DATE < TO_DATE('01-Jan-00', 'dd-mon-yy') THEN TRUNC(SALARY*1.05, 0) ELSE SALARY END "Proposed Salary" FROM EMPLOYEES WHERE DEPARTMENT_ID = 100 ORDER BY HIRE_DATE;
結果:
Name Started Salary Proposed Salary ------------------------- --------- ---------- --------------- Faviet 16-AUG-02 9000 10350 Greenberg 17-AUG-02 12008 13809 Chen 28-SEP-05 8200 9430 Sciarra 30-SEP-05 7700 8855 Urman 07-MAR-06 7800 8970 Popp 07-DEC-07 6900 7935 6 rows selected.
参照:
|
DECODE
ファンクションは、式といくつかの検索値と比較します。式の値が検索値に一致すると、DECODE
は、検索値に関連付けられている結果を返します。DECODE
が一致を検出しない場合、デフォルト値(指定されている場合)またはNULL
(デフォルト値が指定されていない場合)が返されます。
例2-29の問合せは、DECODE
ファンクションを使用して、3つの異なる役職に対して推奨される給与の値上げを表示します。式はJOB_ID
、検索値は'PU_CLERK'
、'SH_CLERK'
、'ST_CLERK'
、およびデフォルト値はSALARY
です。
例2-29 問合せにおけるDECODEファンクションの使用
SELECT LAST_NAME, JOB_ID, SALARY, DECODE(JOB_ID, 'PU_CLERK', SALARY * 1.10, 'SH_CLERK', SALARY * 1.15, 'ST_CLERK', SALARY * 1.20, SALARY) "Proposed Salary" FROM EMPLOYEES WHERE JOB_ID LIKE '%_CLERK' AND LAST_NAME < 'E' ORDER BY LAST_NAME;
結果:
LAST_NAME JOB_ID SALARY Proposed Salary ------------------------- ---------- ---------- --------------- Atkinson ST_CLERK 2800 3360 Baida PU_CLERK 2900 3190 Bell SH_CLERK 4000 4600 Bissot ST_CLERK 3300 3960 Bull SH_CLERK 4100 4715 Cabrio SH_CLERK 3000 3450 Chung SH_CLERK 3800 4370 Colmenares PU_CLERK 2500 2750 Davies ST_CLERK 3100 3720 Dellinger SH_CLERK 3400 3910 Dilly SH_CLERK 3600 4140 11 rows selected.
注意: DECODE ファンクションの引数は、任意のSQL数値型または文字型です。式および各検索値は、比較の前に最初の検索値のデータ型に自動的に変換されます。戻り値は、最初の結果と同じデータ型に自動的に変換されます。最初の結果がデータ型CHAR の場合、または最初の結果がNULL の場合、戻り値はデータ型VARCHAR2 に変換されます。 |