목록2026/04/18 (5)
ki-sd 님의 블로그
DB의 골격을 직접 설계하고 제약조건을 걸어 데이터의 오염을 막은 뒤, 웹 애플리케이션과 연동될 게시판 데이터의 CRUD 로직과 페이징 처리를 구현했다.1. DDL과 5대 무결성 제약조건 (Constraints)CREATE, ALTER, DROP 명령어로 테이블 스키마를 생성하고 수정했다.데이터베이스는 애플리케이션의 버그나 사용자의 악의적인 조작으로부터 스스로를 보호해야 한다. 이를 위해 테이블 생성 단계에서 5대 제약조건을 걸었다.PRIMARY KEY (PK): 중복 불가 + NULL 불가 (데이터 식별)FOREIGN KEY (FK): 타 테이블의 PK 참조 (관계 유지)UNIQUE (UK): 중복 불가 (예: 이메일, 전화번호)NOT NULL (NN): 비워둘 수 없음CHECK (CK): 지정된 범위..
정규화(Normalization) 원칙에 의해 여러 테이블로 쪼개져 있는 데이터를 다시 하나로 합쳐서 유의미한 정보로 만들어내는 SQL의 꽃, JOIN과 서브쿼리를 마스터했다. 1. JOIN의 메커니즘과 종류오라클 vs ANSI 문법: 오라클 전용 조인 문법(WHERE 절에 조인 조건 명시)과 글로벌 표준인 ANSI 문법(JOIN ... ON)의 구조적 차이를 비교하고, 가독성이 뛰어난 ANSI 문법을 위주로 훈련했다.INNER JOIN: 두 테이블 간에 공통된(일치하는) 데이터만 연결하여 교집합을 추출한다.OUTER JOIN (LEFT/RIGHT): 부서가 배정되지 않은 신입사원처럼, 연결되는 값이 없더라도(NULL) 기준이 되는 테이블의 데이터를 누락 없이 모두 보존하여 출력해야 할 때 사용한다.SE..
오라클이 제공하는 강력한 내장 함수 라이브러리를 통해 원시 데이터를 가공하고, 비즈니스 인사이트를 도출하기 위한 통계(그룹화) 로직을 설계했다. 1. 단일 행 함수(Single-Row Function)의 활용문자/숫자/날짜: SUBSTR(문자열 자르기), UPPER(대문자 변환), ROUND(반올림), SYSDATE(현재 서버 시간) 등을 활용해 출력 포맷을 자유자재로 조작했다.형변환과 NULL 처리: 날짜나 숫자를 원하는 포맷의 문자로 바꾸는 TO_CHAR의 위력을 실습했다. 또한 NULL 데이터와 산술 연산을 하면 결과가 무조건 NULL이 되는 오류를 막기 위해, NVL(컬럼, 대체값) 함수를 씌워 0 등 다른 값으로 치환하는 필수 방어 로직을 습득했다.조건 분기: 자바의 switch나 if문 역할을..
수백만 건의 데이터 중 내가 원하는 데이터만 정확하고 빠르게 골라내고, 가독성 좋게 출력하는 데이터 추출 기술을 고도화했다. 1. WHERE 절의 연산자와 패턴 매칭산술, 비교 연산자 외에도 AND, OR, NOT 등의 논리 연산자 우선순위를 제어하며 복합 조건을 구성했다.LIKE 연산자: %(0개 이상의 문자)와 _(단일 문자) 와일드카드를 결합하여 "김씨 성을 가진 3글자 이름" 같은 패턴 검색 기법을 실습했다.IN과 BETWEEN: A OR B OR C를 IN (A, B, C)로 축약하고, 대소 비교를 BETWEEN A AND B로 작성하여 쿼리의 가독성과 파싱 효율을 높이는 작성법을 적용했다.2. NULL 데이터의 특수성 처리DB에서 NULL은 '0'이나 '공백'이 아니라 '값이 존재하지 않음(U..
단순히 쿼리를 치는 것을 넘어, 관계형 데이터베이스 관리 시스템(RDBMS)이 왜 탄생했고 어떻게 동작하는지 이론적 토대를 단단히 다졌다. 1. 파일 시스템 vs DBMS과거의 파일 시스템은 데이터가 중복 저장되고, 여러 사용자가 동시에 접근할 때 동시성 제어가 불가능하다는 치명적인 단점이 있었다. 이를 해결하기 위해 무결성 유지, 트랜잭션 관리, 백업 및 복구를 중앙에서 통제하는 DBMS의 필요성을 분석했다.2. 관계형 모델(Relational Model)의 구성 요소테이블(Table/Relation): 2차원의 표 형태로 데이터를 구조화한다.컬럼(Column/Attribute): 데이터의 속성(이름, 나이 등)을 나타내며, 엄격한 데이터 타입(Domain)을 가진다.튜플(Tuple/Row): 각 속성..
