SQL> select empno, ename, sal as salary, job

          , nvl(comm, 0) "commission"

     from emp

     order by deptno;


SQL> set lines 40

SQL> /

SQL> set lines 120


SQL> set feed off

SQL> /


SQL> set feed 3

SQL> select * from emp

     where rownum < 3;


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------- ---------- ---------- ----------

      7369 SMITH      CLERK           7902 80/12/17        800                    20

      7499 ALLEN      SALESMAN        7698 81/02/20       1600        300         30


SQL> select * from emp

     where rownum < 4;


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------- ---------- ---------- ----------

      7369 SMITH      CLERK           7902 80/12/17        800                    20

      7499 ALLEN      SALESMAN        7698 81/02/20       1600        300         30

      7521 WARD       SALESMAN        7698 81/02/22       1250        500         30


3 개의 행이 선택되었습니다. <-- feed 값 3에 의해 3건 이상이 반환되면 메시지 출력됨



SQL> select employee_id, first_name, last_name, email

 , job_id, salary, department_id as dept

     from employees

     order by dept;


SQL> column employee_id format 9999

SQL> col first_name format a15

SQL> col last_name for a15

SQL> col email for a20

SQL> col salary for $999,999.99

SQL> col dept for 999


SQL> col last_name heading 'LAST NAME'

SQL> col salary heading 'Monthly|Salary'


SQL> col last_name clear


SQL> break on job

SQL> select * from emp;


SQL> break on deptno skip 1

SQL> select * from emp;


SQL> tti 'Salary|Report'

SQL> bti 'Confidential'


'Oracle > SQL Fundamentals I' 카테고리의 다른 글

5일차 Edit: SQL Buffer를 편집  (0) 2012.04.09
5일차 Execution(실행,수행)  (0) 2012.04.09
5일차 Environment  (0) 2012.04.09
5일차 Miscellaneous(기타)  (0) 2012.04.09
5일차 # SQL*Plus의 이해  (0) 2012.04.09

SQL> show all

SQL> show linesize

linesize 80

SQL> set lines 120


※기본적으로 set linesize 120 ,set pagesize 80 정도 해야지 도스창에서 검색된 db를 깔끔하게 볼수있다.


SQL> ? set


SQL> host dir

SQL> ho (엔터) ==> 운영체제로 잠시 빠져나갑니다.


C:\Documents and Settings\user\ora_java> exit --> 원래의 SQL*Plus로 돌아옵니다


SQL> $ dir --> 윈도우즈 환경에서는 $가 host 명령어 대신 사용

cf.) SQL> !ls -al --> unix-like 환경에서는 $ 대신 ! 사용

SQL> $dir --> 붙여 써도 동일한 결과



SQL> $


C:\Documents and Settings\user\ora_java>notepad login.sql

--> sqlplus 시작시 항상 읽어들이는 파일 login.sql

cf.) glogin.sql <-- sqlplus가 설치된 폴더에 위치


C:\Documents and Settings\user\ora_java>exit


SQL> exit


C:\Documents and Settings\user\ora_java>sqlplus java??/java??@211.183.3.52:1521/orcl

SQL> show linesize

SQL> show pages

SQL> $dir


SQL> show sqlprompt

sqlprompt "SQL> "

SQL> set sqlprompt "Oracle java >> "



SQL> set underline =

SQL> select * from emp;


SQL> set colsep |

SQL> select * from emp;


SQL> set null 모르겠는뎁쇼

SQL> select * from emp;


SQL> exit

C:\Documents and Settings\user\ora_java>sqlplus java??/java??@211.183.3.52:1521/orcl

'Oracle > SQL Fundamentals I' 카테고리의 다른 글

5일차 Execution(실행,수행)  (0) 2012.04.09
5일차 Format  (0) 2012.04.09
5일차 Miscellaneous(기타)  (0) 2012.04.09
5일차 # SQL*Plus의 이해  (0) 2012.04.09
4일차 # 2-20: ORDER BY clause  (0) 2012.04.06

C:\Documents and Settings\user\ora_java>sqlplus java??/java??@211.183.3.52:1521/orcl


SQL> help


SQL> ? desc

SQL> ? d


SQL> describe emp

SQL> desc dbms_output



SQL> conn java01/java01

==> ERROR: ORA-12560: TNS:프로토콜 어댑터 오류

경고: 이제는 ORACLE에 연결되어 있지 않습니다. ==> 로컬 오라클 서버로 연결을 시도했기 때문

SQL> desc emp

SP2-0640: 연결되지 않았습니다.

SP2-0641: "DESCRIBE"(이)가 서버로 연결하는데 필요합니다


SQL> conn java01/java01@211.183.3.52:1521/orcl


SQL> show user

USER은 "JAVA01"입니다


SQL> conn java??/java??@211.183.3.52:1521/orcl


SQL> disc

SQL> exit 또는 quit



여기 예제는 각자 해봐야 할듯~~~

'Oracle > SQL Fundamentals I' 카테고리의 다른 글

5일차 Format  (0) 2012.04.09
5일차 Environment  (0) 2012.04.09
5일차 # SQL*Plus의 이해  (0) 2012.04.09
4일차 # 2-20: ORDER BY clause  (0) 2012.04.06
4일차 # 2-18: 연산자 우선순위  (0) 2012.04.06

-------------------------------

# SQL*Plus의 이해

-------------------------------


# SQL*Plus® User's Guide and Reference

==> http://docs.oracle.com/cd/B19306_01/server.102/b14357/toc.htm




# SQL Buffer


  - 최근 실행(입력)된 SQL 문장 또는 PL/SQL 블록을 저장하는 SQL*Plus의 메모리의 일부

  - 새로운 SQL 문장이나 PL/SQL 블록이 입력되면 기존의 SQL 문장 도는 PL/SQL 블록은 지워집니다




# SQL Statements vs. SQL*Plus Commands


  1) Language Environment

  2) ANSI 표준 ORACLE proprietary

  3) DB manipulation X

  4) Stored in SQL buffer X

  5) Termination Character (;) X , enter를 입력하면 바로 명령어가 실행

 cf.) 행연결문자 -  ex) SQL>set lines -

        > 120

  6) X Abbreviation --> ex) describe --> desc




# SQL*Plus Command Category


  - Environment : sho[w], set

  - Format : col[umn], bre[ak], tti[tle], bti[tle], ...

  - File Manipulation : sav[e], get, st[art], @, spo[ol], ed[it], ...

  - Execution : /, r[un], exec[ute], ho[st], ...

  - Edit : l[ist], a[ppend], i[nput], del[ete], c[hange], ...

  - Interaction : 치환변수: &, &&, &n, def[ine], undef[ine], acc[ept], ...

  - Misc. : help, ?, desc[ribe], conn[ect], disc[onnect], exit, quit, cl[ear]...



'Oracle > SQL Fundamentals I' 카테고리의 다른 글

5일차 Environment  (0) 2012.04.09
5일차 Miscellaneous(기타)  (0) 2012.04.09
4일차 # 2-20: ORDER BY clause  (0) 2012.04.06
4일차 # 2-18: 연산자 우선순위  (0) 2012.04.06
4일차 # 2-17: NOT 연산자  (0) 2012.04.06

나중에 풀이를 올려야 겠음



-------------------------------

# 연습문제 풀이시

-------------------------------

  - 현재 실습용 서버의 employees, departments 등의 테이블은 데이터 일부만 존재합니다.

  - 연습문제에서 employees, departments 등의 테이블은 hr.employees, hr.departments 등으로

    테이블 이름 앞에 hr. 을 붙여서 사용하시기 바랍니다.


'Oracle' 카테고리의 다른 글

오라클 총정리 파일  (0) 2012.04.24
WHERE 절에서 사용할 수 있는 연산자의 종류  (0) 2012.04.12
SQLPuls 기본 명령어  (0) 2012.04.07



'Oracle' 카테고리의 다른 글

오라클 총정리 파일  (0) 2012.04.24
WHERE 절에서 사용할 수 있는 연산자의 종류  (0) 2012.04.12
연습문제  (0) 2012.04.09



- select 문에서 가장 나중에 고려됩니다


  1. 정렬 순서

① 오름차순: ASC --> 기본값

② 내림차순: DESC

③ null값의 경우 - 오름차순: 맨 뒤

- 내림차순: 맨 앞







  2. 정렬 기준


① select list element 이름, 컬럼 alias(column 이름, column alias)

② 숫자 (select-list 상의 위치값)

③ 표현식 : 수식, 함수 


    1) select list element 이름(컬럼 이름), 컬럼 alias


==> select-list에 나오지 않은 컬럼도 쓸 수 있음


-------------------------

cf.)



==> ERROR: ORA-00904: "ANN_SAL": 부적합한 식별자

<-- column alias는 where 절에서 사용할 수 없으므로


cf.) column alias는 group by 절에서도 사용할 수 없습니다.

4 Select                 12 * sal  ann_sal

1 From                   emp

2 Where                 ann_sal>3000

3 GROUP BY          ann_sal(X)

5 Having

6 Order by


-------------------------


    2) 숫자(select-list 상의 위치값)


==> 중간에 컬럼이나 수식이 삽입될 경우 정렬 순서가 달라집니다



    3) 수식



SQL> / --> /는 sql buffer의 내용을 실행하는 SQL*Plus 명령

SQL> / --> 실행할 때마다 정렬 순서가 달라집니다. 왜 그럴까요?


     ------------------------------------------------------

SQL> select empno, ename, mod(empno, 5)

    from emp;


SQL> select empno, ename

    from emp

    order by mod(empno, 5);


SQL> select empno, ename, mod(empno, 5)

    from emp

    order by mod(empno, 5);


※modulus :나머지를 구하는 함수

mod(m,n) = 0 ~ n-1

-------------------------------

# 연습문제 풀이시

-------------------------------

  - 현재 실습용 서버의 employees, departments 등의 테이블은 데이터 일부만 존재합니다.

  - 연습문제에서 employees, departments 등의 테이블은 hr.employees, hr.departments 등으로

    테이블 이름 앞에 hr. 을 붙여서 사용하시기 바랍니다.


Les02_v.ppt


oj_SQL.txt


'Oracle > SQL Fundamentals I' 카테고리의 다른 글

5일차 Miscellaneous(기타)  (0) 2012.04.09
5일차 # SQL*Plus의 이해  (0) 2012.04.09
4일차 # 2-18: 연산자 우선순위  (0) 2012.04.06
4일차 # 2-17: NOT 연산자  (0) 2012.04.06
4일차 # 2-14: 논리 연산  (0) 2012.04.06





  - 상식적으로 생각하세요

  - 연산자 우선순위가 헷갈리면 그냥 괄호를 사용하세요

'Oracle > SQL Fundamentals I' 카테고리의 다른 글

5일차 # SQL*Plus의 이해  (0) 2012.04.09
4일차 # 2-20: ORDER BY clause  (0) 2012.04.06
4일차 # 2-17: NOT 연산자  (0) 2012.04.06
4일차 # 2-14: 논리 연산  (0) 2012.04.06
4일차 2-11: LIKE condition  (0) 2012.04.06




//not in 은 셋다 아니다...







'Oracle > SQL Fundamentals I' 카테고리의 다른 글

4일차 # 2-20: ORDER BY clause  (0) 2012.04.06
4일차 # 2-18: 연산자 우선순위  (0) 2012.04.06
4일차 # 2-14: 논리 연산  (0) 2012.04.06
4일차 2-11: LIKE condition  (0) 2012.04.06
4일차 2-10: IN condition  (0) 2012.04.06



- AND, OR: 조건절을 연결

- NOT: 조건절의 결과를 반전 ==> NOT NULL --> NULL

- symbols(wildcard): %, _












==> ERROR : ORA-00911: invalid character

==> like 뒤의 조건은 문자열이어야 합니다.


※AutoTrace 

- 결과에는 SQL을 튜닝하는데 유용한 정보들을 많이 포함하고 있어 가장 즐겨 사용되는 도구 중 하나

① set autot on - SQL을 실제 수행하고 그 결과와 함께 실행계획 및 실행통계를 출력 

② set autot on explain - SQL을 실제 수행하고 그 결과와 함께 실행계획을 출력

③ set autot on statistics - SQL을 실제 수행하고 그 결과와 함께 실행통계를 출력 

④ set autot on traceonly - SQL을 실제 수행하지만 그 결과는 출력하지 않고 실행계획과 통계만 출력

⑤ set autot traceonly explain - SQL을 실제 수행하지 않고 실행계획만을 출력

⑥ set autot traceonly statistics - SQL을 실제 수행하고 그 결과는 출력하지 않고 실행통계만을 출력



[출처] AutoTrace|작성자 dndwlstm

set autot on - SQL을 실제 수행하고 그 결과와 함께 실행계획 및 실행통계를 출력

[출처] Autorace|작성자 dndwlstm

※강사왈~

implicit : 암시적 , 암묵적 = automatically = by oracle,computer, machine

explicitly : 명시적 = manually = by me, programmer, human





SQL> set autot off  -------------> 기능 끄기~~

------------------------------------


  * 심볼 찾기


    - 준비작업


테이블은 이미 학원에서 만들어서 요렇게 나온듯(테이블 삭제를 해야하는데 괜히 했다가 따른거 손댈꺼 같아서 

sql developer가 이래서 편한거 같다~~~)



    - 문제: t1 테이블에서 A_A가 포함된 문자열만 찾아다오, 오라클아!


SQL> select * from t1

    where col like '%A_A%';

'%A_A%'   

└any one character




* 탈출 문자 사용


SQL> select * from t1

    where col like '%A!_A%' escape '!'; --> escape 문자 지정


  (허걱 위에서 보면 데이터 까지 그래로 있었네...그래서 원래 하나만 출력 되어야 하는데... 뭐 잘 맞긴 맞는데..ㅋ)




* 탈출 문자(escape 문자) 찾기


SQL> insert into t1 values ('A!_A');

SQL> insert into t1 values ('A!!A');


SQL> commit;

SQL> select * from t1;


COL

----------

AAA

ABA

ACA

A_A

A!_A

(추후 테이블 삭제를 하고 실행 사진을 다시 올려야 겠다...~~~)

==========================================================================================

- t1 테이블에서 A!_A가 포함된 행을 찾아줄래? 오라클아.

A!!A ==> 엉터리


A_A ==> 엉터리


첫번째 방법)



↓ ↓ ↓ 

두번째 방법)

A!_A ==> 성공: 탈출 문자를 찾고 싶으면 연이어 사용


'Oracle > SQL Fundamentals I' 카테고리의 다른 글

4일차 # 2-17: NOT 연산자  (0) 2012.04.06
4일차 # 2-14: 논리 연산  (0) 2012.04.06
4일차 2-10: IN condition  (0) 2012.04.06
4일차 # 2-9: BETWEEN lower_limit AND upper_limit  (0) 2012.04.06
4일차 2-: NULL에 대한 이해  (0) 2012.04.06





where mgr in (101,102,201)

where mgr 101 or mgr =102 or mgr =201(x)





- inclusive






  * Query Transformation ==> http://goo.gl/ZJsXo


'Oracle > SQL Fundamentals I' 카테고리의 다른 글

4일차 2-11: LIKE condition  (0) 2012.04.06
4일차 2-10: IN condition  (0) 2012.04.06
4일차 2-: NULL에 대한 이해  (0) 2012.04.06
4일차 2-6: WHERE 절에서 문자열과 날짜  (0) 2012.04.06
4일차 2-4: WHERE clause  (0) 2012.04.06


NULL = UNKNOWN,(값이 있는지 없는지 모르다...존재하는 값이라고 본다)


- A null is a value that is unavailable, unassigned, unknown, or inapplicable.

- A null is not the same as a zero or a space.





  * NULL 연산


    1) 산술 ==> 전부 null





    2) 비교



     * comm이 null인 사원을 알고 싶다.

 --> null = null

선택된 레코드가 없습니다. --> 엉터리


↓ ↓ ↓ 

※강사왈~~

is null 과 is not null 은 참 과 거짓으로 생각


    3) 논리


* AND


  | T F N                         모두 T  --> T

--------------------------------           하나라도 F --> F

T  | T F N

F  | F F F

N  | N F N



* OR


  | T F N                          모두 F --> F

--------------------------------            하나라도 T --> T

T  | T T T

F  | T F N

N  | T N N



* NOT


  | T F N

--------------------------------

  | F T N







* 문자열 데이터 타입: case sensitive

* 날짜 데이터 타입  : format sensitive, default: DD-MON-RR


후보행


대문자랑 소문자는 다르다는걸 보여줌~~

+ Recent posts