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): Таблицы этого типа обеспечивают быстрый и прямой доступ к данным. Они реализованы как последовательные кластеры. Каждая запись в таблице имеет идентификатор записи. Таблицы этого типа используются, когда данные плотно кластеризованы с одним или несколькими столбцами в таблице. Таблицы этого типа также не поддерживаются в 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: Мы создаем таблицу для хранения деталей «сотрудника» в схеме «профессионал». В этой таблице есть поля «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: [Чтобы создать таблицу «клиентов» со скрытыми столбцами «телефон»]

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: [Чтобы вставить значения в таблицу "клиент"]

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 <tab_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: [Чтобы изменить тип данных для столбца «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: [Чтобы изменить имя столбца с «полное имя» на «имя клиента» в таблице «клиенты».]

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: [Чтобы удалить всю иерархию таблицы «клиент»]

db2 drop table hierarchy professional.customers