💡SELECT문
SELECT문은 DML, DQL에서 사용된다.
SQL은 SELECT로 시작해서 SELECT로 끝난다는 말이 있을 정도로 SQL은 SELECT 위주이다.
SELECT문의 구성
전체 SELECT문
[WITH <Sub Query>]
SELECT column_list
FROM table_name
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC|DESC]]
WITH절, SELECT절, FROM절 등 각각을 절이라고 부른다.
각 절마다 기능을 이루어 하나의 SELECT구문이 만들어지게 된다.
기본적인 SELECT문
SELECT column_list
FROM table_name
SELECT와 FROM은 가장 기본적인 SELECT절로, 반드시 입력해야 하는 내용에 해당한다.
FROM절에는 데이터 소스를 기재하며, 테이블을 입력할 경우 해당 테이블을 데이터로 가져온다.
그리고 SELECT절은 FROM절이 가져온 데이터에서 원하는 컬럼을 가져온다.
처음에 table을 지정해 주어야 다음에 무엇을 할지 이어지기 때문에, SELECT구문은 항상 FROM절을 먼저 시작하고 SELECT절을 실행한다.
테이블의 전체 컬럼 SELECT
select * from employees;
위 SELECT문은 employees라는 테이블로부터 모든 컬럼을 가져오라는 의미이다.
테이블 구조 (스키마)
desc employees;
테이블 구조를 확인할 때에는 desc 명령어를 사용할 수 있다.
이를 스키마라고 하는데, 스키마(Scheme)는 각 테이블의 구조 및 테이블의 각 열이 포함할 수있는 데이터 유형을 의미한다.
기본적으로 개발자는 document를 확인하여 테이블 구조를 확인해야 한다. desc는 구조를 간략하게 확인할 때 사용한다.
단일/다중/동일 컬럼
단일 컬럼
select first_name from employees;
특정 컬럼만을 선택하여 테이블로부터 데이터를 가져올 수 있다.
다중 컬럼
select first, last from tblComedian;
다중 컬럼을 작성할 때, 출력할 컬럼의 순서를 지정할 수 있다.
동일 컬럼
select last, length(last) from tblComedian;
값을 가공하여 출력할 때가 많기 때문에, 동일한 컬럼을 사용하는 경우는 흔하다.
SELECT문 작성 스타일
-- 스타일 1
select last, first
from tblComedian;
-- 스타일 2
select last, first
from tblComedian;
-- 스타일 3
select
last, first
from
tblComedian;
사람마다 SELECT문을 작성하는 스타일은 모두 다르다.
상황과 가독성에 맞추어 사용하면 된다.
SELECT문 에러
테이블 이름이 틀릴 경우
select
last, first
from
tblComedia;
ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
*Cause:
*Action:
104행, 5열에서 오류 발생
tblComedian 테이블에 오탈자가 발생했다.
해당 테이블이 존재하지 않는다는 메시지를 출력한다. (does not exist)
컬럼 이름이 틀릴 경우
select
last, firs
from
tblComedian;
ORA-00904: "FIRS": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
108행, 11열에서 오류 발생
first 컬럼에 오탈자가 발생했다.
잘못된 식별자를 사용하고 있다는 메시지를 출력한다. (invalid identifier)