2주차 학습내용

velvety_o3s·2024년 11월 2일

1. 관계형 데이터베이스 소개

  • 역사적 배경: 관계형 데이터베이스는 1970년대 E.F. Codd 박사에 의해 처음 개념화되었으며, 데이터를 테이블(릴레이션)에 저장하고 관리하는 방식으로 큰 변화를 가져왔습니다.

  • 데이터베이스 유형: 주요 유형에는 계층형(트리 구조), 네트워크형(1대N 및 M대N 관계 가능), 관계형(테이블 기반의 릴레이션) 데이터베이스가 있습니다.

  • 대표적인 관계형 데이터베이스 시스템: Oracle, MS SQL Server, MySQL, Sybase와 같은 DBMS들이 널리 사용됩니다.

2. 기본 데이터베이스 연산

  • 집합 연산: 합집합(UNION)은 중복 없이 두 릴레이션을 합치는 것이며, 교집합(INTERSECTION)은 두 릴레이션 간 공통된 데이터를 찾고, 차집합(DIFFERENCE)은 하나의 릴레이션에만 있는 데이터를 찾는 연산입니다.

  • 관계 연산: 주요 관계 연산으로는 선택(조건에 맞는 행 조회), 투영(특정 속성만 선택), 조인(공통 속성으로 테이블 결합), 나누기 연산 등이 있으며, 테이블 간의 복잡한 관계를 표현하고 관리하는 데 사용됩니다.

3. 테이블 구조의 필수 요소

  • 기본키 (Primary Key): 각 행을 고유하게 식별하며 데이터 무결성을 보장합니다.

  • 외래키 (Foreign Key): 다른 테이블의 기본키를 참조하여 테이블 간의 관계를 만듭니다.

  • 행과 열: 튜플(행)과 속성(열)로 구성되며, 테이블 설계의 기본 구조가 됩니다.

4. SQL의 주요 유형

  • DDL (데이터 정의 언어): 테이블, 인덱스, 뷰 등 데이터베이스 구조를 정의하고 변경하는 데 사용됩니다.

  • DML (데이터 조작 언어): 데이터를 삽입, 수정, 삭제, 조회할 때 사용됩니다.

  • DCL (데이터 제어 언어): 사용자에게 권한을 부여하거나 회수하는 언어로 데이터 접근을 관리합니다.

  • TCL (트랜잭션 제어 언어): 트랜잭션을 관리하여 데이터 일관성을 유지합니다.

5. 트랜잭션의 4대 특성 (ACID)

  • 원자성 (Atomicity): 트랜잭션이 완전히 수행되거나 전혀 수행되지 않아야 함을 의미합니다.

  • 일관성 (Consistency): 트랜잭션 수행 후에도 데이터베이스가 일관성을 유지해야 합니다.

  • 고립성 (Isolation): 트랜잭션 중간 결과가 다른 트랜잭션에 영향을 주지 않아야 합니다.

  • 영속성 (Durability): 트랜잭션이 완료되면 그 결과가 영구적으로 보존되어야 합니다.

6. SQL 실행 순서와 주요 명령어

  • SQL 실행 순서: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY 순으로 실행됩니다.

  • 기본 SELECT 문: SELECT * FROM 테이블명 WHERE 조건식을 통해 데이터를 필터링할 수 있으며, ORDER BY를 사용하여 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 수 있습니다.

  • DISTINCT: 특정 열에 중복된 값을 한 번만 표시하고, ALIAS를 통해 별칭을 붙일 수 있습니다.

7. 형 변환 및 내장형 함수

  • 명시적 형 변환: TO_NUMBER, TO_CHAR, TO_DATE와 같은 형 변환 함수를 통해 데이터 타입을 일치시킵니다.

  • 문자열 함수: SUBSTR, CONCAT, LOWER, UPPER 등의 함수로 문자열을 조작할 수 있습니다.

  • 날짜형 함수: SYSDATE로 오늘 날짜를 반환하거나, EXTRACT로 특정 날짜 요소를 추출합니다.

  • 숫자형 함수: 절대값을 반환하는 ABS, 반올림하는 ROUND, 나머지를 구하는 MOD 등이 있습니다.

8. 조건문: DECODE와 CASE문

  • DECODE: IF문과 비슷한 기능을 하며, 조건이 참일 경우 특정 값을 반환하고 거짓일 경우 다른 값을 반환합니다.

  • CASE 문: 보다 복잡한 조건을 설정할 때 유용하며, IF-THEN-ELSE와 같은 구조를 SQL에서 구현할 수 있습니다.


학습후기

DDL, DML, DCL, TCL로 나누어진 SQL 언어의 종류와 각 트랜잭션의 ACID 특성을 공부하면서, 데이터의 무결성을 보장하는 것이 얼마나 중요한지 새삼 느꼈습니다. 실무에서 데이터를 다룰 때 고려해야 할 요소들이 이렇게 많다는 점이 인상 깊었습니다. 또한 다양한 SQL 함수와 조건문(CASE, DECODE 등)을 익히면서 실제 데이터를 조회하고 변환하는 데 필요한 구체적인 기술을 배웠습니다.

SQL의 기초를 탄탄히 다지다 보니, 데이터 분석과 관리에 대한 자신감도 생겼습니다. 앞으로 더 깊이 있는 데이터 분석을 위해 SQL 실력을 꾸준히 발전시켜 나가고 싶습니다.

profile
데이터분석가를 꿈꾸는 대학생

0개의 댓글