web-dev-qa-db-ja.com

MySQLのDESCRIBE [table]に相当するSQLiteはありますか?

SQLite の学習を始めたばかりです。 MySQLのDESCRIBE [table]のようにテーブルの詳細を見ることができればうれしいです。 PRAGMA table_info [table]は基本的な情報しか持っていないので十分ではありません(たとえば、列がある種のフィールドであるかどうかは表示されません)。 SQLiteにはこれを行う方法がありますか?

412
Matthew

SQLiteコマンドラインユーティリティ には、createステートメントを表示する.schema TABLENAMEコマンドがあります。

537
Ned Batchelder
PRAGMA table_info([tablename]);
273
Strater

あなたはテーブルを生成するために使われるSQLを探していますか?そのためには、 sqlite_masterテーブルに問い合わせることができます

sqlite> CREATE TABLE foo (bar INT, quux TEXT);
sqlite> SELECT * FROM sqlite_master;
table|foo|foo|2|CREATE TABLE foo (bar INT, quux TEXT)
sqlite> SELECT sql FROM sqlite_master WHERE name = 'foo';
CREATE TABLE foo (bar INT, quux TEXT)
110
Mark Rushakoff

すべてのテーブルを見るには:

.tables

特定のテーブルを見るには:

.schema [tablename]
51
Ross Snyder

他の答えへのコメントのいくつかによって人々が誤解されるのを防ぐために:

  1. .schemaまたはquery from sqlite_masterが何も出力しない場合は、存在しないtablenameを示します。これは、;.schemaの最後の.tablesセミコロンによっても引き起こされる可能性があります。 .schemaが機能しないことは非常にありそうもなく、そしてバグレポートはsqliteプロジェクトに提出されるべきです。

... .schemaはコマンドラインからのみ使用できます。上記のコマンドは、ライブラリ(Python、C#など)を通じてクエリとして実行できます。 - Mark Rushakoff 2010年7月25日21:09

  1. 「コマンドラインからしか使えない」と人々を誤解させる可能性があります。ほとんどすべての(おそらくすべての)プログラミング言語が他のプログラム/コマンドを呼び出すことができます。したがって、引用符で囲まれたコメントは他のプログラムを呼び出すのに不運です。この場合sqliteは、言語がすべてのプログラムに対してwrapper/libraryを提供するよりもサポートされますプログラムの大部分が本質的に本質的に不完全である傾向がありますが、反対にsingle-source principleを代行し、maintenanceを複雑にし、世界のデータの混乱を助長します。
6
Radagast

Ifグラフィカルツールを使用している場合。テーブル名のすぐ横にスキーマが表示されます。 DB Sqliteの場合、クリックしてデータベースを開き(右上隅)、ナビゲートしますデータベースを開くと、下の表に情報が表示されます。

enter image description here

record/table_nameを右クリックして、copy create statementをクリックします。

コマンドラインでの作業に失敗した初心者に役立つことを願っています。

0
Mujeeb Ishaque