목차
제1부. 데이터베이스 개요
   1.1. 데이터베이스의 개요 ... 14
   1.2. 모델의 종류 ... 19
      1.2.1. 계층 데이터 모델(Hierarchical Data Model) ... 19
      1.2.2. 망 데이터 모델(Network Data Model) ... 20
      1.2.3. 관계 데이터 모델(Relational Data Model) ... 20
      1.2.4. 객체지향 데이터 모델(Object-oriented Data Model) ... 20
      1.2.5. 객체관계 데이터 모델(Object Relational Data Model) ... 21
   1.3. 관계형 모델과 객체 지향형 데이터베이스 ... 21
      1.3.1. 관계형 모델 ... 21
      1.3.2. 관계형 모델의 용어 ... 22
      1.3.3. 테이블(Table), 열(Column), 행(Row) ... 23
      1.3.4. 무결성 규칙 ... 23
      1.3.5. RDBMS 구성 요소들 ... 25
   1.4. SQL이란 무엇인가? ... 27
      1.4.1. SQL의 표준화 ... 27
   1.5. 본서의 구성 ... 28
제2부. MySQL 설치와 기본 사용법
   2.1. MySQL의 특징 ... 32
   2.2. MySQL 설치 ... 33
      2.2.1. MySQL 설치 전 점검사항 ... 33
      2.2.2. 윈도우에서 MySQL 설치하기 ... 36
      2.2.3. MySQL 설치 후 확인하기 ... 41
      2.2.4. MySQL 한글 설정하기 ... 43
   2.3. MySQL 기본 사용법 ... 44
      2.3.1. 사용자 계정 추가하기 ... 44
      2.3.2. 데이터베이스 생성, 수정, 삭제 ... 47
      2.3.3. 테이블 생성, 수정, 삭제 ... 48
      2.3.4. 테이블 삽입 ... 51
      2.3.5. 데이터 검색 ... 52
      2.3.6. 입력 데이터 변경 및 삭제 ... 54
   2.4. MySQL의 데이터베이스 관리 툴 ... 56
제3부. 학사 관리 예제 데이터베이스
   3.1. 학사 데이터베이스의 해설 ... 58
   3.2. 테이블의 내용 ... 62
   3.3. 무결성 규칙 ... 66
제4부. 학사관리 예제 만들기
   4.1. MySQL 데이터베이스 생성 ... 70
      4.1.1. 데이터베이스 및 테이블 만들기 ... 70
      4.1.2. Commit/Rollback 작업 ... 72
      4.1.3. Savepoint/Truncate 작업 ... 75
   4.2. SQL 데이터형(Data Type) ... 77
      4.2.1. SQL 데이터형 ... 77
      4.2.2. NULL 값 ... 80
   4.3. 학사 관리 예제 만들기 ... 80
      4.3.1. 데이터베이스 및 사용자 계정 생성 ... 80
      4.3.2. 테이블 생성 ... 82
      4.3.3. 테이블 데이터 삽입 ... 88
      4.3.4. 질의(Query) 테이블 ... 90
      4.3.5. 행의 갱신과 삭제 ... 93
      4.3.6. 뷰(Views) ... 95
   4.4. 보안 설정 ... 98
      4.4.1. ROOT 사용자의 데이터 보완 ... 98
      4.4.2. 사용자 생성 및 권한부여 ... 99
제5부. 테이블 생성
   5.1. MySQL RDBMS의 제한 조건 ... 108
   5.2. 새로운 테이블의 생성 ... 109
   5.3. 기본 키 ... 111
   5.4. 테이블 명세와 소유자 ... 112
   5.5. 테이블과 열의 이름 ... 113
   5.6. 테이블의 삭제 ... 114
   5.7. 테이블의 구조 변경(열의 추가) ... 114
   5.8. 테이블 구조의 변경 ... 115
   5.9. 테이블 복사 ... 116
   5.10. 테이블 이름 변경 ... 118
   5.11. 테이블과 데이터 사전 ... 118
제6부. SELECT 명령문과 공통 요소
   6.1. 리터럴(Literal) ... 129
      6.1.1. 정수 리터럴 ... 130
      6.1.2. 십진 리터럴 ... 130
      6.1.3. 부동 소수점 리터럴 ... 130
      6.1.4. 영수치 리터럴 ... 131
      6.1.5. 날짜 리터럴 ... 132
   6.2. 수식 ... 132
      6.2.1. 수치 수식과 숫자 처리 함수 ... 133
      6.2.2. 영수치 수식 ... 135
      6.2.3. 숫자 처리 함수 ... 136
   6.3. 스칼라 함수 ... 140
   6.4. 날짜 및 시간 처리 ... 144
      6.4.1. 날짜 및 시간 관련 칼럼 타입 ... 144
      6.4.2. 날자 및 시간 관련 함수 ... 144
   6.5. 데이터형 변환 함수 ... 148
   6.6. 사용자 정의 변수 ... 151
   6.7. 시스템변수 ... 152
제7부. SELECT 명령문의 절(Clause)
   7.1. 서론 ... 158
   7.2. SELECT 명령문 모든 절을 포함한 수행 과정 ... 159
      7.2.1. FROM 절 ... 162
      7.2.2. WHERE 절 ... 163
      7.2.3. GROUP BY 절 ... 163
      7.2.4. HAVING 절 ... 164
      7.2.5. SELECT 절 ... 165
      7.2.6. ORDER BY 절 ... 166
   7.3. SELECT 명령문 일부 절을 포함한 수행 과정 ... 166
      7.3.1. FROM 절 ... 167
      7.3.2. WHERE 절 ... 168
      7.3.3. GROUP BY 절 ... 168
      7.3.4. HAVING 절 ... 168
      7.3.5. SELECT 절 ... 168
      7.3.6. ORDER BY 절 ... 169
제8부. SELECT 명령문 : FROM 절
   8.1. FROM 절에서 테이블 명세 ... 172
   8.2. 열 명세 ... 173
   8.3. 다중 테이블 명세 ... 174
   8.4. 가명(Alias) ... 177
   8.5. FROM 절의 다양한 예제 ... 178
   8.6. 반드시 가명을 사용해야 하는 경우 ... 184
제9부. SELECT 명령문 : WHERE 절
   9.1. 개요 ... 188
   9.2. 관계 연산자를 사용하는 조건 ... 189
   9.3. AND, OR, NOT을 사용한 다중 조건 ... 193
   9.4. BETWEEN 연산자 ... 197
   9.5. IN 연산자 ... 199
   9.6. LIKE 연산자 ... 201
   9.7. NULL 연산자 ... 204
   9.8. 부속 질의어에서 IN 연산자 ... 206
   9.9. 부속 질의어에서 관계 연산자 ... 212
   9.10. ALL과 ANY 연산자 ... 214
   9.11. EXISTS 연산자 ... 218
   9.12. 부정 조건 ... 222
제10부. SELECT 명령문 : 통계함수
   10.1. 모든 열의 선택(*) ... 232
   10.2. SELECT 절의 수식 ... 234
   10.3. DISTINCT을 사용한 중복된 행의 제거 ... 235
   10.4. 언제 2개의 행이 동등한가? ... 238
   10.5. 통계 함수의 소개 ... 240
   10.6. COUNT 함수 ... 241
   10.7. MAX와 MIN 함수 ... 244
   10.8. SUM 함수 ... 247
   10.9. AVG 함수 ... 248
   10.10. STDDEV와 VARIANCE 함수 ... 251
   10.11. 통계 함수를 사용하는 일반적인 규칙 ... 251
   10.12. 열의 표제어 사용 ... 253
제11부. GROUP BY와 HAVING
   11.1. 열의 그룹화 ... 259
   11.2. 2개 이상의 열에 대한 그룹화 ... 261
   11.3. 수식의 그룹화 ... 265
   11.4. NULL 값의 그룹화 ... 266
   11.5. GROUP BY와 DISTINCT ... 267
   11.6. HAVING 절의 소개 ... 267
   11.7. HAVING 절의 예제 ... 268
   11.8. HAVING 절에 대한 일반적인 규칙 ... 270
제12부. SELECT 명령문 : ORDER BY 절
   12.1. 단일 열 정렬 ... 276
   12.2. 순서 번호로 정렬 ... 277
   12.3. 오름차순과 내림차순 정렬 ... 278
   12.4. 하나 이상의 행 정렬 ... 279
   12.5. 수식과 함수의 정렬 ... 282
   12.6. NULL 값의 정렬 ... 283
제13부. SELECT 명령문의 조합
   13.1. 서론 ... 288
   13.2. UNION의 조합 ... 289
   13.3. UNION을 사용하기 위한 규칙 ... 293
   13.4. UNION ALL의 조합 ... 294
   13.5. 집합 연산자와 NULL 값 ... 295
제14부. 부속 질의어
   14.1. 부속 질의어 규칙 ... 300
   14.2. 열의 범위 ... 301
   14.3. 상호 관련 부속 질의어의 예제 ... 306
   14.4. 복합키의 사용 ... 313
제15부. SELECT 명령문 : 조인(JOIN)
   15.1. 조인 ... 320
   15.2. 조인에서 사용되는 용어 ... 321
   15.3. 조인 열 간의 관계성 ... 324
      15.3.1. CROSS JOIN ... 324
      15.3.2. INNER EQUI JOIN ... 326
      15.3.3. OUTER EQUI-JOIN ... 329
      15.3.4. FULL OUTER JOIN ... 332
      15.3.5. Sell Join ... 335
      15.3.6. 조인 열 모집단의 분해 ... 338
   15.4. 조인 조건이 없는 조인 ... 339
   15.5. 통계 함수와 조인 ... 340
제16부. 테이블의 변경
   16.1. 새로운 행 삽입 ... 347
   16.2. 테이블에서 테이블로 행을 복사 ... 348
   16.3. 행 값의 변경 ... 352
   16.4. 테이블에서 행 삭제 ... 366
제17부. 인덱스의 사용
   17.1. 인덱스 작업 ... 360
   17.2. SELECT 명령문의 단계적 처리 ... 363
   17.3. 인덱스의 생성과 삭제 ... 367
   17.4. MySQL과 인덱스 ... 368
   17.5. 인덱스를 위한 열의 선택 ... 369
      17.5.1. 후보 키에 대한 유일한 인덱스 ... 370
      17.5.2. 외래 키에 대한 인덱스 ... 370
      17.5.3. 선택 표준에 포함된 열에 대한 인덱스 ... 370
      17.5.4. 정렬에 사용된 열에 대한 인덱스 ... 372
      17.5.5. 그룹화에 사용된 열에 대한 인덱스 ... 372
      17.5.6. DISTINCT에 대한 인덱스 ... 372
      17.5.7. 인덱스를 정의하지 않을 때 ... 372
제18부. 뷰(View)
   18.1. 뷰의 생성 ... 376
   18.2. 뷰의 열 이름 ... 381
   18.3. 뷰의 변경 : WITH CHECK OPTION ... 383
   18.4. 뷰 테이블의 정보 ... 386
   18.5. 뷰 테이블 통계함수 사용 ... 388
      18.5.1. WHERE 절에 통계함수 사용 ... 388
      18.5.2. SELECT 절에 통계함수 사용 ... 389
      18.5.3. GROUP BY절을 이용한 VIEW 테이블과 다른 테이블과 JOIN ... 389
      18.5.4. WHERE 절에 다른 테이블로 부속질의어로 사용하는 경우 ... 390
      18.5.5. ORDER BY 절을 사용하는 경우 ... 390
      18.5.6. 집합연산자를 사용하는 경우 ... 391
      18.5.7. HAVING절을 사용하는 경우 ... 392
   18.6. 뷰 테이블의 제약 사항 ... 393
   18.7. 뷰 명령문의 처리 ... 393
   18.8. 뷰의 응용 분야 ... 395
제19부. 트랜잭션(Transaction)과 락(LOCK)
   19.1. 트랜잭션이란? ... 402
   19.2. MySQL에서의 트랜잭션 ... 403
      19.2.1. 트랜잭션의 사용 ... 404
   19.3. 락(LOCK) ... 406
제20부. SQL 명령문의 최적화
   20.1. OR 연산자의 사용을 피하라 ... 410
   20.2. 불필요한 UNION 연산자의 사용을 피하라 ... 415
   20.3. NOT 연산자를 피하라 ... 417
   20.4. 조건에 열을 분리하라 ... 418
   20.5. BETWEEN 연산자를 사용하라 ... 419
   20.6. LIKE 연산자의 특별한 형식을 피하라 ... 420
   20.7. 조인에 여분의 조건을 추가하라 ... 421
   20.8. HAVING 절을 피하라 ... 421
   20.9. 가능한 작은 SELECT 절을 만들어야 한다 ... 422
   20.10. DISTINCT 사용을 피하라 ... 423
   20.11. 자료형의 변환을 피해야 한다 ... 424
   20.12. 가장 큰 테이블을 마지막에 위치하라 ... 424
   20.13. ANY와 ALL 연산자의 사용을 피하라 ... 425
   20.14. 미래의 최적화기 ... 427
   20.15. 디스크 최적화 ... 427
   20.16. 운영체제 최적화 ... 428
제21부. 데이터베이스 설계 지침
   21.1. 테이블과 열에 대한 지침 ... 433
   21.2. 중복 데이터의 포함 ... 436
   21.3. 열에 대한 자료형의 선택 ... 439
   21.4. 언제 NOT NULL을 사용해야 하는가? ... 440
제22부. MySQL 유틸리티
   22.1. myisamchk ... 444
   22.2. myisamlog ... 451
   22.3. myisampack ... 451
   22.4. mysql ... 452
   22.5. mysqlaccess ... 453
   22.6. mysqladmin ... 453
   22.7. mysqlbinlog ... 453
   22.8. mysqlcheck ... 454
   22.9. mysqldump ... 455
   22.10. mysqlhotcopy ... 456
   22.11. mysqlimport ... 456
   22.12. mysqlshow ... 456
   22.13. mysql_zap ... 457
   22.14. perror ... 457
   22.15. replace ... 459
제23부. Trigger
   23.1. CREATE TRIGGER 구문 ... 462
   23.2. DROP TRIGGER 구문 ... 466
   23.3. 트리거 사용하기 ... 466
부록
   1. BNF ... 472
   2. SQL 예약어와 ASCII 문자 집합 ... 474
      2.1. SQL 1 표준에약어 ... 475
      2.2. SQL 명령문의 구문 정의 ... 476
      2.3. Definitions of SQL statement ... 478
      2.4. Common elements ... 482
      2.5. ASCII 문자 집합 ... 488
      2.6. 학사데이터베이스 데이터 입력 명령 ... 494
닫기