1. 릴레이션 스키마

 데이터 베이스에 다음과 같은 테이블이 존재한다고 가정합시다. R-DB에서는 테이블을 릴레이션이라고 합니다. ( 테이블 자체가 관계를 의미하는 릴레이션을 나타내기 때문이죠. )

 번호 이름
주소
나이
 1  김태연 서울시 강동구
 21
 2  김태현 서울시 관악구
 30
 3  김신영 서울시 서초구
 26

여기에서 맨 처음 열의 제목 부분을 보면 "번호", "이름", "주소", "나이" 가 있습니다. 이것들을 릴레이션 스키마라고 합니다. 이 릴레이션 스키마는테이블의 전반적인 디자인을 나타냅니다. 위의 예를 들면 릴레이션 스키마 항목 중에서 "나이"라는 항목은 직관적으로 해당 사람의 나이를 나타내며 숫자로 올 것임을 알 수 있습니다.

 이전 포스트에서 살펴본 create 구문에서 어트리뷰트와 도메인을 같이 쓴 부분이 바로 릴레이션 스키마를 정의한 부분입니다. 위와 같은 테이블에서 같은 열의 도메인은 같음을 알 수 있습니다. ( 예를 들어 나이 부분에 갑자기 글자가 나오지 않고, 번호부분에도 마찬가지 입니다. )


2. 테이블로 데이터 삽입1 - 전체 어트리뷰트를 삽입 (insert into 구문)

 전 포스트에서 만들었던 customer라는 테이블에 데이터를 삽입하는 실습을 해보도록 하겠습니다. 테이블에 데이터를 삽입하는 SQL 문은 다음과 같은 구조를 갖습니다.


 
 table_name 부분에 데이터를 삽입하고 싶은 테이블 이름을 집어 넣으시고, value 이후에 오는 값들은 삽입 될 데이터들이며 오는 순서대로 테이블에 들어가게 됩니다. 다음의 예제를 직접 실행해 보도록 하겠습니다.

insert into customer value( 1, 'KTY', 'seoul');

 위 SQL 문을 직접 실행해보면 다음과 같은 실행 결과가 나오게 됩니다.



 위 SQL 문을 실행한 결과 각각 1, kty, seoul 이라는 값이 테이블에 삽입 된 것을 볼 수 있습니다. 여기서 주의 하셔야 할 것은 value 이후에 오는 값들은 테이블에 순차적으로 삽입 된다는 것입니다. 즉, 앞에서 value( 1, 'kty', 'seoul' ) 이라고 적었으므로 각각 1은 customer_num에 'kty'는 customer_name에 'seoul'은 customer_addr에 들어가게 되었습니다. 만일 순서를 바꿔서 입력을 한다면 어떻게 될까요?? 그건 숙제로 남겨두겠습니다.



3. 테이블로 레코드를 삽입 2 - 일부 어트리뷰트를 삽입 (insert into)

 만일 고객의 이름은 아는데 주소를 모를 경우 난감한 상황이 발생합니다. 왜냐하면 앞에서 배운 구문으로는 레코드를 이루는 값들을 모두 알아야 입력을 할 수 있기 때문입니다. 하지만 insert into 구문에는 필요한 어트리뷰트만 삽입 할 수 있는 방법이 있습니다. 해당 방식은 다음과 같은 형식을 갖습니다.
 

  테이블 이름 뒤에 입력하고 싶은 어트리뷰트를 선택하는 항목이 있습니다. 즉, A1 ~ Ak 까지가 입력하고 싶은 어트리뷰트를 선택하는 부분이고, value1 ~ value k 가 선택 된 어트리뷰트에 집어 넣을 값들을 써 넣는 부분입니다. 이번에도 실습을 통해서 배워 보도록 하겠습니다. 다음 SQL 구문을 실행해 보도록 하겠습니다.

insert into customer ( customer_num, customer_name ) value ( 2,'kth' );


  선택 된 어트리뷰트인 customer_num과 customer_name에 해당 값인 2와 'kth'가 삽입 된 것을 볼 수 있습니다. 그러면 선택이 되지 않은 어트리뷰트에는 어떤 값이 들어갈 까요? 바로 "널"값이 들어가게 됩니다.

 널값이란 1)알 수 없는 값이거나 2)존재하지 않는 값을 의미합니다. 간단히 바람직하지 않은 값이라고 생각하시면 됩니다. 나중에 이 널값에 대해서 다시 자세하게 알아보도록 하겠습니다. 일반적으로 널 값은 바랍직하지 않으며, 여러 경우에서 문제를 일으키게 됩니다.





.



+ Recent posts