sqlite檢視所有表名及欄位名,及判斷是否存在的方法
sqlite檢視所有表名及欄位名
1. 查詢與判斷表
查詢sqlite中所有表,可用如下sql語句。原理是,sqlite中有一個內建表sqlite_master,這個表中儲存這所有自建表的表名稱等資訊。
select name fromsqlite_master where type='table' order by name;
我們可以通過如下語句檢視這個內建表的所有記錄
select * fromsqlite_master;
由此可以進一步引申:判斷指定的表是否存在,可以用如下語句:
selectcount(*) from sqlite_master wheretype='table' and name = 'yourtablename';
其中yourtablename表示你要判斷的表名,如果查詢結果大於0,表示該表存在於資料庫中,否則不存在。
2. 查詢與判斷列
通過以下語句可查詢出某個表的所有欄位資訊
PRAGMA table_info([tablename])
比如:我想查看錶catalog的所有列資訊,可以用下述程式碼,結果如圖所示:
PRAGMA table_info(catalog)
3. Sqlite中新增、刪除、重新命名列
3.1 新增一列
方法:使用sql命令
命令:ALTER TABLE table-name ADD COLUMN column-namecolumn-type
例如:在student表中新增一列名為name,型別為varchar:
alter table student add column name varchar;
alter table catalog add column xxx1 char(20) default '';
3.2 刪除一列
方法:由於drop命令在sqlite中不可用於刪除列,
alter table student drop column name // 該行在SQlite中不能用,SQlite不支援drop
可採用如下思路,類似於swap()函式的過程。
比如我有表A,A中有x、y、z三列。我要將表A中的x列刪掉。那麼,
第1步,新建一個表B,B中含有y、z兩個欄位,且型別與A中的y、z型別相同。
第2步,將A中的所有y、z兩列的值拷貝到B中。
上面兩步使用一句命令即可完成
create table B asselect y,z from A
注意,如果A中y的型別為char,則上面create命令會在B中建立型別為TEXT的y列。即char型別會被改變。
第3步,將A表刪除
drop table ifexists A
第4步,將B重新命名為A
alter table Brename to A
3.3 重新命名一列
方法:與刪除一列相同,在sqlite中alter同樣無法重新命名一列。如果想重新命名,那麼思路與刪除一列相同。
4. Sqlite中新增、刪除、重命名錶
Sql語句在3.2中已有。整理如下。
4.1 新增表
create table A(id char(20),channeltext,name text,primary key (id))
create table B as select y,z from A
4.2 刪除表
drop table if exists A
4.3 重命名錶
alter table B rename to A