DB 6

SQL 레벨업 6장 결합

18강 기능적 관점으로 구분하는 결합의 종류 - SQL은 기능적인 관점으로 크로스 결합, 내부 결합, 외부 결합으로 분류할 수 있습니다. -> 이 세 가지는 생성되는 결과의 형태에 따라 이름 지어졌으며, 각각의 이름이 서로 관련 있습니다. -> 이 세 가지는 서로 배타적인 분류입니다. 1. 크로스 결합 - 모든 결합의 모체 - 크로스 결합은 실무에서 사용할 기회가 거의 없습니다. -> 단, 크로스 결합을 살펴보는 이유는 크로스 결합이 결합이라는 연산을 이해하는 지름길이기 때문입니다. - 크로스 결합을 위한 샘플 테이블 정의 CREATE TABLE Employees (emp_id CHAR(8), emp_name VARCHAR(32), dept_id CHAR(2), CONSTRAINT pk_emp PRIMA..

DB 2022.04.25

SQL 레벨업 5장 반복문 (2)

16강 SQL에서는 반복을 어떻게 표현할까? 1. 포인트는 CASE 식과 윈도우 함수 - SQL에서 반복을 대신하는 수단은 바로 CASE 식과 윈도우 함수임 -> 정확하게 말하면 CASE 식은 절차 지향형 언어에서 말하는 IF-THEN-ELSE 구문에 대응하는 기능임 -> SQL에서 CASE 식과 윈도우 함수를 함께 사용하면 다음과 같음 INSERT INTO Sales2, SELECT company, year, sale, CASE SIGN(sale-MAX(sale) OVER (PARTITION BY company) ORDER BY year ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)) WHEN 0 THEN '=' WHEN 1 THEN '+' WHEN -1 THEN '-' E..

DB 2022.04.25

SQL 레벨업 5장 반복문 (1)

- SQL에는 반복문이 없습니다. -> SQL은 일부러 반복문을 언어 설계에서 제외했는데, 바로 '반복문은 필요 없잖아?'라는 생각 때문입니다. - 반복이 없으면 프로그램의 생산성 향상 외에도 큰 장점이 생깁니다. -> 반대로 말하면 반복계 코드에서 발생하는 큰 단점이 있습니다. 15강 반복계의 공포 - 반복계 해답의 가장 '좋은 점'은 SQL을 잘 모르더라도 사용할 수 있다는 것입니다. -> 반복계가 가지는 몇몇 장점 중 하나가 바로 SQL 처리를 단순화할 수 있다는 것입니다. -> 반대로, 여러 행을 한꺼번에 처리하는 SQL을 포장계라고 부릅니다. 1. 반복계의 단점 - 반복계의 단점은 한 마디로 설명한다면 '성능'입니다. -> 같은 기능을 구현한다고 가정하면, 반복계로 구현한 코드는 포장계로 구현한..

DB 2022.04.18

SQL 레벨업 4장 집약과 자르기

12강 집약 1. 여러 개의 레코드를 한 개의 레코드로 집약 - SQL의 특징적인 사고방식 중에, 레코드 단위가 아닌 레코드의 '집합' 단위로 처리를 기술하는 것이 있습니다. -> 이런 사용 방식을 집합 지향(set-oriented)라고 부릅니다. -> 이러한 특징이 가장 잘 드러나는 때가 GROUP BY 구, HAVING 구와 그것과 함께 사용하는 SUM 또는 COUNT 등의 집약 함수를 사용하는 때입니다. - SQL에는 집약 함수(aggregate function)이라고 하는, 다른 함수와 구별해서 부르는 함수가 있습니다. 다음 5개의 함수가 바로 집약 함수입니다. -> COUNT, SUM, AVG, MAX, MIN - 다음과 같은 비집약 테이블이 있다고 합시다. CREATE TABLE NonAggT..

DB 2022.04.18

SQL 레벨업 3장 SQL의 조건 분기

8강 UNION을 사용한 쓸데없이 긴 표현 - UNION을 사용한 조건 분기는 SQL 초보자가 좋아하는 기술 중 하나입니다. 하지만 이런 방법은 성능적인 측면에서 굉장히 큰 단점을 가지고 있습니다. 외부적으로는 하나의 SQL 구문을 실행하는 것처럼 보이지만, 내부적으로는 여러 개의 SELECT 구문을 실행하는 실행 계획으로 해석되기 때문입니다. 따라서 테이블에 접근하는 횟수가 많아져서 I/O 비용이 크게 늘어납니다. -> 따라서 SQL에서 조건 분기를 할 때 UNION을 사용해도 좋을지 여부는 신중히 검토해야 합니다. 아무 생각 없이 무조건 UNION을 사용해서는 안 됩니다. 1. UNION을 사용한 조건 분기와 관련된 간단한 예제 SELECT item_name, year, price_tax_ex AS ..

DB 2022.04.11

SQL 레벨업 1장 DBMS 아키텍쳐

1강 DBMS 아키텍쳐 개요 1) 쿼리 평가 엔진 - 쿼리 평가 엔진은 사용자로부터 입력받은 SQL 구문을 분석하고, 어떤 순서로 기억장치의 데이터에 접근할지를 결정합니다. 이 때, 결정되는 계획을 '실행 계획'이라고 합니다. 한마디로, 쿼리 평가 엔진은 계획을 세우고 실행하는 DBMS의 핵심 기능을 담당하는 모듈입니다. 2) 버퍼 매니저 - DBMS는 버퍼라는 특별한 용도로 사용하는 메모리 영역을 확보해둡니다. 이 메모리 영역을 관리하는 것이 바로 버퍼 매니저입니다. 3) 디스크 용량 매니저 - 디스크 용량 매니저는 어디에 어떻게 데이터를 저장할지를 관리하며, 데이터의 읽고 쓰기를 제어합니다. 4) 트랜잭션 매니저와 락 매니저 - 상용 시스템에서는 수천 명의 사람이 동시에 데이터베이스에 접근해서 사용하..

DB 2022.04.04