[준비]

oracle 계정에는 관리자계정과, 일반용계정이 있다.

 - 관리자 계정 : sys, system

 - 일반용 계정 : scott, HR

11g single 설치할 때 dbca할때 sample schema를 체크하면 같이 깔려. (연습용 자료) _ 실제 밖에서는 체크하면 안되.

 

 

1. scott 계정으로 접속 (밑에는sys)
$ sqlplus scott/tiger

$ sqlplus / as sysdba

설명) sqlplus는 프로그램 이름이고, 계정/암호 이렇게 로그인한다. (리눅스에서)

 

SQL> SET sqlprompt "_USER>"  : 이렇게치면 어떤계정으로 접속했는지 알 수 있어서 편해.

 

SYS> @/home/oracle/test_data.sql  : 파일 불러오기 (중간에 에러나면 한번더)

........ 

commit complete

 

 

2. 접속 에러

 1) 데이터베이스가 종료되어 있어서 연습용 계정으로 접속안될때.

$ sqlplus scott/tiger

ERROR :

ORA-01034 : ORACLE not available
사용자명 입력 : sys/oracle as sysdba : 휴지인스턴스에 접속
SQL> startup : oracle 인스턴스가 시작 - 마운트 - 데이터베이스 열림.
SQL>conn scott/tiger : 관리자계정으로 접속

 

 2) 처음에, 연습용계정에 들어가지 못하게 잠겨 있을 경우.

방법1)

SYS>conn scott/tiger   일반계정으로 접속하면 잠겨있어서 에러뜸
ERROR:
ORA-28000: the account is locked

Warning: You are no longer connected to ORACLE.
>conn sys/oracle as sysdba  관리자계정으로 접속
Connected.
SYS>alter user scott identified by tiger account unlock;

User altered.

SYS>conn scott/tiger
Connected.
SCOTT>

 

 

3. 명령어
 1) DESC [테이블명] : 특정 테이블에 어떤 칼럼이 있는지 조회. (ROW:행 , collum : 열)
 2) SELECT  [칼럼명또는표현식]
    FROM [테이블명또는 뷰 명]

 3) DISTINCT [칼럼명] : 중복된 데이터를 빼고 출력 (반드시 SELECT 키워드 바로 다음에 와야한다.)

 (10g R1까지는 정렬을 하고, R2부터는 hash라는 기법을 이용하는데, 입력값이 같으면 출력값이 같고, 입력값이 다르면 출력값도 다르다는 것을 보장해주는 기법이다.)

     FROM [테이블명]

   ex) SELECT DISTINCT deptno, job  :: deptno와 jop 칼럼 두개 다 같이 적용된다.

 4) WHERE [원하는조건] : 원하는 데이터만 골라서 조회할때 사용하며,

숫자는 그대로 써도 되지만, 문자와 날짜 조회시 반드시 홑따옴표를 붙여야 하고, 문자조회시에는 반드시 대소문자 구별해야 한다. (날짜는 대소문자 구별 없음)

 

(1번 그림은 윈도에서 조회. "년도/월/일")    (2번그림은 일-월영문-년도)

-> 윈도와 유닉스 계열 사이에 데이터를 옮기는 작업을 할 때 에러가 나므로 조심해야 한다.

 

 [Tip] Column Alias(속성 별칭)

 

 alias는 SELECT 절에 expression을 사용할 때 유용하다.

 column명이나 expression 바로 뒤에 명시하거나 column명과 alias 사이에 AS를 끼워 넣어 사용한다

 Double Quotation (" ")을 사용하여 alias내에 공백이나 특수문자를 포함할 수 있다.

 

SELECT (salary + commission_pct) 실제 급여

FROM employees;

=> 별칭에 공백문자 때문에 오류 발생할 수 있다.

 

SELECT (salary + commission_pct) "실제 급여"

FROM employees;

=> 헤딩이 실급여라는 문자열로 출력이 됨

 

SELECT (salary + commission_pct) AS "실제 급여"

FROM employees;

=> AS를 넣어서 사용 가능

 

 

4. 칼럼길이 조정 및 TIP

 1) 데이터가 숫자일 경우

COL empno FOR 9999  : 9는 숫자 한 자리를 의미.

 2) 데이터가 문자일 경우

COL ename FOR a8 : 8byte까지 들어가도록. (주의! 숫자와 같이 섞인 900730*******도 문자로 생각해야되)

 3) 한 화면에 출력 가능한 줄 길이 설정 (가로 길이 설정)

SET LINE 200 : 한 화면을 가로로 200 바이트까지 되게 함.

 4) 한 페이지에 출력 가능한 줄 수 설정

 SET PAGES 50 : 한 페이지에 50줄까지 출력.

 5) ed : 마지막에 쓴 쿼리가 vi창으로 열림.

 6) show line : 현재 출력가능한 줄 수 보여줌.

 7) show page : 현재 페이지 사이즈 보여줌.

 

5. 출력하기.

* 홑따옴표 1개를 출력하기 위해 2개를 사용해야 한다. (표현식 또는 리터럴상수 또는 리터럴문자라고함.->  '')

* 별명을 줄 때 공백이나 특수문자, 대소문자 구분이 필요할 경우에는 반드시 "(쌍따옴표)로 감싸줘야 한다.

* % : 글자수 제한 없고, 어떤 글자가 와도 상관 없음 (0개 이상)

* _ : 글자수 한글자를 의미. (ex. WHERE HIREDATE LIKE '___12%'  :: 입사일이 12월 달인 사람들( 80/12/17)

* %나 _를 가장 먼저 쓰면 절대 안된다.

* & : 사용자에게 입력받음

 

 

6. 연산자

1) 연결연산자 : ||

 

 

2) 다양한 연산자  (where 명령어와 함께 쓰임)

연산자 종류 

 설 명

 =

같은 조건 검색

 !=   ,   <>

같지 않은 조건 검색 

 >

큰 조건 

 >=

크거나 같은 조건 

 <

작은 조건 

 <=

작거나 같은 조건 

 BETWEEN a AND b

a와 b 사이에 있는 범위 값을 모두 검색 

 ★★  IN (a,b,c)

a이거나 b이거나 c인 조건을 검색 

 LIKE

특정 패턴을 가지고 있는 조건 검색 

 IS NULL / IS NOT NULL

NULL값 검색 / NULL이 아닌 값 검색 

 A AND B 

A조건과 B조건을 모두 만족하는 값만 검색 

 A OR B

A조건이거나 B조건중 한가지라도 만족하는 값 검색 

 NOT A

 A가 아닌 모든 조건 검색 

 

* 날짜가 크다는 의미는 최신 날짜를 의미한다. ( 어제 < 오늘 < 내일 )

* BETWEEN은 작은 값을 앞에, 큰 값을 뒤에 쓰고, 두 값을 모두 포함하는 결과를 출력한다.

* 숫자의 경우, 특정 구간의 값을 검색할 때, 가급적 BETWWEN연산자 쓰지 않고 비교연산자(>,<,>=,..) 를 쓴다.

* BETWEEN연산자에서 한글은 시작글자만 포함이고, 끝글자는 제외한다.

* null과 N/A는 다르다. null은 모를때. N/A는 not available.

* null은 '=' 연산자를 쓰지 않는다. Is NULL , Is not NULL

 

3) 집합 연산자  (두 개의 쿼리의 칼람 결과가 다르거나 데이터형이 다르면 에러가 발생한다.)

 

연산자 종류 

내 용 

 UNION

두 집합의 결과를 합쳐서 출력. (중복 값 제거) (정렬함)

 UNION ALL

두 집합의 결과를 합쳐서 출력. (중복 값 포함 ALL) (정렬안함)

 INTERSECT

두 집합의 교집합, 결과를 출력. (정렬함)

 MINUS

두 집합의 차집합 결과를 출력. 쿼리 순서 중요 

 

ex)

 

 

 

 

7. 정렬하기.

* ORDER BY ASC : 오름차순 정리 (기본값) (ORDER BY) (가나다순)

* ORDER BY DESC : 내림차순 정리

* SELECT ENAME, SAL, HIREDATE

  블라블라 ORDER BY 2,1               :: 이렇게 적으면 SAL순으로 먼저 정렬 한후, 동일한 SAL값은 ENAME으로 한번 더 정렬

* ORDER BY는 최대한 쓰지 말것!!

* 면접tip) order by 절을 쓰지 않고, 정렬하는법 -> index이용해서 처리.

 

 

 

Print Friendly and PDF Posted by JJ*
: