SQL入門 第2章補足

2-1 データを検索する

表に対する検索SELECT文である! (Accessの選択クエリー)

SQL*Plusについて

SQL*Plusで使用するコマンドには2種類ある。

  1. SQLコマンド
    DML、DDL、DCLコマンド。文の最後に「;」を付ける
    (複数行に分けて入力できる)
  2. SQL*Plus独自のコマンド
    文の最後には何もつけない
    (1行にしか入力できない)

データベースを操作する際〜

説明の必要なし。

WindowsNTや〜

説明の必要なし。

操作例

1〜5は説明の必要なし。

SQL*Plusの終了はEXITで統一。

2-2 全データを取り出す

基本構文

SELECT *
FROM 表名;

解説

SELECT *
FROM dept;

は、次のように書いてもよい。

SELECT * FROM dept;

SELECT
*
FROM
dept;

SELECT * FROM dept
;

2-3 特定の「列」のデータのみ取り出す

基本構文

SELECT 列名 [, 列名 ・・・]
FROM 表名;

解説

  1. FROM句の後に指定した表内にある特定の列を取り出して表示する。
  2. 「列」は複数指定できる。複数指定する場合は列名と列名の間を「,(カンマ)」で区切る

表にどんな列があるか分らないときは

SQL*Plusコマンド(SQLコマンドではない!)の「DESCRIBE」を使って調べる。

[使い方]

DESC 調べたい表名 ←セミコロンが付かないことに注意!!

2-4 検索結果の重複を取り除く

教科書訂正

社員表から、部門番号の「列」だけを取り出すと、全社員数分データが出力されます。
SELECT DEPTNO FROM DEPT EMP

SELECTの後の「列名」の代わりにDISTINCTを〜

操作例解説
EMP表から、部門名職種を表示する。

構文

SELECT DISTINCT 列名 FROM 表名;

意味

表示する「列」の値を重複させずに表示する。

例えば学生の取得資格を格納するテーブル「資格取得テーブル」があったとする。

学籍番号学生の身分証明書番号
資格コード取得した資格の資格コード
取得日付資格を取得した日付

このテーブルから「有資格者」を表示する場合、

SELECT 学籍番号 FROM 資格取得テーブル;

では、複数の資格を取っている学生は、その資格の数だけ学籍番号が出てきてしまう。これを、

SELECT DISTINCT 学籍番号 FROM 資格取得テーブル;

とすることにより、学籍番号を重複させずに表示することができる。

操作例

1’を先に実行し、その後1を実行する。
(重複データがあることを確認させ、その後、重複を消すことができることを確認させる)

2-5 検索結果の列に「見出し」を付ける

構文

SELECT 列名 (AS) 列見出し
FROM 表名;

意味

2-6 条件に合う特定の「行」データのみ取り出す

教科書訂正

HINT&MEMO
■比較する値
(例)
 empno ename = 'Larry'

操作例
 [入力]
 SELECT empno, ename, sal
 FROM emp
 WHERE deptno = 30;

 [結果]
    EMPNO     ENAME       SAL
   ---------  ---------  -------
     7499       ALLEN        1600
     7521       WARD         1250
     7654       MARTIN      1250
     7698       BLAKE        1250
     7844       TURNER      1500
     7900       JAMES         950

構文

SELECT 列名 [, 列名 ・・・]
FROM 表名
WHERE 列名 比較演算子 比較する値;

意味

比較演算子

Oracleで使用できる比較演算子
比較演算子機能
同じ
<>、!=、^=違う
〜より大きい
>=〜と同じか、大きい
〜より小さい
<=〜と同じか、小さい

比較する値の書き方

数値
そのまま書く
文字(文字列)
シングルクォーテーションで囲む(ダブルクォーテーションではない!)
日付、時間
シングルクォーテーションで囲む(ダブルクォーテーションではない!)

[ TOP ]