ORACLE SQL 기법
조회를 위한 고급기법
1.여러 건의 결과들을 모아서 연산(집합연산자)
1)결과를 모아서 출력하기(UNION과 UNION ALL)
UNION은 SQL문장에서 먼저 조회되더라도 해당 컬럼을 정렬하여 출력한다. 중복된 데이터가 있을 경우에 중복 제거 한다.
UNION ALL은 정렬과 중복 데이터 제거를 하지 않는다.
단, UNION의 경우 정렬해야 하기 때문에 속도가 느린 단점이 있다.
2)공통으로 있는 데이터 찾기(INTERSEECT 연사자) 교집합
INTERSECT 연산자는 두 SQL 문자의 실행 결과에서 공틍으로 있는 교집합 부분을 찾아내는 집합연산자
오라클은 정렬을 통해 교집합을 찾게되며 많은 데이터를 대상으로 할 경우 속도가 느려진다는 단점이 있다.
3)특정결과만 제외한 결과만들기(MINUS 연산자)
MINUS 연산자는 큰 집합에서 작은 집합을 빼는 집합연산자이다.
데이터량이 많은 경우 시간이 오래걸릴 수 있으며 두개의 컬럼의 갯수가 다르거나 데이터 형이 다르면 에러를 발생하므로 개수와 데이터형을 꼭 맞춰야한다.
2.함수로 쿼리에 날개 달기
함수란 어떤 입력값을 받아서 정해진 루틴에 의해 작업을 하고 결과값을 만들어서 출력해주는 것을 말한다.
1)함수의 종류
단일행 함수와 복수행 함수
단일 행 함수는 한번에 한 건씩 처리하는 함수.
복수행 함수는 여러 건의 데이터를 동시에 입력을 받아서 한꺼번에 처리 후 결과 값 1건을 만들어 주는 함수
2)단일행 함수
|
|
단일행함수 |
|
|
문자 함수 |
숫자 함수 |
날짜 함수 |
변환 함수 |
일반함수 |
|
|
|
-묵시적데이터 변환 -명시적 데이터 변환 |
|
함수에 입력되는 값이 문자이면 문자 함수라 하고 숫자가 입력되는 함수를 숫자 함수라고 한다.
(1) 문자 함수
① INITCAP() 함수
영어에서 첫 글자만 대문자로 출력하고 나머지는 전부 소문자로 출력하는 함수
INITCAP(문자열 또는 컬럼명)
이 함수는 공백 다음 글자를 첫 글자로 인식해서 대문자로 출력한다
② LOWER()함수/ UPPER() 함수
입력되는 값을 모두 소문자/대문자로 변경하는 함수
LOWER(문자열 또는 컬럼명)/UPPER(문자열 또는 컬럼명)
인터넷 사이트에서 회원가입을 받을 때 회원 아이디를 전부 대문자나 소문자로 처리한다.
③LENGTH()함수/LENGTHB()함수
지정된 문자열의 길이를 (BYTE 수) 계산해 주는 함수이다.
LENGTH(컬럼 또는 문자열)/LENGTHB(컬럼 또는 문자열)
영어인 경우 LENGTH와 LENGHTB의 값이 동일하지만 한글인 경우 대부분 두 배 많게 나온다. 하지만 오라클 옵션에 따라 조금 다를 수 있다.
④SUBSTR() 함수(특정 부분만 골라내기)
주어진 문자열에서 특정길이의 문자를 골라낼 때 사용하는 함수이다.
SUBSTR('문자열' 또는 컬럼명, 시작위치, 골라낼 글자수)
(시작위치에서)-를 하지 않는 경우 왼쪽->오른쪽 검색해 글자를 골라내며 -를 붙인경우 오른쪽-> 왼쪽으로 검색한 후 왼쪽->오른쪽으로 글자수를 세어 낸다는 점을 주의해햐한다.
⑤SUBSTRB()함수(한글일 경우 요긴하다)
SUBSTR과 문법은 동일하며 차이점은 추출할 자릿수가 아니라 추출할 BYTE수를 지정하는 것이다.
⑥INSTR()함수 (특정 글자의 위치를 찾기)
주어진 문자열이나 컬럼에서 특정한 글자가 있는 위치를 찾아주는 함수이다.
INSTR('문자열' 또는 컬럼, 찾는 글자, 시작위치, 몇번째인지(기본 값은 1))
⑦LPAD() 함수(왼쪽 공백에 특별한 문자로 채우기)
LPAD('문자열' 또는 컬럼며, 자리수, '채울 문자')
PAD말은 채운다는 뜻이 있으며 원래 데이터를 오른쪽에 두고 왼쪽 빈자리가 있을 경우 왼쪽을 특정 기호나 문자로 채우라는 뜻이다.
⑧RPAD() 함수(오른쪽 공백에 특별한 문자로 채우기)
원래 데이터를 왼쪽에 두고 오른쪽 공백을 특정한 기호나 문자로 채우는 함수이다.
RPAD('문자열' 또는 컬럼며, 자리수, '채울 문자')
⑨LTRIM() 함수 (왼쪽에 있는 대상 제거하기)
왼쪽에 지정된 문자가 있을 경우 제거하는 함수
LTRIM('문자열' 또는 컬럼명, '제거할 문자')
⑩RTRIM() 함수
오른쪽에 지정된 문자가 있을 경우 제거하는 함수이다
RTRIM('문자열' 또는 컬럼명, '제거할 문자')
⑪REPLACE() 함수(아주 많이 사용됨)
REPLACE('문자열' 또는 컬럼명, '문자1','문자2')
주어진 첫 번째 문자열이나 컬럼에서 문자1을 문자2로 바꾸는 함수
예시)SELECT first_name, REPLACE(first_name, SUBSTR(first_name,2,3),'***')
전화번호나 이름을 가릴 때 사용
ORACLE SQL 기법
'개발 > sql' 카테고리의 다른 글
PK변경 및 인덱스 변경 (0) | 2019.03.11 |
---|---|
데이터베이스 관련 용어 (0) | 2017.02.27 |
ORA-00917: 누락된 콤마 (2) | 2015.11.30 |
oracle 연결 툴 toad 토드 (0) | 2015.10.19 |
oracle over,partition,rank,rank_number (0) | 2015.10.13 |
댓글