일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- nomount
- ORA-01034
- 카프카
- centos7
- zookeeper
- 오라클복구
- Kafka
- 하둡권한변경
- recovery
- window업데이트
- oracle
- crash recovery
- 완전분산환경
- 결합연산자
- sql연산자
- 하둡설치
- Standalone
- 하둡
- tibero
- 오라클
- 카프카 사용
- 설치
- ORA-27101
- 에러
- hadoop
- hadoop명령어
- initorcl
- 실습
- sql처리순서
- Linux
- Today
- Total
IT 꿈나무의 일상
[ORACLE] JOIN과 숫자함수, 문자함수 실습 본문
# 실습을 위하여 DEPT와 EMP 테이블을 사용하였습니다.
1. JOIN
- 오라클에서 조인을 사용하기 위한 조건은 다음과 같습니다.
1) FROM 절에 2개 이상의 테이블 설정
2) 각 테이블은 콤마(,)로 구분
3) SELECT 절의 컬럼 앞에 어느 테이블 컬럼인지 기재
SQL> SELECT EMP.ENAME, EMP.JOB, DEPT.DEPTNO, DEPT.LOC
2 FROM DEPT, EMP
3 WHERE EMP.DEPTNO=DEPT.DEPTNO;
ENAME JOB DEPTNO LOC
---------- --------- ---------- -------------
CLARK MANAGER 10 NEW YORK
KING PRESIDENT 10 NEW YORK
MILLER CLERK 10 NEW YORK
JONES MANAGER 20 DALLAS
FORD ANALYST 20 DALLAS
ADAMS CLERK 20 DALLAS
SMITH CLERK 20 DALLAS
SCOTT ANALYST 20 DALLAS
WARD SALESMAN 30 CHICAGO
TURNER SALESMAN 30 CHICAGO
ALLEN SALESMAN 30 CHICAGO
JAMES CLERK 30 CHICAGO
BLAKE MANAGER 30 CHICAGO
MARTIN SALESMAN 30 CHICAGO
# ALIAS 사용
- 해당 테이블의 이름을 일일히 입력하기란 번거롭습니다. 쿼리문을 간결하게 만들기 위해 테이블명에 alias를 지정하여 쿼리를 실행하면 동일 결과값이 나옵니다.
- 여기서 DEPT 테이블을 A로 EMP 테이블에 B로 Alias를 설정 하였습니다.
SQL> SELECT B.ENAME, B.JOB, A.DEPTNO, A.LOC
2 FROM DEPT A, EMP B
3 WHERE B.DEPTNO=A.DEPTNO;
ENAME JOB DEPTNO LOC
---------- --------- ---------- -------------
CLARK MANAGER 10 NEW YORK
KING PRESIDENT 10 NEW YORK
MILLER CLERK 10 NEW YORK
JONES MANAGER 20 DALLAS
FORD ANALYST 20 DALLAS
ADAMS CLERK 20 DALLAS
SMITH CLERK 20 DALLAS
SCOTT ANALYST 20 DALLAS
WARD SALESMAN 30 CHICAGO
TURNER SALESMAN 30 CHICAGO
ALLEN SALESMAN 30 CHICAGO
JAMES CLERK 30 CHICAGO
BLAKE MANAGER 30 CHICAGO
MARTIN SALESMAN 30 CHICAGO
14 rows selected.
# AND 조건 추가
- 해당 쿼리에 조건을 추가하고 싶을시 where절에 'AND'나 'OR' 연산자를 사용합니다.
- 아래 예시에서는 AND 연산자를 통하여 DEPT 테이블 LOC 컬럼 데이터가 'DALLAS'인 조건을 추가하여 값을 출력합니다.
SQL> SELECT B.ENAME, B.JOB, A.DEPTNO, A.LOC
2 FROM DEPT A, EMP B
3 WHERE B.DEPTNO=A.DEPTNO AND A.LOC='DALLAS';
ENAME JOB DEPTNO LOC
---------- --------- ---------- -------------
JONES MANAGER 20 DALLAS
FORD ANALYST 20 DALLAS
ADAMS CLERK 20 DALLAS
SMITH CLERK 20 DALLAS
SCOTT ANALYST 20 DALLAS
2. 숫자 함수
- select 절에서 컬럼에 숫자함수를 적용하여 원하는 함수를 적용하여 출력할 수 있습니다.
1) ceil (올림함수)
- 해당 컬럼 데이터가 소수점일시 반올림하여 해당 결과를 출력합니다.
SQL> select ceil(1.5+2.7) from dual;
CEIL(1.5+2.7)
-------------
5
2) mod (나머지값 출력)
- mod(컬럼데이터, 나누고자하는 숫자) : 컬럼데이터에서 숫자로 나눈 나머지값을 출력합니다.
- 해당 쿼리는 50을 6으로 나눈 값 8과 나머지 2중 나머지값을 출력하였습니다.
SQL> select mod(50,6) from dual;
MOD(50,6)
----------
2
3) round (반올림)
- round는 해당 소수점 첫째자리에서 0.5이상이면 반올림하여 정수값을 출력합니다.
SQL> select round(6.1) from dual;
ROUND(6.1)
-------------
6
- round(num,-1) : 소수점 앞에서 반올림
- 지정값이 -1일시 소수점 첫째자리 앞인 1자리에서 반올림합니다.
SQL> select round(6.1,-1) from dual;
ROUND(6.1,-1)
-------------
10
4) Trunc(m,n)
- 해당 조건에 맞는 자리수 이후 데이터를 절삭한 후 결과값을 출력합니다.
- m : 함수를 수행할 숫자, 컬럼명
- n : 절삭을 수행할 자리수
SQL> select trunc(sal,-2) from emp
2 where sal>2000;
TRUNC(SAL,-2)
-------------
2900
2800
2400
3000
5000
3000
6 rows selected.
5) floor(num)
- num보다 작은 정수중 가장 큰 정수 출력합니다.
SQL> select floor(5.9) from dual;
FLOOR(5.9)
----------
5
3. 문자함수
1) translate (함수수행할 문자, 검색문자, 치환문자)
- 해당 컬럼데이터에서 검색문자를 찾아 해당 문자를 지정한 값으로 치환합니다.
SQL> select name, mobile_num, translate(mobile_num, '1234567890'||MOBILE_NUM, '1234567890') tel
2 from fun_test;
NAME MOBILE_NUM TEL
---------- -------------------- --------------------
A 010-4123-7234 01041237234
B 010-6337-6995 01063376995
C 010-5033-6752 01050336752
SQL> select name, mobile_num, translate(mobile_num, '1234567890-','1234567890') tel
2 from fun_test;
NAME MOBILE_NUM TEL
---------- -------------------- --------------------
A 010-4123-7234 01041237234
B 010-6337-6995 01063376995
C 010-5033-6752 01050336752
2) length
- 문자의 길이를 출력합니다.
SQL> select length(mobile_num) from fun_test;
LENGTH(MOBILE_NUM)
------------------
13
13
13
3) vsize
- 데이터의 크기를 추출합니다.
SQL> select vsize(mobile_num) from fun_test;
VSIZE(MOBILE_NUM)
-----------------
13
13
13
4) 시간 추출
- sysdata, systimestamp 로 현재 날짜와 시간을 출력합니다.
# 날짜 포맷 변경
SQL> alter session set NLS_DATE_FORMAT='YYYY/MM/DD';
Session altered.
# 현재 날짜와 시간 출력
SQL> SELECT SYSDATE,SYSTIMESTAMP FROM DUAL;
SYSDATE SYSTIMESTAMP
---------- ----------------------------------------
2021/07/15 15-JUL-21 06.40.55.109966 PM +09:00
'DB' 카테고리의 다른 글
[Tibero] Boot Mode 단계에 따른 동작 확인 (0) | 2023.09.18 |
---|---|
오라클 파라미터 파일 손상으로 인한 복구방법 (0) | 2021.11.30 |
[ORACLE] SQL 연산자 (비교 / 결합 / in /any / exists ) 실습 (0) | 2021.08.08 |
[ORACLE] where절과 having절 실습 (0) | 2021.08.08 |
[ORACLE] 오라클에서 사용자 권한 부여 및 회수 정리 (DCL) (0) | 2021.07.15 |