SQL 기본 문법
SQL SELECT 기본
해당 테이블에 모든 정보를 가져온다
1
| select 컬럼명1, 컬럼명2 from 테이블명
|
해당 테이블에 특정한 컬럼의 데이터만 가져온다
연산자 사용
1
2
| select 컬럼명1, 컬럼명1*500 컬럼명1-100, 컬럼명1* 3
from 테이블명;
|
해당 테이블에 컬럼 값과 컬럼 값에 연산을 한 값을 가져온다
해당 컬럼 값이 null일 때
1
2
| select 컬럼명1, nvl(컬럼명2, 값 지정)
from 테이블명;
|
해당 컬럼 값이 null 일 때 특정한 값으로 바꾸고 싶다면 nvl을 사용하면 된다
문자열 합치기
1
| select '값은' || 컬럼명1 from 테이블명;
|
중복 제거
1
| select distinct 컬럼명1 from 테이블명;
|
중복을 제거하고 값을 가져오고 싶다면 distinct를 사용하면 된다
조건절
1
| select 컬럼명 from 테이블명 where 조건절;
|
select ~ from까지의 모든 값을 가져와서 그 중 조건절과 비교해서 최종적으로 참이 값만 가져온다
비교 연산자
1
2
3
4
5
6
| < : 작은가
> : 큰가
<= : 작거나 같은가
>= : 크거나 같은가
= : 같은가
<>, ^=, != : 다른가
|
논리 연산자
1
2
3
4
5
| and : 좌우 조건식이 모두 참일 경우 참
or : 좌우 조건식 중 하나만 참이여도 참
not : 조건식 결과를 반대로
between and : 범위 조건
in : 항목 조건
|
예시
1
2
3
| select 컬럼명1
from 테이블명
where 컬럼명 in ('태그1', '태그2', '태그3')
|
컬럼명1에서 태그1, 태그2, 태그3인 것을 가져온다
1
2
3
| select 컬럼명1
from 테이블명
where 컬럼명1 between '2001/01/01' and '2001/12/31'
|
컬럼명1에 값이 2001/01/01 ~ 2001/12/31 사이 값을 가져온다
Like 연산자
1
| select 컬럼명 from 테이블명 where 컬럼명 like 와일드 카드
|
와일드 카드
1
2
| _ : 단일 글자를 의미
% : 0, 1 또는 여러 문자를 의미
|
예시
1
2
3
| select 컬럼명1
from 테이블명
where 컬럼명1 like '%A';
|
컬럼명1 중 A로 끝나는 것만 가져온다
1
2
3
| select 컬럼명1
from 테이블명
where 컬럼명1 like 'B%';
|
컬럼명1 중 A로 시작하는 것만 가져온다
1
2
3
| select 컬럼명1
from 테이블명
where 컬럼명1 like '_C';
|
컬럼명1 중 두 번째 글자가 C인 것만 가져온다
null 비교
1
2
3
| select 컬럼명1
from 테이블명
where 컬럼명1 is null;
|
null은 = 이나 != 로는 비교할 수 없고 is null이나 is not null로 비교해야 한다
정렬
1
2
3
4
5
6
7
| select 컬럼명1
from 테이블명
where 조건
order by 컬럼명1 방식;
ASC : 오름차순 (생략 가능)
DESC : 내림차순
|
숫자 함수
1
2
| select abs(컬럼명1 - 500)
from 테이블명;
|
컬럼명1에서 500을 뺀 값에 절대값을 가져온다
1
2
| select floor(컬럼명1 * 0.75)
from 테이블명;
|
컬럼명1에서 0.75을 곱한 값에서 소수점을 버린 값을 가져온다
1
2
| select round(컬럼명1)
from 테이블명;
|
컬럼명1에서 반올림한 값을 가져온다
1
2
| select trunc(컬럼명1, 자리수 정해서 버림)
from 테이블명;
|
컬럼명1에서 자리수을 정해서 버린다
1
| select mod(10, 3) from 테이블명;
|
나머지 연산한 뒤 값을 가져온다
문자열 함수
1
2
| select lower(컬럼명1)
from 테이블명;
|
대문자로 바꿔서 값을 가져온다
1
2
| select upper(컬럼명1)
from 테이블명;
|
소문자로 바꿔서 값을 가져온다
1
2
| select initcap(컬럼명1)
from 테이블명;
|
첫 글자만 대문자로 나머지는 소문자로 바꿔서 값을 가져온다
1
2
| select concat(문자열1, 문자열2)
from 테이블명;
|
문자열1과 문자열2가 연결되어서 값을 가져온다
1
2
| select length(컬럼명1)
from 테이블명
|
문자열의 길이를 반환한다
1
2
3
| select substr('문자열', '자를 문자 시작 위치'),
substr('문자열', '자를 문자 시작 위치', '자를 문자 갯수')
from 테이블명;
|
문자열을 잘라내어 반환한다
1
2
3
4
| select instr('문자열', '찾을 문자열'),
select instr('문자열', '찾을 문자열', '시작 위치')
select instr('문자열', '찾을 문자열', '시작 위치', '발생 횟수')
from 테이블명;
|
문자열을 찾아 반환한다
1
2
| select lpad('문자열', '총 문자길이')
from 테이블명;
|
지정한 길이 만큼 왼쪽부터 문자를 채워 반환한다
1
2
| select rpad('문자열', '총 문자길이')
from 테이블명;
|
지정한 길이 만큼 오른쪽부터 문자를 채워 반환한다
1
2
3
| select trim(' 문자열 '),
trim(' 문자열 ', '열')
from 테이블명;
|
값이 없을 땐 양쪽 공백을 제거하여 반환한다 만약 있다면 그 문자열을 제거한다
1
2
3
| select ltrim(' 문자열 '),
trim(' 문자열 ', '열')
from 테이블명;
|
값이 없을 땐 왼쪽 공백을 제거하여 반환한다 만약 있다면 그 문자열을 제거한다
1
2
3
| select rtrim(' 문자열 '),
trim(' 문자열 ', '열')
from 테이블명;
|
값이 없을 땐 오른쪽 공백을 제거하여 반환한다 만약 있다면 그 문자열을 제거한다
1
2
| select replace('문자열', '찾을 문자' '변환 문자')
from 테이블명;
|
문자열에서 특정 문자를 변환하여 반환한다
1
| select system from 테이블명;
|
현재 날짜와 시간을 반환한다
1
2
| select MONTHS_BETWEEN(컬럼명1, 컬럼명2)
from 테이블명;
|
두 컬럼 사이의 개월 수를 계산하여 반환한다
1
2
| select ADD_MONTHS(컬럼명1, 100)
from 테이블명;
|
컬럼명1로 부터 100개월 후 값을 반환한다
예제 3: next_day 함수
1
2
| select NEXT_DAY('날짜', '요일')
from 테이블명;
|
날짜로부터 지정된 요일이 며칠인 지 가져온다
1
2
| select LAST_DAY('날짜')
from 테이블명;
|
지정된 날짜가 해당하는 달에 마지막 날을 가져온다
DECODE 함수
1
2
3
4
| select DECODE('컬럼명1', '값1', '반환값1'
, '값2', '반환값2'
, '값3', '반환값3')
from 테이블명;
|
지정한 컬럼의 값에 따라 반환값이 결정된다
CASE 함수
1
2
3
| select CASE WHEN 조건식1 THEN 반환값1
WHEN 조건식2 THEN 반환값2
from 테이블명;
|
그룹 함수
1
2
| select SUM('컬럼명1')
from 테이블명;
|
선택한 컬럼의 총합을 반환한다
1
2
| select AVG('컬럼명1')
from 테이블명;
|
선택한 컬럼의 평균을 반환한다
1
2
| select COUNT('컬럼명1')
from 테이블명;
|
선택한 컬럼의 로우의 수를 반환한다
1
2
| select MAX('컬럼명1')
from 테이블명;
|
선택한 컬럼의 최대 값을 반환한다
1
2
| select MIN('컬럼명1')
from 테이블명;
|
선택한 컬럼의 최소 값을 반환한다
GROUP BY
1
2
3
4
5
| select 컬럼명
from 테이블명
where 조건절
group by 그룹기준
order by 정렬기준 -- 생략 가능
|
select로 가져온 여러 그룹으로 나눠 각각의 총합과 평균등을 구할 수 있다
주요 정리
- select문
- nvl(‘컬럼’, ‘값’) : null 값 지정
- distinct : 중복 제거
- where문
- 범위 조건
- like연산자
- is null: null값 비교
- order by : 정렬, DESC 내림차 순 선택
- abs() : 절대값
- floor() : 소수점 버리기
- round() : 반올림
- trunc() : 자리수 정해서 버림
- mod() : 나머지 연산
- lower() : 대문자를 소문자로 변경
- upper() : 소문자를 대문자로 변경
- initcap() : 첫글자만 대문자로 나머지는 소문자로 변경
- length() : 문자열 길이 반환
- substr() : 문자열 자르기
- instr() : 문자열 찾기
- rpad() : 오른쪽부터 문자 채우기
- lpad() : 왼쪽부터 문자 채우기
- trim : 문자 제거, 앞에 r,l을 붙여서 한쪽 방향만 제거 가능
- replace() : 문자열 변경
- decode(‘컬럼’, ‘값1’, ‘반환값1’, ‘값2’, ‘반환값2’) : 값에 따라 반환값이 결정됨
- case when then : 조건에 따라 반환값이 결정
- 그룹 함수
- group by : 그룹으로 묶는다