백엔드 데브코스 TIL 08-09일차

Inchang Choi·2022년 4월 1일
0
post-thumbnail

학습목표

강의를 들으며 내가 알고 있는 내용을 점검하고,

새로 배운 내용을 정리하며,

궁금한 내용을 알아가며 학습해나가는 것을 목표로 합니다.


SQL의 DML에 대하여 알아봅시다.

SELECT

테이블들에서 레코드들을 읽어오는데 사용 되는 명령어입니다.

기본적으로 아래와 같은 명령어들이 주로 사용됩니다.

SELECT 필드이름 1, 필드이름 2...
FROM 테이블이름
WHERE 선택조건
GROUP BY 필드이름1, 필드이름2
ORDER BY 필드이름 [ASC|DESC] (필드이름 대신 숫자 사용가능)
LIMIT N;
  • DISTINCT : 중복 제거
  • COUNT : 레코드의 개수를 셀 수 있음.

아래와 같이 WHEN은 THEN, ELSE로 조건문처럼 사용 가능

SELECT channel_id, CASE
 WHEN channel_id in (1, 5, 6) THEN 'Social-Meida'
 WHEN channel_id in (2, 4) THEN 'Search-Engine'
 ELSE 'Something else'
END channel_type
FROM prod.session;
  • NULL : 값이 존재 하지 않음을 나타냄.
    • is NULL, is not NULL로 비교가능.
    • 사칙연산에 사용되면 결과가

WHERE

  • IN (& NOT IN) : 레코드 안에서 특정 레코드만 찾을 수 있음
  • LIKE (& NOT LIKE) : 대소문자 구별 없이 문자열 매칭 가능
    • 정규표현식 지원 ( a LIKE ‘B%’ → ‘B*’)
  • BETWEEN : 날짜 범위에 사용 가능
  • STRING functions
    • LEFT(str, N)
    • REPLACE(str, exp1, exp2)
    • UPPER & LOWER
    • LENGTH(str)
    • LPAD, RPAD : 문자가 짧을경우 빈 부분을 패딩해줌.
    • SUBSTRING
    • CONCAT

타입 변환

  • DATE Conversion
    • NOW, CONVERT_TZ(now(), ‘GMT’, ‘Asia/Seoul’), DATEDIFF, DATE_ADD ...
  • STR_TO_DATE, DATE_FORMAT
  • cast
    • cast(categort as float)
    • convert(expression, float)

GROUP BY

GROUP BY는 테이블의 레코드를 그룹으로 묶어 다양한 정보를 계산할 수 있습니다.

  1. 그룹으로 묶을 필드를 결정한 후
    • 하나이상의 필드를 묶을 수도 있습니다.
    • 필드 이름 또는 일련번호를 사용합니다.
  2. 그룹별로 계산할 내용을 결정합니다.
    • COUNT, SUM, AVG, MIN, MAX, GROUP_CONCAT
    • 보통 필드 이름을 지정하는 것이 일반적 입니다.

MySQL의 컬럼 타입

  1. Numeric Type
    • INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT
    • DECIMAL, NUMERIC
    • FLOAT, DOUBLE, BIT
  2. Date and Time Type
    • DATE, DATETIME, TIMESTAMP, TIME, YEAR
  3. String Type
    • CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, SET
  4. JSON type
  5. Spatial Type : 위도와 경도를 중심으로 한 위치 관련 타입

INSERT

테이블에 값을 추가합니다.

DELETE

조건을 기반으로 테이블에서 레코드를 삭제 혹은 모든 레코드를 삭제합니다.

  • DELETE FROM vs. TRUNCATE TRUNCATE는 조건없이 모든 레코드를 삭제합니다. 속도가 빠른 대신 트랜잭션 사용시 롤백이 불가합니다.

UPDATE

조건을 기반으로 테이블에서 특정 레코드(들)의 필드 값을 수정하는 기능입니다.

JOIN

SQL 조인은 두 개 이상의 테이블들을 공통 필드를 가지고 통합합니다.

스타 스키마로 구성된 테이블들로 분산되어 있는 정보를 통합하며 JOIN의 결과로 양쪽 필드를 모두 가진 새로운 테이블을 만들어 냅니다.

Join의 방식에 따라 아래의 두 가지가 달라집니다.

  • 어떤 레코드들이 선택 되는지?
  • 어떤 필드가 채워지는지?

JOIN시 유의점

먼저 중복 레코드가 없고 Primary Key의 uniqueness가 보장됨을 확인해야합니다.

그 후 조인하는 테이블들간의 관계를 명확하게 정의합니다.

  • One to one
  • One to many : 중복이 문제가 될 수도 있음.
  • Many to one
  • Many to many : One to One이나 One to many로 바꾸는 것이 가능하다면 변환하여 조인하는 것이 좋습니다.

즉 어느 테이블을 From에 사용할지 결정해야합니다.

JOIN의 종류

INNER JOIN

  1. 양쪽 테이블에서 매치가 되는 레코드들만 반환합니다.
  2. 양족 테이블의 필드가 모두 채워진 상태로 반환됩니다.

LEFT JOIN

  1. 왼쪽 테이블의 모든 레코드들을 반환합니다.
  2. 오른쪽 테이블의 필드는 왼쪽 레코드와 매칭 되는 경우에만 채워진 상태로 반환됩니다.

FULL JOIN

MySQL은 지원하지 않습니다. LEFT JOIN과 RIGHT JOIN을 UNION하는 것으로 이를 대신할 수 있습니다.

  1. 인쪽 테이블과 오른쪽 테이블의 모든 레코드들을 반환합니다.
  2. 매칭 되는 경우에만 양쪽 테이블들의 모든 필드들이 채워진 상태로 반환됩니다.

CROSS JOIN

왼쪽 테이블과 오른쪽 테이블의 모든 레코드들의 조합을 반환합니다.

SELF JOIN

동일한 테이블을 alias를 다르게 하여 자기 자신과 조인합니다.

profile
always positive

0개의 댓글