[SQL] DQL : SELECT, FROM, WHERE

📁 SELECT문

SELECT절, FROM절은 필수적으로 들어가야 한다.

SELECT 컬럼명
FROM 테이블명
WHERE 조건식
GROUP BY 그룹으로 묶을 컬럼명
HAVING 그룹함수 비교연산자 비교값
ORDER BY 컬럼명|별칭|순번 정렬방식

📁 SELECT

조회하고자 하는 컬럼명 기술

  • 여러 컬럼을 조회할 때에는 쉼표로 구분. 마지막 컬럼에는 쉼표 사용하지 않음
  • 모든 컬럼 조회시 컬럼명 대신 * 기호를 사용
SELECT 컬럼명
SELECT 컬럼명, 컬럼명 ...
SELECT *

컬럼 별칭 지정

컬럼에 별칭을 지정할 수 있음

  • AS : 컬럼과 별칭을 연결. 생략 가능
  • 별칭에 공백이 들어가거나 첫번째 글자가 숫자일 경우 더블쿼테이션을 사용해야 함
SELCET 컬럼명 별칭
SELCET 컬럼명 "별칭"
SELECT 컬럼명 AS 별칭
SELECT 컬럼명 AS "별칭"

DISTINCT

컬럼에 포함된 데이터를 중복값을 제외하고 한번씩만 표시할 때 사용

  • 복수의 컬럼명이 들어가면 한 행에서 DISTINCT에 들어간 컬럼의 값이 모두 같아야 중복으로 처리
SELECT DISTINCT 컬럼명
SELECT DISTINCT 컬럼명, 컬럼명 ...

리터럴

임의로 저장한 문자열을 테이블에 존재하는 데이터, 컬럼처럼 활용 가능

SELECT PRICE, '원' AS 단위 FROM PRODUCT
SELECT PRICE-(PRICE*COUPON) AS "쿠폰 적용가" FROM PRODUCT

연결연산자

  • 컬럼-컬럼, 리터럴-컬럼을 연결할 때 사용
  • 데이터를 형식화하는 기능
SELECT NAME || PRICE FROM PRODUCT;
SELECT NAME || '의 가격은 ' || PRICE || '원입니다.' FROM PRODUCT;

📁 FROM

조회 대상 컬럼이 포함된 테이블명 기술
여러 테이블에서 컬럼을 조회할 경우 JOIN을 사용

SELECT 컬럼명
FROM 테이블

📁 WHERE

검색할 컬럼의 조건을 설정해 반환할 행을 결정

  • Result Set에는 제한조건을 만족시키는 행들만 포함됨
  • 여러개의 제한조건 포함 가능
  • 복수의 제한조건들은 논리연산자를 통해 하나의 논리 결과가 되어 반환할 행을 결정

논리연산자

여러 개의 제한조건을 하나의 논리 결과로 만들어줌

연산자 설명
AND 두 조건이 동시에 TRUE일 경우에만 TRUE값 반환
OR 두 조건 중 하나 이상이 TRUE이면 TRUE값 반환
NOT 조건에 대한 반대값으로 반환. NULL 제외

비교연산자

표현식 사이의 관계를 비교하기 위해 사용되며 비교 결과는 논리 결과가 됨

연산자 설명
= 같다
<>, !=,^= 같지 않다
>, < 초과, 미만
>=, <= 이상, 이하
BETWEEN AND 특정 범위에 포함되는지 비교
LIKE / NOT LIKE 문자 패턴 비교
IS NULL / IS NOT NULL NULL 여부 비교
IN / NOT IN 비교하려는 값 목록에 포함되는지 비교

BETWEEN AND, NOT BEWEEN AND

검색할 컬럼 값의 범위를 설정하는 비교연산자

  • 이상-이하, 미만-초과 범위를 다음과 같이 간단하게 작성할 수 있다.
WHERE PRICE>=10000 AND PRICE<=50000;
WHERE PRICE BETWEEN 10000 AND 50000;		-- BETWEEN AND 사용

WHERE PRICE<10000 OR PRICE>50000;
WHERE PRICE NOT BETWEEN 10000 AND 50000;	-- BETWEEN AND 사용

LIKE, NOT LIKE

특정 패턴을 만족하거나 만족하지 않는 컬럼을 검색할 때 사용하는 비교연산자

SELECT NAME FROM STUDENT
WHERE NAME LIKE '김%';		-- 김씨 성을 가진 학생 조회

SELECT EMAIL FROM STUDENT
WHERE EMAIL NOT LIKE '%_@%';	-- 이메일에 '_'가 들어가지 않는 학생 조회

SELECT EMAIL FROM STUDENT
WHERE EMAIL NOT LIKE '%#_%' ESCAPE '#';	-- 이메일에 '_'가 들어가지 않는 학생 조회, ESCAPE 사용

IN, NOT IN

비교하려는 값 목록에 일치하는 값이 있는지 확인하는 비교연산자

SELECT NAME FROM STUDENT WHERE GRADE='3' OR GRADE='4';
SELECT NAME FROM STUDENT WHERE GRADE IN ('3', '4');		-- IN 사용

ROWNUM

데이터에 일련번호를 붙여 불러올 행의 갯수를 제한

  • 일련번호는 1부터 시작한다.
  • 불러올 행의 범위를 중간부터 지정할 수 없다.
  • FROM절이 정해지면 번호가 붙기 때문에 ORDER BY에 의한 정렬과는 무관하다.
SELECT NAME FROM STUDENT
WHERE ROWNUM<=5;