DB, SQL 8

[데이터베이스] 정규화란?

정규화란 무엇인가? 데이터베이스와 관련된 내용을 찾아보면 정규화라는 내용이 있다. 정규화는 변경 이상을 줄이는 목적과 중복성을 최소화하기 위해 사용한다. 쉽게 말하면 데이터를 잘 저장하려 테이블을 쪼개고 만드는 과정이라 보면 된다. 이때, 어떻게 테이블을 쪼개냐에 따라서 정규형(Normal form; NF)의 종류가 나뉘게 된다. +a 변경 이상(Anomaly): 데이터 수정으로 인해 발생하는 문제를 의미. 삭제 이상 - 특정 키를 삭제할 때 전체 정보가 삭제되어 버리는 경우 삽입 이상 - 없는 정보를 신규로 입력할 수 없는 경우 정규화와 관련된 용어가 혼용되는 경우가 다소 있는데, 통상적으로 "제 1 정규형 = 1차 정규화 = 제 1 정규화 = 1NF = .." 라 보면 되겠다. 여기서는 편의상 제 n..

DB, SQL 2022.02.19

[MySQL] 과거 강의자료 정리 -1

Intro SQL문을 사용하는 것에 익숙해지기 위해서 별도의 정리를 하려고 한다. (최근에 어떤 사건으로 인해서 SQL을 단단하게 다져놔야겠다는 생각도 있고) 따라서 이전에 DB관련 강의를 들으면서 풀었던 문제를 조금 변형해서 그에 따른 코드를 작성하려 한다. 공통 조건 다음의 테이블 구조를 참고해서 1~6까지를 구하기 위한 쿼리를 작성하여라. 테이블 구조 & 관계 테이블마다 주어진 데이터 문제 1 1004번 과목을 들은 학생 중 성적이 B인 학생의 학번을 뽑아내어라. 나만의 풀이 1 일단 성적 정보는 score 테이블에 있음을 알 수 있다. 여길 보면 과목 번호도 같이 나와있으니, 여기만 탐색해서 원하는 정보를 추출할 수 있다. 단순히 SELECT와 WHERE 조건을 활용해서 다음과 같이 코드를 짜면 ..

DB, SQL 2022.02.12

[프로그래머스] SQL String과 Date 등..

원본 링크 https://programmers.co.kr/learn/courses/30/parts/17047 Intro 프로그래머스에 올라온 SQL문제 시리즈 중 마지막 단원에 드디어 왔다. 기타 SQL에서 다루는 여러가지 자료형들을 적절히 조작하는 문제들을 모았다 보면 된다. 문제에 따라서 기존에 풀었던 문제에 나온 메소드를 사용하는 경우도 있다. 사실상 이번 포스트는 종합선물세트(?)라 보면 되겠다. 공통 조건 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물..

DB, SQL 2022.02.10

[프로그래머스] SQL JOIN문

원본 링크 https://programmers.co.kr/learn/courses/30/parts/17046 Intro 드디어 SQL의 꽃(?)이라 불리는 JOIN연산이 등장했다. 데이터베이스는 데이터를 효율적으로 다루고 중복을 제거하기 위해 정규화를 수행하곤 한다. 이 과정에서 테이블이 분리되는 현상이 자주 발생한다. 따라서 원하는 query를 요청하기 위해서 여러 테이블을 결합시키는 JOIN을 사용하게 된다. 문제는, JOIN 연산이 은근히 헷갈린다는 것이다. 완전히 익숙해지면 모를까, 처음 접하는 사람에겐 다소 혼란스러울 수 있다. 물론 여기선 엄청 상세하게까지 설명하지는 않으나, 필요에 따라선 부분부분 관련 메소드와 과정을 설명할 생각이다. 공통 조건 ANIMAL_INS 테이블은 동물 보호소에 들..

DB, SQL 2022.02.08

[프로그래머스] SQL NULL 처리하기

원본 링크 https://programmers.co.kr/learn/courses/30/parts/17045 Intro 이번 포스트에선 SQL에서 NULL을 다루는 방법을 배우려 한다. 총 3개의 대표 문제가 있으며, 세 문제 모두 그렇게 까다롭지는 않다. 약간의 메소드만 배우면 충분히 구현할 수 있을 수준의 난이도이다. 공통 조건 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다...

DB, SQL 2022.02.04

[프로그래머스] GROUP BY절

원본 링크 https://programmers.co.kr/learn/courses/30/parts/17044 개요 해당 챕터에선 SQL문을 응용한 형태로 GROUP BY절이 추가로 들어올 것이다. GROUP BY는 말 그대로 어떤 기준 하에 묶어낸다는 의미로 파이썬에서 collections.Counter()의 역할을 한다 보면 된다. 따라서 꽤 자주 쓰이는 키워드 중 하나이다. 여기선 GROUP BY를 포함해서 풀어야 하는 다양한 문제들을 볼 것이다. 문제 1, 2 공통 조건 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NA..

DB, SQL 2022.01.30

[프로그래머스] SQL SUM, MAX, MIN 사용

원본 링크 https://programmers.co.kr/learn/courses/30/parts/17043 개요 이번엔 기본적인 SELECT문은 쓸 줄 안다는 전제하에 조금 응용된 문제들을 풀어보려 한다. 어떤 문제는 다른 문제와 풀이가 유사해서 다른 점만 기술하고 넘어갈 수 있다. 공통 조건 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE A..

DB, SQL 2022.01.30

[프로그래머스] SQL SELECT문

원본 링크 https://programmers.co.kr/learn/courses/30/parts/17042 개요 알고리즘과 별도로 SQL문을 사용하는 연습을 수행하려 한다. 따라서 우선 프로그래머스 사이트에 있는 예제들을 토대로 하나씩 복기하며 리마인드할 생각이다. 코드가 그렇게 복잡하지 않은 이상 아마 여러 문제를 하나의 게시물로 올릴 것 같다. 지금도 그러하다. 여기에선 SELECT문을 사용하는 문제를 주로 풀 것이다. 기본은 SELECT문을 기반으로 쓰지만, 필요에 따라서 ORDER BY, WHERE절 등의 친구도 같이 써야한다. 이러한 요소들은 문제에서 나오면 따로 설명할 생각이다. 공통 조건 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS..

DB, SQL 2022.01.29
728x90