SELECT 문
일반 형식
SELECT [ALL|DISTINCT] {COLUM_name [[AS] COLUM_alias],}+ | *}
FORM TABLE_LIST
[WHERE 투플_조건식]
[GROUP BY 컬럼명 [HAVING 그룹 조건식]]
[ORDER BY {컬럼명| 컬럼_별칭| 컬럼_위치 [ASC|DESC],}+]
[LIMIT [offset,] row_count];
- 투플 조건식 : 컬러명, 비교연산자, SQL연산자, 숫자/문자/표현식 컬럼명
- []은 생략 가능하다는 의미.
- + : 1회 이상 반복이라는 의미
1) SELECT문의 실행순서
SELECT문의 실행순서는 다음과 같다
- FROM : 실행 대상 테이블을 참조한다.
- WHERE : 조건에 맞는 투플만 선택한다.
- GROUP BY : 기준 컬럼의 값에 따라, 투플들을 그룹화 한다.
- HAVING : 각 그룹별로, 조건에 맞는 그룹만 선택한다.
- SELECT : 선택된 투플에서, 기술된 컬럼/표현식만 출력/계산한다.
- ORDER BY : 투플을 정렬한다.
- LIMIT : 정해진 번위의 투플만 출력한다.
2) SELECT 문의 SELECT 절
SELECT [ALL|DISTINCT] {COLUM_name [[AS] COLUM_alias],}+ | *}
FORM 테이블_리스트;
ALL과 DISTINCT는 생략 가능하다.
ALL은 디폴트 값으로 중복된 투플을 모두 포함한다는 뜻이고 DISTINCT는 중복된 투플은 하나만 남겨두고 모두 제거한다는 의미이다.
컬럼 별칭(colum alias)을 사용해서 컬럼명에 별칭을 정의할 수 있다. 컬럼명 대신 컬럼표현식을 사용할 때, 매우 유용하게 사용한다.
기본 예제)
SELECT PLAYER_ID, PLAYER_NAME, BACK_NO, TEAM_ID
FROM PLAYER

DISTINCT 사용)
SELECT DISTINCT TEAM_ID
FROM PLAYER;

DISTINCT를 사용하면 중복이 없이 값이 출력되는 것을 알 수 있다. 해당 colum에 어떤값들이 들어가 있는지 살펴볼 때 사용하면 좋을 것 같다.
컬럼별칭 사용 )
SELECT PLAYER_NAME AS '선수 이름', NATION AS 국가, BIRTH_DATE AS 생일, HEIGHT 키 , WEIGHT 몸무게
FROM PLAYER;

AS는 생략 가능, 별칭에 공백이 들어갈 때는 ' ' 를 사용해야 한다.
♦️ SQL에서는 컬럼별칭은 테이블에 영향을 주지 않고 오직 출력 용도로만 사용한다. 그래서 테이블에 직접 검색하는 WHERE절과 GROUP BY에서는 사용할 수 없다. 반면 SELECT 절과 ORDER BY절, HAVING절 에서는 사용할 수 있다.
잘못 사용한 예시)
SELECT PLAYER_NAME AS '선수 이름', NATION AS 국가, BIRTH_DATE AS 생일, HEIGHT 키 , WEIGHT 몸무게
FROM PLAYER
WHERE 키 >= 170; /*에러*/

WEHER절에서 별칭을 사용하면 Unkown column이라는 에러메시지가 나오는 것을 알 수 있다.
3) 합성 연산자 CONCAT
컬럼과 컬럼, 혹은 컬럼과 문자열을 연결하여, 새로운 컬럼을 생성한다.
SELECT CONCAT(PLAYER_NAME, '선수, ', HEIGHT, 'cm, ', WEIGHT, 'kg')
FROM PLAYER;
CONCAT을 사용하면 이런식으로 값을 뽑아서 새로운 컬럼을 생성할 수 있다.

'하루 30분 SQL 공부하기' 카테고리의 다른 글
| [SQL/DFL] SELECT문의 WHERE절과 논리, 비교, SQL 연산자 (2) | 2024.10.02 |
|---|---|
| [SQL] SQL을 공부하기전 알면 좋은 기본 지식 (0) | 2024.10.01 |
| [MySQL] CTE Common Table Expression 임시 테이블 (0) | 2024.09.30 |
| [SQL] JOIN 테이블 결합하기 기본 (2) | 2024.09.25 |
| [SQL] 프로그래머스 SELECT문제 평균 일일 대여 요금 구하기, 흉부외과 또는 일반외과 의사 목록 출력하기 (1) | 2024.09.25 |