처음 결혼했을 때,
둘은 도저히 함께 살 수 없을 정도로
서로가 극과 극이라는 걸 알고는 적잖은 충격과
실망에 빠졌고 하마터면 이혼까지 할 뻔했다.
그러다가 두 사람은 서로의 차이를 존중할 뿐 아니라
그 차이점에 의존하게 되었고, 마침내 둘은
어쩌면 너무나도 당연한 결론에 도달했다.
우리가 서로 똑같다면, 그렇다면 둘 중
한 사람은 필요 없을 게 아닌가.
- 앤디 앤드루스의《용서에 관한 짧은 필름》중에서 -
* 부부는 닮아간다고 하지요?
그 말은 '본래는 서로 다르다'는 뜻이기도 합니다.
'서로 다르다'는 것을 인정해야 비로소 닮아가기 시작합니다.
그것도 상대가 먼저 나에게 닮기를 바라면 잘 안되고,
내가 먼저 바뀌어 상대를 닮겠다 해야 잘 됩니다.
Transact-SQL은 DDL, DML, DCL 3가지 종류의 SQL로 구성되어 있으며, MS utility인 isql이나 ISQL/w을 이용하여 수행시킬 수 있다.
Transact-SQL은 IF-THEN-ELSE같은 control-of-flow를 지원한다.
SQL을 잘 구사하려면 물론 SQL Server 구조와 동작에 대한 기본 지식이 필요하다. SQL의 특징을 잘 알고 사용을 하여야 효과적인 data access가 가능하여 지는 것이다.
SQL은 기본적으로 set-oriented processing을 기반으로 하는 언어이다. Set-oriented란 필요한 범위의 데이타를 한꺼번에 처리하는 방식이다. 이것은 파일 처리에서 하나의 레코드씩 순차적으로 처리하였던 방식과 비교가 된다. 그러나 대부분의 프로그래머가 파일 프로세싱 사고방식에 젖어서 SQL을 파일 처리 방식인 순차적 방식으로 코딩하는 사례가 대단히 많다. 결과적으로 액세스 성능이 저하되게 되지만 이것을 하드웨어 용량을 증설하여 해결하는 소위 무식한 처리를 하는 경우가 다반사임은 안타까운 일이다. RDBMS와 SQL을 사용하는 프로그래머는 RDBMS와 SQL의 특성을 파악하고 그에 맞는 사고의 전환으로 비싸게 구입한 내것을 알뜰하게 사용하고 자신의 기술을 축적하는 마음의 자세를 가지는것이 중요할 것이다.
Control-of-Flow는 SQL의 원래 취지와는 부합하지 않는다. SQL은 비절차적인 언어로써 원하는 것을 요청하면 그 방법은 RDBMS가 결정하여 처리하여주는 방식이다. 그러나 다양한 혀현실세계는 절차적인 수행을 반드시 필요로 하는 부분이 있고, 이를 지원하기 위하여 부가된것이 Control-of-Flow 지원 keyword들이다.
따라서 이 절차적인 언어는 불가피한 경우가 아니면 사용하지 않는것이 RDBMS를 사용하는데 있어서 효과적인 방향이라는것을 명심하여야 한다.