SSISO Community

시소당

[DB2] sample 가지고 놀기. 1

## 데이터 유형
문자열(byte)
- 고정길이문자열 char(x)
- 가변길이문자열 varchar, long varchar, clob

그래픽문자열(2byte)
- 고정길이 그래픽문자열 graphic(x)
- 가변길이그래픽문자열 vargraphic, long vargraphic, dbclob

2진 문자열(byte)
- 2진 대형 오브젝트 blob

숫자
- smallint(작은정수) 5자리의 정밀도를 가진 2byte정수
- integer(큰정수) 10자리의 정밀도를 가진 4byte정수
- bigint(큰정수) 19자리로 된 8byte 정수.
- real (단정밀도 부동 소수점) 실수 32비트 근사치.
- double (배정밀도 부동 소수점) 실수 64비트 근사치.
- decinal p,s (소수)

날짜시간값 (date, time, timestamp)
- 날짜 년, 월, 일 세 부분으로 구성.
- 시간 시, 분, 초 세부분으로 구성, 24시간 이용.
- 시간소인 날짜와 시간을 나타내는 년, 월, 일, 시, 분, 초, 마이크로초 일곱 부분으로 구성.

NULL

 

## sample 가지고 놀기.

E:\Program Files\IBM\SQLLIB\BIN>db2sampl
E:\Program Files\IBM\SQLLIB\BIN>
E:\Program Files\IBM\SQLLIB\BIN>db2
(c) Copyright IBM Corporation 1993,2002
 DB2 SDK 8.2.4용 명령행 처리기(CLP)

명령 프롬프트에서 데이터베이스 관리 프로그램 명령과 SQL문을 발행할 수 있습니다.
예:
    db2 => connect to sample
    db2 => bind sample.bnd

일반적인 도움말을 보려면 ?를 입력하십시오.
명령 도움말을 보려면 ?를 입력하십시오.
여기서 명령은 데이터베이스 관리 프로그램 명령의 처음 몇 키워드가 될 수
있습니다. 예:
 ? CATALOG DATABASE: CATALOG DATABASE 명령에 대한 도움말
 ? CATALOG:          모든 CATALOG 명령에 대한 도움말

db2 대화식 모드에서 나가려면 명령 프롬프트에서 QUIT를 입력하십시오. 대화식
모드 외부에서는 모든 명령 앞에 'db2'를 붙여야 합니다.
현재 명령 옵션 설정값을 나열하려면 LIST COMMAND OPTIONS를 입력하십시오.

더 자세한 도움말을 보려면 온라인 참조서를 참조하십시오.

 

db2 => connect to sample

   데이터베이스 연결 정보

 데이터베이스 서버                        = DB2/NT 8.2.4
 SQL 권한 부여 ID                         = FINEWOOD
 로컬 데이터베이스 별명                   = SAMPLE

db2 => list tables

테이블/뷰
                                                 스키마
 유형  작성 시간
------------------------------- --------------- ----- --------------------------
CL_SCHED                        FINEWOOD        T     2006-04-21-14.56.27.421002
DEPARTMENT                      FINEWOOD        T     2006-04-21-14.56.22.609001
EMP_ACT                         FINEWOOD        T     2006-04-21-14.56.23.187001
EMP_PHOTO                       FINEWOOD        T     2006-04-21-14.56.23.921002
EMP_RESUME                      FINEWOOD        T     2006-04-21-14.56.26.546001
EMPLOYEE                        FINEWOOD        T     2006-04-21-14.56.22.812000
IN_TRAY                         FINEWOOD        T     2006-04-21-14.56.27.468001
ORG                             FINEWOOD        T     2006-04-21-14.56.22.125004
PROJECT                         FINEWOOD        T     2006-04-21-14.56.23.687005
SALES                           FINEWOOD        T     2006-04-21-14.56.27.296001
STAFF                           FINEWOOD        T     2006-04-21-14.56.22.203008
STAFFG                          FINEWOOD        T     2006-04-21-14.56.22.531011


  12 레코드가 선택됨.

db2 => select deptname, deptnumb from org

DEPTNAME       DEPTNUMB
-------------- --------
Head Office          10
New England          15
Mid Atlantic         20
South Atlantic       38
Great Lakes          42
Plains               51
Pacific              66
Mountain             84

  8 레코드가 선택됨.

db2 => select * from org

DEPTNUMB DEPTNAME       MANAGER DIVISION   LOCATION
-------- -------------- ------- ---------- -------------
      10 Head Office        160 Corporate  New York
      15 New England         50 Eastern    Boston
      20 Mid Atlantic        10 Eastern    Washington
      38 South Atlantic      30 Eastern    Atlanta
      42 Great Lakes        100 Midwest    Chicago
      51 Plains             140 Midwest    Dallas
      66 Pacific            270 Western    San Francisco
      84 Mountain           290 Western    Denver

  8 레코드가 선택됨.

db2 => select dept, name, job from staff where dept = 20

DEPT   NAME      JOB
------ --------- -----
    20 Sanders   Mgr
    20 Pernal    Sales
    20 James     Clerk
    20 Sneider   Clerk

  4 레코드가 선택됨.

db2 => select dept, name, job from staff where job = 'Clerk' and dept = 20

DEPT   NAME      JOB
------ --------- -----
    20 James     Clerk
    20 Sneider   Clerk

  2 레코드가 선택됨.

db2 => select id, name from staff where comm is null

ID     NAME
------ ---------
    10 Sanders
    30 Marenghi
    50 Hanes
   100 Plotz
   140 Fraye
   160 Molinare
   210 Lu
   240 Daniels
   260 Jones
   270 Lea
   290 Quill

  11 레코드가 선택됨.

db2 => select id, name from staff where comm = 0

ID     NAME
------ ---------

  0 레코드가 선택됨.

db2 => select * from staff

ID     NAME      DEPT   JOB   YEARS  SALARY    COMM
------ --------- ------ ----- ------ --------- ---------
    10 Sanders       20 Mgr        7  18357.50         -
    20 Pernal        20 Sales      8  18171.25    612.45
    30 Marenghi      38 Mgr        5  17506.75         -
    40 O'Brien       38 Sales      6  18006.00    846.55
    50 Hanes         15 Mgr       10  20659.80         -
    60 Quigley       38 Sales      -  16808.30    650.25
    70 Rothman       15 Sales      7  16502.83   1152.00
    80 James         20 Clerk      -  13504.60    128.20
    90 Koonitz       42 Sales      6  18001.75   1386.70
   100 Plotz         42 Mgr        7  18352.80         -
   110 Ngan          15 Clerk      5  12508.20    206.60
   120 Naughton      38 Clerk      -  12954.75    180.00
   130 Yamaguchi     42 Clerk      6  10505.90     75.60
   140 Fraye         51 Mgr        6  21150.00         -
   150 Williams      51 Sales      6  19456.50    637.65
   160 Molinare      10 Mgr        7  22959.20         -
   170 Kermisch      15 Clerk      4  12258.50    110.10
   180 Abrahams      38 Clerk      3  12009.75    236.50
   190 Sneider       20 Clerk      8  14252.75    126.50
   200 Scoutten      42 Clerk      -  11508.60     84.20
   210 Lu            10 Mgr       10  20010.00         -
   220 Smith         51 Sales      7  17654.50    992.80
   230 Lundquist     51 Clerk      3  13369.80    189.65
   240 Daniels       10 Mgr        5  19260.25         -
   250 Wheeler       51 Clerk      6  14460.00    513.30
   260 Jones         10 Mgr       12  21234.00         -
   270 Lea           66 Mgr        9  18555.50         -
   280 Wilson        66 Sales      9  18674.50    811.50
   290 Quill         84 Mgr       10  19818.00         -
   300 Davis         84 Sales      5  15454.50    806.10
   310 Graham        66 Sales     13  21000.00    200.30
   320 Gonzales      66 Sales      4  16858.20    844.00
   330 Burke         66 Clerk      1  10988.00     55.50
   340 Edwards       84 Sales      7  17844.00   1285.00
   350 Gafney        84 Clerk      5  13030.50    188.00

  35 레코드가 선택됨.

db2 => select * from staff where dept = 84 order by years desc

ID     NAME      DEPT   JOB   YEARS  SALARY    COMM
------ --------- ------ ----- ------ --------- ---------
   290 Quill         84 Mgr       10  19818.00         -
   340 Edwards       84 Sales      7  17844.00   1285.00
   300 Davis         84 Sales      5  15454.50    806.10
   350 Gafney        84 Clerk      5  13030.50    188.00

  4 레코드가 선택됨.

db2 => select distinct dept, job from staff

DEPT   JOB
------ -----
    15 Clerk
    20 Clerk
    38 Clerk
    42 Clerk
    51 Clerk
    66 Clerk
    84 Clerk
    10 Mgr
    15 Mgr
    20 Mgr
    38 Mgr
    42 Mgr
    51 Mgr
    66 Mgr
    84 Mgr
    15 Sales
    20 Sales
    38 Sales
    42 Sales
    51 Sales
    66 Sales
    84 Sales

  22 레코드가 선택됨.

db2 => select distinct dept from staff

DEPT
------
    10
    15
    20
    38
    42
    51
    66
    84

  8 레코드가 선택됨.

db2 =>


### 연산 순서

1. FROM 절
2. WHERE 절
3. GROUP BY 절
4. HAVING 절
5. SELECT 절
6. ORDER BY 절


### 표현식을 사용하여 값 계산.

db2 => SELECT DEPT, NAME, SALARY + 500 FROM STAFF WHERE DEPT = 38 ORDER BY 2

DEPT   NAME      3
------ --------- ----------------
    38 Abrahams          12509.75
    38 Marenghi          18006.75
    38 Naughton          13454.75
    38 O'Brien           18506.00
    38 Quigley           17308.30

  5 레코드가 선택됨.

db2 => SELECT DEPT, NAME, SALARY +200  FROM STAFF WHERE DEPT = 38 ORDER BY 3

DEPT   NAME      3
------ --------- ----------------
    38 Abrahams          12209.75
    38 Naughton          13154.75
    38 Quigley           17008.30
    38 Marenghi          17706.75
    38 O'Brien           18206.00

  5 레코드가 선택됨.

* 컬럼이름 (RATE * HOURS 형식)
* 상수 값 (RATE * 1.07 형식)
* 스칼라 함수 (LENGTH(NAME) + 1형식)


### 표현식 이름 지정.
PAY라는 이름을 WHERE절에선 사용 안됨, ORDER에선 사용됨.
연산 순서에 의해서 그렇습니다.

db2 => SELECT NAME, JOB, SALARY + COMM AS PAY FROM STAFF WHERE (SALARY + COMM) <
 13000 ORDER BY PAY

NAME      JOB   PAY
--------- ----- ----------
Yamaguchi Clerk   10581.50
Burke     Clerk   11043.50
Scoutten  Clerk   11592.80
Abrahams  Clerk   12246.25
Kermisch  Clerk   12368.60
Ngan      Clerk   12714.80

  6 레코드가 선택됨.

2360 view

4.0 stars