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