시스템 테이블들을 알아보자.. #2
페이지 정보
작성자 서방님 댓글 0건 조회 184회 작성일 06-11-18 11:05본문
바로 전에는 sysobjects들을 이용해.. 간단하게 proc 도 만들어 보았다..
sysobjects는 아주 유용한 시스템 테이블이다..
이거 이외에도 많은데... 이번에는 syscolumns 라는 테이블을 알아보자...
자자 일단... select를 해봐야 알 수 있을까??? 아니다.. 구조를 알아보기 위해서는
sp_help 가 더 좋다...
그럼 sp_help syscolumns라고 입력하고 실행~~!!
아시는 분들도 있겠지만 sp_help, sp_helptext는 아주 유용한 시스템 프로시져 이다..
자주 사용하느 버릇을 기르도록해야겠쬬??
일단 syscolumns의 내용을 보면
많은 컬럼들이 있다.. 여기서 일단 봐야할 것은 name, id, xtype, length 가 되겠다..
이것들만 보면 해당 테이블,proc 들이 어떤 컬럼을 가지고 있는지 알 수 있게된다.
그런데 xtype을 보니 왠 숫자들만 있다... 이 숫자들의 의미는 어떻게 알아 낼 수 있을까?? 당근 시스템 테이블에 있다..
어떤것이냐 하면 systypes라는 테이블이다... 이걸 둘이 조인해서 보면 컬럼의 정확한 데이터 타입을 알 수 있다.. 이 systypes라는 테이블은 데이터베이스에 존재하는 data type을 보존하는 테이블이다.. 사용자 데이터 타입을 생성한다면 여기에 새롭게 한줄이 추가되는것이라고 생각하면 된다.
그럼 한번 보겠다.. 영원한 우리의 희생양 northwind에서 테이블 하나를 해보겠다...
select
sc.name, st.name, sc.length, sc.xprec
from
syscolumns sc LEFT OUTER JOIN systypes st
ON sc.xtype=st.xtype
WHERE
sc.id = OBJECT_ID('invoices')
이와 같이 해보았다.. northwind에 있는 invoices 테이블의 컬럼들이 뭐가 있는지 알아보는 쿼리이다. 이렇게 하면 컬럼 정보들이 수루루룩 나올것이다.
앗 여기서 왜 OBJECT_ID() 라는 함수를 사용했을까?? syscolumns에서 테이블을 인식하는건 ID뿐이다.. 그래서 테이블의 ID를 알아오는 함수 OBJECT_ID()를 사용한것이다..
이것도 왠지 쉽게 만들 수있을거 같지 않은가.... 쉽다.. ㅋㅋㅋ 나중에 함 만들어보자..
그냥 위에 쿼리는 시스템 테이블이 가지고 있는 내용에 대해 설명하기 위한 것이지 실전에서는 이것을 사용지 않아도 된다...
왜냐하면, sp_columns 라는 프로시져가 제공되기 때문이다.. 그런데 이 프로시져가 마음에 안들어 변경을 하고 싶다??? 그럼 위에 쿼리에 조금만 수정에 sp_columns2라는 프로시져를 만들어도 상관이 없다고 말하고 싶다~~~
sp_who와 sp_who2가 있는것 처럼 말이다..
일단 두 테이블에 대해 알아봤다.. syscolumns와 systypes ... 이것들을 잘 이용하면 멋진 시스템을 만들수도 있을것이다..
이제 이제 다음에는 뭘 알아볼까?????
댓글목록
등록된 댓글이 없습니다.