프린트 하기



서적 명 : 불친절한 SQL 프로그래밍



책소개

이미 수많은 SQL 책이 출간되어 있지만 기초적인 내용만 다루는 "친절한" 책이 대부분이다. 기초적인 내용만 다루다 보니 막상 필요한 고급 기능은 인터넷에서 찾아야 하는 아쉬움이 있다. SQL 프로그래밍의 원리와 해법을 다루는, 조금 "불친절한" 책도 필요하겠다는 생각에 이 책을 쓰게 되었다. 그렇다고 겁먹을 필요는 없다. 입문자를 위한 기본적인 내용도 빠짐없이 다루고 있다.


이 책은 바이블 형식의 책이다. 오라클 데이터베이스 12.2 버전을 기준으로 기본 개념에서 고급 기능까지 오라클 SQL의 거의 모든 내용을 다룬다. SQL 외에도 데이터 개론과 SQL 개발에 활용할 수 있는 PL/SQL 코드를 일부 수록하고 있다. 바이블 형식의 책이지만 지루한 설명 대신 다양한 실습 예제와 활용 기법을 중심으로 내용을 구성했다.


이해하기 쉽고 정확한 결과를 반환하는 SQL이 좋은 SQL이다. 좋은 SQL을 작성하려면 많은 노력이 필요하다. 동작 원리를 이해하고, 기존 SQL을 분석해야 하며, 직접 SQL을 작성해봐야 한다. 데이터 모델에 대한 이해와 요구사항에 대한 분석까지 더해지면 금상첨화다. 이 책이 여러분의 노력에 도움을 줄 수 있는 든든한 안내자가 되었으면 좋겠다.


내용 문의 : HTTP://WWW.DBIAN.NET


[인터넷 교보문고 제공]


목차

1부 기본 개념 _ 1 


1. 데이터 _ 3 

1.1 데이터 _ 3 

1.2 데이터베이스 _ 5 

1.3 데이터베이스 관리 시스템 _ 6 

1.4 IT 시스템 _ 7 

1.5 직종과 직무 _ 8 


2. 데이터 모델링 _ 11 

2.1 데이터 모델 _ 11 

2.2 E-R 모델 _ 12 

2.2.1 엔터티 _ 13 

2.2.2 속성 _ 14 

2.2.3 관계 _ 15 

2.2.4 예시 데이터 모델 _ 20 

2.3 정규형 _ 22 

2.3.1 정규화 _ 22 

2.3.2 비정규화 _ 25 

2.4 물리 데이터 모델 _ 25 


3. 오라클 데이터베이스 _ 27 

3.1 개념 _ 27 

3.1.1 사용자 _ 28 

3.1.2 오브젝트 _ 28 

3.1.3 테이블 _ 29 

3.1.4 데이터 타입 _ 30 

3.1.5 데이터 무결성 _ 30 

3.1.6 트랜잭션 _ 31 

3.1.7 정적 데이터 딕셔너리 뷰 _ 31 

3.1.8 동적 성능 뷰 _ 31 

3.2 구조 _ 32 

3.2.1 데이터베이스와 인스턴스 _ 33 

3.2.2 프로세스 구조 _ 35 

3.2.3 메모리 구조 _ 35 

3.2.4 저장 구조 _ 37 

3.2.5 네트워크 구조 _ 38 

3.2.6 애플리케이션 구조 _ 39 


4. SQL _ 43 

4.1 역사 _ 43 

4.2 특징 _ 44 

4.3 종류 _ 45 

4.4 처리 과정 _ 45 

4.5 수행 과정 _ 46 



2부 기초 쿼리 _ 49 


5. SELECT 문 _ 51 

5.1 SELECT 절 _ 52 

5.1.1 애스터리스크 _ 52 

5.1.2 열 _ 53 

5.1.3 열 별칭 _ 55 

5.1.4 DISTINCT 키워드 _ 55 

5.2 FROM 절 _ 56 

5.2.1 스키마 _ 56 

5.2.2 테이블 별칭 _ 57 

5.2.3 SAMPLE 절 _ 58 

5.3 기본 요소 _ 58 

5.3.1 리터럴 _ 58 

5.3.2 널 _ 65 

5.3.3 연산자 _ 65 

5.3.4 표현식 _ 69 

5.3.5 슈도 칼럼 _ 72 

5.3.6 주석 _ 73 

5.4 바인드 변수 _ 75 


6. 단일 행 함수 _ 77 

6.1 문자 함수 _ 78 

6.2 숫자 함수 _ 89 

6.3 날짜 함수 _ 96 

6.4 변환 함수 _ 107 

6.5 널 관련 함수 _ 123 

6.6 비교 함수 _ 126 

6.7 엔코딩 디코딩 함수 _ 127 

6.8 환경 식별자 함수 _ 132 


7. WHERE 절 _ 141 

7.1 비교 조건 _ 141 

7.2 논리 조건 _ 144 

7.3 BETWEEN 조건 _ 146 

7.4 IN 조건 _ 148 

7.5 LIKE 조건 _ 151 

7.6 널 조건 _ 154 

7.7 조건 우선순위 _ 156 

7.8 활용 예제 _ 159 


8. ORDER BY 절 _ 169 

8.1 기본 문법 _ 169 

8.2 활용 예제 _ 175 


9. 집계 함수 _ 179 

9.1 기본 함수 _ 179 

9.2 통계 함수 _ 185 

9.3 순위 함수 _ 187 

9.4 분포 함수 _ 191 

9.5 기타 함수 _ 193 

9.6 KEEP 키워드 _ 194 


10. GROUP BY 절과 HAVING 절 _ 197 

10.1 GROUP BY 절 _ 197 

10.2 GROUP BY 절의 확장 기능 _ 204 

10.2.1 ROLLUP _ 204 

10.2.2 CUBE _ 205 

10.2.3 GROUPING SETS _ 207 

10.2.4 조합 열 _ 208 

10.2.5 연결 그룹 _ 209 

10.2.6 관련 함수 _ 210 

10.3 HAVING 절 _ 213 



3부 중급 쿼리 _ 217 


11. 조인 _ 219 

11.1 기본 원리 _ 219 

11.1.1 조인 조건 _ 220 

11.1.2 조인 범위 _ 227 

11.1.3 조인 차수 _ 240 

11.2 기술 순서 _ 245 

11.3 ANSI 조인 문법 _ 250 

11.3.1 NATURAL JOIN 절 _ 250 

11.3.2 USING 절 _ 250 

11.3.3 CROSS JOIN 절 _ 250 

11.3.4 INNER JOIN 절 _ 251 

11.3.5 OUTER JOIN 절 _ 252 

11.4 파티션 아우터 조인 _ 257 

11.5 활용 예제 _ 257 


12. 서브 쿼리 _ 283 

12.1 중첩 서브 쿼리 _ 285 

12.1.1 비상관 서브 쿼리 _ 286 

12.1.2 상관 서브 쿼리 _ 291 

12.1.3 사용 기준 _ 295 

12.2 스칼라 서브 쿼리 _ 300 

12.3 인라인 뷰 _ 302 

12.4 사용 기준 _ 304 

12.5 WITH 절 _ 309 

12.5.1 SUBQUERY FACTORING 절 _ 310 

12.5.2 PL/SQL 선언 _ 311 

12.6 신규 기능 _ 312 

12.6.1 LATERAL 인라인 뷰 _ 312 

12.6.2 CROSS APPLY 절 _ 314 

12.6.3 OUTER APPLY 절 _ 314 

12.6.4 기존 동작 변화 _ 315 


13. 집합 연산자 _ 317 

13.1 기본 문법 _ 319 

13.1.1 UNION ALL 연산자 _ 319 

13.1.2 UNION 연산자 _ 320 

13.1.3 INTERSECT 연산자 _ 322 

13.1.4 MINUS 연산자 _ 323 

13.2 제약 사항 _ 323 

13.3 활용 예제 _ 326 


14. 분석 함수 _ 337 

14.1 기본 문법 _ 338 

14.1.1 QUERY PARTITION 절 _ 338 

14.1.2 ORDER BY 절 _ 339 

14.1.3 WINDOWDING 절 _ 340 

14.1.4 KEEP 키워드 _ 350 

14.1.5 제약 사항 _ 351 

14.2 분석 함수 _ 354 

14.2.1 기본 함수 _ 355 

14.2.2 통계 함수 _ 361 

14.2.3 순위 함수 _ 363 

14.2.4 분포 함수 _ 372 

14.2.5 순차 함수 _ 374 

14.2.6 기타 함수 _ 379 

14.3 활용 예제 _ 386 


15. Top-N 쿼리 _ 395 

15.1 기본 문법 _ 395 

15.1.1 ROWNUM 방식 _ 395 

15.1.2 분석 함수 방식 _ 400 

15.1.3 ROW LIMITING 절 _ 403 

15.2 고급 주제 _ 405 

15.2.1 Top-N 쿼리와 조인 _ 405 

15.2.2 Top-N 쿼리와 UNION ALL 연산자 _ 407 


16. 계층 쿼리 _ 409 

16.1 계층 쿼리 절 _ 413 

16.1.1 기본 문법 _ 413 

16.1.2 동작 원리 _ 415 

16.1.3 전개 방향 _ 419 

16.1.4 계층 정렬 _ 420 

16.1.5 루프 처리 _ 421 

16.2 재귀 서브 쿼리 팩토링 _ 423 

16.2.1 기본 문법 _ 423 

16.2.2 계층 정렬 _ 425 

16.2.3 루프 처리 _ 427 

16.3 고급 주제 _ 429 

16.3.1 노드 제거 _ 429 

16.3.2 다중 루트 노드 _ 430 

16.3.3 다중 속성 순환 관계 _ 431 

16.3.4 계층 쿼리와 조인 _ 435 

16.4 활용 예제 _ 436 


17. PIVOT 절과 UNPIVOT 절 _ 443 

17.1 PIVOT 절 _ 443 

17.1.1 기본 문법 _ 444 

17.1.2 기존 방식 _ 448 

17.2 UNPIVOT 절 _ 449 

17.2.1 기본 문법 _ 449 

17.2.2 기존 방식 _ 454 

17.3 활용 예제 _ 455 



4부 관리 구문 _ 459 


18. DML 문 _ 461 

18.1 INSERT 문 _ 461 

18.1.1 단일 테이블 INSERT 문 _ 461 

18.1.2 다중 테이블 INSERT 문 _ 465 

18.2 UPDATE 문 _ 469 

18.3 DELETE 문 _ 474 

18.4 MERGE 문 _ 476 

18.4.1 기본 문법 _ 476 

18.4.2 고급 주제 _ 486 

18.5 DML 에러 로깅 _ 491 


19. TCS 문 _ 497 

19.1 트랜잭션 _ 498 

19.1.1 구조 _ 498 

19.1.2 SCN _ 499 

19.2 기본 문법 _ 500 

19.2.1 COMMIT 문 _ 501 

19.2.2 ROLLBACK 문 _ 502 

19.2.3 SAVEPOINT 문 _ 504 

19.3 데이터 동시성 _ 508 

19.3.1 락킹 메커니즘 _ 508 

19.3.2 동시성 제어 _ 512 

19.4 데이터 일관성 _ 520 

19.4.1 문장 수준 읽기 일관성 _ 521 

19.4.2 트랜잭션 수준 읽기 일관성 _ 522 


20. DDL 문 _ 527 

20.1 테이블 _ 527 

20.1.1 기본 문법 _ 527 

20.1.2 테이블 유형 _ 539 

20.2 열 _ 555 

20.2.1 기본 문법 _ 555 

20.2.2 데이터 타입 _ 561 

20.2.3 기본값 _ 574 

20.2.4 열 유형 _ 575 

20.3 제약 조건 _ 581 

20.3.1 기본 문법 _ 581 

20.3.2 제약 조건 유형 _ 583 

20.3.3 제약 조건 상태 _ 599 

20.4 인덱스 _ 605 

20.4.1 기본 문법 _ 606 

20.4.2 인덱스 유형 _ 611 

20.4.3 인덱스와 제약 조건 _ 616 

20.5 파티션 _ 622 

20.5.1 파티션 테이블 _ 622 

20.5.2 파티션 인덱스 _ 640 

20.5.3 관리 구문 _ 643 

20.5.4 관리 구문과 인덱스 _ 652 

20.5.5 신규 기능 _ 653 

20.6 뷰 _ 658 

20.6.1 기본 문법 _ 658 

20.6.2 활용 예제 _ 666 

20.7 시퀀스 _ 669 

20.7.1 기본 문법 _ 669 

20.7.2 시퀀스 유형 _ 673 

20.7.3 신규 기능 _ 675 

20.7.4 활용 예제 _ 680 

20.8 시너님 _ 682 

20.8.1 기본 문법 _ 682 

20.8.2 시너님 유형 _ 685 

20.9 데이터베이스 링크 _ 687 

20.9.1 기본 문법 _ 687 

20.9.2 고급 주제 _ 690 

20.10 COMMENT 문 _ 693 


21. DCL 문 _ 695 

21.1 사용자 _ 695 

21.1.1 기본 문법 _ 695 

21.2 권한 _ 698 

21.2.1 기본 문법 _ 698 

21.3 롤 _ 709 

21.3.1 기본 문법 _ 709 

21.3.2 SET ROLE 문 _ 714 


22. SCS 문 _ 719 

22.1 기본 문법 _ 719 

22.1.1 ALTER SESSION SET 절 _ 720 



5부 고급 쿼리 _ 729 


23. 세계화 지원 _ 731 

23.1 시간대 지원 _ 731 

23.1.1 데이터 타입 _ 731 

23.1.2 날짜 함수 _ 733 

23.1.3 날짜 표현식 _ 739 

23.2 다국어 지원 _ 740 

23.2.1 캐릭터 셋 _ 740 

23.2.2 데이터 타입 _ 741 

23.2.3 관련 함수 _ 742 


24. 정규 표현식 _ 743 

24.1 기본 문법 _ 743 

24.1.1 POSIX 연산자 _ 743 

24.1.2 PERL 정규 표현식 연산자 _ 752 

24.2 정규 표현식 조건과 함수 _ 756 

24.3 활용 예제 _ 764 


25. 근사 쿼리 _ 767 

25.1 근사 함수 _ 767 

25.2 초기화 파라미터 _ 773 


26. MODEL 절 _ 777 

26.1 기본 문법 _ 777 

26.1.1 RULES 절 _ 781 

26.1.2 규칙 옵션 _ 785 

26.1.3 셀 참조 옵션 _ 789 

26.1.4 행 반환 옵션 _ 792 

26.1.5 참조 모델 _ 793 

26.2 고급 주제 _ 796 

26.2.1 널과 누락된 셀 처리 _ 796 

26.2.2 FOR 루프 _ 798 

26.2.3 MODEL ITERATE 절 _ 804 

26.2.4 규칙 종속 _ 806 

26.2.5 정렬 규칙 _ 807 

26.2.6 분석 함수 _ 810 

26.3 활용 예제 _ 812 


27. MATCH_RECOGNIZE 절 _ 817 

27.1 기본 문법 _ 817 

27.1.1 PARTITION BY 절 _ 820 

27.1.2 ORDER BY 절 _ 820 

27.1.3 ROW PER MATCH 절 _ 821 

27.1.4 MEASURE 절 _ 821 

27.1.5 PATTERN 절 _ 821 

27.1.6 SUBSET 절 _ 824 

27.1.7 DEFINE 절 _ 825 

27.1.8 SKIP TO 절 _ 825 

27.1.9 MEASURE 절과 DEFINE 절의 표현식 _ 826 

27.2 고급 주제 _ 833 

27.2.1 중첩 탐색 함수 _ 833 

27.2.2 빈 일치와 불일치 행 _ 834 

27.2.3 제외 _ 834 

27.2.4 순열 _ 835 

27.3 활용 예제 _ 836 


28. 사용자 정의 타입 _ 857 

28.1 기본 문법 _ 857 

28.1.1 오브젝트 타입 _ 858 

28.1.2 중첩 테이블 _ 858 

28.2 MULTISET 조건 _ 864 

28.3 컬렉션 함수 _ 866 

28.4 TABLE 컬렉션 표현식 _ 871 

28.5 활용 예제 _ 873 


29. XML 개발 _ 875 

29.1 기본 문법 _ 875 

29.1.1 XMLType _ 875 

29.1.2 XMLType 멤버 함수 _ 877 

29.1.3 XPath 표현식 _ 877 

29.1.4 XML 함수 _ 883 

29.1.5 XQuery 표현식 _ 893 

29.1.6 DBMS_XMLGEN 패키지 _ 903 

29.2 활용 예제 _ 904 


30. JSON 개발 _ 907 

30.1 기본 문법 _ 907 

30.1.1 JSON 열 _ 907 

30.1.2 점 표기법 _ 909 

30.1.3 SQL/JSON Path 표현식 _ 910 

30.1.4 SQL/JSON 조건 _ 910 

30.1.5 JSON 함수 _ 913 

30.2 활용 예제 _ 920 


31. Flashback 기술 _ 921 

31.1 Flashback 기능 _ 921 

31.1.1 Flashback Query _ 921 

31.1.2 Flashback Version Query _ 924 

31.1.3 Flashback Transaction Query _ 925 

31.1.4 Flashback Table _ 926 

31.1.5 Flashback Drop _ 927 

31.1.6 Flashback Database _ 928 

31.2 Temporal Validity _ 929 

31.2.1 관리 구문 _ 929 

31.2.2 조회 구문 _ 931 

31.2.3 DBMS_FLASHBACK_ARCHIVE 패키지 _ 933 


32. 제공 패키지 _ 935 

32.1 DBMS_CRYPTO 패키지 _ 935 

32.1.1 패키지 함수 _ 936 

32.1.2 활용 예제 _ 941 

32.2 DBMS_RANDOM 패키지 _ 944 

32.3 DBMS_LOB 패키지 _ 945 

32.4 DBMS_METADATA 패키지 _ 948 

32.5 DBMS_APPLICATION_INFO 패키지 _ 951 

32.6 DBMS_SESSION 패키지 _ 952 

32.7 UTL_RAW 패키지 _ 954 

32.7.1 패키지 함수 _ 954 

32.7.2 활용 예제 _ 954 

32.8 UTL_MATCH 패키지 _ 956 

32.9 UTL_RECOMP 패키지 _ 958 


부록 _ 961 

A. SCOTT 스키마 _ 963 

B. ERD 표기법 _ 965 

C. 예시 데이터 모델 _ 969 

D. oerr 명령어 _ 973 

E. 문자열 결합 _ 979 

F. 시간 차원 테이블 _ 989 

G. 블로킹 처리 _ 997 

H. 복합 FK 제약 조건 _ 1001 

I. 도메인 인덱스 _ 1007 

J. 시퀀스 값 변경 _ 1013 

K. SCALABLE 시퀀스 _ 1017 

L. 문자열 분리 _ 1021 

M. CUROSR 표현식 _ 1025


[예스24 제공]