data 13

[데이터베이스] 06. 데이터베이스 언어 SQL

관계 데이터베이스에서 데이터를 다루려면 결국 사람이 타이핑할 수 있는 언어가 필요하다. 그 표준 언어가 SQL(Structured Query Language)이다.SQL은 데이터베이스를 다루는 사람이라면 반드시 손에 익혀야 하는 도구다. 오늘은 SQL의 전체 지도(세 가지 분류)와 핵심 문장들을 정리했다.여기서는 "SQL이 어떻게 구조화되어 있는가"라는 큰 틀에 집중한다. 실제 환경에서 함수·조인·서브쿼리를 손으로 다루는 실습은 범위를 벗어나므로 따로 다룬다.1. SQL의 분류모든 SQL 문장은 역할에 따라 셋 중 하나에 속한다.분류대표 명령역할대상DDL (Data Definition Language, 정의어)CREATE, ALTER, DROP테이블·스키마 구조 정의틀(스키마)DML (Data Manip..

data/database 2026.09.01

[데이터베이스] 05. 관계 데이터 연산

데이터를 표(릴레이션)로 저장했으니, 이제 그 표에서 원하는 데이터를 꺼내는 방법을 정의할 차례다.관계 데이터 연산은 "릴레이션을 입력받아 릴레이션을 출력하는" 연산들의 체계다. 다소 수학적이고 추상적이라 처음엔 "이걸 왜 배우나" 싶었다.그런데 우리가 매일 쓰는 SQL의 SELECT가 사실 이 연산들이 옷을 갈아입은 모습이었다. 이 토대를 알아두니 SQL이 내부에서 무슨 일을 하는지가 보였다.1. 관계 대수 vs 관계 해석원하는 데이터를 표현하는 방식에는 두 갈래가 있다. 이 구분은 프로그래밍의 "명령형 vs 선언형"과 정확히 같다.구분성격표현하는 것관계 대수(Relational Algebra)절차적어떻게(How) 얻을지, 즉 연산 순서를 명시관계 해석(Relational Calculus)비절차적무엇(..

data/database 2026.08.25

[데이터베이스] 04. 관계 데이터 모델

관계 데이터 모델은 데이터를 표(테이블)의 형태로 다룬다. 이 단순한 아이디어가 수십 년째 데이터베이스 세계를 지배하고 있다.단순해 보이는 표 뒤에는 정밀하게 정의된 용어와, 데이터가 망가지지 않게 지키는 규칙(무결성)이 있다. 오늘은 그 어휘와 규칙을 정리했다. 데이터베이스를 다루는 거의 모든 이야기가 결국 이 용어들 위에서 이뤄지기 때문이다.1. 릴레이션의 구성관계 모델에서는 표를 릴레이션(relation)이라 부르고, 행과 열에도 고유한 이름을 붙인다. 일상의 "표/행/열" 용어와 짝지어 외워두니 편했다.용어의미일상 표현릴레이션(relation)행과 열로 구성된 표테이블속성(attribute)릴레이션의 열컬럼(세로)튜플(tuple)릴레이션의 행로우(가로)도메인(domain)한 속성이 가질 수 있는 ..

data/database 2026.08.18

[데이터베이스실습] 07. 집합 연산자와 조인

여러 테이블(또는 여러 조회 결과)을 하나로 합치는 방법은 크게 두 가지다. 집합 연산자는 결과를 위아래로(세로로) 잇고, 조인은 좌우로(가로로) 잇는다. 이 둘의 방향 차이를 먼저 잡아두니 헷갈리지 않았다.특히 조인은 관계형 데이터베이스의 진짜 위력이 드러나는 지점이다. 정규화로 잘게 나눠둔 테이블들을 다시 의미 있게 엮어주는 것이 바로 조인이기 때문이다.1. 집합 연산자두 SELECT 결과를 세로로 잇는다. 두 SELECT의 열 개수와 자료형이 같아야 한다.연산자의미UNION합집합, 중복 제거UNION ALL합집합, 중복도 모두 출력MINUS차집합 (첫 결과에서 두 번째 결과를 뺌)INTERSECT교집합 (양쪽에 다 있는 행만)SELECT empno, ename, deptno FROM EMP WHER..

data/oracle 2026.08.15

[데이터베이스실습] 06. 다중행 함수와 그룹화

지금까지의 함수는 한 행을 받아 한 결과를 내는 단일행 함수였다. 이번에 다룬 다중행 함수(집계 함수)는 여러 행을 묶어 하나의 값으로 요약한다. "부서별 평균 급여", "직책별 인원 수" 같은 통계가 모두 여기서 나온다.그리고 이 집계를 "무엇을 기준으로 묶을지" 정하는 것이 GROUP BY, 묶은 결과에 조건을 거는 것이 HAVING이다.1. 다중행 함수 (집계 함수)함수설명SUM합계COUNT개수MAX최댓값MIN최솟값AVG평균SELECT SUM(sal) FROM emp; -- 급여 합계SELECT COUNT(*) FROM emp WHERE deptno=30; -- 30번 부서 인원SELECT MAX(sal), MIN(sal) FROM emp WHERE deptno=..

data/oracle 2026.08.06

[데이터베이스실습] 05. 오라클 함수 - 숫자·날짜·변환

문자 함수에 이어, 이번에는 숫자·날짜를 다루는 함수와 자료형을 서로 바꾸는 변환 함수, 그리고 NULL과 조건을 처리하는 함수를 정리했다. 실무 쿼리에서 "보기 좋은 형태로 가공하는" 일의 대부분이 여기서 이뤄진다고 한다.1. 숫자 함수함수설명ROUND(숫자, 위치)특정 위치에서 반올림 (생략 시 소수 첫째 자리)TRUNC(숫자, 위치)특정 위치에서 버림 (생략 시 소수 첫째 자리)CEIL(숫자)올림 (그보다 크거나 같은 가장 작은 정수)FLOOR(숫자)내림 (그보다 작거나 같은 가장 큰 정수)MOD(숫자, 나눌수)나눈 나머지SELECT ROUND(1234.5678, 2), -- 1234.57 TRUNC(1234.5678, 2), -- 1234.56 ROUND(1234.567,..

data/oracle 2026.07.30

[데이터베이스실습] 04. 오라클 함수 - 문자 함수

연산자만으로는 다루기 어려운 데이터 가공을, 오라클은 다양한 내장 함수(built-in function)로 지원한다. 함수는 처리 단위에 따라 두 갈래로 나뉜다.단일행 함수(single-row function): 한 행마다 하나의 결과. 문자·숫자·날짜 함수가 여기 속한다.다중행 함수(multiple-row function): 여러 행을 묶어 하나의 결과. COUNT·SUM 같은 집계 함수다.오늘은 그중 가장 자주 쓰는 문자 함수들을 예제와 함께 정리했다.DUAL 테이블로 함수 테스트하기함수 결과만 가볍게 확인하고 싶을 때, EMP 같은 실제 테이블에 대고 조회하면 14행이 똑같이 반복되어 번거롭다. 이럴 때 오라클이 제공하는 행 하나짜리 더미 테이블 DUAL을 쓰면 결과가 딱 한 줄 나온다.SELECT..

data/oracle 2026.07.23

[데이터베이스실습] 03. SELECT - WHERE 조건

SELECT가 데이터를 꺼내는 명령이라면, WHERE는 그중 원하는 행만 걸러내는 조건이다. 실무 쿼리의 난이도는 사실상 이 WHERE 절을 얼마나 정확히 쓰느냐에 달려 있다고 한다.이번엔 비교·논리 연산자부터 IN·BETWEEN·LIKE, 그리고 내가 가장 많이 헤맨 NULL 처리까지, 조건을 거는 도구들을 예제와 함께 익혔다.1. WHERE 절SELECT [열] FROM [테이블] WHERE [조건식];조건식이 참(TRUE)인 행만 결과에 포함된다.SELECT * FROM EMP WHERE DEPTNO = 30; -- 30번 부서 사원만SELECT * FROM EMP WHERE SAL >= 3000; -- 급여 3000 이상문자열은 작은따옴표, 대소문자 구분문자 데이터는 반드시 작은따옴표로 감..

data/oracle 2026.07.16

[데이터베이스] 03. 데이터 모델링 (개체-관계 모델)

테이블을 곧장 만들기 전에, "현실 세계의 무엇을 어떻게 데이터로 옮길 것인가"를 먼저 설계해야 한다. 이 설계 과정이 데이터 모델링이고, 그 첫 단추가 개체-관계(ER, Entity-Relationship) 모델이다.코드를 짜기 전에 그림을 그리는 단계라 처음엔 가볍게 봤는데, 여기서 구조를 잘못 잡으면 나중에 테이블·쿼리·정규화가 전부 어긋난다는 걸 알고 생각이 달라졌다. 오늘은 현실을 데이터로 번역하는 이 첫 단계를 정리했다.1. 데이터 모델링과 데이터 모델모델링은 추상도를 단계적으로 낮추며 진행된다. 현실에서 개념으로, 다시 논리로 내려가는 순서다. 단계데이터 모델결과물개념적개체-관계 모델(ER)E-R 다이어그램(ERD)논리적관계 데이터 모델릴레이션(테이블) 스키마 이 글은 첫 단계인 개념적 모델..

data/database 2026.07.09

[데이터베이스실습] 02. 테이블 기초와 SELECT

오늘부터 실제로 데이터를 꺼내봤다. SQL에서 데이터 조회를 담당하는 명령은 SELECT 하나인데, 이 한 명령어에 붙는 절(clause)들의 조합으로 거의 모든 조회가 이뤄진다.이번엔 실습 환경(SCOTT 계정)을 살펴보고, SELECT의 기본형부터 중복 제거·연산·별칭·정렬까지 손으로 따라가 봤다. 앞으로의 모든 실습이 이 SELECT 위에 쌓이니, 여기서 감을 확실히 잡아두는 게 좋겠다 싶었다.1. 실습용 계정과 테이블실습 환경DBMS → Oracle 11g Enterprise Edition실습 계정 → ID: SCOTT / PW: tigerDBeaver나 SQL*Plus로 접속해 DESC 테이블명; 으로 테이블 구조를 확인할 수 있다. SCOTT 계정에는 오라클 학습에서 수십 년간 표준으로 쓰여 ..

data/oracle 2026.07.05