데이터베이스

[ORACLE] SQL - SELECT문

Seong-Jun 2025. 3. 12. 18:14
728x90
반응형
SMALL

DQL(Data Query Language) - SELECT

 데이터를 조회하는 SQL문으로 특정 테이블의 데이터를 조회할 수 있다. 그렇게 조회된 결과를 Result Set이라고 한다.

표현법

SELECT 조회할 컬럼 정보 (컬럼명, 리터럴, 함수식, 연산식, * 등)
FROM 테이블명
WHERE 조건식
GROUP BY 그룹화
HAVING 그룹화 후 그룹에 대한 조건
ORDER BY 정렬조건

 

 SELECT문에서 SELECT 절과 FROM절을 제외한 나머지 절은 생략이 가능한 절들이다. 하지만 순서가 바뀌면 안 된다.

SELECT문 각 절의 순서

1 FROM  가장 먼저 조회할 테이블을 찾는다.
2 WHERE  해당 테이블에서 데이터를 조회하기 전 조건을 설정한다.
3 GROUP BY 그룹화를 설정한다.
4 HAVING  그룹에 대한 조건을 설정한다.
5 SELECT  조회할 컬럼을 작성한다.
6 ORDER BY 조회된 데이터들의 정렬 조건을 설정한다.

SELECT문 예시

전체 데이터 조회

SELECT * FROM EMPLOYEE;

 

* 기호를 사용하여 해당 테이블의 모든 컬럼을 조회할 수 있다.

특정 컬럼만 조회

SELECT EMP_NAME, EMAIL, PHONE, HIRE_DATE,  SALARY
FROM EMPLOYEE;

조회할 컬럼들을 쉼표(,)로 구분지어 나열하여 특정 컬럼들만 조회할 수 있다.

중복 없이 조회

 컬럼에 포함된 데이터 중 중복된 값이 있을 경우 중복 값을 제외하고 출력할 때는 DISTINCT 키워드를 사용하여 조회할 수 있다.

SELECT DISTINCT JOB_CODE
FROM EMPLOYEE;

연산과 별칭 사용하기

SELECT 
    EMP_NAME AS 사원명, 
    SALARY AS 급여, 
    (SALARY * 12) AS 연봉, 
    BONUS AS 보너스, 
    ((SALARY + (SALARY * BONUS)) * 12) AS "보너스 포함 연봉"
FROM EMPLOYEE;

 

컬럼에는 기본 컬럼명 뿐만 아니라 산술연산도 사용할 수 있고 해당 컬럼 혹은 연산식에 별칭을 부여할 수 있다.

  • 별칭을 사용하는 4가지 방법
    1. 컬럼명 별칭
    2. 컬럼명 AS 별칭
    3. 컬럼명 "별칭"
    4. 컬럼명 AS "별칭"

WHERE 절을 사용하여 조건 설정

비교연산자 구분   연산자
대소비교   >       <        >=        <=
동등비교 같은지 비교 =
다른지 비교 !=     <>       ^=

 

SELECT EMP_NAME AS "사원명", SALARY AS "급여", DEPT_CODE AS "부서코드"
FROM EMPLOYEE
WHERE DEPT_CODE = 'D1';

SELECT EMP_NAME AS "사원명", SALARY AS "급여", DEPT_CODE AS "부서코드"
FROM EMPLOYEE
WHERE DEPT_CODE<> 'D1';
-- WHERE DEPT_CODE ^= 'D1';
-- WHERE DEPT_CODE != 'D1';

 

추가로 위의 결과들 중에 NULL 값들이 표시되고 있는 것 결과들이 있다. 이렇게 NULL이 포함되지 않은 데이터를 조회하고 싶을 때는 NULL 관련 비교 연산자를 사용할 수 있다.

 => NULL인 경우의 데이터는 IS NULL, NULL이 아닌 경우의 데이터는 IS NOT NULL로 비교 할 수 있다.

SELECT 
    EMP_NAME AS 사원명, 
    SALARY AS 급여, BONUS AS 보너스, 
    (SALARY * 12) AS 연봉, 
    ((SALARY + (SALARY * BONUS)) * 12) AS "보너스 포함 연봉"
FROM EMPLOYEE
WHERE BONUS IS NOT NULL;

리터럴 사용

리터럴은 값 자체를 의미한다. 다음과 같이 사용할 수 있다.

SELECT EMP_NAME AS "사원명", SALARY AS "급여", '원' AS "원"
FROM EMPLOYEE;

728x90
반응형
LIST