SQL을 유연하게 사용하기 위해서는 기본적인 내용뿐만 아니라 다양한 표현식을 잘 알아야 한다. 『SQL 쿡북: 모든 SQL 사용자를 위한 쿼리 완벽 가이드』 SQL에 대한 매우 실용적인 접근 방식을 적용하여 대용량 데이터 저장소를 생성하고 조작하는 방법을 소개한다. 실제 사례를 기반으로 한 오라클, DB2, SQL 서버, MySQL, PostgreSQL 등 다양한 SQL 버전에서의 해결책과 실행 가능한 예제로 구성하여 업무에 도움이 되는 틀을 제공한다. SQL 프로그래머, 분석가, 데이터 과학자, 데이터베이스 관리자를 비롯한 일반 SQL 사용자들이 마주하게 될 일상적인 문제를 해결하는 데 이 책이 매우 유용한 가이드가 될 것이다. SQL을 사용하여 매일 난제와 씨름하는 여러분에게는 어떤 자료보다도 흥미로울 것이다.
Contents
CHAPTER 1 레코드 검색
1.1 테이블의 모든 행과 열 검색하기
1.2 테이블에서 행의 하위 집합 검색하기
1.3 여러 조건을 충족하는 행 찾기
1.4 테이블에서 열의 하위 집합 검색하기
1.5 열에 의미 있는 이름 지정하기
1.6 WHERE 절에서 별칭이 지정된 열 참조하기
1.7 열 값 이어 붙이기
1.8 SELECT 문에서 조건식 사용하기
1.9 반환되는 행 수 제한하기
1.10 테이블에서 n개의 무작위 레코드 반환하기
1.11 null 값 찾기
1.12 null을 실젯값으로 변환하기
1.13 패턴 검색하기
1.14 마치며
CHAPTER 2 쿼리 결과 정렬
2.1 지정한 순서대로 쿼리 결과 반환하기
2.2 다중 필드로 정렬하기
2.3 부분 문자열로 정렬하기
2.4 혼합 영숫자 데이터 정렬하기
2.5 정렬할 때 null 처리하기
2.6 데이터 종속 키 기준으로 정렬하기
2.7 마치며
CHAPTER 3 REST 다중 테이블 작업
3.1 행 집합을 다른 행 위에 추가하기
3.2 연관된 여러 행 결합하기
3.3 두 테이블의 공통 행 찾기
3.4 한 테이블에서 다른 테이블에 존재하지 않는 값 검색하기
3.5 다른 테이블 행과 일치하지 않는 행 검색하기
3.6 다른 조인을 방해하지 않고 쿼리에 조인 추가하기
3.7 두 테이블에 같은 데이터가 있는지 확인하기
3.8 데카르트 곱 식별 및 방지하기
3.9 집계를 사용할 때 조인 수행하기
3.10 집계 시 외부 조인 수행하기
3.11 여러 테이블에서 누락된 데이터 반환하기
3.12 연산 및 비교에서 null 사용하기
3.13 마치며
CHAPTER 4 삽입, 갱신 및 삭제하기
4.1 새로운 레코드 삽입하기
4.2 기본값 삽입하기
4.3 null로 기본값 오버라이딩하기
4.4 한 테이블에서 다른 테이블로 행 복사하기
4.5 테이블 정의 복사하기
4.6 한 번에 여러 테이블에 삽입하기
4.7 특정 열에 대한 삽입 차단하기
4.8 테이블에서 레코드 수정하기
4.9 일치하는 행이 있을 때 업데이트하기
4.10 다른 테이블 값으로 업데이트하기
4.11 레코드 병합하기
4.12 테이블에서 모든 레코드 삭제하기
4.13 특정 레코드 삭제하기
4.14 단일 레코드 삭제하기
4.15 참조 무결성 위반 삭제하기
4.16 중복 레코드 삭제하기
4.17 다른 테이블에서 참조된 레코드 삭제하기
4.18 마치며
CHAPTER 5 메타 데이터 쿼리
5.1 스키마의 테이블 목록 보기
5.2 테이블의 열 나열하기
5.3 테이블의 인덱싱된 열 나열하기
5.4 테이블의 제약조건 나열하기
5.5 관련 인덱스가 없는 외래 키 나열하기
5.6 SQL로 SQL 생성하기
5.7 Oracle에서 데이터 딕셔너리 뷰 확인하기
5.8 마치며
CHAPTER 6 문자열 작업
6.1 문자열 짚어보기
6.2 문자열에 따옴표 포함하기
6.3 문자열에서 특정 문자의 발생 횟수 계산하기
6.4 문자열에서 원하지 않는 문자 제거하기
6.5 숫자 및 문자 데이터 분리하기
6.6 문자열의 영숫자 여부 확인하기
6.7 이름에서 이니셜 추출하기
6.8 문자열 일부를 정렬하기
6.9 문자열의 숫자로 정렬하기
6.10 테이블 행으로 구분된 목록 만들기
6.11 구분된 데이터를 다중값 IN 목록으로 변환하기
6.12 문자열을 알파벳 순서로 정렬하기
6.13 숫자로 취급할 수 있는 문자열 식별하기
6.14 n번째로 구분된 부분 문자열 추출하기
6.15 IP 주소 파싱하기
6.16 소리로 문자열 비교하기
6.17 패턴과 일치하지 않는 텍스트 찾기
6.18 마치며
CHAPTER 7 숫자 작업
7.1 평균 계산하기
7.2 열에서 최댓값, 최솟값 찾기
7.3 열의 값 집계하기
7.4 테이블의 행 수 계산하기
7.5 열의 값 세어보기
7.6 누계 생성하기
7.7 누적곱 생성하기
7.8 일련의 값 평활화하기
7.9 최빈값 계산하기
7.10 중앙값 계산하기
7.11 총계에서의 백분율 알아내기
7.12 null 허용 열 집계하기
7.13 최댓값과 최솟값을 배제한 평균 계산하기
7.14 영숫자 문자열을 숫자로 변환하기
7.15 누계에서 값 변경하기
7.16 중위절대편차로 특잇값 찾기
7.17 벤포드의 법칙으로 이상 징후 찾기
7.18 마치며
CHAPTER 8 날짜 산술
8.1 일, 월, 연도 가감하기
8.2 두 날짜 사이의 일수 알아내기
8.3 두 날짜 사이의 영업일수 알아내기
8.4 두 날짜 사이의 월 또는 년 수 알아내기
8.5 두 날짜 사이의 시, 분, 초 알아내기
8.6 1년 중 평일 발생 횟수 계산하기
8.7 현재 레코드와 다음 레코드 간의 날짜 차이 알아내기
8.8 마치며
CHAPTER 9 날짜 조작기법
9.1 연도의 윤년 여부 결정하기
9.2 연도의 날짜 수 알아내기
9.3 날짜에서 시간 단위 추출하기
9.4 월의 첫 번째 요일과 마지막 요일 알아내기
9.5 연도의 특정 요일의 모든 날짜 알아내기
9.6 월의 특정 요일의 첫 번째 및 마지막 발생일 알아내기
9.7 달력 만들기
9.8 해당 연도의 분기 시작일 및 종료일 나열하기
9.9 지정 분기의 시작일 및 종료일 알아내기
9.10 누락된 날짜 채우기
9.11 특정 시간 단위 검색하기
9.12 날짜의 특정 부분으로 레코드 비교하기
9.13 중복 날짜 범위 식별하기
9.14 마치며
CHAPTER 10 범위 관련 작업하기
10.1 연속 값의 범위 찾기
10.2 같은 그룹 또는 파티션의 행 간 차이 찾기
10.3 연속 값 범위의 시작과 끝 찾기
10.4 값 범위에서 누락된 값 채우기
10.5 연속된 숫자값 생성하기
10.6 마치며
CHAPTER 11 고급 검색
11.1 결과셋을 페이지로 매기기
11.2 테이블에서 n개 행 건너뛰기
11.3 외부 조인을 사용할 때 OR 로직 통합하기
11.4 역수 행 확인하기
11.5 상위 n개 레코드 선택하기
11.6 최댓값과 최솟값을 가진 레코드 찾기
11.7 이후 행 조사하기
11.8 행 값 이동하기
11.9 순위 결과
11.10 중복 방지하기
11.11 기사값 찾기
11.12 간단한 예측 생성하기
11.13 마치며
CHAPTER 12 보고서 작성과 재구성하기
12.1 결과셋을 하나의 행으로 피벗하기
12.2 결과셋을 여러 행으로 피벗하기
12.3 결과셋 역피벗하기
12.4 결과셋을 한 열로 역피벗하기
12.5 결과셋에서 반복값 숨기기
12.6 행 간 계산하는 결과셋 피벗하기
12.7 고정 크기의 데이터 버킷 생성하기
12.8 사전 정의된 수의 버킷 생성하기
12.9 수평 히스토그램 생성하기
12.10 수직 히스토그램 생성하기
12.11 비 GROUP BY 열 반환하기
12.12 단순 소계 계산하기
12.13 가능한 모든 식 조합의 소계 계산하기
12.14 소계가 아닌 행 식별하기
12.15 Case 표현식으로 행 플래그 지정하기
12.16 희소행렬 만들기
12.17 시간 단위로 행 그룹화하기
12.18 여러 그룹/파티션 집계를 동시 수행하기
12.19 값의 이동 범위에 대한 집계 수행하기
12.20 소계를 사용한 결과셋 피벗하기
12.21 마치며
CHAPTER 13 계층적 쿼리
13.1 상위-하위 관계 표현하기
13.2 자식-부모-조부모 관계 표현하기
13.3 테이블의 계층 뷰 생성하기
13.4 지정한 상위 행에 대한 모든 하위 행 찾기
13.5 리프, 분기, 루트 노드 행 확인하기
13.6 마치며
CHAPTER 14 기타 다양한 기법들
14.1 SQL Server의 PIVOT 연산자로 교차 분석 보고서 생성하기
14.2 SQL Server의 UNPIVOT 연산자로 교차 분석 보고서의 피벗 해제하기
14.3 Oracle의 MODEL 절로 결과셋 전송하기
14.4 고정되지 않은 위치에서 문자열 요소 추출하기
14.5 연간 일수 찾기(Oracle용 대체 해법)
14.6 영숫자 혼합 문자열 검색하기
14.7 Oracle에서 정수를 이진수로 변환하기
14.8 순위 결과셋 피벗하기
14.9 이중 피벗 결과셋에 열 머리글 추가하기
14.10 Oracle에서 스칼라 서브쿼리를 복합 서브쿼리로 변환하기
14.11 직렬화된 데이터를 행으로 구문 분석하기
14.12 합계에 대한 백분율 계산하기
14.13 그룹 내 값의 존재 여부 테스트하기
14.14 마치며
부록 A 윈도 함수 리프레셔 631
부록 B 공통 테이블 식 663
Author
앤서니 몰리나로,로버트 더그래프,송희정
미국 제약회사인 존슨앤드존슨의 데이터 과학자이다. 현재 자회사인 얀센 내 관찰 건강 데이터 분석 그룹의 매니저이다. 주요 연구 분야는 비모수적 방법, 시계열 분석, 대규모 데이터베이스 특성화 및 변환이다. 오픈 사이언스 OHDSI 커뮤니티 회원이기도 하다. 뉴욕시립대학교 헌터 칼리지에서 수학 학사, 응용수학 및 통계학 석사 학위를 받았다. 아내 조지아와 두 딸 키키, 코니와 함께 뉴욕에 살고 있다.
미국 제약회사인 존슨앤드존슨의 데이터 과학자이다. 현재 자회사인 얀센 내 관찰 건강 데이터 분석 그룹의 매니저이다. 주요 연구 분야는 비모수적 방법, 시계열 분석, 대규모 데이터베이스 특성화 및 변환이다. 오픈 사이언스 OHDSI 커뮤니티 회원이기도 하다. 뉴욕시립대학교 헌터 칼리지에서 수학 학사, 응용수학 및 통계학 석사 학위를 받았다. 아내 조지아와 두 딸 키키, 코니와 함께 뉴욕에 살고 있다.