データベースのテーブルは、一連の二次元配列の集合であり、データオブジェクト間の関係を表現し、保存するために使用されます。この章では、主にテーブルに関連するデータベースオブジェクトと、テーブルストレージ、テーブル圧縮、テーブルグループ、一時テーブルなどのテーブルの関連使用特性について説明します。
データベースにおいて、テーブルはデータの組織化の基本単位であり、縦方向の列と横方向の行で構成されています。例えば、著者情報に関するテーブルの名前を「著者」とします。テーブル内の各列にはすべての著者の特定の種類の情報が含まれており、例えば姓などです。一方、各行には特定の著者のすべての情報が含まれており、例えば姓、名前、住所などです。指定されたデータベーステーブルについて、列の数は通常テーブル作成時に決定され、各列は列名によって識別できます。一方、行の数は動的に変更できます。
テーブルには通常のテーブルと一時テーブルがあります。OceanBaseデータベースのMySQLモードでは、一時テーブルのライフサイクルはセッション期間内にのみ存在し、セッションが切断されると作成されたすべての一時テーブルは自動的にDROPされます。もしsess#1が一時テーブルを作成した場合、それはsess#2には可視されません。
異なるセッションは同名の一時テーブルを作成でき、一時テーブルは既存の通常のテーブルと重複することができますが、一時テーブルに基づいてビューを作成することはできません。同名の一時テーブルと通常のテーブルが同時に存在する場合、SHOW CREATE TABLE、DESC、DMLなどの操作はすべて一時テーブルに対して実行され、このとき通常のテーブルは隠されます。
注意
- OceanBaseデータベースV4.1.0 BP4バージョン以降、MySQLモードでは一時テーブル機能が無効になっています。
- OceanBaseデータベースV4.3.5 BP4バージョン以降、MySQLモードでは一時テーブル機能がサポートされています。
列
データベースにおいて、列(Column)はテーブル上の特定の属性のフィールド値を記録するために使用され、ユーザーが各属性に付けた名前が列名となります。列名に加えて、列にはデータ型やデータ型の最大長(精度)などの情報も含まれます。
通常の列に加えて、OceanBaseデータベースのMySQLモードでは仮想列(Virtual Column/Generated Column)と自動インクリメント列(Auto_increment Column)も含まれます。
仮想列は通常の列とは異なり、実際の物理ストレージスペースを持たず、クエリ時にユーザーが仮想列上で定義した式または関数によって結果が計算されます。
自動インクリメント列は以下の3つの条件を満たします:
複数パーティション全体で一意
ステートメント内で連続的に増加
生成された自動インクリメント列の値は、ユーザーが明示的に挿入した値より大きい
行
データベースにおいて、行(Row)はテーブル内の単一レコードにおけるすべての列のデータ集合を表します。簡単に言えば、データベースは列と行で構成されていると考えることができます。テーブル内の各行は関連するデータの一組を表し、またテーブル内の各行は同一の構造を持ちます。
例えば、会社情報に関するデータテーブルでは、各行が一つの会社を表し、対応する列は会社名、会社の住所、付加価値税番号などの内容を表す可能性があります。