지난 시간 복습
조인은 두 개 이상의 테이블을 양 옆에 연결하려 마치 하나의 테이블인 것 처럼 data를 조회하는 방식.
RDBMS 에서 흔히 사용하는 방식으로 여러 테이블의 데이터를 하나의 테이블처럼 조회할 수 있음.
Order by 절은 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋다. 여기저기 흩어져 있는 data 를 특정 기준에 따라 순서를 맞추는 것은 많은 자원을 소모하기 때문. 특정 기준에 따라 data 2개를 정렬하는 시간보다 data 10개를 정렬하는 데 시간이 더 많이 필요함.
professor table 에서 이름의 첫글자가 M 이거나 부서번호가 102인 데이터를 교수번호로 내림차순해서 교수번호, 이름, 아이디, 부서번호, 이메일을 출력하시오
단일행 함수 : 한번에 하나씩 처리하는 함수
Lower : 소문자
Upper : 대문자
length : 문자 길이
lengthb : byte 길이
영문이기 때문에 문자 길이와 byte 길이가 같다.
한글은 글자 길이와 byte 길이가 다르다. 한글은 1글자에 3byte
dual : 가상 테이블
한자도 1글자에 3byte
일본어도 1글자에 3byte
concat : 함수 문자열 연결 (|| 과 유사)
concat 은 인수를 2개밖에 못가지기 때문에 , 3개 이상 쓰려면 concat 안의 concat으로 써야 함
응용버전
substr : 문자열을 특정 길이만큼 추출
사용 문법 : substr(문자열,위치,글자갯수)
'문자열' 에서 '위치' 번째 부터 '글자갯수' 만큼 출력
글자 갯수를 생략하면 끝까지 라는 의미
위치를 음수로 주면 뒤에서부터 '위치' 번째
instr : 특정 문자열의 위치를 반환
사용 문법 : instr(문자열,찾는 문자,시작 위치,찾는 문자 번째수)
찾는 문자가 위치하는 숫자 반환
'-' 가 위치 2에서 처음으로 나오기때문에 2를 반환한다.
3번째부터 시작하면 '-'가 위치 4에 있기때문에 위치값은 4
1번 문자부터 시작해서 '-' 가 2번째로 나오는 위치는 4이기때문에 4 를 반환한다.
3번째부터 시작하면서 2번째로 나오는 '-' 는 위치 6에 있다.
3번째부터 시작해서 5번째로 나오는 '-' 는 없기 때문에 0 을 반환한다.
지역번호 추출하기
지역번호가 ')' 로 구분되어 있으므로, ')'의 위치 파악
')' 의 위치가 각각 4,3 이므로 거기서 1을 뺀 위치까지만 추출하면 지역번호 출력
파이널 프로젝트는 대략 4~5명으로 팀구성해서 할 예정
email 에서 id 만 추출하기
lpad : 왼쪽에 채운다
사용 문법 : lpad(column 이름, 전체길이, 채울 문자열)
ID를 총 20의 길이 중 부족한 만큼 왼쪽으로 '*' 을 채운다.
채울 문자열이 총 길이 중 부족한만큼 순환하면서 들어간다.
rpad : 오른쪽에 채운다
사용 문법 : rpad(column 이름, 전체길이, 채울 문자열)
총 길이는 같고, 앞의 길이에 따라 출력하는 문자가 다르게 바꿔보세요
rpad 사용해서 우측에 문자열 채우기 + substr 로 '123456789' 중 ename 의 길이만큼 자르기 + ename 길이 알기 위해 length 사용
replace : 문자열 대치
사용 문법 : replace(문자열,문자1,문자2), 문자열에서 문자1을 문자2로 변경
앞글자 2글자를 '**' 로 대치시키기
문자1 과 문자2 의 길이는 같을 필요는 없어보임.
중간의 '-' 를 제거하는 미션
replace 를 통해 '-' 를 없애기 (문자2에 아무것도 넣지 않으면 문자1 삭제 와 같은 의미) + substr 을 통해 tel 중 '-' 를 선택 + instr 을 통해 tel 중 '-' 가 있는 위치 특정
주민번호 중간에 '-' 추가하는 미션
concat 을 이용해서 주민번호 앞 6자리 + '-' + 뒤 7자리를 합치기 + substr 을 이용해서 주민번호 13자리 중 앞 6자리 선택 / 13자리 중 뒤 7자리 선택
round : 반올림함수
사용 문법 : round(숫자,표현할 소수점 자릿수), 표현할 자릿수 다음 자리에서 반올림
자릿수에 0 : 정수 표현
자릿수에 음수 : 10 의 자리, 100 의 자리 순으로 올라감
trunc : 절삭함수
자릿수 뒤 제거 (내림)
사용 문법, 0, 음수 는 round 와 동일
mod : 나머지함수
사용 문법 : mod(숫자, 나눌 숫자)
나머지값이 나온다.
ceil : 올림함수
floor : 내림함수
ceil 응용
rownum 이 1~3 : 1팀, 4~6 : 2팀 이런식으로 구분 가능
power : 승수 함수
sysdate : 날짜함수, 현재 날짜를 출력 (오라클이 설치된 시스템상에서의)
months_between : 특정 기간 개월수
앞의 날짜에서 뒤 날짜까지의 개월수, 앞이 과거이면 음수가 나옴, 앞쪽이 최근 날짜, 뒤쪽이 오래된 날짜 를 사용하면 양수
add_months : 개월 수 추가
음수를 적으면 개월 수 감소
next_day : 다가오는 날짜
현재 날짜 기준으로 다가오는 가장 빠른 '월요일' 의 날짜
last_day : 월의 마지막 날짜
현재 날짜가 있는 달의 마지막 날짜
묵시적 형변환
명시적 형변환
day : 그 날짜의 요일
ddth : 번째 일
to_char
맨 앞에 $ 표시를 하고 매 3자리마다 ',' 를 표현