뚝딱 PostgreSQL 레시피
오라클과 PostgreSQL을 한 번에
Regular price
$24.72
Sale price
Regular price
✈️
Estimated delivery date 예상 배송일
Standard Shipping
불러오는 중...
주문일로부터 8-12 영업일
Express Shipping
불러오는 중...
주문일로부터 6-8 영업일
“오라클에서 PostgreSQL로 : 효과적인 SQL 전환의 길잡이”
이 책은 AI 생성 콘텐츠나 일반 웹 검색 결과의 한계를 넘어, 실제 프로젝트 경험에서 축적된 노하우와 최적의 실무 사례를 제공함으로써 실무에 즉시 적용이 가능합니다.
오라클에서 PostgreSQL로의 전환은 단순한 문법 전환 이상의 복잡성을 내포하고 있습니다. 이 책은 그 과정에서 얻은 실질적인 해결책을 제시합니다.
SQL 실력 향상을 원하는 개발자, 오라클에서 PostgreSQL로의 전환을 준비 중인 분에게 이 책을 권합니다.
주요 내용 :
- SQL 기본 문법의 체계적 강화
- 실용적 함수 활용 기법
- 시간대 변환 및 관련 문제 해결 방안
- 고급 쿼리 작성 및 최적화 기술
- SQL 고급 활용 전략 (조인 업데이트, Lateral 등)
- 복잡한 계층 구조 데이터 처리 방법론
- PostgreSQL에 최적화된 SQL 작성 가이드라인
이 책은 AI 생성 콘텐츠나 일반 웹 검색 결과의 한계를 넘어, 실제 프로젝트 경험에서 축적된 노하우와 최적의 실무 사례를 제공함으로써 실무에 즉시 적용이 가능합니다.
오라클에서 PostgreSQL로의 전환은 단순한 문법 전환 이상의 복잡성을 내포하고 있습니다. 이 책은 그 과정에서 얻은 실질적인 해결책을 제시합니다.
SQL 실력 향상을 원하는 개발자, 오라클에서 PostgreSQL로의 전환을 준비 중인 분에게 이 책을 권합니다.
주요 내용 :
- SQL 기본 문법의 체계적 강화
- 실용적 함수 활용 기법
- 시간대 변환 및 관련 문제 해결 방안
- 고급 쿼리 작성 및 최적화 기술
- SQL 고급 활용 전략 (조인 업데이트, Lateral 등)
- 복잡한 계층 구조 데이터 처리 방법론
- PostgreSQL에 최적화된 SQL 작성 가이드라인
Couldn't load pickup availability
출판사 리뷰
출판사 리뷰
대략 3년 전으로 기억한다. 저자가 DB 전문도서 출판사 대표인 나를 찾아왔다. 전 직장에서 우린 같은 팀이었고, 내가 팀장이었다. 저자가 나를 찾아온 이유는 책을 출간하고 싶어서였다. 최근 Oracle 시스템을 PostgreSQL로 전환하는 프로젝트를 수행했는데, 그전까지 Oracle 중심으로만 일해온 터라 많은 시행착오를 겪었고, 그 경험을 담은 책을 출간해 다른 이들에게 도움을 주고 싶다는 취지였다. 아직 초벌 원고가 완성된 것도 아니었고, 그때까지만 해도 과연 시장 수요가 있을지 반신반의했기에 더 구체적인 논의를 진행하지 못하고 흐지부지되고 말았다.
시간이 흘러 이번엔 내가 저자를 찾아갔다. DB 컨설팅 회사도 함께 운영하는 터라 DB 업계 동향에도 밝은 나는 최근 들어오는 영업 문의가 대부분 DBMS 전환 관련되었다는 사실에 저자가 3년 전에 제안했던 그 책이 번뜩 생각났던 것이다.
그간 IT 생태계는 빅데이터, 클라우드 컴퓨팅, MSA 등을 중심으로 지각변동이 일어났고, 최근엔 AI 열풍이 거세다. 그 중심에는 데이터가 있다. 기존보다 훨씬 더 많은 데이터를 활용하려다 보니 데이터 저장 비용을 계속 낮춰야 했고, 갖은 노력 끝에 기업들은 '닭 잡는 데 소 잡는 칼 쓰지 말자'는 결론을 낸 듯하다.
Oracle이 세상에서 가장 뛰어난 범용 DBMS라는 건 세상이 다 아는 사실이다. 하지만, 도입 비용과 유지보수 비용이 만만치 않다. 그에 반해, 그것이 가진 기능의 1/10, 아니 1/100도 채 쓰지 못하는 것이 현실이다. 그럴 바엔 기능은 좀 부족하더라도 비용이 현저히 낮은 오픈소스 DBMS를 사용하자는 주장이 설득력을 얻고 있다. 성능은 분산을 통해 확보한다. 분산 아키텍처가 복잡하긴 해도 사용자 및 데이터 증가에 따른 확장성 측면에서는 유리하다.
운영 비용을 절감하기 위해 시스템 특성과 규모에 맞는 DBMS로 전환하는 사례가 느는 흐름 속에 PostgreSQL이 있고, 이 책은 그 흐름에 올라탄 개발자들에게 신선한 바람을 제공할 것이다.
시간이 흘러 이번엔 내가 저자를 찾아갔다. DB 컨설팅 회사도 함께 운영하는 터라 DB 업계 동향에도 밝은 나는 최근 들어오는 영업 문의가 대부분 DBMS 전환 관련되었다는 사실에 저자가 3년 전에 제안했던 그 책이 번뜩 생각났던 것이다.
그간 IT 생태계는 빅데이터, 클라우드 컴퓨팅, MSA 등을 중심으로 지각변동이 일어났고, 최근엔 AI 열풍이 거세다. 그 중심에는 데이터가 있다. 기존보다 훨씬 더 많은 데이터를 활용하려다 보니 데이터 저장 비용을 계속 낮춰야 했고, 갖은 노력 끝에 기업들은 '닭 잡는 데 소 잡는 칼 쓰지 말자'는 결론을 낸 듯하다.
Oracle이 세상에서 가장 뛰어난 범용 DBMS라는 건 세상이 다 아는 사실이다. 하지만, 도입 비용과 유지보수 비용이 만만치 않다. 그에 반해, 그것이 가진 기능의 1/10, 아니 1/100도 채 쓰지 못하는 것이 현실이다. 그럴 바엔 기능은 좀 부족하더라도 비용이 현저히 낮은 오픈소스 DBMS를 사용하자는 주장이 설득력을 얻고 있다. 성능은 분산을 통해 확보한다. 분산 아키텍처가 복잡하긴 해도 사용자 및 데이터 증가에 따른 확장성 측면에서는 유리하다.
운영 비용을 절감하기 위해 시스템 특성과 규모에 맞는 DBMS로 전환하는 사례가 느는 흐름 속에 PostgreSQL이 있고, 이 책은 그 흐름에 올라탄 개발자들에게 신선한 바람을 제공할 것이다.
목차
목차
CHAPTER 1 SQL 기본 문법
1.1. SELECT
1.2. FROM
1.3. WHERE
1.4. 조건 연산자
1.4.1. AND 조건과 OR 조건
1.4.2. NOT 조건
1.4.3. = 조건
1.4.4. 범위 조건
1.4.5. NULL 조건
1.5. 인라인뷰
1.6. 정렬 및 그룹화
1.6.1. ORDER BY 절
1.6.2. GROUP BY 절
1.7. 집합 연산
1.7.1. 합집합
1.7.2. 교집합
1.7.3. 차집합
CHAPTER 2 스칼라 함수
2.1. 숫자 함수
2.1.1. ABS
2.1.2. SQRT
2.1.3. CBRT
2.1.4. POWER
2.1.5. CEIL
2.1.6. FLOOR
2.1.7. DIV
2.1.8. MOD
2.1.9. ROUND
2.1.10. TRUNC
2.1.11. SIGN
2.1.12. 무작위수(RANDOM)
2.2. 문자 함수
2.2.1. UPPER
2.2.2. LOWER
2.2.3. INITCAP
2.2.4. CONCAT
2.2.5. ||
2.2.6. CONCAT_WS(오라클 미지원)
2.2.7. SUBSTRING(오라클 미지원), SUBSTR
2.2.8. SUBSTRB(PostgreSQL 미지원)
2.2.9. LEFT(오라클 미지원), RIGHT(오라클 미지원)
2.2.10. SPLIT_PART(오라클 미지원)
2.2.11. REPLACE
2.2.12. OVERLAY(오라클 미지원)
2.2.13. TRANSLATE
2.2.14. LENGTH, CHAR_LENGTH(오라클 미지원), CHARACTER_LENGTH(오라클 미지원)
2.2.15. OCTET_LENGTH(오라클 미지원)
2.2.16. LPAD, RPAD
2.2.17. LTRIM, RTRIM
2.2.18. BTRIM(오라클 미지원)
2.2.19. ASCII
2.2.20. CHR
2.2.21. POSITION(오라클 미지원), STRPOS(오라클 미지원)
2.2.22. REPEAT(오라클 미지원)
2.2.23. GREATEST, LEAST
2.2.24. ILIKE(오라클 미지원)
2.3. 날짜 함수
2.3.1. 자주 사용하는 PostgreSQL 날짜 함수 사용 형태
2.3.2. TO_DATE
2.3.3. TO_TIMESTAMP
2.3.4. 특정일자의 시작과 끝 시각 구하기
2.3.5. 현재를 기준으로 어제, 오늘, 내일 구하기
2.3.6. 시분초 제거하기
2.3.7. 월의 마지막 날 구하기(LAST_DAY)
2.3.8. 요일 구하기(EXTRACT)
2.3.9. 한국, 미국, 영국 날짜 표현
2.3.10. 일정 기간 이후 시각 구하기
2.3.11. 시각 값 자르기
2.3.12. 시각 값에서 특정 부분 추출하기
2.3.13. 일자간 차이 구하기
2.3.14. 입력 일 이후 특정 요일인 첫번째 일자 구하기
2.3.15. 테이블에서 일자 단위 데이터 조회 예시
2.4 변환 함수
2.4.1. 형 변환 방법
2.4.2. TO_CHAR(숫자를 문자로 변경)
2.4.3. TO_CHAR(일자를 문자로 변경)
2.4.4. TO_NUMBER(문자를 숫자로 변경)
2.4.5. TO_DATE(문자를 시각으로 변경)
2.4.6. NULLIF
2.4.7. NVL과 NVL2
2.5 ARRAY 관련 함수와 조회 방법
2.5.1. ARRAY 데이터 생성과 기본 이해하기
2.5.2. ARRAY에서 특정 데이터 추출하기
2.5.3. ARRAY 차원 파악
2.5.4. ARRAY 길이 파악
2.5.5. ARRAY에 값 추가
2.5.6. ARRAY 결합
2.5.7. ARRAY에서 특정 값의 위치 찾기
2.5.8. 문자열을 ARRAY로 변환
2.5.9. ARRAY를 문자열로 변환
2.5.10. ARRAY를 row로 분리
2.5.11. row 값을 ARRAY로 변환
2.5.12. ARRAY간 비교
2.5.13. ARRAY 칼럼에 있는 값 조회(sample)
CHAPTER 3 타임존 설정 및 변환
3.1. 세션 타임존 확인 및 설정 방법
3.2. 타임존 변환 방법
3.2.1. WITH TIME ZONE 사용
3.2.2. WITHOUT TIME ZONE
3.3. sysdate 변환
3.3.1. sysdate 변환 방법 제안
3.3.2. 테스트 요약
3.3.3. 상세 테스트 결과
CHAPTER 4 조인
4.1. 이너조인(INNER JOIN)
4.2. 아우터조인(OUTER JOIN)
CHAPTER 5 분석함수
5.1. 분석함수 기본 문법
5.1.1. WINDOWING 절
5.2. 다양한 분석함수
5.2.1. ROW_NUMBER
5.2.2. RANK와 DENSE_RANK
5.2.3. LEAD와 LAG
5.2.4. LISTAGG, STRING_AGG, ARRAY_AGG
5.2.5. CUME_DIST
5.2.6. PERCENT_RANK
5.2.7. NTILE
5.2.8. FIRST_VALUE, LAST_VALUE
5.2.9. NTH_VALUE
CHAPTER 6 SQL 활용
6.1. 조인업데이트
6.1.1. 오라클의 조인업데이트
6.1.2. PostgreSQL의 조인업데이트
6.2. DML을 포함한 WITH절
6.2.1. 기본적인 WITH DML 구문
6.2.2. WITH DML을 이용한 MULTI TABLE INSERT
6.2.3. WITH DML을 이용한 UPSERT
6.2.4. ON CONFLICT를 사용한 제약 조건 처리
6.3 LATERAL
6.3.1. 오라클에서 LATERAL 사용
6.3.2. PostgreSQL에서 LATERAL 사용
6.3.3. LEFT OUTER JOIN LATERAL
6.4. 기타 SQL 사용법
6.4.1. WHERE rownum = 1 변환
6.4.2. 원하는 건수의 임시 집합 만들기
6.4.3. 시퀀스 NEXTVAL 호출
6.4.4. SELECT절에 NOT EXISTS, EXIST 사용(PostgreSQL)
6.4.5. FILTER 구문 사용(PostgreSQL)
6.4.6. IS DISTINCT FROM
6.4.7. DISTINCT ON
CHAPTER 7 계층 데이터 조회
7.1. 계층 데이터 모델
7.2. 오라클의 CONNECT BY 구문 작동 원리
7.2.1. START WITH 절
7.2.2. 계층 데이터 연결
7.2.3. 순방향 전개와 역방향 전개
7.2.4. 데이터 필터링
7.2.5. 계층 쿼리 결과 정렬하기
7.2.6. 기타 사용 가능 칼럼
7.2.7. 오류 데이터로 인한 무한 루프 처리
7.2.8. CATEGORY FULL PATH 출력
7.3. Recursive Subquery Factoring
7.3.1. Recursive Subquery Factoring 기초 문법
7.3.2. Recursive Subquery Factoring 동작 방식
7.3.3. Recursive Subquery Factoring 레벨 우선 정렬
7.3.4. Recursive Subquery Factoring 계층 우선 정렬
7.3.5. CONNECT_BY_ISLEAF, CONNECT_BY_ROOT, SYS_CONNECT_BY_PATH 값 만들기
7.3.6. Recursive Subquery Factoring 무한 루프(cycle) 데이터 처리
7.3.7. Recursive Subquery Factoring을 이용한 계층 누적합 계산
CHAPTER 8 PostgreSQL SQL 작성 가이드(참고용)
1.1. SELECT
1.2. FROM
1.3. WHERE
1.4. 조건 연산자
1.4.1. AND 조건과 OR 조건
1.4.2. NOT 조건
1.4.3. = 조건
1.4.4. 범위 조건
1.4.5. NULL 조건
1.5. 인라인뷰
1.6. 정렬 및 그룹화
1.6.1. ORDER BY 절
1.6.2. GROUP BY 절
1.7. 집합 연산
1.7.1. 합집합
1.7.2. 교집합
1.7.3. 차집합
CHAPTER 2 스칼라 함수
2.1. 숫자 함수
2.1.1. ABS
2.1.2. SQRT
2.1.3. CBRT
2.1.4. POWER
2.1.5. CEIL
2.1.6. FLOOR
2.1.7. DIV
2.1.8. MOD
2.1.9. ROUND
2.1.10. TRUNC
2.1.11. SIGN
2.1.12. 무작위수(RANDOM)
2.2. 문자 함수
2.2.1. UPPER
2.2.2. LOWER
2.2.3. INITCAP
2.2.4. CONCAT
2.2.5. ||
2.2.6. CONCAT_WS(오라클 미지원)
2.2.7. SUBSTRING(오라클 미지원), SUBSTR
2.2.8. SUBSTRB(PostgreSQL 미지원)
2.2.9. LEFT(오라클 미지원), RIGHT(오라클 미지원)
2.2.10. SPLIT_PART(오라클 미지원)
2.2.11. REPLACE
2.2.12. OVERLAY(오라클 미지원)
2.2.13. TRANSLATE
2.2.14. LENGTH, CHAR_LENGTH(오라클 미지원), CHARACTER_LENGTH(오라클 미지원)
2.2.15. OCTET_LENGTH(오라클 미지원)
2.2.16. LPAD, RPAD
2.2.17. LTRIM, RTRIM
2.2.18. BTRIM(오라클 미지원)
2.2.19. ASCII
2.2.20. CHR
2.2.21. POSITION(오라클 미지원), STRPOS(오라클 미지원)
2.2.22. REPEAT(오라클 미지원)
2.2.23. GREATEST, LEAST
2.2.24. ILIKE(오라클 미지원)
2.3. 날짜 함수
2.3.1. 자주 사용하는 PostgreSQL 날짜 함수 사용 형태
2.3.2. TO_DATE
2.3.3. TO_TIMESTAMP
2.3.4. 특정일자의 시작과 끝 시각 구하기
2.3.5. 현재를 기준으로 어제, 오늘, 내일 구하기
2.3.6. 시분초 제거하기
2.3.7. 월의 마지막 날 구하기(LAST_DAY)
2.3.8. 요일 구하기(EXTRACT)
2.3.9. 한국, 미국, 영국 날짜 표현
2.3.10. 일정 기간 이후 시각 구하기
2.3.11. 시각 값 자르기
2.3.12. 시각 값에서 특정 부분 추출하기
2.3.13. 일자간 차이 구하기
2.3.14. 입력 일 이후 특정 요일인 첫번째 일자 구하기
2.3.15. 테이블에서 일자 단위 데이터 조회 예시
2.4 변환 함수
2.4.1. 형 변환 방법
2.4.2. TO_CHAR(숫자를 문자로 변경)
2.4.3. TO_CHAR(일자를 문자로 변경)
2.4.4. TO_NUMBER(문자를 숫자로 변경)
2.4.5. TO_DATE(문자를 시각으로 변경)
2.4.6. NULLIF
2.4.7. NVL과 NVL2
2.5 ARRAY 관련 함수와 조회 방법
2.5.1. ARRAY 데이터 생성과 기본 이해하기
2.5.2. ARRAY에서 특정 데이터 추출하기
2.5.3. ARRAY 차원 파악
2.5.4. ARRAY 길이 파악
2.5.5. ARRAY에 값 추가
2.5.6. ARRAY 결합
2.5.7. ARRAY에서 특정 값의 위치 찾기
2.5.8. 문자열을 ARRAY로 변환
2.5.9. ARRAY를 문자열로 변환
2.5.10. ARRAY를 row로 분리
2.5.11. row 값을 ARRAY로 변환
2.5.12. ARRAY간 비교
2.5.13. ARRAY 칼럼에 있는 값 조회(sample)
CHAPTER 3 타임존 설정 및 변환
3.1. 세션 타임존 확인 및 설정 방법
3.2. 타임존 변환 방법
3.2.1. WITH TIME ZONE 사용
3.2.2. WITHOUT TIME ZONE
3.3. sysdate 변환
3.3.1. sysdate 변환 방법 제안
3.3.2. 테스트 요약
3.3.3. 상세 테스트 결과
CHAPTER 4 조인
4.1. 이너조인(INNER JOIN)
4.2. 아우터조인(OUTER JOIN)
CHAPTER 5 분석함수
5.1. 분석함수 기본 문법
5.1.1. WINDOWING 절
5.2. 다양한 분석함수
5.2.1. ROW_NUMBER
5.2.2. RANK와 DENSE_RANK
5.2.3. LEAD와 LAG
5.2.4. LISTAGG, STRING_AGG, ARRAY_AGG
5.2.5. CUME_DIST
5.2.6. PERCENT_RANK
5.2.7. NTILE
5.2.8. FIRST_VALUE, LAST_VALUE
5.2.9. NTH_VALUE
CHAPTER 6 SQL 활용
6.1. 조인업데이트
6.1.1. 오라클의 조인업데이트
6.1.2. PostgreSQL의 조인업데이트
6.2. DML을 포함한 WITH절
6.2.1. 기본적인 WITH DML 구문
6.2.2. WITH DML을 이용한 MULTI TABLE INSERT
6.2.3. WITH DML을 이용한 UPSERT
6.2.4. ON CONFLICT를 사용한 제약 조건 처리
6.3 LATERAL
6.3.1. 오라클에서 LATERAL 사용
6.3.2. PostgreSQL에서 LATERAL 사용
6.3.3. LEFT OUTER JOIN LATERAL
6.4. 기타 SQL 사용법
6.4.1. WHERE rownum = 1 변환
6.4.2. 원하는 건수의 임시 집합 만들기
6.4.3. 시퀀스 NEXTVAL 호출
6.4.4. SELECT절에 NOT EXISTS, EXIST 사용(PostgreSQL)
6.4.5. FILTER 구문 사용(PostgreSQL)
6.4.6. IS DISTINCT FROM
6.4.7. DISTINCT ON
CHAPTER 7 계층 데이터 조회
7.1. 계층 데이터 모델
7.2. 오라클의 CONNECT BY 구문 작동 원리
7.2.1. START WITH 절
7.2.2. 계층 데이터 연결
7.2.3. 순방향 전개와 역방향 전개
7.2.4. 데이터 필터링
7.2.5. 계층 쿼리 결과 정렬하기
7.2.6. 기타 사용 가능 칼럼
7.2.7. 오류 데이터로 인한 무한 루프 처리
7.2.8. CATEGORY FULL PATH 출력
7.3. Recursive Subquery Factoring
7.3.1. Recursive Subquery Factoring 기초 문법
7.3.2. Recursive Subquery Factoring 동작 방식
7.3.3. Recursive Subquery Factoring 레벨 우선 정렬
7.3.4. Recursive Subquery Factoring 계층 우선 정렬
7.3.5. CONNECT_BY_ISLEAF, CONNECT_BY_ROOT, SYS_CONNECT_BY_PATH 값 만들기
7.3.6. Recursive Subquery Factoring 무한 루프(cycle) 데이터 처리
7.3.7. Recursive Subquery Factoring을 이용한 계층 누적합 계산
CHAPTER 8 PostgreSQL SQL 작성 가이드(참고용)
저자
저자
김익서
2005년 농심데이타시스템즈에서 개발자로 커리어를 시작했다. 2008년부터 2015년까지 비투엔컨설팅에서 데이터 컨설턴트로 재직하면서 데이터베이스 기술과 SQL 교육에 대한 경험을 쌓았다. 'SQL전문가 가이드' 초판의 공저자로 참여했으며 한국데이터진흥원에서 주관하는 SQLD, SQLP 자격검정 전문위원으로 2022년도까지 활동했다. 국민대학교, 삼성전자, KB데이타시스템 등에서 SQL 교육을 수행했으며 2022년부터 와우패스에서 SQLD 전담 강사로 활동 중이다. 현재 싸이버로지텍에서 DA로 근무 중이다.
Payment & Security
Payment methods
Your payment information is processed securely. We do not store credit card details nor have access to your credit card information.
$99 이상 무료 배송
3% 리워드 크레딧 적립
Secure Payment

