[SQLD] 정규화, 다양한 관계, 트랜잭션, NULL
·
SQL/SQLD 자격증
SQLD 1과목 Part 2에 대한 내용입니다. 교재 및 강의(4)를 참고하여 정리한 내용입니다.1. 정규화(Normalization)1.1. 정규화 기본 개념정규화(Normalization) : 데이터 중복을 제거하고 데이터가 관심사별로 처리되도록 엔터티를 쪼개서 성능을 향상시키는 작업데이터 모델의 유연성이 높아져서, 비즈니스에 변화가 생겨도 데이터 변경을 최소화할 수 있음대체로 정규화가 좋은 것이지만, 경우에 따라서 '반정규화'가 더 좋을 수도 있음입력/삭제/수정 성능은 무조건 향상! 조회는 대부분 향상되나 저하될 수도 있음!정규화는 함수적 종속성(Functional Dependency)을 근거로 함어떤 기준값(컬럼)에 의해 데이터(다른 컬럼)가 종속되는 현상정규화는 반드시 순차적으로 진행해야 함 (..
[SQLD] 모델링 과정, 스키마, 식별자
·
SQL/SQLD 자격증
SQLD 1과목 Part1에 대한 내용입니다. 교재 및 강의(3)를 참고하여 정리한 내용입니다. 1. 데이터 모델링 과정1.1. 복습데이터 모델링현실 세계의 대상을 ㅊㅅㅎ, ㄷㅅㅎ, ㅁㅎㅎ하여 데이터베이스로 표현하는 것계획/분석/설계할 때뿐만 아니라 구축/운영할 때도 사용데이터 모델링 3단계 (주요 키워드) 1.2. 개념적 데이터 모델링 과정ERD(Entity Relationship Diagram) : 엔터티들 간의 관계를 나타낸 그림으로, 개념적 모델링의 결과물!ERD 작성 절차1. 필요한 엔터티를 도출하고 그린다 (속성은 제외)2. 엔터티를 적절히 배치한다 (중요한 엔터티를 왼쪽 상단에 배치)3. 관계를 설정한다 (선으로 일단 이어줌)4. '관계명'을 기술한다 (엔터티만 봐도 유추되니까 안 적어놓는 ..
[SQLD] 데이터 모델링, 엔터티, 속성, 관계
·
SQL/SQLD 자격증
SQLD 1과목 Part1에 대한 내용입니다. 교재 및 강의(1~2)를 참고하여 정리한 내용입니다.1. 데이터 모델링1.1. 기본 개념데이터 모델링: 현실 세계의 대상을 추상화, 단순화, 명확화하여 데이터베이스로 표현하는 것추상화: 공통적인 특징을 찾고 간략하게 표현함단순화: 누구나 쉽게 이해할 수 있도록 표현함명확화: 해석이 모호하지 않고 한 가지로 명확히 해석되어야 함계획/분석/설계할 때뿐만 아니라 구축/운영할 때도 사용⚠️설계할 때만 필요하고 구축/운영 시에는 필요 없다 (False) 1.2. 데이터 모델링 단계🏠집 짓는 과정에 비유해본다면...0) 집을 만들고 싶어 ➔ 요구사항 접수1) 단순한 설계도를 일단 그려보자 (방, 창문 개수 등) ➔ 개념적 모델링2) 상세한 설계도를 그려보자 (창문 두..
[MySQL] 사용자 정의 함수(User Defined Function, UDF)
·
SQL/MySQL
1. 사용자 정의 함수(UDF)1.1. UDF 기본 개념MySQL 내장함수 이외에 사용자가 직접 만들 수 있는 함수반복해서 쓰는 복잡한 로직이 있을 경우, 직접 함수를 정의해서 재사용하면 유용함ex) 특정 패턴의 문자열 처리, 특정 규칙에 따른 계산, 데이터 정제 등❇️기본 쿼리 형식매개변수 : 함수 사용 시 입력받는 변수 (여러 개 가능)반환타입 : 함수가 어떤 타입의 값을 반환하는지 명시아래 2장 참고DETERMINISTIC : 입력한 파라미터가 같으면 출력도 동일하게 해주는 설정 (아닐 경우 NOT DETERMINISTIC)NOW, RAND 처럼 매번 실행 결과 달라지는 함수 사용 시, 일관된 출력을 하도록 쓸 수 있음.BEGIN과 END 사이에 함수 내부 로직을 작성하면 됨구문마다 종료 기호(;)..
[MySQL] Window 함수
·
SQL/MySQL
1. Window 함수1.1. Window 함수 개념MySQL 8.0부터 정식으로 지원행들의 집합(window)에 대해 계산을 수행하는 함수로, 집계 함수의 확장판(GROUP BY와 달리) 데이터를 집계해도 원래의 행들은 그대로 두고, 결과를 추가적인 컬럼으로 붙여줌⭐공식 도규먼트 曰 "By contrast, window operations do not collapse groups of query rows to a single output row. Instead, they produce a result for each row."기본 쿼리 형식함수명(): 사용할 윈도우 함수. 2~4장 참고. (필수)OVER(): 윈도우 함수임을 나타내는 키워드 (필수)PARTITION BY: 데이터를 나눌 기준 (=GRO..
[MySQL] 해커랭크, 리트코드 문제 풀이 (4)
·
SQL/MySQL
SQL 쿼리 연습을 위해 다양한 문제를 풀어보고 있다.다만, 대부분의 코딩테스트 플랫폼에서는 BigQuery 선택지가 없어서 MySQL 기준으로 연습하는 중이다.(대부분의 문법이 비슷하지만 간혹 문법이나 정책이 다른 경우가 있는 듯하다) 아래와 같은 문제들을 기록해두고 복기하려고 한다.어려워서 풀이에 실패한 문제풀긴 했으나 좀 더 좋은 쿼리가 있었던 문제몰랐던 문법이나 함수를 알게 된 문제그 외 복기가 필요하다고 느낀 문제1. Placements (해커랭크)📌문제Write a query to output the names of those students whose best friends got offered a higher salary than them.Names must be ordered by th..
[MySQL] UNION, 서브쿼리
·
SQL/MySQL
1. UNION, UNION ALL1.1. UNION 개념 이해UNION: 두 개 이상의 SELECT 쿼리 결과를 수직으로 결합하는 함수 (🆚JOIN이 가로였다면, UNION은 세로) 중복된 행은 빼고 반환해줌 (= 합집합 연산 느낌)UNION ALL은 중복 행까지 다 포함해서 반환해줌차집합(EXCEPT)이나 교집합(INTERSECT) 연산도 있긴 한데, MySQL은 지원하지 않음..예제 1) Product 테이블에서 price가 5 이하거나 200 이상인 상품들만 출력하기-- 1) 일반적인 쿼리select *from Productswhere price = 200-- 2) 굳이 UNION을 써보면 아래처럼 할 수 있음!select *from Productswhere price = 200예제 2) FUL..
[MySQL] Data Manipulation Language (INSERT, UPDATE, DELETE)
·
SQL/MySQL
1. 데이터 조작어(Data Manipulation Language)SQL 구문을 기능에 따라 분류하면 아래와 같다.구문역할예시DDL (Data Definition Language)테이블이나 컬럼 등의 구조 정의/수정 CREATE, ALTER, DROPDML (Data Manipulation Language)테이블 안의 데이터 추가/수정/삭제/조회 INSERT, UPDATE, DELETE, SELECTDCL (Data Control Language)사용자 권한 부여/회수GRANT, REVOKETCL (Transaction Control Language) 트랜잭션을 확정/취소COMMIT, ROLLBACK, SAVEPOINT이 중에서 DML은 (테이블 구조는 그대로 두고) 테이블 안의 "데이터" 자체를 조작..
[MySQL] 해커랭크 문제 풀이 (3)
·
SQL/MySQL
SQL 쿼리 연습을 위해 다양한 문제를 풀어보고 있다.다만, 대부분의 코딩테스트 플랫폼에서는 BigQuery 선택지가 없어서 MySQL 기준으로 연습하는 중이다.(대부분의 문법이 비슷하지만 간혹 문법이나 정책이 다른 경우가 있는 듯하다) 아래와 같은 문제들을 기록해두고 복기하려고 한다.어려워서 풀이에 실패한 문제풀긴 했으나 좀 더 좋은 쿼리가 있었던 문제몰랐던 문법이나 함수를 알게 된 문제그 외 배울 점이 있었던 문제1. Weather Observation Station 11 (해커랭크)📌문제Query the list of CITY names from STATION that either do not start with vowels or do not end with vowels.Your result ca..