DB를 효율적이고 편리하게 관리하는 방법 — 『Head First SQL』

2025. 8. 16. 00:06·도서리뷰/전공

책 한눈에 보기

항목 내용
도서명 Head First SQL
저자 린 베일리
키워드 SQL·데이터베이스·정규화·조인·보안

"잘 설계된 데이터베이스는 빠른 쿼리와 안전한 데이터 관리의 출발점이다."


1. 데이터와 테이블

  • 열(Column)은 하나의 속성 데이터를, 행(Row)은 객체 하나의 속성 집합을 나타냄. 열과 행이 모여 테이블을 구성.
  • 상황에 맞는 데이터 타입을 지정해야 저장 공간을 효율적으로 사용 가능.
  • CREATE TABLE, DROP TABLE로 테이블 생성/삭제 가능.
  • 명령어 부분은 대문자, 식별자/값은 소문자 등 일관된 표기로 가독성 향상.

2. SELECT문

  • SELECT로 테이블의 데이터를 조회.
  • WHERE로 조건을 지정해 필요한 결과만 출력.
  • AND, OR로 조건 결합 가능.
  • BETWEEN, NOT을 사용하여 범위 검색과 부정 조건을 간결하게 표현.

3. DELETE와 UPDATE

  • 마지막 행이 최신 데이터라는 보장은 없음.
  • DELETE에서도 WHERE 절을 똑같이 활용하며, 확신이 서지 않으면 먼저 SELECT로 조건 검증.
  • 잦은 추가/삭제 대신 UPDATE로 값을 갱신하면 최신 상태 유지가 편리.
  • SET 키워드로 수정할 열의 새 값을 지정.

4. 좋은 테이블 설계

  • 어떻게 사용할 데이터인지의 결정이 설계 방향을 좌우.
  • 데이터를 원자적으로 만드는 것이 정규화의 첫 단계.
  • 정규 테이블은 중복을 줄여 저장 공간을 절약하고, 탐색 대상이 줄어 쿼리가 더 빨라짐.
  • 각 레코드는 기본키를 가져야 하며, 기본키는 유일하고 NULL 불가.
  • SHOW CREATE TABLE로 테이블 생성 정의 확인 가능.

5. ALTER

  • ALTER로 테이블 구조 변경 가능.
  • ADD COLUMN으로 열 추가, FIRST/AFTER로 위치 지정.
  • 문자 함수는 저장된 실제 데이터는 바꾸지 않고 조회 결과만 변환.

6. 고급 SELECT문

  • CASE 식으로 조건에 따라 값을 분기해 한 쿼리에서 처리.
  • ORDER BY 정렬, ASC(오름차순)/DESC(내림차순) 지정.
  • GROUP BY로 동일 값 행을 묶어 집계.
  • LIMIT으로 결과 행 수 제한.
  • 서브쿼리 비교 시 ALL(모두와 비교), ANY(하나라도 만족하면 참) 사용.

7. 테이블이 여러 개인 데이터베이스 설계

  • 설계 결함을 쿼리 복잡도로 메우지 말고, 처음부터 스키마를 바르게 설계.
  • 스키마는 데이터와 관계(연결 방식)를 표현.
  • 참조키로 부모/자식 테이블을 구성해 관계를 명확히 함.
  • 정규형은 1정규형뿐 아니라 2정규형, 3정규형도 존재.

8. 조인과 다중 테이블 연산

  • 크로스 조인: 한 테이블의 모든 행 × 다른 테이블의 모든 행.
  • 내부 조인: 조건에 맞는 행만 결합하는 크로스 조인의 부분집합.
  • 동등/비동등 조인: 조건이 =인지 여부에 따라 구분.
  • JOIN으로 두 테이블 데이터를 특정 조건에 따라 결합하여 중복 행을 정리해 출력.

9. 서브쿼리

  • 서브쿼리는 다른 쿼리에 포함된 내부 쿼리.
  • 열의 표현식으로 사용할 때는 하나의 값만 반환 가능.
  • 내부 쿼리가 먼저 실행되고, 외부 쿼리가 그 결과를 바탕으로 실행.

10. 외부 조인, 셀프 조인, 유니온

  • LEFT OUTER JOIN: 왼쪽 테이블의 모든 행을 기준으로 오른쪽과 비교.
  • RIGHT OUTER JOIN: 오른쪽 테이블 기준으로 결합.
  • 셀프 조인: 하나의 테이블을 두 개처럼 참조해 자체 비교.
  • UNION: 두 개 이상 쿼리 결과를 하나로 합침.

11. 제약조건, 뷰, 트랜잭션

  • CHECK 제약조건으로 값의 허용 범위를 제한(WHERE와 유사한 조건식).
  • 뷰(View)는 쿼리를 DB 안에 저장해 결과를 가상 테이블처럼 재사용.
  • 트랜잭션은 전부 수행되거나 전부 취소되어야 함(원자성 보장).

12. 보안

  • GRANT로 사용자 권한 부여, REVOKE로 권한 회수.
  • 역할(Role)을 가진 사용자는 자신의 역할을 다른 사용자에게 부여 가능.
  • 보안은 “할지 말지”의 문제가 아니라 반드시 해야 하는 기본 전제.

💡 Quick Insight

  • 컬럼 타입 선택은 저장 효율과 쿼리 성능 모두에 영향을 준다.
  • WHERE 조합(AND/OR, BETWEEN, NOT)으로 결과 범위를 정확히 좁힐 수 있다.
  • 정규화(원자성→중복 제거)는 용량 절감과 속도 개선을 동시에 달성한다.
  • 조인 방식(내부/외부/셀프/유니온)에 따라 같은 데이터도 결과가 크게 달라진다.
  • 트랜잭션·제약조건·권한 관리는 무결성과 보안을 지키는 기본 장치다.

마무리 생각

정규화와 기본키 설계, 그리고 다양한 SELECT·JOIN·서브쿼리 활용을 통해 효율적이고 신뢰 가능한 데이터베이스를 만들 수 있음을 확인했다.
보안과 권한 관리까지 포함하면, SQL은 단순 조회를 넘어 설계·운영·보호를 아우르는 언어라는 점을 다시 느꼈다.

'도서리뷰 > 전공' 카테고리의 다른 글

폭주하는 ‘가비지컬렉터’를 막고 메모리 누수의 위험에서 IT 세계를 구하라 — 『IT 세계의 괴물들』  (3) 2025.08.16
HTML과 CSS는 상호작용한다 — 『HTML5+CSS3 웹 표준의 정석』  (1) 2025.08.16
짜릿한 PHP와 MySQL의 연계 — 『Head First PHP&MySQL』  (2) 2025.08.15
HTML의 바른 이해와 XHTML이란 무엇인가 — 『Head First HTML & XHTML With CSS』  (2) 2025.08.15
깃&깃 허브 입문 가이드 — 『Do it! 지옥에서 온 문서관리자 깃&깃허브 입문』  (5) 2025.08.15
'도서리뷰/전공' 카테고리의 다른 글
  • 폭주하는 ‘가비지컬렉터’를 막고 메모리 누수의 위험에서 IT 세계를 구하라 — 『IT 세계의 괴물들』
  • HTML과 CSS는 상호작용한다 — 『HTML5+CSS3 웹 표준의 정석』
  • 짜릿한 PHP와 MySQL의 연계 — 『Head First PHP&MySQL』
  • HTML의 바른 이해와 XHTML이란 무엇인가 — 『Head First HTML & XHTML With CSS』
coco dev
coco dev
coffee-code 님의 블로그 입니다.
  • coco dev
    Coffee & Code
    coco dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (25)
      • 도서리뷰 (25)
        • 일반 (7)
        • 전공 (18)
      • 항해99 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크 보안
    라우팅
    계산량 분석
    개미사회 경제 문화 정치
    페로몬 소통
    초개체 사회
    개미 생태계
    css
    알고리즘 입문
    php
    머신러닝
    vlan
    스위치
    DOM
    자바스크립트
    웹표준
    html
    프론트엔드
    방화벽
    Order 표기법
    TCP/IP 기초
    JavaScript
    MySQL
    순차검색 이진검색
    데이터베이스
    BOM
    라우터
    네트워크 계층 구조
    개미 연구
    웹개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
coco dev
DB를 효율적이고 편리하게 관리하는 방법 — 『Head First SQL』
상단으로

티스토리툴바