Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 | 

컬럼 정의

컬럼은 테이블에서 각 열에 해당하는 항목이며, 컬럼은 컬럼 이름과 데이터 타입을 명시하여 정의한다.

<column_definition> ::=

column_name column_type [ [ <default_or_shared> ] | [ <column_constraint> ] ]...

 

<default_or_shared> ::=

{ SHARED <value_specification> | DEFAULT <value_specification> } |

AUTO_INCREMENT [ (seed, increment) ]

 

<column_constraint> ::=

NOT NULL | UNIQUE | PRIMARY KEY | FOREIGN KEY <referential definition>

컬럼 이름
설명

컬럼 이름 작성 원칙은 식별자를 참고한다. 생성한 컬럼의 이름은 ALTER TABLE 문의 RENAME COLUMN 절을 사용하여 변경할 수 있다. 자세한 내용은 RENAME COLUMN 절을 참고한다.

예제

다음은 full_name과 age, 2개의 컬럼을 가지는 manager2 테이블을 생성하는 예제이다.

CREATE TABLE manager2 (full_name VARCHAR(40), age INT );

주의 사항
  • 컬럼 이름의 첫 글자는 반드시 알파벳이어야 하고 최대 길이는 255자이다.
  • 컬럼 이름은 테이블 내에서 고유해야 한다.
컬럼의 초기 값 설정(SHARED, DEFAULT)
설명

SHARED, DEFAULT는 컬럼 초기 값과 관련된 속성이다. SHARED, DEFAULT 값은 ALTER TABLE 문에서 변경할 수 있다.

  • SHARED : 컬럼 값은 모든 행에서 동일하다. 따라서 SHARED 속성은 UNIQUE 제약 조건과 동시에 정의할 수 없다. 초기에 설정한 값과 다른 새로운 값을 INSERT하면, 해당 컬럼 값은 모든 행에서 새로운 값으로 갱신된다.
  • DEFAULT : 새로운 행을 삽입할 때 컬럼 값을 지정하지 않으면 DEFAULT 속성으로 설정한 값이 저장된다. 테이블 생성 시 컬럼에 DEFAULT 값으로 SYS_TIMESTAMP를 지정하면, CREATE TABLE 시점의 타임스탬프 값이 디폴트 값으로 지정된다. 데이터가 INSERT되는 시점의 타임스탬프 값을 입력하려면 데이터 입력 시 INSERT 구문의 VALUES에 반드시 SYS_TIMESTAMP를 입력해야 한다.
예제

CREATE TABLE colval_tbl

( id INT, name VARCHAR SHARED 'AAA', phone VARCHAR DEFAULT '000-0000');

INSERT INTO colval_tbl(id) VALUES (1),(2);

SELECT * FROM colval_tbl;

;xr

 

=== <Result of SELECT Command in Line 3> ===

 

           id  name                  phone

=========================================================

            1  'AAA'                 '000-0000'

            2  'AAA'                 '000-0000'

 

--updating column values on every row

INSERT INTO colval_tbl(id, name) VALUES (3,'BBB');

INSERT INTO colval_tbl(id) VALUES (4),(5);

SELECT * FROM colval_tbl;

;xr

 

=== <Result of SELECT Command in Line 3> ===

 

           id  name                  phone

=========================================================

            1  'BBB'                 '000-0000'

            2  'BBB'                 '000-0000'

            3  'BBB'                 '000-0000'

            4  'BBB'                 '000-0000'

            5  'BBB'                 '000-0000'

 

5 rows selected.

 

--changing DEFAULT value in the ALTER TABLE statement

ALTER TABLE colval_tbl CHANGE phone DEFAULT '111-1111'

INSERT INTO colval_tbl(id) VALUES (6);

SELECT * FROM colval_tbl;

;xr

 

=== <Result of SELECT Command in Line 1> ===

 

           id  name                  phone

=========================================================

            1  'BBB'                 '000-0000'

            2  'BBB'                 '000-0000'

            3  'BBB'                 '000-0000'

            4  'BBB'                 '000-0000'

            5  'BBB'                 '000-0000'

            6  'BBB'                 '111-1111'

 

 

6 rows selected.

자동 증가 특성(AUTO INCREMENT)
설명

컬럼 값에 자동으로 일련 번호를 부여하기 위해 컬럼에 AUTO_INCREMENT 속성을 정의할 수 있다. SMALLINT, INTEGER, BIGINT, NUMERIC(p,0) 도메인에 한정하여 정의할 수 있다.

동일한 컬럼에 AUTO_INCREMENT 속성과 SHARED 또는 DEFAULT 속성을 동시에 정의할 수 없으며, 사용자가 직접 입력한 값과 자동 증가 특성에 의해 입력된 값이 서로 충돌되지 않도록 주의해야 한다.

구문

AUTO_INCREMENT [(seed, increment)]

  • seed : 번호가 시작하는 초기값이다. 양의 정수만 허용되며 디폴트 값은 1이다.
  • increment : 행마다 증가되는 증가값이다. 양의 정수만 허용되며 디폴트 값은 1이다.
예제

CREATE TABLE auto_tbl(id INT AUTO_INCREMENT, name VARCHAR);

INSERT INTO auto_tbl VALUES(NULL, 'AAA'),(NULL, 'BBB'),(NULL, 'CCC');

INSERT INTO auto_tbl(name) VALUES ('DDD'),('EEE');

SELECT * FROM auto_tbl;

;xr

 

=== <Result of SELECT Command in Line 4> ===

 

           id  name

===================================

            1  'AAA'

            2  'BBB'

            3  'CCC'

            4  'DDD'

            5  'EEE'

 

5 rows selected.

주의 사항
  • 자동 증가 특성만으로는 UNIQUE 제약 조건을 가지지 않는다.
  • 자동 증가 특성이 정의된 컬럼에 NULL을 입력하면 자동 증가된 값이 저장된다.
  • 초기값 및 자동 증가 특성에 의해 증가된 최종 값은 해당 도메인에서 허용되는 최소/최대값을 넘을 수 없다.
  • 자동 증가 특성은 순환되지 않으므로 타입의 최대값을 넘어갈 경우 오류가 발생하며, 이에 대한 롤백이 일어나지 않는다. 따라서 이와 같은 경우 해당 칼럼을 삭제 후 다시 생성해야 한다.
  • 예를 들어, 아래와 같이 테이블을 생성했다면, A의 최대값은 32767이다. 32767이 넘어가는 경우 에러가 발생하므로, 초기 테이블 생성시에 컬럼 A의 최대값이 해당 타입의 최대값을 넘지 않는다는 것을 감안해야 한다.
  • create table tb1(A smallint auto_increment, B char(5));