Part 2. DML - SELECT

Hyunsu·2023년 3월 11일
0

국비 교육

목록 보기
23/36
post-thumbnail

📝 목차

  1. SQL
  2. 주요 데이터 타입
  3. SELECT 예시
  4. 연결 연산자
  5. 논리 연산자
  6. 비교 연산자
  7. 연산자 우선순위
  8. ORDER BY 절

SELECT 를 공부하기에 앞서 주요 용어를 정리해 보자.
컬럼 값은 행과 열이 교차되는 테이블의 한 칸에 작성된 값 즉 데이터이다.

이제 본격적으로 데이터 베이스를 공부해 보자.

1. SQL

SQL 은 데이터를 찾는 방법이나 절차를 기술하는 것이 아니라 조건을 기술하여 작성한다.


2. 주요 데이터 타입

숫자와 문자 및 날짜 데이터 타입이 존재한다.


3. SELECT 예시

SELECT 구문에 의해 조회된 행들의 집합을 Result Set 이라고 한다.
코드의 해석 순서는 FROM 절 - WHERE 절 - SELECT 절 - ORDER BY 절 순이다.

SELECT 에는 컬럼명과 * 또는 산술 연산과 리터럴을 작성할 수 있으며 별칭을 지을 수 있다.
DISTINCT 와 WHERE 을 작성하면 중복 제거와 조건을 설정할 수 있다.

📌 기본

컬럼명 또는 * 을 작성한다.

📌 컬럼 값 산술 연산

산술 연산한 결과를 조회할 수 있다.

DB 에서 날짜를 조회하는 방법은 중요하며 미래로 갈수록 큰 수를 가진다.
DATE 타입에 + 또는 - 연산이 가능하며 연산 결과는 일 단위로 조회한다.

-- SYSDATE : 시스템상의 현재 날짜 (시간)
-- DUAL (DUmmy tAbLe) : 가짜 테이블 (실제 테이블이 아닌 임시 테이블 용도)
SELECT SYSDATE FROM DUAL;

-- 한 시간 후 조회
SELECT SYSDATE + (1/24) FROM DUAL;

-- 1분 후 조회
SELECT SYSDATE + (1/24/60) FROM DUAL;

-- 30분 후 조회
SELECT SYSDATE + (1/24/60*30) FROM DUAL;

-- 오늘까지 근무한 날짜
SELECT (SYSDATE - HIRE_DATE) / 365 FROM EMPLOYEE;

📌 컬럼 별칭

별칭 작성 시 띄어쓰기와 특수문자가 포함되어있으면 쌍따옴표를 작성해야 한다.
주의 사항은 WHERE 절에서는 해석 순서때문에 별칭 사용이 불가능하다는 점이다.

📌 리터럴

DB 에서 리터럴은 임의로 지정한 값을 기존 테이블에 존재하는 값 처럼 사용하는 것이다.
리터럴 표기법은 기본적으로 문자열 표기법인 홑따옴표를 사용한다.

📌 DISTINCT

중복을 제거하고 한 번만 표시한다.

📌 WHERE 절

조건을 설정한다.


4. 연결 연산자

|| 을 사용해 하나의 컬럼인 것처럼 컬럼과 컬럼 또는 컬럼과 리터럴을 연결한다.

  • 홑따옴표 : 값 또는 리터럴
  • 쌍따옴표 : 계정명 또는 비밀번호 및 컬럼명 또는 테이블명 등 값이 아닌 것들에 대한 대소문자 구분

5. 논리 연산자

여러 개의 제한 조건 결과를 하나의 논리 결과로 만들어준다.

  • AND
  • OR
  • NOT

6. 비교 연산자

비교하는 두 컬럼 값이나 표현식은 서로 동일한 데이터 타입이어야 한다.

그러나 오라클 DB 는 작성된 값이 다른 형식의 데이터 타입이여도 표기법이 다른 데이터 타입과 일치하다면 자동으로 데이터 타입을 변경할 수 있다.

SELECT EMP_ID, EMP_NAME, HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE >= '1990/01/01' -- 문자열에서 DATE 타입으로 변경
AND HIRE_DATE <= '2000-12-31'; -- 문자열에서 DATE 타입으로 변경

📌 BETWEEN AND 과 NOT BETWEEN AND

A 이상 B 이하의 의미를 가진다.

📌 LIKE 과 NOT LIKE

특정 패턴을 만족하는지 검사하는 와일드 카드이다.
% 는 포함을 의미하며 _ 는 글자 수를 의미한다.

만약 와일드 카드 문자와 패턴의 특수문자가 동일하다면 ESCAPE 를 통해 처리한다.

📌 IS NULL 과 IS NOT NULL

값이 비어있는지 여부를 검사한다.

📌 IN 과 NOT IN

값 목록에 일치하는 값이 있는지 검사한다.


7. 연산자 우선순위

연산자 우선순위는 다음과 같다.

AND 연산자는 OR 연산자보다 우선 순위가 높다.

우선 순위를 고려하여 SQL 문을 작성해야 한다.


8. ORDER BY 절

기본값은 오름차순으로 ASC 와 NULLS LAST 이다.
NULLS FIRST 와 LAST 는 NULL 이 있으면 앞 또는 뒤 어느 곳에 표시할지 지정한다.

 SELECT 컬럼명 AS 별칭
 FROM 테이블명
 WHERE 조건식
 ORDER BY 컬럼명|별칭|컬럼 순서 [ASC|DESC] [NULLS FIRST|NULLS LAST]

추가적으로 큰 분류를 먼저 정렬한 뒤 내부 분류를 정렬하는 방식인 정렬 중첩도 알아두면 좋다.

-- 부서코드 별 급여 내림차순 (부서코드는 내림차순)
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
ORDER BY DEPT_CODE DESC NULLS LAST, SALARY DESC;
profile
현수의 개발 저장소

0개의 댓글