스키마, SQL 쿼리

Purple·2021년 11월 13일
0

TIL

목록 보기
53/73

1. Schema

  • Schema (스키마)란, 데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명이다. 즉, 데이터베이스의 청사진과 같다.
  • 엔티티(entity)는 고유한 정보의 단위이다. 엔티티는 데이터베이스에서 테이블로 표시 할 수 있다.
  • 각 엔티니에는 해당 엔티티의 특성을 설명하는 필드(filed)가 있다. 행렬이라면, 열(column)에 해당된다. 테이블에 저장된 모든 항목에는 해당 필드가 포함된다.
  • 레코드(record)는 테이블에 저장된 항목이다. 행렬에서 행이라고 볼수 있다.
  • 각 테이블에는 고유한 ID라는 필드가 있다. 이는 각 테이블의 레코드 하나를 가리키는 숫자로 자동적으로 증가한다.(auto increments) 이 ID 필드는 해당 테이블의 키본 키(Primary Key) 역할을 한다.

2. 데이터베이스 설계

  • 구조화된 데이터는 하나의 테이블로 표현할 수 있다.=> 관계형 데이터베이스
    1. 데이터(data): 각 항목에 저장되는 값이다.
    2. 테이블(table or relation): 사전에 정의된 열의 데이터 타입대로 작성된 데이터가 행으로 축적된다.
    3. 칼럼(column or field): 테이블의 한 열을 가리킨다.
    4. 레코드 (record or tuple): 테이블의 한 행에 저장된 데이터이다.
    5. 키(key): 테이블의 각 레코드를 구분할 수 있는 값이다. 각 레코드마다 고유한 값을 가진다. 기본키(primary key)와 외래키(foreign key)등이 있다.
  • 테이블과 테이블 사이의 관계는 3가지가 있다.(self referencing 제외)
    • 1 : 1 관계
      하나의 레코드가 다른 테이블의 레코드 한개와 연결된 경우이다.
      그러나 1:1 관계는 자주 사용하지 않는다. 1:1로 나타낼 수 있는 관계라면 테이블에 직접 저장하는 나을 수도 있기 때문이다.
    • 1 : N 관계
      하나의 레코드가 서로 다른 여러개의 레코드와 연결된 경우이다.
      1: N (일대다) 관계는 관계형 데이터베이스에서 가장 많이 사용한다.
    • N : N 관계
      여러 개의 레코드가 다른 테이블의 여러개의 레코드와 관계가 있는 경우이다. N : N (다대다) 관계를 위해 스키마를 디자인할때에는, join 테이블을 만들어관리한다. 1:N( 일대다) 관계와 비슷하지만, 양방향에서 다수의 레코드를 가질 수 있다.
      조인테이블을 생성하면 조인테이블을 위한 기본키는 반드시 있어야한다.

3. SQL 쿼리에 사용하는 함수

  • GROUP BY
    데이터를 조회할 때 그룹으로 묶어서 조회한다. 데이터베이스에서 데이터를 불러오는 과정에서 정해진 그룹에 따라 지정했지만, 그룹에 대한 작업없이 조회만 한다. 그래서 쿼리의 결과로 나타나는 떼이터는 각 그룹의 첫번째 데이터만 표현한다.
  • HAVING
    GROUP BY 로 조회된 결과를 필터링할 수 있다. GROUP BY 로 그룹을 지은 결과에 필터를 적용할 때에는 HAVING을 사용할 수 있다.
  • HAVING은 WHERE과는 적용하는 방식이 다르다. HAVING은 그룹화한 결과에 대한 필터이고, WHERE는 저장된 레코드를 필터링한다. 따라서 실제로 그룹화 전에 데이터를 필터해야한다면, WHERE를 사용한다.
  • COUNT()
    레코드의 개수를 헤아릴 때 사용한다.
  • SUM()
    레코드의 합을 리턴한다.
  • AVG()
    레코드의 평균값을 계산하는 함수이다.
  • MAX(), MIN()
    MAX함수와 MIN 함수는 각각 레코드의 최댓값과 최솟값을 리턴한다.

4. SELECT 실행 순서

  1. FROM 테이블명: 테이블에 접근한다.
  2. WHERE 필드명: 필드(칼럼)의 조건에 맞는 레코드(한 행에 저장된 데이터)들을 조회한다.
  3. GROUP BY 필드명: 필드 기준으로 그룹화 한다.
  4. HAVING 함수: 함수의 결과에 부합하는 결과들만 필터링한다.
  5. SELECT 조건: 정해진 조건(필드 또는 함수값 등)의 데이터를 조회한다.
  6. ORDER BY 조건: 조건필드를 기준으로 오름차순 또는 내림차순 정렬한 결과를 리턴한다.
profile
다시 보면, 더 많은 것들이 보인다.

0개의 댓글