3장. 쿼리입문

3.2. 쿼리(query) 절

select문

3.3. Select 절

select 절

    • (asterisk): 모든 열을 지정

Select절에 추가할 수 있는 항목

  • 숫자 또는 문자열
  • 표현식
  • 내장 함수 호출 및 사용자 정의 함수 호출
SELECT	language_id,
 'COMMON'	language_usage,
 language_id	*	3.14	lang_pi_value,
 upper(name)	language_name
 FROM	language;
  • 원래 language 테이블에는 없는 컬럼 (가상 컬럼)

열의 별칭(column alias)

  • 열의 레이블을 지정할 수 있음
  • 출력을 이해하기 쉽게 함
  • AS(as) 키워드 사용: 가독성 향상

중복 제거

  • 동일한 배우가 여러 영화에 출연: 중복된 actor_id 발생
    - all 키워드: 기본값, 명시적으로 지정할 필요가 없음
  • DISTINCT(또는 distinct) 키워드 사용: 중복 제거
SELECT	DISTINCT	actor_id	FROM	film_actor	ORDER	BY	actor_id;

3.4 From 절

From 절 역할

  • 쿼리에 사용되는 테이블을 명시
  • 테이블을 연결하는 수단

테이블 유형: from 절에 포함

  • 영구 테이블(permanent table)
    - CREATE TABLE 문으로 생성된 테이블
    • 실제 데이터베이스에 존재하는 테이블
  • 파생 테이블(derived table)
    - 하위 쿼리(subquery)에서 반환하고 메모리에 보관된 행
  • 임시 테이블(temporary table)
    - 메모리에 저장된 휘발성 데이터
  • 가상 테이블(virtual table)
    - CREATE VIEW 문으로 생성

파생 테이블

  • subquery(서브 쿼리): 9장 참조
    • FROM 절에 위치한 SELECT문(서브 쿼리)은 실행 결과로 테이블을 생성: 파생 테이블
    • 즉, 다른 테이블과의 상호작용을 할 수 있는 파생 테이블을 생성
    - concat(문자열1, 문자열2, ...): 둘 이상의 문자열을 순서대로 합쳐서 반환

임시 테이블

  • 휘발성의 테이블: 데이터베이스 세션이 닫힐 때 사라짐\

가상 테이블(View)

  • SQL 쿼리의 결과 셋을 기반으로 만들어진 가상 테이블
  • 실제 데이터가 저장되는 것이 아닌, view를 통해 데이터를 관리
  • 복잡한 쿼리문을 매번 사용하지 않고 가상 테이블로 만들어서 쉽게 접근함!

3.5. Where 절

테이블 연결

  • JOIN(INNER JOIN)
    • 두 개 이상의 테이블을 묶어서 하나의 결과 집합을 만들어 내는 것

    • 연결(결합) 조건: on
    - customer 테이블의 customer_id와 rental 테이블의 customer_id의 값이 일치하는 경우에만 데이터를 가져옴.

테이블 연결

  • customer 테이블과 rental 테이블 확인
    - 두 테이블은 customerid로 연결되어 있음
    ![](https://velog.velcdn.com/images/ha
    /post/ae8efcee-3c31-4dff-b564-25afc2104462/image.png)

DATETIME 데이터

  • date() 함수
    • datetime 데이터에서 date 정보(YYYY-MM-DD)만 추출

  • time() 함수
    • time 정보(HH:MI:SS) 정보만 추출

테이블 연결(inner join) 결과

 SELECT	customer.first_name,	customer.last_name,
 time(rental.rental_date)	rental_date
 FROM	customer	inner	join	rental
 ON	customer.customer_id	=	rental.customer_id
 WHERE	date(rental.rental_date)	=	'2005-06-14';

테이블 별칭 정의

  • 여러 테이블을 join할 경우, 테이블 및 열 참조 방법
    • 테이블 이름 및 열 이름 사용
    • 각 테이블의 별칭을 할당하고 쿼리 전체에서 해당 별칭을 사용
    - AS 키워드 사용

where 절

  • 필터 조건: 조건에 맞는 행의 데이터만 가져옴
    • AND, OR, NOT 연산자 사용

Where절 검색 조건

  • and, or 사용
    • (G등급이면서 7일 이상 대여할 수 있거나), (PG-13 등급이면서 3일 이내로 대여)할 수 있는 영화 목록

3.6 Group by절과 having절

GROUP BY

  • 열(column)의 데이터를 그룹화
SELECT	컬럼 FROM	테이블 GROUP	BY	그룹화할 컬럼;

HAVING (필터링 조건)

  • 특정 열을 그룹화한 결과에 필터링 조건을 설정: group by 이후에 having 위치
    • WHERE: 모든 필드에 대한 필터링 수행, from 다음에 위치
    • count(*): 그룹화 한 전체 행의 수

3.7 Order by 절

order by 절

ORDER	BY [컬럼명 |	컬럼번호] [ASC	|	DESC]
  • 지정된 컬럼(열)을 기준으로 결과를 정렬 (다중 컬럼인 경우, 왼쪽부터 정렬)
  • 오름차순(ASC): 기본 정렬 값, 내림차순(DESC)
    • 영화 대여 고객의 last_name을 기준으로 정렬- 오름 차순 정렬 (asc는 생략 가능)
    • 고객 중 last_name이 동일한 경우,- first_name 으로 다시 정렬

내림 차순 정렬: DESC

컬럼의 순서(컬럼의 인덱스)를 통한 정렬

  • order by 다음에 정렬 기준이 되는 컬럼의 순서(index)를 사용

0개의 댓글

Powered by GraphCDN, the GraphQL CDN