データベースのテーブルは、データオブジェクト間の関係を表現し、データを格納するための一連の二次元配列の集合です。この章では、テーブルに関連するデータベースオブジェクトや、テーブルストレージ、テーブル圧縮、テーブルグループ、一時テーブルなどの使用特性について説明します。
データベースにおいて、テーブルはデータの基本単位であり、縦の列と横の行で構成されています。例えば、著者情報に関するテーブルの名前を「著者」とします。テーブルの各列はすべての著者の特定の種類の情報(例:姓)を含み、各行は特定の著者のすべての情報(例:姓、名、住所など)を含みます。指定されたデータベーステーブルにおいて、列数は通常テーブル作成時に決定され、列名によって識別できます。一方、行数は動的に変更可能です。
テーブルは通常テーブルと一時テーブルに分けられます。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)はテーブル内の単一レコードにおけるすべての列のデータの集合を表します。簡単に言えば、データベースは列と行で構成されていると考えることができます。テーブルの各行は関連するデータの1組を表し、テーブル内の各行は同じ構造を持ちます。
例えば、会社情報に関するデータテーブルでは、各行が1つの会社を表し、対応する列は会社名、会社の住所、付加価値税番号などの内容を表す可能性があります。