[Day 22] Database 0426 - 내용 정리

Doyeon Kim·2022년 4월 26일
1

Database

목록 보기
8/12
post-thumbnail

🌞문자열 함수

  • chr: 정수 아스키코드에 해당하는 문자를 반환
  • concat: 두 개의 문자열을 연결하여 반환
  • initcap: 단어의 첫 글자를 대문자로 변환하여 반환
  • lower: 소문자로 변환
  • upper: 대문자로 변환
  • ltrim: 문자열의 왼쪽 공백을 제거하여 반환
  • rtrim: 문자열의 오른쪽 공백을 제거하여 반환
  • trim: 문자열의 좌,우 공백을 제거하여 반환
  • length: 문자열의 길이를 반환하는 함수

🌈ascii 함수

  • 문자에 해당하는 아스키 코드값을 반환

<활용>

select ascii('A') from dual;

<결과>

ASCII('A')
----------
		65

🌈instr 함수

  • 문자열에서 특정 문자열의 위치를 반환

<기본문법>

instr(문자열1, 문자열2)

==> 문자열1로부터 문자열2가 나오는 위치를 반환

instr(문자열1, 문자열2, 숫자1)

==> 문자열1로부터 숫자1인덱스 이후에 나오는 문자열2의 위치를 반환

<활용>

select instr('hello', 'e') from dual; //hello에서 e가 몇번째에 나타나는가?

<결과>

INSTR('HELLO','E')
------------------
		         2

===> 오라클에서 인덱스는 1번째부터 시작한다.

예제) 모든 사원의 이름과 이메일 그리고 이메일의 @의 위치를 출력하세요.

select ename, email, instr(email, '@') from emp;

예제) 모든 직원의 이름과 이메일 그리고 이메일로부터 @이 나오는 위치와 이메일로부터 @이 나오는 위치 이후에 나오는 .의 위치를 출력

select ename, email, instr(email, '@'), instr(email, '.', instr(email, '@'))
from emp;

🌈substr 함수

  • 문자열의 일부분을 잘라서 반환하는 함수

<기본문법>

substr(문자열, 시작위치, 길이)

==> 문자열의 시작위치에서 길이만큼 잘라서 반환

예제) 모든 사원의 이름과 사원이름의 첫 글자를 출력해보세요.

select ename, substr(ename, 1, 1) from emp;

🌈replace(문자열, a, b) 함수

  • 문자열 중에서 a를 b로 변경하는 함수

<활용>

select replace('hello java', 'hello', '안녕') from dual; // hello를 안녕으로 바꾸기.

<결과>

REPLACE('HELLOJAVA','H
----------------------
안녕 java

🌈lpad(문자열, 자릿수, 채울글자) 함수

  • 문자열을 자릿수만큼 칸을 잡아 오른쪽에 정렬하여 출력하고 왼쪽 빈칸을 채울 글자로 채워준다.

🌈rpad(문자열, 자릿수, 채울글자) 함수

  • 문자열을 자릿수만큼 칸을 잡아 왼쪽 정렬하여 출력하고 오른쪽 빈칸을 채울 글자로 채워준다.

예제) 모든 직원의 사원번호, 이름의 첫글자를 출력하세요. 이름의 첫글자는 3칸을 잡아 왼쪽정렬하여 출력하고, 빈칸은 * 로 출력한다.

select eno, rpad(substr(ename, 1, 1), 3, '*')
from emp;

🌞날짜 관련 함수

🌈sysdate 함수

  • 시스템 설정된 오늘날짜를 알려주는 함수

<활용1>

select sysdate from dual;

<결과1>

SYSDATE
--------
22/04/26

<활용2>

select sysdate -1, sysdate, sysdate+1 from dual; // -1하면 어제, +1하면 내일

<결과2>

SYSDATE- SYSDATE  SYSDATE+
-------- -------- --------
22/04/25 22/04/26 22/04/27

🌈to_char 함수

  • 날짜 자료형을 문자로 반환하는 함수

<기본문법>

to_char(날짜, 형식문자)
		yyyy yy	연도
		mm		월
		d		날
		hh		시
		mi		분
		ss		초	

<활용>

select to_char(sysdate, 'yyyy') from dual;

<결과>

TO_CHAR(
--------
2022

🌈to_date 함수

  • 문자를 날짜로 바꾸어 주는 함수

<기본문법>

to_date(문자, 형식문자)

<활용>

select to_date('2022/04/26', 'yyyy/mm/dd') from dual;

<결과>

TO_DATE(
--------
22/04/26

🌈add_months(날짜, 숫자) 함수

  • 날짜에 숫자 개월 수 만큼 더해준다.

<활용>

select add_months(sysdate, 12) from dual;

<결과>

ADD_MONT
--------
23/04/26

🌈last_day(날짜) 함수

  • 그 날짜가 속해있는 달의 마지막 날을 반환

<활용>

select last_day(sysdate) from dual;

<결과>

LAST_DAY
--------
22/04/30

🌈months_between(날짜1, 날짜2) 함수

  • 두 날짜 사이의 개월 수를 반환, 날짜1이 더 최근 날짜이어야 한다.

예제) 모든 사원의 이름과 근무 개월수를 출력

select ename, hiredate, months_between(sysdate, hiredate)
from emp;

🌞outer join

<3개의 테이블에 대한 outer join>

select 컬럼1, 컬럼2
from 테이블1 left outer join 테이블2
on 조건식
left outer join 테이블3
on 조건식;

<<3개의 테이블에 대한 outer join과 다른 조건식>>

select 컬럼1, 컬럼2
from 테이블1 left outer join 테이블2
on 조건식
left outer join 테이블3
on 조건식
where 조건식;

🌞decode

  • 컬럼의 값이 값1이면 결과 1을 반환
  • 컬럼의 값이 값2이면 결과 2를 반환
  • 그 나머지이면 결과 3을 반환
  • 값과 결과는 쌍을 이루어 얼마든지 나열할 수 있다.

<기본문법>

decode(컬럼,1, 결과1,2, 결과2, 결과3);

예제) 사원이름과 주민번호 성별을 출력합니다.

select ename, jumin, decode(substr(jumin, 8, 1), '1', '남', '2', '여', '3', '남', '4', '여')
from emp;

🌞nvl(속성, 대체할 값)

  • 만약, 속성의 값이 null이면 대체할 값으로 출력

<활용>

select name, nvl(phone, '연락처없음') phone from customer;
profile
꾸준히 성장하는 개발자✨

0개의 댓글