오라클

DISTINCT ( 열 중복 제거 ) 

 예 ) SELECT DISTINCT 

 

ORDER BY ( 정렬 ) 기본값 오름차순(ASC), 내림차순은 DESC

예 )

SELECT *

FROM EMP

ORDER BY SAL (ASC),(DESC) 선택

ORDER BY DEPTNO ASC(1순위), SAL DESC(2순위)

 

WHERE

예 )

SELECT *

FROM EMP

WHERE DEPTNO = 30;

 

AND ( 피연산자가 둘 다 true ) 제출 하고 

예 )

SELECT *

FROM EMP

WHERE DEPTNO = 30

 AND JOB = 'SALESMAN';

 

OR ( 피연산자가 둘 다 또는 둘 중 하나 true이면 true ) 제출 하거나 

SELECT *

FROM EMP

WHERE DEPTNO = 30

 OR JOB = 'SALESMAN';

 

곱셈 산술 연산자 ( 연봉 찾기 ) 

SELECT *

 FROM EMP

 WHERE SAL * 12 = 36000;

 

등가 비교 연산자 ( 급여가 3000이 아닌 )

SELECT *

 FROM EMP

 WHERE SAL != 3000;

 

NOT 연산자 ( NOT이 많이 사용 됨 )

SELECT *

 FROM EMP

 WHERE  NOT SAL = 3000;

 

IN 연산자 ( 출력하고 싶은 열의 조건이 여러 가지일 때 ) OR로 하나씩 해주는 것보다 간편

예)

SELECT *

 FROM EMP

WHERE JOB IN ('MANAGER', 'SALESMAN', 'CLERK')

WHERE JOB NOT IN ('MANAGER', 'SALESMAN', 'CLERK') NOT 가능 

 

BETWEEN 최소값 AND 최댓값 2000~3000

예)

SELECT *

 FROM EMP

WHERE SAL BETWEEN 2000 AND 3000;

WHERE SAL NOT BETWEEN 2000 AND 3000; NOT 가능 

 

LIKE 연산자 ( 일부 문자열 조회 ) ( _는 한 개의 문자 데이터를 의미 )

예 ) 1

SELECT *

 FROM EMP

WHERE ENAME LIKE 'S%' ( 대문자 S로 시작하는 ) 

 

예 ) 2

SELECT *

 FROM EMP

WHERE ENAME LIKE '_S%' ( 두번 째 문자 대문자 S로 시작하는 ) 

 

예 ) 3

SELECT *

 FROM EMP

WHERE ENAME LIKE '%AM%' ( AM이 포함되어 있는 ) 

WHERE ENAME NOT LIKE '%AM%' NOT 가능 ( AM이 포함되어 있지 않은 ) 

 

IS NULL ( 값이 NULL인 경우 출력 ) 

예) 1

SELECT *

 FROM EMP

WHERE COMM IS NULL;

 

예) 2

SELECT *

 FROM EMP

WHERE MGR IS NOT NULL; NOT 가능

( 직속상관이 있는 사원만 출력 ) 사장은 없기때문에 출력 안됨 )

 

 

집합 연산자 UNION ( 두 개 이상의 SELECT문의 결과 값을 연결할 때 사용 ) 결과 값 중복 제거

예)

select empno, ename, sal, deptno
 from emp
 where deptno = 10
 UNION
 select empno, ename, sal, deptno
 from emp
 where deptno = 20

 

집합 연산자 UNION ALL ( 중복된 결과값도 출력 ) 

예)

select empno, ename, sal, deptno
 from emp
 where deptno = 10
 UNION ALL
 select empno, ename, sal, deptno
 from emp
 where deptno = 20

 

 

차집합 연산자 MINUS ( 결과 값이 같은 데이터 제외 ) 

예)

select empno, ename, sal, deptno
 from emp
 MINUS
 select empno, ename, sal, deptno
 from emp
 where deptno = 10

 

교집합 연산자 INTERSECT ( 결과 값이 같은 데이터만 출력 )

예)

select empno, ename, sal, deptno
 from emp
INTERSECT
 select empno, ename, sal, deptno
 from emp
 where deptno = 10

 

문자 데이터를 가공하는 문자 함수

UPPER(문자열) : 괄호 안 문자 데이터를 모두 대문자로 변환

LOWER(문자열) : 괄호 안 문자 데이터를 모두 소문자로 변환

INITCAP(문자열) : 괄호 안 문자 데이터 중 첫 글자는 대문자, 나머지 문자를 소문자로 변환

예)

select ename, UPPER(ename), LOWER(ename), INITCAP(ename)
 from emp;

 

문자열 길이를 구하는 LENGTH 함수

예)

select ename, LENGTH(ename)
 from emp;

where LENGTH(ename) >= 5; ( 숫자 비교 가능 ) 5글자 이상

 

문자열 일부를 추출하는 SUBSTR 함수

SUBSTR(문자열 데이터, 시작위치, 추출길이 ) 추출길이 입력 안할 시 끝까지 출력

예)

select ename, SUBSTR(job, 1, 2), SUBSTR(job, 2, 3), SUBSTR(job, 1)
 from emp;

 

특정 문자를 다른 문자로 바꾸는 REPLACE 함수

REPLACE([문자열 데이터 또는 열 이름(필수)], [찾는 문자(필수)], [대체할 문자(선택)])

대체할 문자를 입력하지 않으면 찾는 문자 삭제

예)
select '010-1234-5678'
, REPLACE('010-1234-5678', '-', ' ') as RE1
, REPLACE('010-1234-5678', '-') as RE2
from dual;

 

특정 문자를 지우는 TRIM, LTRIM, RTRIM ( 공백제거 많이 사용 ) 

삭제 할 문자를 지정하지않으면 공백제거

예 ) 

SELECT 
TRIM('     oracleStudy     ') AS result 
, LTRIM('     oracleStudy     ') AS result1 ( 왼쪽 공백 제거 )
, RTRIM('     oracleStudy     ') AS result1 ( 오른쪽 공백 제거 )
FROM DUAL;

 

특정 위치에서 반올림하는 ROUND 함수

반올림 위치 지정하지 않으면 소수점 첫 번째 자리에서 반올림 

예)

select ROUND(1234.5678) as ROUND, 
          ROUND(1234.5678, 1) as ROUND,
          ROUND(1234.5678, 2) as ROUND
    from dual;

 

특정 위치에서 버리는 TRUNC 함수

예)

select TRUNC(1234.5678) as TRUNC, 
       TRUNC(1234.5678, 1) as TRUNC,
       TRUNC(1234.5678, 2) as TRUNC
    from dual;

 

나머지 값을 구하는 MOD 함수

예)

select MOD(15, 6),
       MOD(10, 2),
       MOD(11, 2)
    from dual;

 

 

날짜 데이터를 다루는 날짜 함수 SYSDATE

select SYSDATE AS NOW,
       SYSDATE-1 AS YESTERDAY,
       SYSDATE+1 AS TOMORROW
    from dual;

 

몇 개월 이후 날짜를 구하는 ADD_MONTHS함수

예1) 3개월 후 ( 10년이면 120 ) 

select SYSDATE,
    ADD_MONTHS(SYSDATE, 3)
 from dual

 

예2) 입사 40년 미만인 사원 데이터 출력하기

SELECT EMPNO, ENAME, HIREDATE, SYSDATE
 FROM EMP
 WHERE ADD_MONTHS(HIREDATE, 480) > SYSDATE;

 

 

자료형을 변환하는 형 변환 함수

 

SYSDATE 날짜 형식 지정하여 출력

예)

SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') AS 현재날짜시간
 FROM DUAL;

 

TO_DATE 함수로 문자 데이터를 날짜 데이터 변환하기

예)

SELECT TO_DATE('2018-07-14', 'YYYY-MM-DD') AS TODATE1,
       TO_DATE('20180714', 'YYYY-MM-DD') AS TODATE2
    FROM DUAL;

예2) 1981년 6월 1일 이후에 입사한 사원 정보 출력

SELECT *
 FROM EMP
WHERE HIREDATE > TO_DATE('1981-06-01', 'YYYY-MM-DD');

 

NVL 함수 ( NULL인 값을 0으로 대체해서 연산하기 )

SELECT ENAME, SAL, COMM, SAL+COMM, NVL(COMM, 0), SAL+NVL(COMM, 0)
FROM EMP;

 

NVL2 함수 ( 추가 수당 (COMM)열이 NULL이 아니라면 O를, NULL이라면 X를 표기 ) 추가 수당 존재 여부 확인

예)

SELECT EMPNO, ENAME, COMM, NVL2(COMM, '0', 'X'), NVL2(COMM, SAL*12+COMM, SAL*12) AS ANNSAL
FROM EMP

 

 

+ Recent posts