책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 데이터베이스 프로그래밍 > SQL
· ISBN : 9791191941104
· 쪽수 : 256쪽
· 출판일 : 2024-07-15
책 소개
목차
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 작성 가이드(참고용)
저자소개
책속에서
서문
좋은 선배님들 덕분에 기술을 배우고 생계를 유지할 수 있었습니다. 선배님이 지식과 경험을 알려주실 때마다 혼자 알기 아까워서 부탁드렸습니다. "꼭 책으로 만들어주세요." 친구가 관련 책을 쓸 때도 진심으로 부탁했습니다. "내가 이해하지 못하는 부분을 꼭 넣어서 설명해줘." 이제야 그런 부탁이 얼마나 큰 부담이었는지 깨닫게 되었습니다. 데이터베이스 관련 책을 집필한 모든 분들에게 깊은 존경과 감사의 마음을 전합니다. 필요한 책인데 아직 세상에 없다면 그 책은 감히 제가 써도 되는 책이라고 생각하고 용기를 냈습니다.
오라클 시스템을 PostgreSQL로 전환하면서, 단순히 SQL 문법을 옮기는 것만으로도 복잡했습니다. 전환된 PostgreSQL의 SQL 성능을 오라클 사용 시의 성능과 비슷하게 맞추려고 노력했는데 만만치 않은 도전이었습니다. 이 과정에서 많은 시간과 노력이 들었고, 저의 부족함뿐만 아니라 PostgreSQL 관련 서적의 부족함도 느끼게 되었습니다. 그 필요를 담아 책을 집필하게 되었습니다. 책에서 제공하는 예시들은 SQL을 처음 배우는 분들뿐만 아니라 오라클 시스템을 PostgreSQL로 전환하려는 분들에게 실질적인 도움을 줄 것입니다.
저는 여러모로 운이 좋았습니다. 일에서 보람을 얻으며 생활의 주체로 살아가는 데 필요한 기술을 가르쳐준 선배, 친구, 후배들 덕분에 현재의 삶을 영위할 수 있었습니다. 그들로부터 받은 지식과 경험을 조금이라도 나누려 노력했지만, 받은 만큼 돌려줄 수 있는 능력이 모자라 아쉬움이 남습니다. 부족하지만 이 책을 통해서라도 누군가에게 도움이 되기를 바랍니다.
책을 발간하는 데 도움을 주신 많은 분들에게 감사의 말씀을 전합니다. 부모님이 저에게 삶을 주셨다면 조시형 대표님은 삶을 살아가는 데 필요한 도구를 주셨습니다. 생계를 책임지는 기술뿐만 아니라 실질적인 기술 교육의 기회를 제공해 주신 데 대해 깊이 감사드립니다. 책 집필을 위해 내부 이해당사자들을 설득하는 데 큰 힘을 써주신 이왕수 팀장님 감사합니다. 내 스승이자 시기심이 느껴지지 않는 친구 희락이, 옆에서 기술자의 길을 알려주시는 정윤구 이사님 감사드립니다. 오랜만에 봐도 어색하지 않은 재우 형님, 멀리서도 경험을 공유해주시는 승범이 형님, 같은 팀에서 저를 도와준 안철정, 강경민, 장태길, 정시광, 이준규, 임상준, 유지수 수석님과 언제든지 나타나 도움을 준 창환, 용진, 경수, 선옥, 웅수, 규종이 형, 김용찬 대표님, 유일환 수석님, 김태형 수석님에게도 진심으로 감사드립니다. 책의 출판과 디자인에 힘 써주신 전희영 님, 이정숙 님에게도 깊은 감사를 전합니다.
마지막으로, 제가 살아가는 이유이자 모든 것의 근원인 '평평'과 '가정'에게 무한한 사랑과 감사를 보냅니다. 제가 가진 삶과 기술 전부는 그들과 함께 하기 위한 것입니다. 이 책이 제게 도움 준 모든 분들에게 소소한 기쁨이 되고, 읽는 분들에게는 요긴한 도움이 되기를 바랍니다. 고맙습니다.




















