저자 서문 ... 3 이 책의 특징 ... 5 학습 로드맵 ... 6 Part 1 SQL Server 2005 설치 및 전체과정 미리 실습 1장. SQL Server 2005 소개 01. SQL Server의 변천사 ... 25 02. SQL Server 2005에 새롭게 추가되거나 향상된 내용 ... 26 엔터프라이즈 데이터 관리 ... 26 개발자 생산성 ... 29 기타 추가된 사항 ... 30 03. SQL Server 2005의 에디션 및 기능 비교 ... 31 2장. SQL Server 2005 설치 01. SQL Server 2005 설치 전 준비사항 ... 35 하드웨어 요구사항 ... 35 소프트웨어 요구사항 ... 35 에디션별 설치 가능한 운영체제 ... 36 02. SQL Server 2005 설치 실습 ... 37 실습1 SQL Server 2005 Evaluation Edition(평가판)을 설치하자 ... 38 03. 추가 인스턴스 설치 ... 52 인스턴스의 개념 ... 52 추가 인스턴스 설치 ... 53 실습2 SQL Server 인스턴스를 추가로 설치하자 ... 53 04. SQL Server 2005 제거 ... 59 실습3 추가로 설치한 '컴퓨터 이름\THIRD' 인스턴스를 제거하자 ... 59 05. SQL Server 2005 한번에 설치 ... 60 실습4 삭제했던 '컴퓨터 이름\THIRD' 인스턴스를 한번에 재설치하자 ... 61 06. SQL Server 2005 서비스팩 설치 ... 62 실습5 SQL Server 2005 서비스팩1을 설치하자 ... 63 07. 설치 후에 확인할 사항 ... 66 실습6 기본 인스턴스를 제외한 2개의 추가 인스턴스는 가동되지 않도록 설정하자 ... 67 08. SQL Server 2000 또는 7.0 버전에서 업그레이드 ... 68 이것만은 알고 갑시다 ... 70 3장. 데이터베이스 구축의 전체과정 미리 실습하기 01. 분석과 설계 그리고 모델링 ... 73 분석과 설계 ... 73 데이터베이스 모델링과 필수 용어 ... 73 02. SQL Server 2005를 이용한 데이터베이스 구축 절차 ... 75 데이터베이스 생성 ... 76 실습1 쇼핑몰 데이터베이스(ShoppingDB)를 생성하자 ... 76 테이블 생성 ... 78 실습2 테이블을 생성하자 ... 78 데이터 입력 ... 80 실습3 행 데이터를 입력하자 ... 81 데이터 활용 ... 82 실습4 SELECT 문을 활용해서 데이터를 조회하자 ... 82 03. 데이블 외의 데이터베이스 개체 ... 88 인덱스 ... 88 실습5 회원 테이블의 회원 이름(memberName) 열에 인덱스를 생성하자 ... 88 뷰 ... 89 실습6 회원 테이블의 회원 이름 열, 주소 열만 있는 뷰를 생성하자 ... 889 저장프로시저 ... 91 실습7 자주 조회하는 SQL 문을 저장프로시저로 만들자 ... 91 트리거 ... 92 실습8 삭제 작업이 발생하면 삭제되는 데이터를 다른 곳에 저장하는 트리거를 작성하자 ... 93 04. 데이터 백업 및 관리 ... 95 백업과 복원 ... 95 실습9 백업과 복원 ... 95 그 외에 관리자가 해야 할 일들 ... 100 실습10 Books Online 사용 방법 ... 101 이것만은 알고 갑시다 ... 104 Part 2 SQL Server 2005 기본 4장. DBMS 개요와 데이터베이스 모델링 01. DBMS 개요 ... 109 데이터베이스의 정의와 특징 ... 109 데이터베이스의 발전 ... 109 관계형 DBMS ... 111 02. 데이터베이스 모델링 ... 112 프로젝트의 진행 단계 ... 112 데이터베이스 모델링 개념 ... 113 데이터베이스 모델링 실습 ... 114 실습1 데이터베이스 모델링 ... 114 이것만은 알고 갑시다 ... 120 5장. SQL Server 2005의 툴과 유털리티 사용하기 01. SQL Server Management Studio ... 123 SSMS의 처음 실행 ... 124 [서버에 연결] 창 ... 124 SSMS의 화면 구성 ... 128 실습1 서버그룹을 만들고 각 그룹별로 등록하자 ... 130 실습2 개체 탐색기를 이용해서 데이터베이스 스크립트를 자동으로 생성하자 ... 134 실습3 쿼리창을 이용해서 SQL 문장을 수행하자 ... 136 02. SQL Server 노출 영역 구성 ... 143 실습4 원격 컴퓨터에서 SQL Server 2005에 접속할 수 있도록 SQL Server 노출 영역 구성을 사용해 보안 설정을 변경하자 ... 143 03. SQL Server 구성 관리자 ... 146 실습5 SQL Server 구성 관리자를 통해서 데이터베이스 엔진의 시작 옵션을 설정하고, 원격 컴퓨터에서 접속한 프로토콜을 허용하자 ... 147 04. SQLCMD(명령프롬프트의 쿼리 도구) ... 155 실습6 SQLCMD.EXE를 사용하자 ... 157 05. BCP(Bulk Copy) ... 159 실습7 BCP를 사용하자 ... 159 06. 프로파일러 ... 162 실습8 프로파일러를 사용하자 ... 162 이것만은 알고 갑시다 ... 166 6장. 필수로 알아야 할 Transact-SQL 문 01. 기본적인 T-SQL 구문 ... 169 원하는 데이터를 가져와 주는 기본적인 SELECT... FROM ... 169 실습1 데이터베이스 이름, 스키마 이름, 테이블 이름, 열 이름이 정확히 기억나지 않거나 또는 각 이름의 철자가 확실하지 않을 때 찾아서 조회하는 방법을 살펴보자 ... 175 실습2 앞으로 사용할 데이터베이스와 테이블을 생성하자 ... 178 특정한 조건의 데이터만 조회하는 SELECT...FROM...WHERE ... 181 GROUP BY 및 HAVING 그리고 집계 함수 ... 193 실습3 COUNT() 함수와 그냥 SELECT의 결과를 비교하자 ... 198 WITH 절과 CTE ... 209 실습4 하나의 테이블에서 회사의 조직도가 출력되도록 재귀적 CTE를 구현하자 ... 215 T- SQL의 분류 ... 219 데이터를 변경하는 INSERT, UPDATE, DELETE ... 220 실습5 대용량의 테이블을 삭제하자 ... 224 02. SQL Server의 데이터 형식 ... 225 SQL Server 2005에서 지원하는 데이터 형식의 종류 ... 226 변수의 사용 ... 231 실습6 변수를 사용하자 ... 231 데이터 형식과 관련된 시스템 함수들 ... 232 실습7 max 형의 데이터 형식을 이용해서 대량의 데이터를 입력하자 ... 240 실습8 순위 함수를 살펴보자 ... 244 03. 조인 ... 249 INNER JOIN(내부 조인) ... 250 실습9 [그림 6-40]을 보고 3개 테이블을 정의하고 데이터를 입력하자 ... 256 OUTER JOIN(외부 조인) ... 259 실습10 〈실습9〉에서 3개의 테이블을 가지고 INNER JOIN 했던 결과를 OUTER JOIN으로 고려해 보자 ... 262 CROSS JOIN(상호 조인) ... 264 SELF JOIN(자체 조인) ... 265 UNION, UNION ALL ... 267 04. SQL 프로그래밍 ... 269 IF...ELSE... ... 269 CASE ... 270 실습11 CASE 문을 살펴보자 ... 272 WHILE과 BREAK, CONTINUE, RETURN ... 275 GOTO ... 277 TRY, CATCH ... 277 이것만은 알고 갑시다 ... 280 7장. 데이터베이스 생성과 관리 01. 데이터베이스 기본 구조 및 시스템 데이터베이스 ... 283 데이터베이스의 기본 구조 ... 283 트랜잭션의 간단한 개념과 작동방식 ... 286 실습1 로그 파일의 역할을 살펴보자 ... 293 시스템 데이터베이스와 예제 데이터베이스 ... 298 실습2 SQL Server 2005 예제 데이터베이스 및 SQL Server 2000의 예제 데이터베이스를 설치하자 ... 301 02. 데이터베이스 생성 및 관리 ... 306 데이터베이스 생성 ... 306 실습3 SSMS에서 데이터베이스를 생성하자 ... 309 실습4 〈실습3〉에서 SSMS로 생성한 brainDB를 T-SQL로 생성하자 ... 317 파일그룹 ... 319 실습5 대용량 데이터베이스라는 가정하에 [그림 7-35]와 같은 파일 및 파일그룹을 생성하자 ... 321 실습6 [그림 7-35]를 T-SQL로 생성하자 ... 324 데이터베이스 크기 늘리기 및 줄이기 ... 326 실습7 데이터베이스의 크기를 수동으로 늘리거나 줄여보자 ... 326 데이터베이스 수정 ... 341 실습8 brainDB를 디폴트로 생성하고 hanbitDB로 변경하자 ... 346 실습9 C:\RAIDO\라는 폴더를 RAIDO 방식의 레이드라고 생각하고, tempdb의 데이터 및 로그 파일을 이곳으로 옳겨 놓자 ... 349 데이터베이스 삭제 ... 352 03. 데이터베이스 옵션 ... 353 이것만은 알고 갑시다 ... 356 8장. 테이블과 뷰 01. 테이블 ... 359 테이블 만들기 ... 359 실습1 SSMS의 개체 탐색기에서 [그림 8-1]의 tableDB 데이터베이스를 생성하자 ... 360 실습2 T-SQL을 이용해서 테이블을 생성하자 ... 367 제약조건 ... 372 임시 테이블 ... 382 실습3 임시 테이블을 생성하자 ... 383 테이블 삭제 ... 386 테이블 수정 ... 386 실습4 테이블의 제약조건 및 수정 방법을 살펴보자 ... 389 02. 데이터베이스 개체의 이름과 외부 서버에 있는 개체로의 접근 ... 399 데이터베이스 개체 ... 399 외부 서버에 있는 개체로의 접근 ... 401 실습5 다른 서버의 테이블에 접근하자 ... 401 03. 뷰 ... 403 뷰의 개념 ... 403 뷰의 장점 ... 404 실습6 뷰를 생성하고 활용하자 ... 406 뷰의 종류 ... 413 04. 분할 테이블과 분할 뷰 ... 414 분할 뷰 ... 414 실습7 여러 서버에 뷰를 조회하는 분산형 분할 뷰를 구현하자 ... 415 분할 테이블 ... 421 실습8 분할 테이블을 구현하자 ... 422 이것만은 알고 갑시다 ... 428 9장. 인덱스 01. 인덱스의 개요와 활용 ... 431 인덱스의 개념 ... 431 인덱스의 종류 ... 432 실습1 제약조건으로 자동 생성되는 인덱스를 살펴보자 ... 434 인덱스의 내부 작동 ... 439 실습2 한 테이블에 클러스터형 인덱스와 비클러스터형 인덱스가 모두 존재하는 사례를 살펴보자 ... 450 인덱스의 생성, 변경, 삭제 ... 455 실습3 인덱스를 생성하고 사용하자 ... 460 실습4 클러스터형 인덱스, 비클러스터형 인덱스, 인덱스가 없을 때의 성능을 비교하자 ... 464 인덱스를 생성해야 하는 경우와 그렇지 않은 경우 ... 477 실습5 계산 열에 인덱스를 생성하자 ... 481 실습6 포괄 열이 있는 인덱스를 생성하자 ... 482 데이터베이스 엔진 튜닝 관리자 ... 486 실습7 데이터베이스 엔진 튜닝 관리자의 기본적인 사용법을 익히자 ... 486 02. 분할 인덱스와 인덱싱된 뷰 ... 494 분할 인덱스 ... 494 실습8 분할 인덱스를 생성하자 ... 495 인덱싱된 뷰 ... 497 실습9 인덱싱된 뷰를 활용하자 ... 498 이것만은 알고 갑시다 ... 504 10장. 트랜잭션과 잠금 01. 트랜잭션 ... 507 트랜잭션의 개념 ... 507 트랜잭션의 문법과 종류 ... 507 실습1 트랜잭션을 사용해야 하는 이유를 살펴보자 ... 510 실습2 트랜잭션을 활용하자 ... 513 02. 잠금 ... 519 트랜잭션 격리 수준 ... 520 실습3 더티리드를 살펴보자 ... 521 실습4 더티리드를 해결하고, 또 다른 문제인 '반복되지 않은 읽기'를 확인하자 ... 524 실습5 팬텀읽기와 이를 방지하는 방법을 살펴보자 ... 527 잠금이 걸리는 리소스와 잠금의 종류 ... 532 잠금의 정보 확인과 힌트 ... 534 실습6 잠금힌트를 살펴보자 ... 534 블로킹과 교착상태 ... 539 실습7 블로킹의 문제를 해결하자 ... 539 실습8 교착상태를 확인하자 ... 541 03. 분산 트랜잭션 ... 545 실습9 분산 트랜잭션을 사용하자 ... 546 이것만은 알고 갑시다 ... 550 Part 3 SQL Server 2005 활용 11장. 저장프로시저와 사용자정의 함수 01. 저장프로시저 ... 555 저장프로시저의 개요 ... 555 실습1 저장프로시저를 사용하자 ... 558 저장프로시저의 특징 ... 569 저장프로시저의 종류 ... 570 02. 저장프로시저의 작동 ... 572 일반 T-SQL의 작동방식 ... 572 실습2 일반 T-SQL의 처리시간을 비교하자 ... 573 저장프로시저의 작동방식 ... 575 실습3 저장프로시저의 작동을 살펴보자 ... 576 WITH RECOMPILE 옵션과 저장프로시저의 문제점 ... 578 실습4 저장프로시저의 문제점을 살펴보고 재컴파일 옵션을 통해 해결하자 ... 579 03. 사용자정의 함수 ... 583 사용자정의의 생성, 수정, 삭제 ... 583 실습5 사용자정의 함수를 살펴보자 ... 584 함수의 종류 ... 585 실습6 테이블 함수를 살펴보자 ... 588 그 외 함수와 관련되어 알아둘 사항 ... 590 실습7 스칼라 함수를 하나 더 연습해 보고, 스키마 바운드 함수 및 테이블 변수를 살펴보자 ... 591 이것만은 알고 갑시다 ... 596 12장. 커서 01. 커서의 개념 ... 599 커서의 개요 ... 599 커서의 처리 순서 ... 600 실습1 커서를 이용해서 고객의 평균 키를 구해보자 ... 600 02. 커서의 활용 ... 606 커서와 일반적인 쿼리의 성능 비교 ... 606 실습2 커서와 일반 쿼리의 성능을 비교하자 ... 606 커서의 내부 동작방식 ... 608 실습3 GLOBAL, LOCAL의 설정을 살펴보자 ... 608 실습4 커서의 형태(model)가 내부적으로 작동되는 것을 살펴보자 ... 612 실습5 커서의 이동을 확인하고, 암시적 커서 변환에 대해서도 살펴보자 ... 614 이것만은 알고 갑시다 ... 620 13장. 트리거 01. 트리거의 개념 ... 623 트리거의 개요 ... 623 실습1 간단한 트리거를 생성하고 결과를 확인하자 ... 623 DML 트리거의 종류 ... 624 DML 트리거의 사용 ... 625 실습2 수정 또는 삭제된 데이터를 보관하고 변경된 일자/변경한 사람을 기록하자 ... 626 실습3 INSTEAD OF 트리거를 사용하자 ... 630 02. DDL 트리거 ... 635 DDL 트리거 개요 ... 635 DDL 트리거 활용 ... 637 실습4 DDL 트리거를 사용하자 ... 637 03. 기타 트리거에 관한 사항 ... 640 다중 트리거 ... 640 중첩 트리거 ... 640 재귀 트리거 ... 641 지연된 이름 확인 ... 643 트리거의 작동 순서 ... 643 실습5 기타 트리거의 작동을 살펴보자 ... 644 이것만은 알고 갑시다 ... 652 14장. 전체 텍스트 검색 서비스 01. 전체 텍스트 검색 서비스 개요 ... 655 실습1 전체 텍스트 검색 서비스가 가동되고 있는지 살펴보자 ... 655 02. 전체 텍스트 인덱스와 전체 텍스트 카탈로그 ... 657 전체 텍스트 인덱스 ... 657 전체 텍스트 카탈로그 ... 659 전체 텍스트 인덱스 채우기 ... 659 전체 텍스트 검색을 위한 쿼리 ... 660 03. 전체 텍스트 검색 서비스의 작동 ... 662 실습2 전체 텍스트 검색 서비스를 사용하자 ... 663 이것만은 알고 갑시다 ... 674 15장. XML 01. XML 기본 ... 677 XML의 기본적인 구조 ... 677 XML 데이터 형식 ... 677 실습1 XML 데이터 형식을 사용하자 ... 677 형식화된 XML과 XML 스키마 ... 679 실습2 형식화된 XML을 사용하자 ... 679 02. XML 활용 ... 683 XML 인덱스 ... 683 실습3 XML 인덱스를 생성하고 사용하자 ... 684 쿼리의 결과를 XML로(FOR XML 절) ... 687 실습4 FOR XML 절을 사용하자 ... 687 XML 데이터를 일반 쿼리의 결과로 만들기(OPENXML) ... 692 실습5 XML 데이터를 일반 쿼리의 결과로 변경하자 ... 692 이것만은 알고 갑시다 ... 694 Part 4 SQL Server 2005 관리 16장. 보안과 스키마 01. SQL Server의 보안 ... 699 인증 모드 ... 699 실습1 Windows 계정을 생성하고 SQL Server에 접속하자 ... 700 실습2 인증 모드를 혼합 모드로 변경하자 ... 703 로그인, 사용자, 사용권한, 역할 ... 704 실습3 SQL Server의 보안을 살펴보자 ... 709 02. 스키마 ... 728 스키마의 개요 ... 729 실습4 현재 접속한 사용자를 확인하고 기본 스키마를 변경하자 ... 731 스키마의 생성과 활용 ... 732 실습5 스키마를 활용하자 ... 732 이것만은 알고 갑시다 ... 738 17장. 데이터를 안전하게 보관하자(백업, 복원, 스냅숏) 01. 데이터베이스 백업과 복원 ... 741 데이터베이스의 복구 모델 ... 741 데이터베이스 백업의 종류 ... 743 백업 시에 사용되는 기능 및 옵션 ... 749 백업장치 ... 752 데이터베이스 복원 ... 753 데이터베이스 복원의 기능 및 옵션 ... 754 실습1 백업장치를 만들자 ... 758 실습2 트랜잭션 로그 파일을 비우지 않으면 발생하는 문제를 해결하자 ... 759 실습3 [그림 17-16]의 시나리오로 백업, 복원을 수행해 보자 ... 762 실습4 여러 개의 파일그룹을 백업하고 복원하자 ... 770 실습5 중요도가 높은 테이블이 포함된 파일그룹부터 온라인 복원을 하자 ... 778 실습6 미러백업과 체크섬을 사용하자 ... 780 시스템 데이터베이스의 문제 발생 시 해결 방법 ... 781 실습7 master에 문제가 생겨서 시스템이 마비되었다고 가정하고, 중요한 데이터베이스를 다른 서버에서 계속 서비스하자 ... 782 실습8 master 데이터베이스가 깨진 상태를 복구하자 ... 788 데이터베이스 백업과 복원 계획 수립 ... 791 02. 데이터베이스 스냅숏 ... 793 데이터베이스 스냅숏의 소개 ... 793 실습9 데이터베이스 스냅숏을 생성하자 ... 795 스법숏의 실제 내부 작동 ... 799 실습10 스냅숏의 내부 작동을 살펴보자 ... 800 스냅숏의 활용 ... 807 실습11 테이블의 데이터를 삭제 또는 수정한 후에 스냅숏 DB를 이용해서 원상 복구하자 ... 807 실습12 RESTORE 구문을 사용하여 스냅숏 DB인 Adv_sh1의 일부 데이터가 아닌, 전체를 AdventureWorts로 되돌리자 ... 811 스냅숏 사용 시 주의사항 ... 811 실습13 : 스냅숏 DB를 백업의 대용으로 사용할 때의 문제점을 살펴보자 ... 811 이것만은 알고 갑시다 ... 814 18장. 데이터의 고가용성(로그 전달, 데이터베이스 미러링, 복제) 01. 고가용성을 위한 방법 및 개념 ... 817 서버 클러스터링 개요 ... 817 로그 전달 개요 ... 819 데이터베이스 미러링 개요 ... 819 복제 개요 ... 819 02. 로그 전달 ... 821 로그 전달의 상세 작동방식 ... 821 로그 전달 실습 ... 822 실습1 로그 전달을 구성하자 ... 822 실습2 로그 전달을 제거하자 ... 834 03. 데이터베이스 미러링 ... 836 데이터베이스 미러링 소개 ... 836 데이터베이스 미러링 실습 ... 840 실습3 3대의 인스턴스를 사용해서 데이터베이스 미러링을 구성하자 ... 840 데이터베이스 미러링의 운영 모드 ... 858 04. 복제 ... 859 복제 관련 용어 ... 859 복제의 방법 ... 861 복제의 구성 모델 ... 863 실습4 [그림 18-83]과 같이 복제의 가장 기본적인 틀을 구현하자 ... 867 실습5 [그림 18-83]을 가지고 구성 완료된 복제의 내부 작동이 어떻게 일어나는지 살펴보자 ... 890 실습6 병합복제를 구현하자 ... 896 실습7 복제를 제거하자 ... 902 이것만은 알고 갑시다 ... 904 19장. SQL Server 2005 통합 서비스 01. SQL Server 2005 통합 서비스 개요 ... 907 외부와의 데이터 이동을 위해서 사용되는 방법 ... 907 SSIS의 데이터 변환 기능 ... 907 02. SQL Server 가져오기 및 내보내기 마법사 ... 908 SQL Server 사이의 데이터 복사, 이동 ... 908 실습1 SQL Server 사이에 데이터를 이동시키자 ... 908 실습2 SQL Server 사이에서 데이터베이스 및 테이블을 먼저 정의한 후에 데이터 가져오기를 수행하자 ... 915 이기종 간의 데이터 복사, 이동 ... 923 실습3 Oracle 10g XE를 설치하자 ... 923 실습4 이기종 간의 데이터를 복사, 이동시키자 ... 926 이것만은 알고 갑시다 ... 931 20장. 서버 자동화 01. 서버 자동화 개요 ... 935 자동화의 대표적인 사례 ... 935 SQL Server 2005에서 제공하는 데이터베이스 자동화 ... 935 작업일정 ... 935 SQL Se