티스토리 뷰

DataBase

Oracle 기초

LichKing 2014. 7. 24. 17:20

현재 접속 DB계정에 생성되어있는 테이블 확인


SELECT * FROM tab;


테이블 구조 확인


DESC table_name;


SELECT 절에서 중복데이터를 제거하는 키워드

DISTINCT

예)SELECT DISTINCT column_name FROM table_name;


컬럼에 대한 별명 부여(alias)

-column_name as alias_name

-column_name alias_name

-column_name "alias_name"

어떤 방식으로 사용하든 상관없으나 특수문자를 사용해야할때는 "" 사용


합성연산자 ||

Column 2개를 한 Column으로 출력하고 싶을때 사용.

조회결과에 무언가를 더하고싶을때 사용

예)SELECT column_name || column_name FROM table_name;

예)SELECT column_name || ' ' || column_name FROM table_name;


데이터타입 비교

-NUMBER 와 타 데이터타입과의 비교는 전부 NUMBER 로 형변환 후 비교

-NUMBER와 비교하는 문자열에 숫자값이 아닌 값이 들어가있으면 오류

예) 5 > '3' 참, 5 > '7' 거짓, 5 > '용' 오류

-때문에 CHAR타입이나 VARCHAR2타입의 데이터를 비교연산할때 숫자 상수를 사용할 경우 주의를 요한다.


-CHAR와 CHAR 비교시 더 큰 데이터타입에 맞게끔 작은 쪽의 크기를 공백으로 늘린 후 비교

예)CHAR(10)의 'ㅋㅋㅋ'와 CHAR(5)의 'ㅋㅋㅋ'은 크기가 같음.

-CHAR와 VARCHAR2 비교시 일반적 문자열비교.


문자열끼리의 비교

-왼쪽부터 한글자씩 아스키코드로 비교함.

-뒤쪽크기는 상관없이 첫번째 비교부터 결과가 결정됨. 즉 뒷쪽문자열이 더 많더라도 앞쪽값이 작으면 그대로 작은값.

예)'ㅋㅋㅋ'과 'ㅋㅋㅋ1'비교시 왼쪽 3개 'ㅋㅋㅋ'은 서로 같기에 넘어가고 '1'이 더 있는 뒷쪽값이 더 큰값

예)'하하' > '유재석' 비교시 '하'와 '유'를 비교해 '하'가 더 큰값이기때문에 뒤쪽 상관없이 '하하'가 더 큰값

예)같은 이유로 '11111111111111111' > '3' 을 비교하면 '3'이 더 큰값이됨.

-CHAR와 문자열 상수비교시 CHAR크기에 맞게 문자열 상수의 크기를 공백으로 늘린 후 비교

예)CHAR(10) 'ㅋㅋㅋㅋㅋ'과 문자열 상수 'ㅋㅋㅋㅋㅋ'을 비교시 크기가 같음.


ROWNUM

-데이터가 조회된 순간 ROWNUM이 할당된다.

다시말해 WHERE ROWNUM > 5 라는 조건을 걸었을경우 제일 처음 ROWNUM에 1이 할당되고 5와 비교했을때 >연산이 거짓이 되므로 데이터가 소멸된다.

이후 두번째로 나온 데이터역시 ROWNUM이 1로 할당되므로 데이터가 100만개라고 할지라도 단 1개도 출력되지않는다.

반대로 ROWNUM < 5 라는 조건을 걸었을경우에는 4개의 데이터가 정상적으로 출력된다.


ESCAPE

-LIKE 연산자에서 불특정한 단어를 지칭하는 %, _를 하나의 문자로 취급하기위한 옵션

예)SELECT * FROM table_name WHERE column_name LIKE '\%' escape '\';

\뒤에있는 문자를 하나의 문자로 취급. 굳이 \일 필요는 없고 escape ''안에있는 문자로 사용하면 됨

예)SELECT * FROM table_name WHERE column_name LIKE 'a%' escape 'a';

이런경우에도 같은 역할을 함


NULL은 0, 빈문자열, 공백 등이 아닌 그냥 값이 없는 상태


연산자 우선 순위

0. 괄호

1. 비교연산자(=, !=, <>, <, <=, >, >=)

2. NOT

3. AND

4. OR


집합 연산자

*집합 연산자를 사용할때는 기본적으로 같은 데이터타입의 Column만 조회해야한다.

-UNION : 두 테이블을 합친다. 합치는 과정에서 중복데이터는 1개만 출력한다.

-UNION ALL : 두 테이블을 합친다. 중복되더라도 그대로 출력한다.

-INTERSECT : 중복되는 데이터만 출력한다.

-MINUS : A MINUS B 일 경우 A테이블에서 B테이블에 있는 정보를 제거한 A테이블을 출력한다.


'DataBase' 카테고리의 다른 글

ERWin sql 추출  (2) 2014.08.05
기본키가 다중컬럼으로 이루어져있을때  (2) 2014.08.01
인덱스의 단점  (0) 2014.07.25
오라클 함수  (0) 2014.07.24
Oracle 기초  (0) 2014.07.24
오라클 쿼리 실행 순서  (4) 2014.07.24
댓글
댓글쓰기 폼