sqlite判断数据表存在用到的Sql语句
2010-11-22 17:36
302 查看
sqlite判断数据表存在用到的Sql语句
SELECT COUNT(*) as CNT FROM sqlite_master
where type='table' and name='DBInfo' //其中DBInfo为需要判断的表名。注意大小写敏感!
CREATE TABLE语句基本上就是"CREATE TABLE"关键字后跟一个新的表名以及括号内的一堆 定义和约束。 表名可以是字符串或者标识符。以"sqlite_
"开头的表名是留给数据库引擎使用的。
每个字段的定义是字段名后跟字段的数据类型,接着是一个或多个的字段约束。字段的 数据类型并不限制 字段中可以存放的数据。可以查看SQLite3的数据类型
获取 更多信息。 UNIQUE约束为指定的字段创建索引,该索引须含有唯一键。COLLATE子句说明在比较字段的 文字记录时所使用的排序函数
。缺省使用内嵌的BINARY排序函数。
DEFAULT约束说明在使用INSERT插入字段时所使用的缺省值。
该值可以是NULL,字符串常量或一个数。从3.1.0版开始,缺省值也可以是以下特殊的与事件无关的关键字CURRENT_TIME,
CURRENT_DATE或CURRENT_TIMESTAMP.若缺省值为NULL,字符串常量或数,在执行未指明字段值的INSERT语句的时候它被
插入字段。 若缺省值是CURRENT_TIME,
CURRENT_DATE或CURRENT_TIMESTAMP,则当前UTC日期和/或时间被插入字段。CURRENT_TIME的
格式为HH:MM:SS,CURRENT_DATE为YYYY-MM-DD,而CURRENT_TIMESTAMP是"YYYY-MM-DD
HH:MM:SS".
正常情况下定义PRIMARY KEY只是在相应字段上创建一个UNIQUE索引。然而,若主键定义在单一的INTEGER类型的字段上,
则该字段在内部被用作表的B-Tree键。这即是说字段仅能容纳唯一整数值。(在除此之外的其它情况下,SQLite忽略数据类型的说明
,允许任何类型的数据放入字段中,不管该字段被声明为什么数据类型。) 若一个表中不含一个INTEGER PRIMARY
KEY字段,则B-Tree键 为自动产生的整数。一行的B-Tree键可以通过如下特殊的名字"ROWID
", "OID
", 或 "_ROWID_
"
进行访问,不论是否有INTEGER PRIMARY KEY存在。INTEGER PRIMARY
KEY字段可以使用关键字AUTOINCREMENT声明。AUTOINCREMENT关键字修改了B-Tree键自动产生的方式。B-Tree键的生成
的其它信息可以在这里
找到。
若"TEMP"或"TEMPORARY"关键字出现在"CREATE"和"TABLE"之间,则所建立的表仅在当前数据库连接可见,并在断开连接时自动被删除。在临时表上建立的任何索引也是临时的。临时表和索引单独存储在与主数据库文件不同的文件中。
若说明了,则表在该数据库中被创建。同时声明和TEMP关键字会出错,除非 是"temp".若不声明数据库名,也不使用TEMP关键字,则表创建于主数据库中。
在每个约束后跟可选的ON CONFLICT子句可以定义替代的约束冲突判定算法。
缺省为ABORT。同一个表中的不同约束可以使用不同的缺省冲突判定算法。若一条COPY, INSERT, 或 UPDATE
命令指定了不同的冲突判定算法,则该算法将替代CREATE TABLE语句中说明的缺省算法。 更多信息,参见ON CONFLICT
.
3.3.0版支持CHECK约束。在3.3.0之前,CHECK约束被解析但不执行。
表中的字段数或约束数没有任何限制。在2.8版中,单行数据的总数被限制为小于1 megabytes。而在3.0中则消除了限制。
CREATE TABLE AS形式定义表为一个查询的结果集。表的字段名字即是结果中的字段名字。
每条CREATE TABLE语句的文本都储存在sqlite_master
表中。每当数据库被打开,所有的CREATE TABLE语句从 sqlite_master
表中读出,构成表结构的SQLite内部实现。若原始命令为CREATE TABLE AS则合成出等效的 CREATE TABLE语句并储存于sqlite_master
表中代替原命令。CREATE TEMPORARY TABLE语句文本储存于 sqlite_temp_master
表中。
若在命令中使用可选的IF NOT EXISTS子句且存在同名的另一个表,则当前的命令无效。
删除表可以使用DROP TABLE
语句。
SELECT COUNT(*) as CNT FROM sqlite_master
where type='table' and name='DBInfo' //其中DBInfo为需要判断的表名。注意大小写敏感!
SQLite的SQL语法
[目录]CREATE TABLE
sql-command ::= | CREATE [TEMP | TEMPORARY ] TABLE [IF NOT EXISTS ] table-name ( column-def [, column-def ]* [, constraint ]* ) |
sql-command ::= | CREATE [TEMP | TEMPORARY ] TABLE [database-name . ] table-name AS select-statement |
column-def ::= | name [type ] [[CONSTRAINT name ] column-constraint ]* |
type ::= | typename | typename ( number ) | typename ( number , number ) |
column-constraint ::= | NOT NULL [ conflict-clause ] | PRIMARY KEY [sort-order ] [ conflict-clause ] [AUTOINCREMENT ] | UNIQUE [ conflict-clause ] | CHECK ( expr ) | DEFAULT value | COLLATE collation-name |
constraint ::= | PRIMARY KEY ( column-list ) [ conflict-clause ] | UNIQUE ( column-list ) [ conflict-clause ] | CHECK ( expr ) |
conflict-clause ::= | ON CONFLICT conflict-algorithm |
"开头的表名是留给数据库引擎使用的。
每个字段的定义是字段名后跟字段的数据类型,接着是一个或多个的字段约束。字段的 数据类型并不限制 字段中可以存放的数据。可以查看SQLite3的数据类型
获取 更多信息。 UNIQUE约束为指定的字段创建索引,该索引须含有唯一键。COLLATE子句说明在比较字段的 文字记录时所使用的排序函数
。缺省使用内嵌的BINARY排序函数。
DEFAULT约束说明在使用INSERT插入字段时所使用的缺省值。
该值可以是NULL,字符串常量或一个数。从3.1.0版开始,缺省值也可以是以下特殊的与事件无关的关键字CURRENT_TIME,
CURRENT_DATE或CURRENT_TIMESTAMP.若缺省值为NULL,字符串常量或数,在执行未指明字段值的INSERT语句的时候它被
插入字段。 若缺省值是CURRENT_TIME,
CURRENT_DATE或CURRENT_TIMESTAMP,则当前UTC日期和/或时间被插入字段。CURRENT_TIME的
格式为HH:MM:SS,CURRENT_DATE为YYYY-MM-DD,而CURRENT_TIMESTAMP是"YYYY-MM-DD
HH:MM:SS".
正常情况下定义PRIMARY KEY只是在相应字段上创建一个UNIQUE索引。然而,若主键定义在单一的INTEGER类型的字段上,
则该字段在内部被用作表的B-Tree键。这即是说字段仅能容纳唯一整数值。(在除此之外的其它情况下,SQLite忽略数据类型的说明
,允许任何类型的数据放入字段中,不管该字段被声明为什么数据类型。) 若一个表中不含一个INTEGER PRIMARY
KEY字段,则B-Tree键 为自动产生的整数。一行的B-Tree键可以通过如下特殊的名字"ROWID
", "OID
", 或 "_ROWID_
"
进行访问,不论是否有INTEGER PRIMARY KEY存在。INTEGER PRIMARY
KEY字段可以使用关键字AUTOINCREMENT声明。AUTOINCREMENT关键字修改了B-Tree键自动产生的方式。B-Tree键的生成
的其它信息可以在这里
找到。
若"TEMP"或"TEMPORARY"关键字出现在"CREATE"和"TABLE"之间,则所建立的表仅在当前数据库连接可见,并在断开连接时自动被删除。在临时表上建立的任何索引也是临时的。临时表和索引单独存储在与主数据库文件不同的文件中。
若说明了,则表在该数据库中被创建。同时声明和TEMP关键字会出错,除非 是"temp".若不声明数据库名,也不使用TEMP关键字,则表创建于主数据库中。
在每个约束后跟可选的ON CONFLICT子句可以定义替代的约束冲突判定算法。
缺省为ABORT。同一个表中的不同约束可以使用不同的缺省冲突判定算法。若一条COPY, INSERT, 或 UPDATE
命令指定了不同的冲突判定算法,则该算法将替代CREATE TABLE语句中说明的缺省算法。 更多信息,参见ON CONFLICT
.
3.3.0版支持CHECK约束。在3.3.0之前,CHECK约束被解析但不执行。
表中的字段数或约束数没有任何限制。在2.8版中,单行数据的总数被限制为小于1 megabytes。而在3.0中则消除了限制。
CREATE TABLE AS形式定义表为一个查询的结果集。表的字段名字即是结果中的字段名字。
每条CREATE TABLE语句的文本都储存在sqlite_master
表中。每当数据库被打开,所有的CREATE TABLE语句从 sqlite_master
表中读出,构成表结构的SQLite内部实现。若原始命令为CREATE TABLE AS则合成出等效的 CREATE TABLE语句并储存于sqlite_master
表中代替原命令。CREATE TEMPORARY TABLE语句文本储存于 sqlite_temp_master
表中。
若在命令中使用可选的IF NOT EXISTS子句且存在同名的另一个表,则当前的命令无效。
删除表可以使用DROP TABLE
语句。
相关文章推荐
- 数据库端防止并发的SQL语句 插入时就判断是否存在
- sql语句 判断表数据是否存在另一个表中
- SQL语句判断表 数据库 数据是否存在
- 判断表是否存在或表是否有数据的sql语句
- 一条sql语句判断数据是否存在
- Android进阶#(5/12)独特高效的数据存储——SQLite数据库_SQLite中的SQL语句
- sql语句判断默认值为getdate()的约束是否存在
- 导数据时用到的SQl语句
- SQL 语句判断记录是否存在(最简洁简单性能最优)
- 判断数据库中对象(表、视图等)是否存在的SQL语句
- 判断字段是否存在的SQL语句写法
- 导数据时用到的SQl语句
- sql语句,对比数据时候用到
- (android之sqlite三)sql语句中查询带通配符的数据,如下划线 星号等
- sql语句(一)— —判断是否有这条数据的优化
- SQL语句A、B两表,找出ID字段中,存在A表,但是不存在B表的数据
- 判断数据库中对象(表、视图等)名称是否存在的SQL语句
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建
- sqlite sql语句 备忘,数据统计
- SQL语句判断某个表是否存在某个字段