SQLite でテーブルを記述する
SQLite は、任意のデバイスのテキスト ファイルにデータを格納する、サーバーレスのオープンソース SQL データベースです。 これは、信頼性が高く、高速で、自己完結型のフル機能を備えた C プログラミング ライブラリの SQL データベース エンジンです。
このソフトウェアは世界中で非常に人気があります。 携帯電話、ほとんどのコンピューター、および世界中のさまざまなアプリケーションが組み込まれています。
SQLite には、ユーザー向けにいくつかの異なるコマンドが用意されています。 これらのコマンドの 1つが describe
コマンドです。
これにより、ユーザーはテーブルの詳細な構造を確認できます。
SQLite でテーブルを記述する
SQLite は、ユーザーが自由に使用できる多くのコマンドを使用するリレーショナル データベース管理システムです。 このデータベース ソフトウェアは、.schema
コマンドを使用して、データベース内のテーブルを記述します。
ここで、.schema
コマンドは、必要なテーブルの詳細な構造を取得するために使用できるコマンド ライン プログラムです。 テーブルを記述するということは、基本的に、列名、列のデータ型、列のサイズなど、テーブル内のすべての列の特定の詳細を出力できることを意味します。
SQLite では、さまざまな方法でテーブルを記述できます。
SQLite で .schema
を使用してテーブルを記述する
テーブルを記述する構文は次のとおりです。
.schema yourTableName
ここで、yourTableName
は説明が必要なテーブル名で、.schema
は使用するコマンドです。 すべてのテーブルを表示するには、コマンド .tables
を使用します。 ただし、特定のテーブルを表示する必要がある場合は、コマンド .schema tablename
を使用してください。
.schema
または sqlite_master
からのクエリが何も出力しない場合、これは存在しないテーブル名を示しています。
SQLite で PRAGMA
を使用してテーブルを記述する
前述したように、.schema
メソッドを使用して、指定したテーブル名でテーブルを記述できます。 ただし、このコマンドでは、最初にテーブルを作成する必要があります。
次に使用できるメソッドは PRAGMA
メソッドです。 このコマンドを使用するための構文は次のとおりです。
PRAGMA table_info(tablename)
このコマンドは、SQL describe
コマンドと同じです。 列で指定したテーブルのすべての列から単一の行を返します。
PRAGMA table_xinfo(tablename)
これは前のステートメントの別バージョンです。 ここでの違いは、ステートメントで指定された仮想テーブルの隠し列を返すことです。
この場合、.schema
は、PRAGMA
よりも、テーブルの制約を含むテーブルの詳細を表示できます。
すべてのテーブルの詳細を適切な形式で取得する必要がある場合は、次のコマンドを使用します。
.schema --indent
SQLite で sqlite_master
を使用してテーブルを記述する
別のコマンドは次のとおりです。
sqlite_master tablename
これは、テーブルを記述するために使用されるコマンドです。
スキーマ テーブル
すべての SQLite データベースは、単一のスキーマ テーブルで構成されています。 このテーブルには、リストやトリガーからデータベース内のビューまで、テーブル内のすべてを表すデータベース スキーマが保持されます。
スキーマ テーブルは次のようになります。
CREATE TABLE sqlite_schema(
type text,
name text,
tbl_name text,
rootpage integer,
SQL text
);
SQLite は、データベースの作成時にスキーマ テーブルを作成し、SQLite ユーザーが実行のためにステートメントを送信すると、その内容を変更し続けます。
通常の状態では、変更する必要はありません。 ユーザーがそれを変更した場合、データベースが破損するリスクを負う必要があります。
sqlite_schema
には、sqlite_schema
テーブル自体のエントリがない場合を除き、スキーマ内の各テーブル、インデックス、ビュー、およびトリガーに対して 1つの行が含まれます。 sqlite_schema
はスキーマ テーブルの参照であり、sqlite_master
、sqlite_temp_schema
、sqlite_temp_master
などの代替名があります。
ここでは、最後の 2つの選択肢が一時データベースに使用されます。 それらはすべてのデータベース接続に関連付けられています。
スキーマ テーブルについて説明すると、スキーマは type
、name
、tbl_name
、root page
、SQL
などのさまざまなパラメーターを使用します。
type は、定義されているオブジェクトのタイプに依存するため、ビュー、インデックス、テーブル、トリガーなどのテキスト文字列を意味します。 タイプは sqlite_schema.type
として表すことができます。 name
は、オブジェクトの列ストア名を指定します。
ここでは、テーブルの作成時に一意および主キーの制約を指定することもできます。 ただし、rowid
テーブルでは主キー制約を使用できないため、sqlite_schema
は主キーを許可しませんが、SQLite 自動インデックスは主キーを使用します。
tbl_name
は、テーブル名またはビュー名を格納するために使用されます。 tbl_name
は sqlite_schema_tbl_name
として表すことができます。
ルート ページ
は、テーブルとインデックスのルート ツリー ページのページ番号を格納するために使用されます。 sqlite_schema_rootpage
として表します。
SQL はさまざまなコマンドを提供します。 これは、データベースに対して実行できるトリガーを作成できることを意味します。
SQL
を sqlite_schem.sql
と表現します。 sqlite_schema.sql
列のテキストは、作成された元の CREATE
ステートメント テキストのコピーです。 ただし、前に説明したように正規化され、ALTER TABLE
ステートメントを進めることによって変更されました。
内部インデックスの場合は NULL
です。 これらは PRIMARY KEY
または UNIQUE
制約によって自動的に作成されます。
SQLite でテーブルを記述する例
まず、create table
ステートメントを使用してテーブルを作成します。
create table employee (id integer primary key, name text not null, dept text not null, salary text not null);
次のコマンドを入力します。
PRAGMA table_info(employee);
前述のように、このコマンドはテーブルを記述します。
.schema employee
これも同じことを行います:
SELECT SQL
FROM sqlite_master
WHERE tbl_name = 'employee';
ここでは、sql_master
で select
ステートメントを使用して、sqlite_master
コマンドの SQL
パラメータを抽出しました。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub