質問
Hsqldb スタンドアロン モードで既存のスキーマを検査し、その後変更することは可能ですか?組み込みの管理ツールを使用してファイルを調べたり、SQuirrel SQL クライアントを接続したりしてみました。
私はさまざまなテーブルにどのような主キーが存在するかに特に興味があります。MySqlの「show create table...」や「describe」に相当するコマンドはありますか?
解決
の sqltool
\d コマンドは「describe」に近似しており、主キー情報は INFORMATION_SCHEMA
:
sql> CREATE SCHEMA STACKOVERFLOW;
sql> SET SCHEMA STACKOVERFLOW;
sql> CREATE TABLE SO2406470 (pk1 INT NOT NULL, pk2 INT NOT NULL, data VARCHAR(64), PRIMARY KEY(pk1, pk2));
sql> \d SO2406470
name datatype width no-nulls
---- -------- ----- --------
PK1 INTEGER 11 *
PK2 INTEGER 11 *
DATA VARCHAR 64
sql> SELECT * FROM INFORMATION_SCHEMA.SYSTEM_PRIMARYKEYS WHERE TABLE_SCHEM = CURRENT_SCHEMA AND TABLE_NAME = 'SO2406470';
TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
--------- ------------- ---------- ----------- ------- ------------
PUBLIC STACKOVERFLOW SO2406470 PK1 1 SYS_PK_10040
PUBLIC STACKOVERFLOW SO2406470 PK2 2 SYS_PK_10040
Fetched 2 rows
(hsqldb-2.0.0rc9)
他のヒント
SQLツール \dt コマンドはすべてのテーブル名を表示します。 \d? コマンドはすべての「describe」オプションを表示します。
sql> \dt
TABLE_SCHEM TABLE_NAME
----------- ---------------
PUBLIC APP_CFG
PUBLIC CFG_REFRESH_LOG
...
sql> \d?
\dX [parameter...] where X is one of the following.
a: list Aliases
c: list Catalogs
i: list Indexes (for some databases, must specify literal target table)
n: list schema Names
r: list Roles
s: list Sequences
S: list System tables
t: list Tables
u: list Users
v: list Views
*: list table-like objects
...
所属していません StackOverflow