sqlite查看所有表名及字段名,及判断是否存在的方法
sqlite查看所有表名及字段名 1.查询与判断表查询sqlite中所有表,可用如下sql语句。原理是,sqlite中有一个内建表sqlite_master,这个表中存储这所有自建表的表名称等信息。 select name from sqlite_master where type='table' order by name; 我们可以通过如下语句查看这个内建表的所有记录 select * from sqlite_master; 由此可以进一步引申:判断指定的表是否存在,可以用如下语句: selectcount(*) from sqlite_master where type='table' and name = 'yourtablename'; 其中yourtablename表示你要判断的表名,如果查询结果大于0,表示该表存在于数据库中,否则不存在。 2.查询与判断列通过以下语句可查询出某个表的所有字段信息 PRAGMA table_info([tablename]) 比如:我想查看表catalog的所有列信息,可以用下述代码,结果如图所示: PRAGMA table_info(catalog)
3.Sqlite中新增、删除、重命名列3.1新增一列方法:使用sql命令 命令:ALTER TABLE table-nameADD 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
-------------------------------------------------------------------------------------------------------------------- 取得sqlite数据库里所有的表名 查询table,type 段是'table',name段是table的名字,so: select name from sqlite_master where type='table' order by name;查询indices,type段是'index',name 是index的名字,tbl_name是index所拥有的table的名字 通过以下语句可查询出某个表的所有字段信息 PRAGMA table_info([tablename]) --------------------------------------------------------------------------------------------------------------------
(1)复制表,并把原表的 所有记录都复制到新表里。 CREATETABLE newTbAS SELECT * FROM oldTb (2)只复制表j结构,不复制数据到新表里。 注:该语句无法复制关键值 CREATETABLE newTbAS SELECT * FROM oldTbWHERE 1=0 (3)精准时间到毫秒 SELECT strftime('%Y-%m-%d %H:%M:%f','now','localtime') FROM sqlite_master SELECT strftime('%Y-%m-%d %H:%M:%f',[TimeFiled]) AS Expr1 FROM YourTable 数据库设置默认字段Default Value: (strftime('%Y-%m-%d %H:%M:%f','localtime')) 在SQL中有如下两种方法可以实现将一个表中数据到另一个表中 1> select ... into new_tablename from...where ... 后者是把数据插入已经存在的一个表中,我个人喜欢后者,因为在编程的结构上,应用的范围上,第二条语句强于前者。 用方法2可在Sqlite中实现将limitinfo中部分数据拷贝到processlist中 insert into processlist select null,type,NAME,isuse from limitinfo where mac='00:E0:B1:09:95:C2' 之所以select子句第一个是null,是因为表中第一个参数是INTEGER自增,填充null后可以保证数据Id是自增的。(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |