📘꼬부기의 성장서재/이기적SQLD 기출문제

SELECT 문

서화 2026. 3. 5. 12:04

SELECT 문법 구성요소

  • SELECT → 출력할 컬럼을 지정
  • FROM → 데이터를 가져올 테이블지정
  • WHERE → 행을 기준으로 조건 지정
  • GROUP BY  →  특정 컬럼을 기준으로 행을 그룹화함
  • HAVING → 그룹화된 결과에 조건을 지정
  • ORDER BY → 결과를 특정할 컬럼 기준으로 정렬(기본 오름차순)

실행순서

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

SELECT에서 사용하는 기술

DISTINCT는 조회결과에서 중복을 제거함, 중복제거할때 컬럼들의 조합기준으로 판단함

--중복없이 학생테이블에서 메이저(학과) 컬럼값을 조회--
SELECT DISTINCT MAJOR FROM STUDENT;

--중복없이 학생 테이블에서 학과와 성별을 조회--
SELECT DISTINCT MAJOR FROM STUDENT;

조합으로 판단하기 때문에 여+학과/ 남+ 학과는 다른 조합으로 간주한다

ALL

중복제거 없이 전체 데이터를 그대로 조회한다 기본값이므로 보통 생략한다

SELECT ALL MAJOR --SELECT MAJOR와 같다--
FROM STUDENT;

ALIAS(AS)

컬럼에 별칭 붙이기

별칭을 사용해 출력할 컬럼명을 임시지정하거나 변경할수 있음

별칭 작성시 주의사항

  • 문자시작
  • 예약어 금지
  • 허용 특수문자 (_,$,#)만 사용가능
  • 큰따옴표 ("")사용시 특수문자/공백 사용가능
  • AS 생략가능
  • 자동 대문자화 -> 오라클 기준 대문자출력,큰따옴표 사용시 소문자 사용가능

산술연산자

컬럼과 컬럼, 리터럴과 컬럼끼리 연산가능하고 여기서 NULL이 연산에 포함되지 않고 결과는 무조건 NULL이다

리터럴이란 값을 의미함

  • 숫자리터럴 -> 10,50,3.5
  • 문자리터럴 -> '안녕하세요'
  • 날자리터럴 -> 2026-03-05 11:18:18

SELECT
COL1+100        AS 컬럼1 --컬럼과 숫자리터럴을 더한다--
,COL1/50        AS 컬럼2 --컬럼과 숫자리털럴을 나눈다--
,COL1+COL2      AS 컬럼3 --컬럼끼리 더한다--
,COL1+ COL2+COL3 AS 컬럼4 --컬럼끼리 더한다--
FROM TAB1;

SELECT문은 전체 데이터를 일괄처리하지 않고 각 행을 순차적으로 처리함 따라서 연산은 각 행에 대해서 한번씩 반복수행된다

행을 튜플이라고 하기도 한다

따라서 이런 결과를 볼수 있다

연산 진행순서

첫번째 행부터 순차적으로 진행한다

COL1+100         100+100=200        
COL1/50          100/50 = 2     
COL1+COL2        100+400 =500
COL1+ COL2+COL3  100+400+600=1100

이런식으로 모든 행을 반복한다

연결연산자

SELECT에서 데이터를 이어붙이는 기능을 제공한다 산술연산자와 같이 한행씩 처리된다

오라클은 || 을 사용하고 SQL Server는 + 를 사용한다

--오라클--
SELECT 이름 || '님의 현재 나이는 ' || 나이 || '살 입니다' AS 이름과 나이,학교
FROM TAB1;

--SQL Server--
SELECT 이름 + '님의 현재 나이는 ' + 나이 + '살 입니다' AS 이름과 나이,학교
FROM TAB1;

출력결과

오라클

  • 이모자님의 현재나이는 20입니다 A대학
  • 나는널님의 현재 나이는 살 입니다 NULL

SQL Server

  • 이모자님의 현재나이는 20입니다 A대학
  • NULL NULL

SQL Server는 연결 연산에 NULL이 하나라도 있으면 결과 전체가 NULL처리 된다

오라클은 연결연산에 NULL이 있으면 무시하고 나머지 문자열을 이어붙힌다

 

'📘꼬부기의 성장서재 > 이기적SQLD 기출문제' 카테고리의 다른 글

본질식별자 VS 인조식별자  (0) 2026.03.24
서브쿼리  (0) 2026.03.06
정규화  (0) 2026.03.04
식별자  (0) 2026.03.04
관계  (0) 2026.03.04