The Programmer's Guide to SQL
Chapter 1: Understanding SQL and Relational Databases
Chapter 2: Retrieving Data with SQL
Chapter 3: Modifying Data
Chapter 4: Summarizing and Grouping Data
Chapter 5: Performing Calculations and using Functions
Chapter 6: Combining SQL Queries
Chapter 7: Querying Multiple Tables
Chapter 8: Hiding Complex SQL with Views
Chapter 10: Transactions
Chapter 11: Users and Security
Chapter 12: Working with Database Objects
프로시져(9장), 트리거(13장), 예제(14, 15장)은 빼고 오라클 중심으로 봤더니 빨리 볼 수 있었습니다.
SQL 기본 서적으로 매우 좋은 것 같습니다. 쉽게 잘 설명해줘서 머리에 잘 들어옵니다. SQL문을 그냥 외우는 거에 비하면 훨씬 재밌습니다.
그리고 각종 DB 벤더들의 RDBMS 특징들도 다루고 있어서 오라클에서는 이런게 되는데 MySQL에서는 이런게 안되고 이렇게 해야 한다는 등의 내용이 들어있습니다. 다만 2003년 책이라서 그동안 바뀐 내용들이 엄청 많을 것 같습니다. 개정판이 나오면 좋겠습니다. PostgreSQL이나 HSQL은 다루고 있질 않아서 조금 아쉽습니다.
다음은 읽으면서 생각했던 것들입니다.
- 트랜잭션 상태 바꾸기: SET TRANSACTION ...
- 서브쿼리에서 ALL, ANY 사용하기: 뭐가 햇갈렸더라..
- 서브쿼리와 JOIN의 성능차이: 서브쿼리는 외부 쿼리의 레코드 갯수마다 서브쿼리를 수행해야 하기 때문에,
외부 쿼리 결과 레코드의 갯수와 서브쿼리 소요시간에 비례하여 전체 소요 시간이 증가할 것이다. JOIN은 데카르트 곱을 사용하여
관계를 맺는 테이블들의 레코드 갯수에 비례하여 소요되는 시간이 증가할 것이다. 단순비교를 할 수는 없겠다. 실제 쿼리와 레코드
갯수를 가지고 비교해봐야겠다.
- INNER JOIN과 OUTER JOIN 성능차이: 거의 차이가 없을 것이다. 부가작업(대응하는 필드가 없는
경우 NULL로 채워주는 일)이 필요한 OUTER JOIN의 경우 조금 더 오래 걸릴 수도 있겠지만, 어차피 둘 다 데카르트 곱
연산은 수행하기 때문이다.
- 뷰 만들 때 옵셥주기: CREATE VIEW AS 쿼리 옵션. 여기서 옵션을 어떻게 주는건지는 책에 안
나왔네..나중에 찾아봅세. 그리고 VIEW를 조작하려면 지켜야 하는 조건들이 있는데, 거기서 벗어나더라도 옵션으로 수정 가능하게
하면 테이블에 영향을 줄 수 있는건가? 그러진 않을 것 같다.