Introduction

이 장에서는 테이블을 생성하는 방법과 이미 생성된 테이블을 변경하는 방법에 대해서 알려 준다. 이미 생성된 테이블을 변경한다는 의미는 테이블 이름을 바꾼다거나, 테이블 칼럼 위치, 칼럽 유형, 기본키, 유니크 설정 등을 생성 뒤에 테이블에 적용 시킨다는 것을 의미한다.

Content

1. 무엇을 CREATE TABLE 이라고 하는가?

SQL 절 중 CERATE TABLE 로 테이블을 만든다. 만들 때 테이블 이름, 테이블 칼럼명 및 데이터 형, 그리고 킬럼에 부수적인 옵션을 주면서 만들어야 한다. DBMS 를 이용하면, 실제로 SQL 를 날려 만들지 않고, 마우스로 뚝딱 뚝딱 만들 수 있다. PostgreSQL 은 pgadmin 으로 만들 수 있다.

2. 어떻게 CREATE TABLE 을 사용 하는가?


이 예제는 PostgreSQL 8.4 CREATE TABLE 항목에서 가져 왔다.

CREATE TABLE 분석 / 가이드 라인

  1. 동일한 DB에 동일한 테이블 이름이 있으면 테이블을 만들 수 없다.

  2. CREATE TABLE 뒤에 '테이블 이름' 을 정해야 한다. 여기선 films 이다.
  3. 테이블 이름 뒤에 () 를 묶어 주고, 그 사이에 칼럼명과 칼럼이 갖을 데이터형, 그리고 옵션을 선택 해야 한다.
  4. 각 칼럼과 칼럼 사이는 ' , ' 로 이어 주며, 칼럼명, 데이터형, 옵션은 띄어쓰기로 구분 지어 주면 된다.

  5. NULL 값을 사용 하고 싶을 땐 NULL 로 지정해 주고, NULL 을 허용 하고 싶지 않을 떈 NOT NULL 을 지정해 주면 된다.
  6. NULL 은 값이 없음을 의미한다. 그렇다고 이것이 0 을 의미하지 않는다. 없음을 의미한다.

  7. NULL 이나 기본값을 지정하면 INSERT INTO 를 사용 할 때, 값을 넣지 않아도 된다.
  8. DEFAULT 키워드는 기본값을 지정하는 의미이다. 기본값을 지정하면, INSERT INTO 를 사용 할때, 갚을 넣지 않아도 되며, 값을 넣지 않았을 때, 자동으로 기본값이 들어 간다.( C++ 이나 php 를 사용한 경험이 있다면, 이 의미를 바로 알 것이다.)

  9. CONSTRAINT 는 칼럼에 제한을 주는 것을 말한다. 주키를 준다거나, 유니크로 한다거나 등등
    링크 : http://www.allinterview.com/showanswers/76119.html

  10. 집계 함수 나 그룹화를 사용하는 열 일 경우, NULL 보다는 DEFAULT 를 사용하는게 개발자가 많다고 한다.(P.155 Tip 참조)
  11. 보다 자세한 규칙은 각 DBMS 설명서를 보고 결정 하는게 좋다. PostgreSQL 은 http://www.postgresql.org/docs/current/static/sql-createtable.html 에서 확인 가능하다.

관련 링크

3. 무엇을 ALTER TABLE 이라고 하는가?

SQL 절 중 하나이며, '테이블 정의'를 변경 하는 것을 의미한다.

4. 어떻게 ALTER TABLE 을 사용 하는가?

변경 작업을 하기 전에, 먼저 주의해야 할 사항 부터 알아야 한다.

주의 사항

  • 데이터가 포함된 테이블 구조는 되도록 변경하지 않도록 한다. 이는 테이블에 값을 넣고, 변경을 하는 것은 에러가 날 소지가 무척 많이 있기 때문이다.(응용프로그램 수정 중 실수 할 수 있거나, 컨버팅 중 안되는게 생긴다거나 ...) 그러므로 최초 테이블 생성시 충분히 고민하고 생성해야 한다.

  • 기존 테이블에 칼럼을 추가 하는 것은 허용 되나, 제한 사항이 있을 수 있으므로 DBMS 설명서를 참조 해야 한다.
  • 테이블에 있는 열을 제거하거나 변경 하는 것을 허용하지 않는 DBMS 도 있으므로, 설명서 참조 해라.
  • 열 이름을 변경하는 것은 많은 DBMS가 지원한다.


테이블에 칼럼을 추가하거, 삭제 한다. 이런 개념이 있다고만 알고 있고, 나머지는 전부 검색을 통해서 알아 가는게 더 좋을듯 싶다.

관련 링크

추가 - DROP TABLE

테이블을 삭제 할 때 사용한다. 삭제 후 취소 하는 것이 없으므로, 다른 테이블과 연결하여, 연결된 테이블일 경우 함부로 삭제 할 수 없게 만드는 규칙을 만들어서 사용하는게 좋다고 책에 나와 있다.

Digression

PostgreSQL 문서 라고 검색하면, 표준 SQL 에 대한 정보를 얻을 순 없어도, 구조를 잡을 수 있는 문서가 많이 나온다. 이것으로도 충분히 만족한다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기