DB2-테이블

테이블은 데이터베이스 관리자가 유지 관리하는 논리적 구조입니다. 테이블에서 각 수직 블록은 열 (Tuple)이라고하고 각 수평 블록은 행 (Entity)이라고합니다. 열과 행의 형태로 저장된 데이터 모음을 테이블이라고합니다. 테이블에서 각 열에는 다른 데이터 유형이 있습니다. 테이블은 영구 데이터를 저장하는 데 사용됩니다.

테이블 유형

  • Base Tables: 영구 데이터를 보유합니다. 다음과 같은 다양한 종류의 기본 테이블이 있습니다.
    • Regular Tables: 범용 테이블, 인덱스가있는 공통 테이블은 범용 테이블입니다.
    • Multidimensional Clustering Table (MDC):이 유형의 테이블은 둘 이상의 키에 물리적으로 클러스터링되어 있으며 대규모 데이터베이스 환경을 유지하는 데 사용되었습니다. 이러한 유형의 테이블은 DB2 pureScale에서 지원되지 않습니다.
    • Insert time clustering Table (ITC): MDC 테이블과 유사하게 행은 테이블에 삽입 될 때 클러스터링됩니다. 분할 된 테이블 일 수 있습니다. 그들 역시 pureScale 환경을 지원하지 않습니다.
    • Range-Clustered tables Table (RCT): 이러한 유형의 테이블은 데이터에 대한 빠르고 직접적인 액세스를 제공합니다. 이들은 순차 클러스터로 구현됩니다. 테이블의 각 레코드에는 레코드 ID가 있습니다. 이러한 유형의 테이블은 데이터가 테이블에있는 하나 이상의 열로 단단히 클러스터링되는 경우에 사용됩니다. 이 유형의 테이블은 DB2 pureScale에서도 지원하지 않습니다.
    • Partitioned Tables: 이러한 유형의 테이블은 테이블 데이터가 여러 저장소 개체로 분할되는 데이터 구성 스키마에 사용됩니다. 데이터 파티션은 파티션 된 테이블에 추가, 연결 및 분리 할 수 ​​있습니다. 하나의 테이블 스페이스에 테이블의 여러 데이터 파티션을 저장할 수 있습니다.
    • Temporal Tables: 데이터베이스의 테이블 히스토리는 이전에 수정 한 내용과 같은 임시 테이블에 저장됩니다.
  • Temporary Tables: 다른 데이터베이스 작업의 임시 작업을 위해 임시 테이블을 사용해야합니다. 임시 테이블 (DGTT)은 시스템 카탈로그에 나타나지 않으며 XML 열은 생성 된 임시 테이블에서 사용할 수 없습니다.
  • Materialized Query Tables: MQT를 사용하여 쿼리 성능을 향상시킬 수 있습니다. 이러한 유형의 테이블은 테이블의 데이터를 결정하는 데 사용되는 쿼리로 정의됩니다.

테이블 생성

다음 구문은 테이블을 생성합니다.

Syntax: [새 테이블을 만들려면]

db2 create table <schema_name>.<table_name>
(column_name column_type....) in <tablespace_name>

Example: "professional"스키마에 "employee"세부 정보를 저장하는 테이블을 만듭니다. 이 테이블에는 "id, name, jobrole, joindate, salary"필드가 있으며이 테이블 데이터는 "ts1"테이블 스페이스에 저장됩니다.

db2 create table professional.employee(id int, name 
varchar(50),jobrole varchar(30),joindate date, 
salary double) in ts1

Output:

DB20000I The SQL command completed successfully.

테이블 세부 정보 나열

다음 구문은 테이블 세부 정보를 나열하는 데 사용됩니다.

Syntax: [스키마로 생성 된 테이블 목록보기]

db2 select tabname, tabschema, tbspace from syscat.tables

Example: [현재 데이터베이스의 테이블 목록보기]

db2 select tabname, tabschema, tbspace from syscat.tables

Output:

TABNAME      TABSCHEMA     TBSPACE 
------------ ------------- -------- 
EMPLOYEE     PROFESSIONAL    TS1  


 1 record(s) selected.

테이블의 열 나열

다음 구문은 테이블의 열을 나열합니다.

Syntax: [테이블의 컬럼 및 데이터 유형보기]

db2 describe table <table_name>

Example: [ 'employee'테이블의 열 및 데이터 유형보기]

db2 describe table professional.employee

Output:

Data type                   Column 
Column name  schema    Data type name    Length    Scale Nulls 
------ ----- --------- ----------------- --------- ----- ------ 
ID           SYSIBM    INTEGER             4         0     Yes 
NAME         SYSIBM    VARCHAR             50        0     Yes 
JOBROLE      SYSIBM    VARCHAR             30        0     Yes 
JOINDATE     SYSIBM    DATE                4         0     Yes 
SALARY       SYSIBM    DOUBLE              8         0     Yes  

  5 record(s) selected.

숨겨진 열

테이블의 전체 열을 숨길 수 있습니다. "select * from"쿼리를 호출하면 숨겨진 열이 결과 테이블에 반환되지 않습니다. 테이블에 데이터를 삽입 할 때 열 목록이없는 "INSERT"문은 암시 적으로 숨겨진 열에 대한 값을 기대하지 않습니다. 이러한 유형의 컬럼은 구체화 된 쿼리 테이블에서 많이 참조됩니다. 이러한 유형의 열은 임시 테이블 생성을 지원하지 않습니다.

숨겨진 열이있는 테이블 만들기

다음 구문은 숨겨진 열이있는 테이블을 만듭니다.

Syntax: [숨겨진 열이있는 테이블을 만들려면]

db2 create table <tab_name> (col1 datatype,col2 datatype 
implicitly hidden)

Example: [숨겨진 'phone'열이있는 'customer'테이블 생성]

db2 create table professional.customer(custid integer not 
null, fullname varchar(100), phone char(10) 
implicitly hidden)

테이블에 데이터 값 삽입

다음 구문은 테이블에 값을 삽입합니다.

Syntax: [테이블에 값을 삽입하려면]

db2 insert into <tab_name>(col1,col2,...)
 values(val1,val2,..)

Example: [ 'customer'테이블에 값을 삽입하려면]

db2 insert into professional.customer(custid, fullname, phone) 
values(100,'ravi','9898989')


db2 insert into professional.customer(custid, fullname, phone) 
values(101,'krathi','87996659')


db2 insert into professional.customer(custid, fullname, phone) 
values(102,'gopal','768678687')

Output:

DB20000I  The SQL command completed successfully.

테이블에서 값 검색

다음 구문은 테이블에서 값을 검색합니다.

Syntax: [테이블에서 값을 검색하려면]

db2 select * from &lttab_name>

Example: [ 'customer'테이블에서 값을 검색하려면]

db2 select * from professional.customer

Output:

CUSTID      FULLNAME 
----------- ------------------------ 
        100 ravi
		
        101 krathi
		
        102 gopal  
		
  3 record(s) selected.

숨겨진 열을 포함하는 테이블에서 값 검색

다음 구문은 선택한 열에서 값을 검색합니다.

Syntax: [테이블에서 선택한 숨겨진 열 값을 검색하려면]

db2 select col1,col2,col3 from <tab_name>

Example: [테이블에서 선택한 열 값 결과를 검색하려면]

db2 select custid,fullname,phone from professional.customer

Output:

CUSTID  FULLNAME    PHONE 
------- ---------   ------------ 
100     ravi        9898989
 
101     krathi      87996659 

102     gopal       768678687 

  3 record(s) selected.

숨겨진 열의 데이터를 보려면“DESCRIBE”명령을 실행해야합니다.

Syntax:

db2 describe table <table_name> show detail

Example:

db2 describe table professional.customer show detail

Output:

Column name     Data type schema     Data type name  Column
           column    Partitionkey  code 
                                       Length   Scale    Nulls     
number     sequence      page     Hidden      Default 
--------------- -------------------- --------------- -------- ----
---- -------- ---------- ------------- -------- ----------- ------ 
---  
CUSTID          SYSIBM               INTEGER         4        0 
No       0          0         0        No 
FULLNAME        SYSIBM               VARCHAR         100      0
Yes      1          0        1208     No     

PHONE           SYSIBM               CHARACTER       10       0     
Yes      2          0             1208     Implicitly  
  
3 record(s) selected.

테이블 열 유형 변경

다음과 같이이 "alter"명령을 사용하여 테이블 구조를 수정할 수 있습니다.

Syntax:

db2 alter table <tab_name> alter column <col_name> set data type <data_type>

Example: [employee 테이블의 "id"열에 대한 데이터 유형을 "int"에서 "bigint"로 수정하려면]

db2 alter table professional.employee alter column id set data type bigint

Output::

DB20000I The SQL command completed successfully.

열 이름 변경

아래와 같이 열 이름을 변경할 수 있습니다.

Syntax: [컬럼 이름을 이전 이름에서 새 테이블 이름으로 수정하려면]

db2 alter table <tab_name> rename column <old_name> to <new_name>

Example: [ "customers"테이블에서 열 이름을 "fullname"에서 "custname"으로 수정하려면.]

db2 alter table professional.customer rename column fullname to custname

테이블 삭제

테이블을 삭제하려면 다음과 같이 "DROP"명령을 사용해야합니다.

Syntax:

db2 drop table <tab_name>

Example: [고객 테이블 양식 데이터베이스를 삭제하려면]

db2 drop table professional.customers

테이블의 전체 계층 (트리거 및 관계 포함)을 삭제하려면 "DROP TABLE HIERARCHY"명령을 사용해야합니다.

Syntax:

db2 drop table hierarchy <tab_name>

Example: [ 'customer'테이블의 전체 계층을 삭제하려면]

db2 drop table hierarchy professional.customers