- 데이터 딕셔너리
: DBMS만이 추가, 수정, 삭제가 가능하며 사용자는 조회만 가능함
테이블 목록 조회하기
select * from tab;
테이블 정보 조회하기
desc 테이블명;
- DML - Select 기본
모든 컬럼의 데이터 가져오기
select * from 테이블명;
특정 컬럼의 데이터 가져오기
select 컬럼명1, 컬럼명2 from 테이블명;
- DML - 연산자 사용하기
산술 연산자
+, -, *, /
: 오라클에서 null
값은 무한대를 의미함
: null
값이랑 숫자 더하면 null
값이 나옴
: nvl(해당값, 0)
하면 null
값을 0
으로 바꿔줌
ex) nvl(comm, 0)
Concat 연산자
: 문자열을 합치는 연산자
문자열 || 컬럼 || 문자열 || 컬럼
ex) select ename || '사원의 담당 직무는 ' || job || '입니다'
from emp;
Distinct
: select문을 통해 가져온 모든 로우 중에서 중복된 로우를 제거하는 키워드
select distinct 컬럼명
from 테이블명;
- 조건절 사용하기
조건절
select 컬럼명
from 테이블명
where 조건절;
: select ~ from 까지를 통해 모든 로우를 가져오고 각 로우를 조건절과 비교하여 참인 로우만 남겨주고 거짓인 로우는 제거함
: select ~ from ~ where
작성해주고, 테이블명/조건/데이터
순으로 작성
비교 연산자
<, >, <=, >=, =
<>, !=, ^=
(3개 같은 의미)
- 논리 연산자 사용하기
and
: 좌우 조건식이 모두 참일 경우 참or
: 좌우 조건식이 모두 거짓일 경우 거짓not
: 조건식의 결과를 부정between and
: 범위 조건in
: 항목 조건
- Like 연산자
Like 연산자
select 컬럼명
from 테이블명
where 컬럼명
like '와일드카드';
_
: 글자 하나를 의미함
%
: 글자 0개 이상을 의미함
- null
is null
이나 is not null
을 통해 null 비교가 가능함
- 정렬
정렬
select 컬럼명
from 테이블명
where 조건
order by 컬럼명 [ASC|DESC];
asc
: 오름차순, 생략가능
desc
: 내림차순
- 숫자 함수
숫자 함수
https://docs.oracle.com/database/121/SQLRF/functions.htm#SQLRF006
abs()
: 절댓값
floor()
: 소수점 이하 버림
round(값, 자릿수)
: 반올림
trunc(값, 자릿수)
: 버림
mod()
: 나머지
- 문자열 함수
문자열 함수
lower()
: 대문자 -> 소문자
upper()
: 소문자 -> 대문자
initcap()
: 첫 글자만 대문자로, 나머지는 소문자로
concat()
: 문자열 연결
length()
: 문자열 길이
lengthb()
: 문자열 길이 (byte 단위)
substr(문자열, 인덱스, 개수)
: 문자열 잘라내기 (주의! 인덱스는 0
부터 시작이 아닌 1
부터 시작)
instr(문자열, 찾을 문자열)
: 문자열 찾기
lpad(문자열, 채울 자릿수, 채울 문자열)
: 왼쪽에 특정 문자열로 채우기
rpad(문자열, 채울 자릿수, 채울 문자열)
: 오른쪽에 특정 문자열로 채우기
trim(문자열)
: 양쪽 공백 제거
rtrim(문자열)
: 오른쪽 공백 제거
ltrim(문자열)
: 왼쪽 공백 제거
replace(문자열, 바꿀 문자열, 대체 문자열)
: 문자열 변경
- 날짜 함수
날짜 함수
sysdate
: 현재 날짜와 시간을 반환함
months_betweeen(날짜, 날짜)
: 두 날짜 간의 개월 수를 구함
add_months(날짜, 날짜)
: 주어진 개월 수 만큼 더함
to_char(날짜, 형식)
: 날짜와 숫자를 문자로 변환
to_date(문자, 형식)
: 데이터를 날짜 형식으로 변환
- DECODE, CASE
Decode
: 값에 따라 반환값이 결정되는 구문
decode(컬럼명, 값1, 반환값1, 값2, 반환값2, 값3, 반환값3)
-- 각 사원의 부서 이름을 가져온다.
-- 10: 인사과, 20: 개발부, 30: 경영지원팀, 40: 생산부
select empno, ename,
decode(deptno, 10, '인사과',
20, '개발부',
30, '경영지원팀',
40, '생산부')
from emp;
case
: 조건에 따라 반환값이 결정되는 구문
case when 조건식1 then 반환값1
when 조건식2 then 반환값2
end
-- 직원들의 급여를 다음과 같이 인상한다.
-- 1000 이하: 100%
-- 1000 초과 2000미만: 50%
-- 2000 이상: 200%
select empno, ename,
case when sal <= 1000 then sal*2
when sal > 1000 and sal < 2000 then sal*1.5
when sal >= 2000 then sal*3
end
from emp;
- 그룹함수
그룹함수
sum
: 총합
avg
: 평균
count
: 로우의 수
max
: 최대값
min
: 최소값
- Group By
Group By
: select~from~where절
까지 모두 수행하여 가져온 결과를 하나의 그룹으로 묶어 총합, 평균 등을 구할 수 있음
select 컬럼명
from 테이블명
where 조건절
group by 그룹기준
order by 정렬기준;
- Having
Having
: Having은 Group by절의 조건이 됨
(주의사항! where
은 로우의 조건, having
은 그룹의 조건)
select 컬럼명
from 테이블명
where 조건절
group by 그룹기준
having 그룹기준에 대한 조건절;
-- 부서별 최소 급여액이 1000 이하인 부서에서 직무가 CLERK인 사원들의 급여 총합을 구한다.
select deptno, sum(sal)
from emp
where job = 'CLERK'
group by deptno
having min(sal) <= 1000;