이 글은 SQLD를 공부하며 SQL의 SELECT
문에 대해 정리한 글이다.
SELECT문 사용
SELECT
문은 테이블에 입력된 데이터를 조회하기 위해 사용SELECT
문은 특정 칼럼 혹은 특정 행만 조회할 수 있음
SELECT * FROM STUDENT WHERE STDNO = 24001;
- 위
SELECT
문은 STUDENT 테이블의 모든 칼럼(*
)을 출력 / 단,WHERE
절에 있는 조건문에 있는 행만 조회SELECT *
: 조회를 원하는 칼럼(Column)을 선택 → 모든 칼럼(*
)을 출력FROM STUDENT
: 조회를 원하는 테이블을 지정 → STUDENT 테이블을 지정WHERE STDNO = 24001
: 조회를 원하는 데이터의 조건 지정 →STDNO
가 24001인 행을 조회
SELECT 칼럼 지정
SELECT STDNO, AGE FROM STUDENT;
: STUDENT 테이블의 모든 행에서 STDNO와 AGE 칼럼만 출력SELECT * FROM STUDENT;
: STUDENT 테이블의 모든 칼럼과 모든 행 조회SELECT AGE || '세' FROM STUDENT;
: STUDENT 테이블의 모든 행에서 AGE 칼럼 조회 / 단, AGE 칼럼 뒤에 '세'라는 문자를 결합(ex. 21세)
ORDER BY를 사용한 정렬
ORDER BY
는SELECT
문을 사용할 때 같이 사용할 수 있음ORDER BY
는 데이터를 오름차순(Ascending;ASC
) 혹은 내림차순(Descending;DESC
)으로 출력ORDER BY
가 정렬을 하는 시점은 모든 실행이 끝난 후 데이터를 출력하기 바로 직전ORDER BY
를 사용하여 정렬하면 데이터베이스 메모리를 많이 사용하기 때문에 대량의 데이터를 정렬하면 정렬로 인한 성능 저하가 발생함- Oracle 데이터베이스는 정렬을 위해서 메모리 내부에 할당된
SORT_AREA_SIZE
를 사용함 →SORT_AREA_SIZE
가 너무 작으면 성능 저하가 발생
- Oracle 데이터베이스는 정렬을 위해서 메모리 내부에 할당된
- 정렬을 회피하기 위해서 인덱스(Index)를 생성할 때 사용자가 원하는 형태로 오름차순 혹은 내림차순으로 생성해야 함
- 특별한 지정이 없으면
ORDER BY
는 오름차순으로 정렬
SELECT * FROM STUDENT
ORDER BY NAME, STDNO DESC;
ORDER BY NAME, STDNO DESC;
: NAME 칼럼은 오름차순 정렬, STDNO 칼럼은 내림차순 정렬
Index를 사용한 정렬 회피
- 정렬은 데이터베이스에 부하를 줌 → 인덱스를 사용해서
ORDER BY
를 회피할 수 있음
create table student(
stdno number(10) primary key,
name varchar2(20),
age number(10)
);
insert into student values(24001, "김민수", 21);
insert into student values(24002, "김수연", 22);
insert into student values(24003, "박지현", 25);
- 위 코드와 같이 데이터를 입력하고
SELECT
문을 실행하면 기본키(Primary Key)인 STDNO로 자동으로 오름차순 인덱스가 생성되어 오름차순으로 데이터 조회가 이루어짐
SELECT /*+ INDEX_DESC(A) */ FROM STUDENT A;
- 위 코드와 같이
/*+ INDXE_DESC(A) */
를 사용하면 STUDENT 테이블에 생성도니 인덱스를 내림차순으로 읽도록 지정할 수 있음 →SELECT
문에ORDER BY
를 사용하지 않고 내림차순으로 조회 가능
(추후 내용 추가 예정...)
DISTINCT와 Alias
DISTINCT
DISTINCT
문은 칼럼명 앞에 지정하여 중복된 데이터를 한 번만 조회함
SELECT CLASS FROM STUDENT ORDER BY CLASS;
- STUDENT 테이블에서 CLASS 칼럼만 조회 (위 이미지에서 왼쪽 결과)
- CLASS가 중복으로 저장되어 있음
SELECT DISTINCT CLASS FROM STUDENT ORDER BY CLASS;
- STUDENT 테이블에서 CLASS 칼럼만 조회 / 단, 중복 제거 (위 이미지에서 오른쪽 결과)
DISTINCT
를 사용하면 CLASS 칼럼에서 중복된 값은 제거하고 출력
Alias
- Alias(별칭)은 테이블명이나 칼럼명이 너무 길어서 간략하게 사용할 때 사용(테이블 혹은 칼럼에 별칭을 지정하는 것)
SELECT NAME AS "이름" FROM STUDENT s
WHERE s.STDNO = 24001;
NAME as "이름"
: NAME 칼럼을 "이름"으로 출력함FROM STUDENT s
: STUDENT 테이블명 대신 s 사용WHERE s.STDNO = 24001;
: s를 테이블명처럼 사용
Reference
1. 2024 이기적 SQL 개발자 이론서 + 기출문제 / https://product.kyobobook.co.kr/detail/S000212055970
'Data Science > SQL' 카테고리의 다른 글
SQLD | SQL 기본 - GROUP 연산과 SELECT문 실행 순서 (0) | 2024.03.02 |
---|---|
SQLD | SQL 기본 - NULL의 특징과 NULL 값 조회 (2) | 2024.03.01 |
SQLD | SQL 기본 - WHERE문 (with. LIKE, BETWEEN, IN) (0) | 2024.02.29 |
SQLD | SQL 기본 - SQL 종류 및 SQL문의 실행 순서 (0) | 2024.02.28 |
SQLD | SQL 기본 - 관계형 데이터베이스(Relation Database) (0) | 2024.02.28 |