책 한눈에 보기
항목 | 내용 |
---|---|
도서명 | 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 |