Oracle

SQL(Structured Query Language) - SELECT

ZIAHO 2021. 10. 18. 23:33

SQL(Structured Query Language)

1. SQL(Structured Query Language) : 관계형 데이터베이스에서 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색 언어로 원하는 데이터를 찾는 방법이나 절차를 기술하는게 아닌 조건을 기술하여 작성.

 

2. 분류

분류 용도 명령어
DQL
(Data Query Language)
데이터 검색 SELECT
DML
(Data Manipulation Language)
데이터 조작 INSERT, UPDATE, DELETE
DDL
(Data Definition Language)
데이터 정의 CREATE, DROP, ALTER
TCL
(Transcation Control Language)
트랜잭션 제어 COMIT, ROLLBACK

 

3. SELECT

    1) 작성법

-- 작성법
SELCET 컬럼명[, 컬럼명, 컬럼명 ....] -- 조회하고자 하는 컬럼명을 작성
FROM 테이블명 -- 조회 대상 컬럼이 포함된 테이블 명 작성
[WHERE 조건식]; -- 행을 선택하는 조건을 작성, 각각의 제한 조건은 논리연산자로 연결

 

    2) 컬럼값에 대한 산술 연산한 결과도 조회가 가능하다.

-- EMPLOYEE테이블에서 사원명, 부서코드, 직책코드, 월급, 연봉, 보너스포함연봉 조회하기
SELECT EMP_NAME, DEPT_CODE, JOB_CODE, SALARY, SALARY*12, (SALARY+(SALARY*NVL(BONUS, 0)))*12
FROM EMPLOYEE;

 

    3) 컬럼 별칭 지정해주기

-- AS 예약어를 사용하여 컬럼의 별칭을 지정해 줄 수 있음
SELECT EMP_NAME AS 사원명, EMAIL AS 이메일, SALARY AS 월급, BONUS AS 보너스
FROM EMPLOYEE;

-- 숫자 혹은 특수문자가 포함되는 경우에는 " " 사용
-- AS 생략 가능

    4) 임의로 지정한 문자열을 SELECT절에 사용하면 테이블에 존재하는 데이터처럼 사용 가능

SELECT EMP_NAME, '님'
FROM EMPLOYEE;

    5) 중복된 값을 제외하고 싶을때 : DISTINCT

SELECT DISTINCT DEPT_CODE
FROM EMPLOYEE;

-- 두개의 컬럼을 사용했을 경우 두 컬럼을 하나의 값으로 보고 중복값을 제거한다
-- => 두 컬럼 모두 중복되는 경우에만 중복값이 제거된다.

 

    6) WHERE절 : 검색할 컬럼의 조건을 설정하여 행을 결정할 때 사용

-- SELECT 컬럼명, 컬렴명...
-- FROM EMPLOYEE
-- WHERE 조건식 -> WHERE절 : 테이블에 저장된 ROW를 FILTER하는 기능, 조건식이 TRUE가 되는 ROW만 출력

-- EMPLOYEE테이블에서 DEPT_CODE='D9'인 사원을 조회하자.
SELECT *
FROM EMPLOYEE
WHERE DEPT_CODE = 'D9';

 

    7) WHERE - AND/OR 사용 : 여러개의 조건 작성 시

-- EMPLOYEE테이블에서 월급이 350만원 이상이고 부서코드가 D5인 사원을 조회하자
SELECT *
FROM EMPLOYEE
WHERE SALARY >= 3500000 AND DEPT_CODE ='D5';

 

    8) 연결 연산자 : '||'를 사용하여 컬럼과 컬럼, 컬럼과 리터럴을 연결

SELECT EMP_NAME || '님 월급' || SALARY AS MESSAGE
FROM EMPLOYEE;

 

    9) 논리연산자 : AND(여러 조건이 동시에 TRUE일경우 TRUE 반환) / OR(조건중 하나만 TRUE여도 TRUE 반환) / NOT(조건에 대한 반대값으로 반환)

 

    10) 비교연산자

연산자 설명
= 같다
> 크다 / 작다
>= 크거나 같다 / 작거나 같다
<>, !=, ^= 같지 않다
BETWEEN 범위 AND 범위 특정 범위에 포함되는지
LIKE / NOT LIKE 문자 패턴 비교
IN NULL / IS NOT NULL NULL 여부 비교
IN / NOT IN 비교값 목록에 포함 / 미포함 여부 비교

    11) 비교연산자 - BETWEEN

SELECT EMP_NAME, SALARY, BONUS, HIRE_DATE
FROM EMPLOYEE
WHERE SALARY BETWEEN 2000000 AND 3000000;

    👏 날짜도 대소 비교가 가능하다. 오라클에서는 날짜를 년/월/일로 표기하는데, 문자열로 형식에 맞춰서 비교를 하면 비교가 가능하다.

-- EMPLOYEE테이블에서 입사일이 00년01월01일보다 빠른 사원 조회. 이름, 월급, 고용일
SELECT EMP_NAME, SALARY, HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE < '00/01/01';

-- 날짜도 BETWEEN으로 비교가 가능하다
-- WHERE HIRE_DATE BETWEEN '95/01/01' AND '99/12/31';

    12) 비교연산자 - LIKE

         ① % : 글자가 0개 이상 아무문자나 모두 허용 EX) '%강' = 글자수에 상관없이 강으로 끝나는 문자열은 TRUE

         ② _ : 표시된 자리에 무조건 아무문자 한개가 있다 EX) '_강' -> 두글자인데 강으로 끝나는 문자열 TRUE

-- LIKE는 WHERE절에 사용
-- WHERE 컬럼명 LIKE 패턴

-- EMPLOYEE테이블에서 유씨성을 가진 사원을 조회해라. 사원번호, 사원명 출력
SELECT EMP_ID, EMP_NAME
FROM EMPLOYEE
WHERE EMP_NAME LIKE '유%';