DB 44

[프로그래머스 LV.4 언어별 개발자 분류하기]

문제 설명SKILLCODES 테이블은 개발자들이 사용하는 프로그래밍 언어에 대한 정보를 담은 테이블입니다. SKILLCODES 테이블의 구조는 다음과 같으며, NAME, CATEGORY, CODE는 각각 스킬의 이름, 스킬의 범주, 스킬의 코드를 의미합니다. 스킬의 코드는 2진수로 표현했을 때 각 bit로 구분될 수 있도록 2의 제곱수로 구성되어 있습니다.NAME TYPE UNIQUE NULLABLENAME VARCHAR(N) Y NCATEGORY VARCHAR(N) N NCODE INTEGER Y NDEVELOPERS 테이블은 개발자들의 프로그래밍 스킬 정보를 담은 테이블입니다. DEVELOPERS 테이블의 구조는 다음과 같으며, ID, ..

DB 2025.08.21

[프로그래머스 LV.4 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기]

문제 설명다음은 어느 자동차 대여 회사에서 대여 중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블과 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 자동차 종류 별 대여 기간 종류 별 할인 정책 정보를 담은 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블 입니다.CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.Column nameTypeNullableCAR_IDINTEGERFALSECAR_TYPEVARCHAR(255)F..

DB 2025.08.20

[프로그래머스 LV.4 자동차 대여 기록 별 대여 금액 구하기]

문제 설명다음은 어느 자동차 대여 회사에서 대여 중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블과 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 자동차 종류 별 대여 기간 종류 별 할인 정책 정보를 담은 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블 입니다.CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.Column nameTypeNullableCAR_IDINTEGERFALSECAR_TYPEVARCHAR(255)F..

DB 2025.08.19

[프로그래머스 LV.3 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기]

문제 설명다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.Column nameTypeNullableHISTORY_IDINTEGERFALSECAR_IDINTEGERFALSESTART_DATEDATEFALSEEND_DATEDATEFALSE문제CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022..

DB 2025.08.18

[RDS] TCL 정리

TCL이란?TCL은 트랜잭션 제어 언어의 약자로, DBMS에서 트랜잭션을 제어하는 역할을 한다.종류는 BEGIN, SAVEPOINT, COMMIT, ROLLBACK이 있다.BEGINBEGIN;트랜잭션을 시작하는 명령어.SAVEPOINTSAVEPOINT {SAVEPOINT 이름};트랜잭션을 진행중인 상태에서, 현재까지의 진행 상황을 저장하는 명령어.COMMITCOMMIT;트랜잭션을 종료하고, 트랜잭션 내부에서 진행된 작업을 DB에 저장하는 명령어.이 작업이 진행될 경우, DBMS의 상태는 되돌릴 수 없다.ROLLBACKROLLBACK;ROLLBACK TO {SAVEPOINT 이름};트랜잭션을 종료하고, 트랜잭션 내부에서 진행된 작업을 트랜잭션 시작 전으로 되돌리는 명령어.세이브포인트가 존재할 경우, 지정한..

DB 2025.01.23

[RDS] DDL 정리

DDL이란?Data Definition Language의 약자로, 직역하면 '데이터 정의 언어'라는 뜻이다.데이터베이스의 객체인 SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하는 데에 쓰인다.종류로는 create(생성), alter(수정), drop(삭제), truncate(데이터만 삭제) 4가지가 있다.데이터베이스의 구조를 다루기 때문에, 자동으로 commit 되어 데이터베이스에 바로 적용된다.createCREATE { SCHEMA | DOMAIN | TABLE | VIEW | INDEX } { 객체 이름 } ( { 객체의 구성 요소 정의 } );# 예시# SCHEMACREATE SCHEMA c001;# DOMAINCREATE DOMAIN domain_phone_num AS VA..

DB 2025.01.22

[Oracle]쿼리 변환에 대해서

쿼리 변환이란?쿼리 옵티마이저가 SQL을 분석해 같은 결과를 반환하면서, 더 나은 성능이 기대되는 형태로 최적화하는 것.비용 기반 옵티마이저에서, Query Transformer 서브 엔진이 해당 과정을 담당한다.쿼리 변환의 종류휴리스틱 쿼리 변환결과가 보장된다면 무조건 쿼리 변환을 수행. 항상 더 나은 성능을 보일 것이라 오라클 엔진이 판단.서브쿼리 unnesting(10g부터 비용 기반)뷰 merging(10g부터 비용 기반)조건절 pushing(10g부터 비용 기반)조건절 이행공통 표현식 제거outer 조인을 inner 조인으로 변환비용 기반 쿼리 변환변환된 쿼리의 비용이 더 낮을 때만 사용하고, 아닐 경우 원본 쿼리를 그대로 두고 최적화를 수행실체화 뷰 쿼리로 재작성star 변환outer 조인 뷰..

DB 2024.09.03

[SQLAlchemy] FastAPI에서 테이블 선언은 어떻게 할까?

테이블 스키마를 만들어 보자.이전 글에서,Base = declarative_base()처럼 Base를 선언했다. 이걸 설명하면서, 테이블의 기본이 된다고 했는데, 서버에서 DB가 어떤 테이블 구조를 가지고 있는 지 파악하기 위해 테이블 클래스에 Base를 상속받아 사용한다. 이를 통해서, 테이블 클래스가 SQLAlchemy와 연결되어 안정적인 사용을 가능하게 한다.그래서, 테이블 클래스는 어떻게 선언하지?from db import Basefrom sqlalchemy import Column, Integer, Stringclass TableName(Base): __tablename__ = 'table_name' id = Column(Integer, primary_key=True) col_1..

DB 2024.08.30

[SQLAlchemy] FastAPI에서는 어떻게 DB와 연결할까?

SQLAlchemy를 지원하는 FastAPIFastAPI는 SQLAlchemy를 권장 ORM으로 설정하고 있다. 나는 FastAPI로 서버 개발을 시작하고, 더 많은 데이터를 안전하고 쉽게 관리하기 위해, DB와 연결을 시도했다. 이 글에서는, 그 일련의 과정을 정리해 보려고 한다.lib 설치 사용하는 라이브러리는, 당연하게도 fastapi와 sqlalchemy이다. 그 외에, 각 DB마다 비동기 연결을 위한 aio 라이브러리를 추가로 설치해 주어야 한다.DB 연결 설정하기from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmakerS..

DB 2024.08.06

[프로그래머스 LV.2 DATETIME에서 DATE로 형 변환]

문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. Column name Type Nullable ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_UPON_INTAKE VAR..

DB 2024.02.07