본문 바로가기

반응형

Computer Science

[DB] 9. 트랜잭션(Transaction) - (1) 특성, ACID, 연산, 상태 [목차] 1. 트랜잭션(Transaction)이란? 2. 트랜잭션의 특성 3. 트랜잭션의 연산 4. 트랜잭션의 상태 1. 트랜잭션(Transaction)이란? 트랜잭션(Transaction)은 데이터베이스에서의 논리적 작업 단위이다. 하나의 작업을 수행하기 위해 필요한 데이터베이스 연산 기능들을 모아놓은 것이며 분리되지 않도록 하여 작업의 완전성을 보장한다. 트랜잭션을 통해서 데이터베이스의 회복과 병행 제어가 가능하다. 즉, 데이터베이스에서 오류가 발생하는 경우의 빠른 회복이나, 여러 사용자가 동시에 데이터베이스를 사용할 수 있도록 제어해주는 중요한 역할을 한다. 데이터베이스의 연산을 SQL문으로 표현한다면, 하나의 작업을 수행하는 SQL문의 집합으로 생각할 수도 있다. 2. 트랜잭션의 특성 트랜잭션이 ..
[DB] 8. 정규형 (1NF, 2NF, 3NF, BCNF) [목차] 1. 제1 정규형 2. 제2 정규형 3. 제3 정규형 4. BCNF 정규형이란 정규화된 결과를 말하며, 제1 정규형, 제2 정규형, 제3 정규형, BCNF, 제4 정규형, 제5 정규형이 있다. 실무적으로 제4, 제5 정규형은 잘 쓰이지 않는다고 한다. 따라서 BCNF까지만 설명할 예정이다. 1. 제1 정규형 (1NF) 제1 정규형은 릴레이션에 속하는 속성의 속성 값이 모두 원자값(Atomic Value)만으로 구성되어야 한다. 원자값이란 더 이상 쪼개질 수 없는 단위를 말한다. 예를 들어 위처럼 릴레이션이 이루어져 있다면, 제1 정규형을 만족하지 못한다. 학번이 100인 학생의 과목 번호와 성적이 2개로 이루어져 있기 때문이다. 따라서 제1 정규형이 되려면 다음과 같이 속성 값을 분리해주어야 한..
[DB] 7. 정규화 & 함수 종속성 & 이상현상 [목차] 1. 정규화가 생겨난 배경 2. 정규화란? 3. 반정규화란? 4. 함수 종속성 5. 이상현상(Anomaly) 1. 정규화가 생겨난 배경 한 릴레이션(Relation)에 여러 엔티티의 속성을 혼합하면 정보가 중복 저장되며 저장 공간을 낭비하게 된다. 또 중복된 정보로 인해 '이상 현상'이 발생하게 된다. 이러한 문제를 해결하기 위해 정규화 과정을 거치는 것이다. 2. 정규화란? Attribute 간의 종속성으로 인한 이상현상이 발생하는 릴레이션을 분해하여 재디자인함으로써 이상현상을 없애는 과정 데이터의 중복 방지, 무결성을 충족하기 위해 데이터베이스를 설계하는 방법 정규화에는 아래와 같은 3가지 원칙이 있다. 1. 정보의 무손실 : 분해된 릴레이션이 표현하는 정보는 분해되기 전의 정보를 모두 포함..
[DB/SQL] 프로그래머스 MySQL 문제 (LEVEL 2) 풀이 (1) [문제] 문제명 : 고양이와 개는 몇 마리 있을까 난이도 : LEVEL 2 링크 : https://programmers.co.kr/learn/courses/30/lessons/59040 [풀이] 고양이(Cat)를 개(Dog)보다 먼저 조회해야 하므로 ANIMAL_TYPE을 오름차순으로 정렬한다. 고양이와 개의 마리수를 각각 계산하기 위해선 GROUP BY를 통해서 그룹으로 묶어주면 된다. SELECT ANIMAL_TYPE, COUNT(*) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE [문제] 문제명 : 루시와 엘라 찾기 난이도 : LEVEL 2 링크 : https://programmers.co.kr/learn/courses/30/lessons/5..
[DB/SQL] 프로그래머스 MySQL 문제 (LEVEL 1) 풀이 [문제] 문제명 : 이름이 없는 동물의 아이디 난이도 : LEVEL 1 링크 : https://programmers.co.kr/learn/courses/30/lessons/59039 [풀이] NAME이 NULL인 항을 뽑아내기 위해선 IS NULL을 이용한다. 만약 NULL이 아닌 항만 뽑아내고 싶다면 IS NOT NULL 키워드를 이용할 수 있다. ANIMAL_ID 기준으로 오름차순 정렬되어야 하기 때문에 ORDER BY를 사용한다. SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME is null ORDER BY ANIMAL_ID [문제] 문제명 : 최댓값 구하기 난이도 : LEVEL 1 링크 : https://programmers.co.kr/learn/courses/30/..
[DB/SQL] 6. 집계 함수(Aggregate Function), GROUP BY, HAVING [목차] 1. 집계 함수(Aggregate Function)란? 2. COUNT 3. MIN / MAX 4. AVG / SUM 5. GROUP BY 6. HAVING 1. 집계 함수(Aggregate Function)란? 집계 함수는 여러 행으로부터 하나의 결괏값을 반환하는 함수이다. SELECT 구문에서만 사용되며, 이전에 다룬 기본 함수들이 행(row)끼리 연산을 수행했다면, 집계 함수는 열(column)끼리 연산을 수행한다. 주로 평균, 합, 최대, 최소 등을 구하는 데 사용된다. 위와 같이 테이블이 구성되어 있다고 가정하고, 집계 함수를 다루는 방법에 대해서 알아보자. 2. COUNT COUNT는 특정 열(Column)의 행의 개수를 세는 함수이다. COUNT(*)로 작성하면 테이블에 존재하는 행..
[DB/SQL] 5. DML(Data Manipulation Language) - UPDATE, DELETE [목차] 1. UPDATE 2. DELETE 1. UPDATE UPDATE 명령문은 데이터베이스의 테이블에서 데이터를 갱신하는 기능을 한다. 셀 단위로 데이터를 갱신할 수 있고, 만약 테이블에 존재하지 않는 열을 지정하면 에러가 발생한다. UPDATE의 단순한 문법은 다음과 같다. UPDATE table_name SET column1='data1', column2='data2', ... [WHERE condition] column에는 열 이름을, data에는 넣고 싶은 내용을 넣는다. [WHERE condition]은 생략하면 행 전체에, 특정 행을 업데이트시키고 싶다면 WHERE를 이용하면 된다. 여러 열을 동시에 변경하고 싶다면 SET 다음에 콤마(,)로 연결해서 작성해주면 된다. MySQL에서는 작..
[DB/SQL] 4. DML(Data Manipulate Language) - INSERT, SELECT [목차] 1. INSERT 2. SELECT 1) FROM, WHERE 2) AND, OR, NOT 3) LIKE 4) ORDER BY 5) DISTINCT DML(Data Manipulate Language), 데이터 조작 언어는 사용자가 데이터베이스에 대해 검색, 등록, 삭제, 갱신 등을 할 수 있도록 하는 데이터베이스 언어이다. 이전 게시글에 이어서 현재 테이블이 아래와 같이 이루어져 있다고 가정하자. 아직 열의 타입만 정의된 상태이다. 1. INSERT INSERT 명령어는 데이터를 테이블에 추가할 때 사용한다. 입력하지 않은 값은 자동으로 NULL값이 입력된다. 만약 입력하지 않은 열이 NOT NULL 속성을 가지고 있다면 default value를 가지고 있지 않다는 에러가 발생한다. 문법은 ..