본문 바로가기

데이터베이스

(11)
[GCP Associate Cloud Engineer] 데이터베이스 데이터베이스의 중요한 개념을 이해해보자.만약 런던에 데이터 센터를 배포하고 그 안에 데이터베이스를 두었다고 가정하자. 그리고 이 데이터베이스에 연결하는 애플리케이션이 있을 경우 발생할 수 있는 몇 가지 주요 문제를 살펴보겠다. 데이터 센터가 다운되면 데이터베이스도 사용할 수 없다데이터 센터가 장애를 일으키거나 서버의 저장 장치가 고장 나면 데이터베이스에 접근할 수 없게 된다. 이 경우 애플리케이션도 정상적으로 동작하지 못하게 된다.이를 해결하기 위해 데이터베이스의 정기적인 스냅샷을 생성하여 다른 데이터 센터에 저장하는 방안을 고려할 수 있다. 예를 들어, 동일한 런던 지역의 두 번째 데이터 센터에서 한 시간마다 데이터베이스의 스냅샷을 자동으로 저장하도록 한다.하지만 데이터 센터가 다운되면 데이터베이스가 ..
[데이터 베이스] 데이터 생성 데이터 타입 CHAR 고정 길이 문자열을 저장하는 것으로 CHAR(n)은 n만큼의 문자열의 길이를 지정하고, 저장된 문자열이 n보다 짧을 경우 나머지 공간은 공백으로 채운다. 그리고 n보다 긴 문자열을 입력하면 데이터가 잘려서 입력이 된다. VARCHAR 가변 길이 문자열을 저장하는 것으로 VARCHAR(n)은 최대 n길이의 문자열을 저장할 수 있고, 실제 문자열 길이에 따라 저장 공간을 사용한다. 이때 n보다 긴 문자열을 입력하면 오류가 발생하여 저장이 거부된다. TEXT 길이 제한 없이 큰 문자열을 저장할 수 있어 실제로 사용되는 저장 공간은 문자열의 길이에 따라 달라진다. 일반적으로 매우 큰 텍스트 데이터를 저장하는 데 사용된다. FLOAT4 & FLOAT8 FLOAT4는 4바이트 부동 소수점 수를..
[데이터 베이스] INDEX INDEX 테이블의 데이터 검색 속도를 향상시키기 위해 사용되는 데이터베이스 객체이다. 인덱스는 테이블의 한 열이나 여러 열에 대해 생성할 수 있고, 데이터의 물리적인 저장 순서와는 독립적으로 데이터의 빠른 조회를 도와주는 역할을 한다. 따라서 대규모 데이터를 다루는 환경에서 데이터베이스의 성능 최적화에 중요한 역할을 한다. 그리고 인덱스는 데이터를 정렬된 상태로 유지하여 범위 검색과 정렬된 데이터의 조회가 빠르게 이루어질 수 있도록 한다. CREATE INDEX idx_last_name ON employees (last_name); DROP INDEX idx_last_name; -- 인덱스 삭제 CREATE UNIQUE INDEX idx_last_name -- UNIQUE한 인덱스 생성 ON emplo..
[데이터 베이스] VIEW VIEW는 하나 이상의 테이블에서 가져온 데이터를 기반으로 하는 가상 테이블로 데이터베이스 내에서 실제로 데이터를 저장하지 않고 정의된 SELECT 문에 기반한 결과 세트를 제공한다. VIEW를 사용하면 복잡한 쿼리를 단순하게 표현할 수 있고, 데이터 접근을 제한하여 데이터를 쉽게 관리할 수 있다. VIEW를 사용하면 특정 열이나 행만을 노출시키고 나머지 데이터는 숨길 수 있어 사용자가 접근할 수 있는 데이터를 제한할 수 있다. 그리고 복잡한 쿼리를 VIEW로 정의해두면 쿼리를 직접 실행하지 않고 VIEW를 통해 필요한 데이터에 접근할 수 있고, 한 번 정의를 하면 데이터베이스 내에서 재사용될 수 있어 코드의 중복을 줄이고 일관성을 유지할 수 있다. 다만 VIEW가 하나 이상의 기반 테이블에 의존하기 때..
[데이터 베이스] 조건부 함수 CASE 조건에 따라 다른 값을 선택하거나 반환하기 위해 사용되는 조건부 표현식으로 다른 언어에서의 IF-ELSE 구문의 동작을 SQL 쿼리 내에서 구현할 수 있다. 이를 이용하면 각 행에 대해 다른 값을 출력하거나 특정 조건에 따라 다른 처리를 할 수 있다. SELECT employee_id, name, salary, CASE WHEN salary 7000 THEN 'High' ELSE 'Not specified' END AS salary_range FROM employees; 이와 같이 구문을 작성하면 employees 테이블의 각 직원에 대해 salary 값에 따라 'Low', 'Medium', 'High', 'Not specified' 중 하나의 salary_range 값을 반환한다. 이때 앞의 ..
[데이터 베이스] WINDOW 함수 window function 행과 행 간의 관계를 정의하기 위해 사용되는 함수로 테이블의 행들에 대해 계산을 수행하면서 행들을 개별적으로 그룹화하지 않아 출력을 할 때 각 행에 대한 값들을 유지하는 함수이다. SELECT column, AGG_FUNC(column) OVER ( PARTITION BY column ORDER BY column ) FROM table; 이는 위와 같은 구문의 형태로 사용되는데 AGG_FUNC에 사용할 수 있는 함수는 아래와 같다. 1. 기본 집계 함수 COUNT(): 지정된 column에 NULL 값을 제외한 값의 수를 계산한다. SUM(): 숫자 column의 총합을 계산한다. AVG(): 숫자 column의 평균 값을 계산한다. MIN(): column의 최소값을 찾는다..
[데이터 베이스] UNION & GROUPING SETS & ROLLUP UNION 두 개 이상의 SELECT 문의 결과를 하나의 결과 세트로 결합하는 데 사용되는 연산자이다. 따라서 이는 여러 데이터 소스로부터 관련된 데이터를 수집하여 하나의 쿼리 결과로 통합할 때 유용하게 사용된다. UNION을 사용하면 각 SELECT 문에서 반환된 행들을 모두 포함하는 새로운 결과 테이블을 생성할 수 있다. SELECT name FROM products_a UNION SELECT name FROM products_b; 이와 같이 코드를 실행하면 products_a에 있는 name을 출력한 다음 products_b에 있는 name을 출력한다. 이때 두 쿼리 결과에서 중복된 행을 한 번만 표시하기 때문에 두 출력값이 붙여서 출력이 된다. UNION을 사용할때는 결합하는 각 SELECT 문에..
[데이터 베이스] GROUP BY GROUP BY 특정 열의 값에 기반하여 행들을 그룹화하는 데 사용된다. 이 기능은 COUNT, MAX, MIN, SUM, AVG등과 같은 집계 함수와 함께 사용되어 각 그룹에 대한 통계를 계산할 때 사용된다. GROUP BY는 Split-Apply-Combine전략으로 작동 한다. 이는 데이터 분석 과정을 잘 설명하는 개념으로 데이터를 그룹화하고 각 그룹에 대해 연산을 수행한 다음 결과를 결합하는 과정을 말한다. - Split 전체 데이터 세트를 작은 그룹으로 분할한다. 이 분할은 GROUP BY에 지정된 열의 고유값에 따라 이루어진다. 예를 들어 GROUP BY를 사용해 제품 ID별로 데이터를 그룹화하면, 각 제품 ID에 해당하는 행들이 하나의 그룹을 형성한다. - Apply 분할된 각 그룹에 대해 ..