獲得數(shù)據(jù)庫(kù)的 Schema 信息
1.通過(guò).tables
獲取所有表和視圖的列表扶踊,以上一節(jié)為例查詢:
sqlite> .tables
輸出:schema test
可以看到我們創(chuàng)建的表 test 和視圖 schema往史。
注:視圖是一張?zhí)摂M的表,由一個(gè)預(yù)定義的查詢select語(yǔ)句組成欧引,可以將一系列復(fù)雜的selcet語(yǔ)句轉(zhuǎn)換成一個(gè)視圖垮媒,避免每次輸入一大堆的查詢語(yǔ)句。
要?jiǎng)h除視圖則:drop view [視圖名]
;
2.同樣的贝奇,要顯示一個(gè)表的索引虹菲,可以鍵入命 令.indices [table name]
:
sqlite> .indices test
輸出:test_idx
3.使用.schema [tablename]
可以得到一 個(gè)表或視圖的定義(DDL)語(yǔ)句:
sqlite> .schema test
輸出:
CREATE TABLE test(id integer primary key, value text);
CREATE INDEX test_idx on test(value);
如果沒(méi)提供表名,則返回所有數(shù)據(jù)庫(kù)對(duì)象(包括 table掉瞳、indexe毕源、 view 和 index)的定義語(yǔ)句:
sqlite> .schema
輸出:
CREATE TABLE test(id integer primary key, value text);
CREATE INDEX test_idx on test(value);
CREATE VIEW schema as select * from sqlite_master;
編號(hào) | 字段 | 說(shuō)明 |
---|---|---|
1 | type | 值為"table"浪漠、 "index"、 "trigger"或"view"之一霎褐。 |
2 | name | 對(duì)象名稱址愿,值為字符串。 |
3 | tbl_name | 如果是表或視圖對(duì)象冻璃,此字段值與字段 2 相同响谓。如果是索引或觸 發(fā)器對(duì)象,此字段值為與其相關(guān)的表名省艳。 |
4 | rootpage | 對(duì)觸發(fā)器或視圖對(duì)象娘纷,此字段值為 0。對(duì)表或索引對(duì)象跋炕,此字段 值為其根頁(yè)的編號(hào)赖晶。 |
5 | SQL | 字符串,創(chuàng)建此對(duì)象時(shí)所使用的 SQL 語(yǔ)句辐烂。 |
4.更詳細(xì)的 schema 信息可以通過(guò) SQLite 唯一的一個(gè)系統(tǒng)視圖 sqlite_master得到嬉探,這個(gè)視圖是一個(gè)系統(tǒng)目錄,它的結(jié)構(gòu)如下表所示:
編號(hào) | 字段 | 說(shuō)明 |
---|---|---|
1 | type | 值為"table"棉圈、 "index"涩堤、 "trigger"或"view"之一。 |
2 | name | 對(duì)象名稱分瘾,值為字符串胎围。 |
3 | tbl_name | 如果是表或視圖對(duì)象,此字段值與字段 2 相同德召。如果是索引或觸 發(fā)器對(duì)象白魂,此字段值為與其相關(guān)的表名。 |
4 | rootpage | 對(duì)觸發(fā)器或視圖對(duì)象上岗,此字段值為 0福荸。對(duì)表或索引對(duì)象,此字段 值為其根頁(yè)的編號(hào)肴掷。 |
5 | SQL | 字符串敬锐,創(chuàng)建此對(duì)象時(shí)所使用的 SQL 語(yǔ)句。 |
查詢當(dāng)前數(shù)據(jù)庫(kù)的 sqlite_master 表:
sqlite> .mode col
sqlite> .headers on
sqlite> select * from sqlite_master order by type;
結(jié)果如下:image.png