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