selectの基本
データベース上に作成されている表は “select” を使用することで表に格納されている情報を表示さることができます。
前回解説したSCOTTスキーマを使用していきます。
表をselectするときの基本的なコマンドは以下です。
select <列名>,<列名>,… from <表名> ;
SQL> select empno,ename,job from emp;
EMPNO ENAME JOB
ーーーーー ーーーーーーーーーーー ーーーーーーーーーーー
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
7566 JONES MANAGER
7654 MARTIN SALESMAN
7698 BLAKE MANAGER
7782 CLARK MANAGER
7839 KING PRESIDENT
7844 TURNER SALESMAN
7900 JAMES CLERK
7902 FORD ANALYST
EMPNO ENAME JOB
ーーーーー ーーーーーーーーーーー ーーーーーーーーーーー
7934 MILLER CLERK
12行が選択されました。
SQL>
また、列名を “*” とすることで、表に構成されているすべての列を出力することができます。
select * from <表名> ;
SQL> select * from salgrade;
GRADE LOSAL HISAL
ーーーーーー ーーーーー ーーーーーー
1 700 1200
2 1201 1400
3 1401 2000
4 2001 3000
5 3001 9999
SQL>
set linesize
例えば以下のselect文を実行すると以下のように1つの行が2段になってしまいました。
SQL> select empno,ename,job,mgr,hiredate from emp;
EMPNO ENAME JOB MGR ★1段
ーーーーー ーーーーーーーーーー ---------- ーーーーーーーーーーー
HIREDATE ★2段
ーーーーーーーー
7369 SMITH CLERK 7902
80-12-17
7499 ALLEN SALESMAN 7698
81-02-20
7521 WARD SALESMAN 7698
81-02-22
EMPNO ENAME JOB MGR
ーーーーー ーーーーーーーーーー ---------- ーーーーーーーーーーー
HIREDATE
ーーーーーーーー
7566 JONES MANAGER 7839
81-04-02
7654 MARTIN SALESMAN 7698
81-09-28
7698 BLAKE MANAGER 7839
81-05-01
EMPNO ENAME JOB MGR
ーーーーー ーーーーーーーーーー ---------- ーーーーーーーーーーー
HIREDATE
ーーーーーーーー
7782 CLARK MANAGER 7839
81-06-09
7839 KING PRESIDENT
81-11-17
7844 TURNER SALESMAN 7698
81-09-08
EMPNO ENAME JOB MGR
ーーーーー ーーーーーーーーーー ---------- ーーーーーーーーーーー
HIREDATE
ーーーーーーーー
7900 JAMES CLERK 7698
81-12-03
7902 FORD ANALYST 7566
81-12-03
7934 MILLER CLERK 7782
82-01-23
12行が選択されました。
SQL>
これでは表の情報が見づらくなってしまいますが、set linesizeを使用することで出力が折り返されずに1行に表示されるように制御することができます。
set linesize <数値>
※<数値>は1行に表示される文字数
SQL> set linesize 1000 ★1行1000文字で設定
SQL> select empno,ename,job,mgr,hiredate from emp;
EMPNO ENAME JOB MGR HIREDATE
ーーーーー ーーーーーーーーーー ーーーーーーーー ーーーーー ーーーーーーーー
7369 SMITH CLERK 7902 80-12-17
7499 ALLEN SALESMAN 7698 81-02-20
7521 WARD SALESMAN 7698 81-02-22
7566 JONES MANAGER 7839 81-04-02
7654 MARTIN SALESMAN 7698 81-09-28
7698 BLAKE MANAGER 7839 81-05-01
7782 CLARK MANAGER 7839 81-06-09
7839 KING PRESIDENT 81-11-17
7844 TURNER SALESMAN 7698 81-09-08
7900 JAMES CLERK 7698 81-12-03
7902 FORD ANALYST 7566 81-12-03
EMPNO ENAME JOB MGR HIREDATE
ーーーーー ーーーーーーーーーー ーーーーーーーー ーーーーー ーーーーーーーー
7934 MILLER CLERK 7782 82-01-23
12行が選択されました。
SQL>
上記のようにset linesizeで表示する行の文字数を調整することで見やすく表示することができました。
set linesizeはset linと略すことも可能です。
例) set lin 1000
[参考]
ユーザーズ・ガイドおよびリファレンス – 12.41.30 SET LIN[ESIZE] {80 | n | WINDOW}
set pagesize
例えば以下のselect文を実行すると以下のように5ページ分の出力になっています。
SQL> select sid,serial#,username,status from v$session;
SID SERIAL# USERNAME STATUS ★1ページ目
ーーーー ーーーーー ーーーーーーー ーーーーーーーーー
1 63277 ACTIVE
2 38212 ACTIVE
3 58438 ACTIVE
4 64026 ACTIVE
5 27392 ACTIVE
6 32510 ACTIVE
7 22261 ACTIVE
8 5937 ACTIVE
9 44040 ACTIVE
10 64956 ACTIVE
11 18441 ACTIVE
SID SERIAL# USERNAME STATUS ★2ページ目
ーーーー ーーーーー ーーーーーーー ーーーーーーーーー
12 27366 SYS ACTIVE
13 42307 ACTIVE
14 19318 ACTIVE
15 34500 ACTIVE
16 50899 ACTIVE
17 28430 ACTIVE
18 37213 ACTIVE
19 21105 ACTIVE
20 59825 ACTIVE
21 10736 ACTIVE
22 25665 ACTIVE
SID SERIAL# USERNAME STATUS ★3ページ目
ーーーー ーーーーー ーーーーーーー ーーーーーーーーー
23 6322 ACTIVE
25 11608 ACTIVE
26 45238 ACTIVE
28 17071 ACTIVE
29 47638 ACTIVE
30 30143 ACTIVE
31 62527 ACTIVE
32 44672 ACTIVE
34 37444 ACTIVE
36 60488 ACTIVE
37 8277 ACTIVE
SID SERIAL# USERNAME STATUS ★4ページ目
ーーーー ーーーーー ーーーーーーー ーーーーーーーーー
39 25201 ACTIVE
42 52816 ACTIVE
44 53575 ACTIVE
46 4047 ACTIVE
50 45279 ACTIVE
54 16446 ACTIVE
62 20097 ACTIVE
69 56061 ACTIVE
79 59313 ACTIVE
80 14820 SYS ACTIVE
81 32671 ACTIVE
SID SERIAL# USERNAME STATUS ★5ページ目
ーーーー ーーーーー ーーーーーーー ーーーーーーーーー
82 60092 ACTIVE
89 26287 ACTIVE
95 60275 ACTIVE
96 37323 ACTIVE
97 9715 ACTIVE
108 56371 ACTIVE
50行が選択されました。
SQL>
SET PAGESIZE
コマンドは、SQL*Plusで出力される1ページあたりの行数を指定するための設定です。
これにより、出力が複数ページに分かれる際の行数制御や、ページ毎に表示される列名の頻度を調整できます。
set pagesize <数値>
※<数値>は1ページあたりの最大行数を指定します。
SQL> set pagesize 1000 ★1ページ1000行で設定
SQL> select sid,serial#,username,status from v$session;
SID SERIAL# USERNAME STATUS
ーーーー ーーーーー ーーーーーーー ーーーーーーーーー
1 63277 ACTIVE
2 38212 ACTIVE
3 58438 ACTIVE
4 64026 ACTIVE
5 27392 ACTIVE
6 32510 ACTIVE
7 22261 ACTIVE
8 5937 ACTIVE
9 44040 ACTIVE
10 64956 ACTIVE
11 18441 ACTIVE
12 27366 SYS ACTIVE
13 42307 ACTIVE
14 19318 ACTIVE
15 34500 ACTIVE
16 50899 ACTIVE
17 28430 ACTIVE
18 37213 ACTIVE
19 21105 ACTIVE
20 59825 ACTIVE
21 10736 ACTIVE
22 25665 ACTIVE
23 6322 ACTIVE
25 11608 ACTIVE
26 45238 ACTIVE
28 17071 ACTIVE
29 47638 ACTIVE
30 30143 ACTIVE
31 62527 ACTIVE
32 44672 ACTIVE
34 47862 ACTIVE
36 60488 ACTIVE
37 8277 ACTIVE
39 25201 ACTIVE
42 52816 ACTIVE
44 53575 ACTIVE
46 4047 ACTIVE
48 12873 ACTIVE
50 45279 ACTIVE
54 16446 ACTIVE
62 20097 ACTIVE
69 56061 ACTIVE
79 59313 ACTIVE
80 14820 SYS ACTIVE
82 60092 ACTIVE
85 28656 ACTIVE
89 26287 ACTIVE
96 37323 ACTIVE
97 9715 ACTIVE
108 34841 ACTIVE
110 10322 ACTIVE
51行が選択されました。
SQL>
上記のようにset pagesizeで表示する1ページのの行数を調整することで見やすく表示することができました。
set pagesizeはset pagesと略すことも可能です。
例) set pages 1000
また、linesizeとpagesizeは同時に設定することも可能です。
例) set lin 1000 pages 1000
[参考]
ユーザーズ・ガイドおよびリファレンス – 12.41.41 SET PAGES[IZE] {14 | n}
column
set linesizeで1行で表示できる文字数を設定すると、列によっては以下のようにかなり長い文字数になり出力され見にくくなってしまう場合があります。
SQL> set linsize 1000
SQL> select instance_name,family,status from v$instance;
INSTANCE_NAME FAMILY
STATUS
ーーーーーーーーーーーーーー ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ーーーーーーーーー
v19
OPEN
SQL>
そこで clumn を使用して特定の列の表示幅を設定することができます。
以下のように設定します。
<文字列の場合>
column <列名> format a<文字数>
<数値列の場合>
column <列名> format 999999….
※9の数で有効桁数を指定する
SQL> column family format a20 ★
SQL> select instance_name,family,status from v$instance;
INSTANCE_NAME FAMILY STATUS
ーーーーーーーーーーーー ーーーーーーーーーーーーーー ーーーーーーーーーーーーー
v19 OPEN
SQL>
上記のようにcolumnで表示する列の文字数を調整することで見やすく表示することができました。
また、columnはcol、formatはforと省略することも可能です。
例) col <列数> for a<文字数>
[参考]
ユーザーズ・ガイドおよびリファレンス – 12.13 COLUMN
まとめ
SET LINESIZE
- データが折り返されて表示される問題は、
SET LINESIZE
コマンドで制御できます。- 形式:
SET LINESIZE 数値
- 例:
SET LINESIZE 1000
- 形式:
SET PAGESIZE
- 表示されるページの行数を制御するためには、
SET PAGESIZE
コマンドを使用します。- 形式:
SET PAGESIZE 数値
- 例:
SET PAGESIZE 1000
- 形式:
COLUMN
- 長い列を見やすくするために、特定の列の表示幅を
COLUMN
コマンドで設定できます。- 文字列列の形式:
COLUMN 列名 FORMAT a文字数
- 数値列の形式:
COLUMN 列名 FORMAT 999999...
- 文字列列の形式:
これらの設定を適用することで、SQLの出力をより見やすく、効率的に表示することが可能です。
コメント