관리 메뉴

Today is Present.

오라클 기본 SQL 구문 본문

DBMS - 오라클(Oracle)

오라클 기본 SQL 구문

MorningPhys 2021. 2. 3. 11:36

SCOTT 계정으로 접속하여 DESC 명령어를 사용해 EMP, DEPT, SALGRADE 테이블의 구성을 확인

 

사원 정보가 들어 있는 EMP 테이블

DESC EMP;

 

회사 부서 정보가 들어 있는 DEPT 테이블

DESC DEPT;

 

사원들의 급여 정보가 들어 있는 SALGRADE 테이블

DESC SALGRADE;

 

EMP 테이블 전체 열 조회하기

SELECT * FROM EMP;

 

DISTINCT로 열 중복 제거하기

SELECT DISTINCT DEPTNO FROM EMP;

 

ALL로 중복되는 열 제거 없이 그대로 출력하기

SELECT ALL JOB, DEPTNO FROM EMP;

 

열에 연산식을 사용하여 출력하기

SELECT ENAME, SAL, SAL*10+COMM, COMM FROM EMP;

 

별칭(alias)을 지정하는 방식

① SAL*12+COMM ANNSAL

② SAL*12+COMM "ANNSAL"

③ SAL*12+COMM AS ANNSAL

④ SAL*12+COMM AS "ANNSAL"

 

별칭을 사용하여 사원의 연간 총 수입 출력하기

SELECT ENAME, SAL, SAL*12+COMM AS ANNSAL, COMM FROM EMP;

 

EMP 테이블의 모든 열을 급여 기준으로 오름차순(기본값) ↔ 내림차순 정렬하기

SELECT * FROM EMP ORDER BY SAL; ↔ SELECT * FROM EMP ORDER BY SAL DESC;

 

EMP 테이블의 전체 열을 부서 번호(오름차순)와 급여(내림차순)로 정렬하기

SELECT * FROM EMP ORDER BY DEPTNO ASC, SAL DESC;

 

EMP 테이블의 모든 열 출력하기

SELECT * FROM EMP;

 

부서 번호가 30인 데이터만 출력하기

SELECT * FROM EMP WHERE DEPTNO = 30;

 

AND 연산자로 여러 개의 조건식 사용하기

SELECT * FROM EMP WHERE DEPTNO = 30 AND JOB = 'SALESMAN';

 

OR 연산자로 여러 개의 출력 조건 사용하기

SELECT * FROM EMP WHERE DEPTNO = 30 OR JOB = 'CLERK';

 

곱셈 산술 연산자를 사용한 예

SELECT * FROM EMP WHERE SAL * 24 = 72000;

 

대소 비교 연산자를 사용하여 출력하기

SELECT * FROM EMP WHERE SAL >= 5000;

 

문자를 대소 비교 연산자로 비교하기(비교 문자열이 문자 하나일 때)

SELECT * FROM EMP WHERE ENAME >= 'F';

 

문자열을 대소 비교 연산자로 비교하기(비교 문자열이 문자 여러 개일 때)

SELECT * FROM EMP WHERE ENAME <= 'FORZ';

 

등가 비교 연산자(!=)를 사용하여 출력하기 # 같지 않다( !=, <>, ^= )

SELECT * FROM EMP WHERE SAL != 5000;

 

등가 비교 연산자(<>)를 사용하여 출력하기

SELECT * FROM EMP WHERE SAL <> 5000;

 

등가 비교 연산자(^=)를 사용하여 출력하기

SELECT * FROM EMP WHERE SAL ^= 5000;

 

NOT 연산자를 사용하여 출력하기

SELECT * FROM EMP WHERE NOT SAL = 50000;

 

OR 연산자를 사용하여 여러 개 조건을 만족하는 데이터 출력하기

SELECT * FROM EMP WHERE JOB = 'MANAGER' OR JOB = 'SALESMAN' OR JOB = 'CLERK';

 

IN 연산자를 사용하여 출력하기

SELECT * FROM EMP WHERE JOB IN ('MANAGER', 'SALESMAN', 'CLERK');

 

IN 연산자와 논리 부정 연산자를 사용하여 출력하기

SELECT * FROM EMP WHERE JOB NOT IN ('MANAGER', 'SALESMAN', 'CLERK');

 

BETWEEN A AND B 연산자를 사용하여 출력하기

SELECT * FROM EMP WHERE SAL BETWEEN 2000 AND 3000;

 

BETWEEN A AND B 연산자와 NOT 연산자를 사용하여 출력하기

SELECT * FROM EMP WHERE SAL NOT BETWEEN 2000 AND 3000;

 

LIKE 연산자 사용하여 출력하기

SELECT * FROM EMP WHERE ENAME LIKE 'S%';

 

사원 이름의 두 번째 글자가 A인 사원만 출력하기

SELECT * FROM EMP WHERE ENAME LIKE '_A%';

 

사원 이름에 MS이 포함되어 있는 사원 데이터만 출력하기

SELECT * FROM EMP WHERE ENAME LIKE '%MS%';

 

LIKE 문을 사용하여 데이터 앞에 M_S 문자를 가지고 있는 데이터를 찾으려면

SELECT * FROM EMP WHERE ENAME LIKE '%M\_S%' ESCAPE '\';

 

IS NULL 연산자를 사용하여 출력하기

SELECT * FROM EMP WHERE COMM IS NULL;

 

집합 연산자(UNION)를 사용하여 출력하기 # 합집합 연산자

SELECT EMPNO, ENAME, SAL, DEPTNO, FROM EMP WHERE DEPTNO = 10

UNION

SELECT EMPNO, ENAME, SAL, DEPTNO, FROM EMP WHERE DEPTNO = 20

종류 설명
UNION 연결된 SELECT문의 결과 값을 합집합으로 묶어 줍니다. 결과 값의 중복은 제거
UNION ALL 연결된 SELECT문의 결과 값을 합집합으로 묶어 줍니다. 중복된 결과 값도 제거 없이 모두 출력
MINUS 먼저 작성한 SELECT문의 결과 값 중 다음 SELECT 문에 존재하지 않는 데이터만 출력
INTERSECT 먼저 작성한 SELECT문과 다음 SELECT문의 결과 값이 같은 데이터만 출력(교집합 개념)

SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP

INTERSECT

SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO = 10;

 

연산자 우선순위

우선순위 연산자 설명
*, / 곱하기, 나누기
(높음) + - 더하기, 빼기
  =, !=, ^=, <>, >, >=, <, <= 대소 비교 연산
  IS NULL, LIKE, IN 그 외 비교 연사자
  BETWEEN A AND B BETWEEN 연산자
  NOT 논리 부정 연산자
(낮음) AND 논리 연산자 AND
OR 논리 연산자 OR

 

EMP 테이블을 복사해서 EMP_TEMP 테이블 만들기

CREATE TABLE EMP_TEMP

AS SELECT *

FROM EMP

WHERE 1 <> 1;

 

SELECT * FROM EMP_TEMP;

 

# 급하게 테이블을 복사해야 할 때

CREATE 명령어는 EMP 테이블과 같은 열 구조를 가지지만 데이터는 복사하고 싶지 않을 때 종종 사용합니다. 

WHERE 절의 조건이 1 <> 1 이기 때문에 각 행을 조건식에 대입한 결과 값은 항상 false 가 되어

결과적으로 행은 만들어지지 않습니다.

728x90
반응형