
구매문의 및 도서상담은 031-944-3966(매장)으로 문의해주세요.
매장전집은 전화 혹은 매장방문만 구입 가능합니다.
저자 : 이장래
20여 년간 SQL Server와 함께하고 있는 저자에게 여러 호칭이 있지만, 저자 본인이 가장 좋아하는 호칭은 '강사'다. 가르치는 게 좋아 SQL Server 관련 사이트를 만들어 Q&A 게시판을 운영했고, 오프라인 스터디를 이끌었으며, Microsoft 공인 강사가 되어 수많은 강의와 세미나를 진행했다. 결국, 책도 쓰게 되었는데, 이 모든 것이 SQL Server를 시작하는 이에게 디딤돌이 되고자 하는 저자의 바람 때문이다. 끊임 없는 지식 전달 노력의 결과로 Microsoft에서 수여한 SQL Server 분야 MVP Award를 수년간 받았다. 현직 유명 SQL Server 강사이자 컨설턴트인 그에게서 SQL Server를 빼면 뭐가 남을지 궁금하다. 사랑하는 딸에게 뒤늦게 피아노를 배우기 시작했고, 플루트를 배우겠다며 밤새 소리를 찾아 불어대는 그의 모습에, 언제나 배움의 아름다움이 배어 있다.(주)씨퀄로(www.sqlroad.com) 수석 컨설턴트아이티포럼(www.itforum.co.kr) 전임 교수웹타임(www.webtime.co.kr) 전임 강사디비누리 SQLWORLD(www.dbnuri.com) 운영자MCT(Microsoft Certified Trainer)[활동]SQL Server MVP (2010 ~ 현재) 수상SQL Server 관련 다양한 강의 및 컨설팅 진행 중디비누리 SQLWORLD 오픈 스터디 및 세미나 진행 중
1장. SQL Server와 데이터베이스
1.1. SQL Server 소개
1.1.1. 왜 SQL Server를 사용하는가?
1.1.2. SQL Server 역사와 버전
1.1.3. SQL Server 에디션
1.2. SQL Server 설치
1.2.1. SQL Server 설치 환경
1.2.2. SQL Server 설치
1.2.3. SQL Server 관리 도구 설치
1.2.4. 연결 확인
1.3. SSMS(SQL Server Management Studio) 사용
1.3.1. 실행과 연결
1.3.2. SSMS의 다양한 기능들
1.3.3. 나만의 SSMS 환경 꾸미기
1.3.4. SSMS 사용 팁
1.3.5. SSMS 업데이트
1.4. 데이터베이스 구조 이해
1.4.1. 데이터베이스에 대한 이해
1.4.2. 데이터베이스 구조
1.4.3. 트랜잭션 로그(Transaction Log) 파일
1.5. 데이터베이스 만들기
1.5.1. 이름만 지정하여 만들기
1.5.2. 입력할 정보들
1.5.3. 요구사항에 맞게 만들기
1.5.4. CREATE DATABASE 문으로 만들기
1.6. 파일 그룹(File Groups) 활용
1.6.1. 파일 그룹이란?
1.6.2. 파일 그룹 종류
1.6.3. 파일 그룹 만들기
1.6.4. 파일 그룹에 테이블 만들기
2장. 테이블 만들고 관리하기
2.1. 테이블 만들기
2.1.1. 학습 준비
2.1.2. 테이블에 대한 이해
2.1.3. 테이블 만들기
2.1.4. CREATE TABLE 문으로 만들기
2.1.5. 테이블 관리
2.1.6. 데이터 정렬(Collations)
2.2. 다양한 데이터 형식
2.2.1. 데이터 형식에 대한 이해
2.2.2. 시스템 데이터 형식
2.2.3. 수치 데이터 형식
2.2.4. 날짜와 시간 데이터 형식
2.2.5. 문자 데이터 형식
2.2.6. 기타 특수한 데이터 형식
2.3. 특수한 형태의 열
2.3.1. 계산된 열(Computed Columns)
2.3.2. IDENTITY 속성
2.4. 데이터 무결성(Data Integrity)
2.4.1. 데이터 무결성이란?
2.4.2. NULL과 NOT NULL
2.4.3. 제약(Constraints)
2.5. HRDB2 데이터베이스 만들기
2.5.1. 데이터베이스 만들기 구문
2.5.2. 테이블 만들기 구문
2.5.3. 데이터 추가
2.6. 임시 테이블(Temporary Tables)
2.6.1. 지역 임시 테이블과 전역 임시 테이블
2.6.2. 개체 탐색기에서 임시 테이블 확인
2.7. 정규화(Normalization)
2.7.1. 정규화와 JOIN 문
2.7.2. 1차, 2차, 3차 정규화
2.8. 활용
2.8.1. 테이블 정보 확인
2.8.2. 테이블 행수 확인
2.8.3. FOREIGN KEY 무시
2.8.4. 특정 열을 갖는 테이블 찾기
3장. Transact-SQL 기본 구문 익히기
3.1. HRDB2 데이터베이스 설명
3.1.1. 데이터베이스 다이어그램
3.1.2. 테이블 소개
3.2. 기본적인 데이터 조회
3.2.1. SELECT 문 시작
3.2.2. 다양한 연산자
3.2.3. 범위 조건과 리스트 조건
3.2.4. NULL 값 비교
3.2.5. 열 별칭과 열에 대한 계산
3.2.6. 조회 결과 정렬
3.3. DML 문을 사용한 데이터 변경
3.3.1. INSERT 문
3.3.2. UPDATE 문
3.3.3. DELETE 문
3.4. 다양한 데이터 집계 방법
3.4.1. SUM, AVG, MAX, MIN, COUNT 함수
3.4.2. GROUP BY 문
3.4.3. HAVING 문
3.4.4. GROUPING SETS 문
3.5. 쿼리 수행 흐름 제어
3.5.1. IF … ELSE 문
3.5.2. BEGIN … END 문
3.5.3. WHILE 문
4장. Transact-SQL 필수 구문 익히기
4.1. 순위와 번호를 표시하는 다양한 함수
4.1.1. RANK 함수
4.1.2. DENSE_RANK 함수
4.1.3. ROW_NUMBER 함수
4.1.4. NTILE 함수
4.2. PIVOT 형태와 UNPIVOT 형태
4.2.1. PIVOT 문
4.2.2. UNPIVOT 문
4.3. 세 가지 형태의 조인(JOIN) 문
4.3.1. JOIN이란?
4.3.2. INNER JOIN 문
4.3.3. OUTER JOIN 문
4.3.4. CROSS JOIN 문
4.3.5. JOIN 문 작성
4.3.6. 여러 테이블 간의 JOIN 문
4.4. 일반 하위 쿼리와 상관 하위 쿼리
4.4.1. 일반 하위 쿼리
4.4.2. 상관 하위 쿼리
4.5. 손쉬운 결과 집합 병합
4.5.1. UNION, UNION ALL 문
4.5.2. INTERSECT 문
4.5.3. EXCEPT 문
4.6. 기본적으로 알아두어야 할 함수
4.6.1. 날짜 관련 함수
4.6.2. 문자열 관련 함수
4.7. 쿼리문 작성에 대한 단상
4.7.1. 좋은 쿼리문
4.7.2. 고부하 쿼리문
4.7.3. 효율적인 쿼리문 작성 지침
5장. 향상된 Transact-SQL 작성을 위하여
5.1. 쿼리에 강력함을 더하는 기능들
5.1.1. TOP (n) 문
5.1.2. CASE 문
5.1.3. CTE 문
5.1.4. MERGE 문
5.1.5. OUTPUT 문
5.1.6. APPLY 문
5.1.7. OVER 문(SQL Server 2012)
5.1.8. OFFSET FETCH 문(SQL Server 2012)
5.1.9. WITH RESULT SET 문(SQL Server 2012)
5.1.10. THROW 문(SQL Server 2012)
5.2. 알아 두면 좋을 낯선 함수들
5.2.1. EOMONTH, CHOOSE, IIF 함수(SQL Server 2012)
5.2.2. CONCAT, FORMAT 함수(SQL Server 2012)
5.2.3. LAST_VALUE, FIRST_VALUE 함수(SQL Server 2012)
5.2.4. LEAD, LAG 함수(SQL Server 2012)
5.2.5. STRING_SPLIT 함수(SQL Server 2016)
5.2.6. SPACE, REVERSE 함수(SQL Server 2005)
6장. XML 데이터 다루기
6.1. XML 데이터 이해하기
6.1.1. XML 문서 소개
6.1.2. 문자로 취급하던 XML 데이터
6.1.3. XML 데이터 형식 지원
6.1.4. XML 스키마 컬렉션으로 무결성 확보
6.2. XML 형태로 변환하는 FOR XML 문
6.2.1. FOR XML 문이란?
6.2.2. FOR XML RAW 문
6.2.3. FOR XML AUTO 문
6.2.4. FOR XML EXPLICIT 문
6.2.5. FOR XML PATH 문
6.3. 테이블 형태로 변환하는 OPENXML 함수
6.3.1. OPENXML 함수란?
6.3.2. OPENXML 함수 사용 예
6.4. XQuery로 XML 데이터 다루기
6.4.1. XQuery란?
6.4.2. query 메소드
6.4.3. value 메소드
6.4.4. exist 메소드
6.4.5. modify 메소드
6.4.6. nodes 메소드
7장. 성능 최적화를 위한 인덱스와 통계
7.1. 인덱스에 대한 이해
7.1.1. 인덱스(Indexes)란?
7.1.2. 인덱스는 꼭 필요한가?
7.1.3. 인덱스 구조
7.1.4. 테이블 존재 형태
7.1.5. 힙 + 비클러스터형 인덱스
7.1.6. 힙 → 클러스터형 인덱스
7.1.7. 클러스터형 인덱스 + 비클러스터형 인덱스
7.1.8. 페이지 분할(Page Splits)
7.2. 다양한 인덱스 만들기
7.2.1. 클러스터형 인덱스
7.2.2. 비클러스터형 인덱스
7.2.3. 포함된 인덱스(Included Indexes)
7.2.4. 필터된 인덱스(Filtered Indexes)
7.3. 성능을 위한 인덱스 유지관리 방법
7.3.1. 인덱스 다시 구성과 다시 작성
7.3.2. FILLFACTOR 옵션 사용
7.3.3. 인덱스 제거
7.4. 인덱스를 고려한 쿼리문 작성
7.4.1. 열 변경하지 않기
7.4.2. 서로 비교되는 데이터 형식 일치시키기
7.4.3. 불필요한 구문 삭제하기
7.4.4. 첫 번째 인덱스 키 열 고려하기
7.4.5. 필요한 열만 SELECT 절에 나열하기
7.5. 물리적인 조인 형태 세 가지
7.5.1. 해시 매치(Hash Match)
7.5.2. 머지 조인(Merge Join)
7.5.3. 중첩 루프(Nested Loop)
7.6. 통계 개념과 유지관리 방법
7.6.1. 통계 이해하기
7.6.2. 통계에 의지하는 SQL Server
7.6.3. 수동 통계 갱신
7.7. 활용
7.7.1 인덱스 현황 조회
7.7.2 인덱스 단편화 정도 확인
7.7.3. ONLINE = ON 옵션
7.7.4. 인덱스 비활성화와 활성화
8장. 프로그래밍 개체
8.1. 뷰(Views)
8.1.1. 뷰에 대한 이해
8.1.2. 뷰 만들기와 관리
8.2. 저장 프로시저(Stored Procedures)
8.2.1. 저장 프로시저에 대한 이해
8.2.2. 저장 프로시저 만들기
8.2.3. 입력 매개 변수와 출력 매개 변수
8.2.4. 오류 핸들링
8.2.5. 실행 계획 재사용과 재컴파일
8.2.6. 동적 쿼리문(Dynamic Queries)
8.3. 사용자 정의 함수(User Defined Functions)
8.3.1. 사용자 정의 함수에 대한 이해
8.3.2. 스칼라 함수 만들기
8.3.3. 인라인 테이블 값 함수 만들기
8.3.4. 다중문 테이블 값 함수 만들기
8.4. 트리거(Triggers)
8.4.1. DML 트리거에 대한 이해
8.4.2. DML 트리거 만들기
8.4.3. DDL 트리거 만들기
8.4.4. 트리거 구문 요약
8.5. 커서(Cursors)
8.5.1. 커서에 대한 이해
8.5.2. 커서 사용하기
8.6. 활용
8.6.1. CREATE OR ALTER
8.6.2. 뷰 새로 고침(Refresh)
8.6.3. 자동으로 실행되는 저장 프로시저
8.6.4. 동적 쿼리문, 나름의 디버깅
9장. 트랜잭션과 잠금
9.1. 트랜잭션에 대한 이해
9.1.1. 트랜잭션(Transactions)이란?
9.1.2. 트랜잭션 로그(Transaction Logs)
9.1.3. 자동 커밋 트랜잭션(Auto Commit Transactions)
9.1.4. 명시적 트랜잭션(Explicit Transactions)
9.1.5. 묵시적 트랜잭션(Implicit Transactions)
9.2. 잠금에 대한 이해
9.2.1. 잠금(Locks)이란?
9.2.2. 주요 잠금 모드
9.2.3. 기타 잠금 모드
9.3. 잠금 관리 방법
9.3.1. 잠금 타임 아웃 설정
9.3.2. 교착 상태(Deadlocks)
9.3.3. 잠금과 관련된 테이블 힌트
9.4. 트랜잭션 격리 수준(Transaction Isolation Levels)
9.4.1. READ UNCOMMITTED 격리 수준
9.4.2. READ COMMITTED (기본값) 격리 수준
9.4.3. REPEATABLE READ 격리 수준
9.4.4. SERIALIZABLE 격리 수준
9.4.5. READ COMMITTED SNAPSHOT 격리 수준
9.4.6. SNAPSHOT 격리 수준
9.4.7. 트랜잭션 격리 수준 특성 비교
9.4.8. 트랜잭션 격리 수준 관련 테이블 힌트
9.5. 활용
9.5.1. 현재 잠금 정보 확인
9.5.2. 교착 상태 모니터링
9.5.3. SQL Server 오류 로그
10장. 알아 두면 좋을 낯선 기능들
10.1. 시퀀스(Sequences)
10.1.1. 시퀀스에 대한 이해
10.1.2. 시퀀스 만들기
10.1.3. 시퀀스 사용 예
10.1.4. 시퀀스 값이 반복되게 하기
10.1.5. OVER 절로 정렬한 결과에 시퀀스 사용
10.2. 분할된 테이블(Partitioned Tables)
10.2.1. 분할된 테이블 개념
10.2.2. 분할된 테이블 만들기
10.2.3. 분할된 테이블 관리
10.3. 시스템 버전 임시 테이블(System-Versioned Temporal Table)
10.3.1. 시스템 버전 임시 테이블 만들기
10.3.2. 기존 테이블을 시스템 버전 임시 테이블로 변경
10.3.3. 추가한 열 확인
10.3.4. 데이터 변경
10.3.5. 테이블에 기록된 정보 확인
10.3.6. AS OF 구문으로 특정 시점 데이터 확인
10.3.7. 변경 기록 확인
10.3.8. 시스템 버전 관리 중지
10.4. FILESTREAM
10.4.1. FILESTREAM에 대한 이해
10.4.2. FILESTREAM 기능 활성화
10.4.3. FILESTREAM 데이터베이스 만들기
10.4.4. FILESTREAM 테이블 만들기
10.5. 파일 테이블 (File Tables)
10.5.1. 데이터베이스 속성 변경
10.5.2. 파일 테이블 만들기
10.5.3. 파일 테이블 기능 확인
10.5.4. 실제 물리적인 폴더에 접근
10.6. JSON (JavaScript Object Notation)
10.6.1. JSON 데이터 형태로 결과 출력
10.6.2. OPENJSON을 사용해 JSON 데이터를 테이블 형태로 변환
10.6.3. 기타 기능들
10.7. Columnstore 인덱스
10.7.1. Columnstore 인덱스란?
10.7.2. Columnstore 인덱스 만들기
10.8. 인덱싱된 뷰 (Indexed Views)
10.8.1. 인덱싱된 뷰란?
10.8.2. 일반적인 뷰 만들기
10.8.3. 뷰에 인덱스 만들기
10.8.4. 인덱스 제거
10.9. 동의어(Synonyms)
10.9.1. 동의어 만들기
10.9.2. 동의어 사용
10.10. 테이블 반환 매개 변수(Table-Valued Parameters)
10.10.1. 사용자 정의 테이블 형식 만들기
10.10.2. 테이블 반환 매개 변수를 사용하는 저장 프로시저 만들기
10.10.3. 사용 예
10.10.4. 고려사항
부록 1. 에디션별 기능 지원 여부
부록 2. SQL Server 2016 설치 가능 운영 체제
부록 3. SQL Server 2016 Developer Edition 다운로드
부록 4. 학습용 데이터베이스 설치
찾아보기
도서 DB 제공 - 알라딘 인터넷서점 (www.aladin.co.kr)