background image

法用于商业用途. 而 SQLite 是完全的 open 的.

 

(二)  SQLite SQL

     SQLite 的 SQL 从很大程度上实现了 ANSI SQL92 标准. 特别的 SQLite 支持视图, 触发

器, 事务, 支持嵌套 SQL. 这些都会在下面应用的过程中讲到, 故这边先暂时放下, 而主要说
说 SQLite 所不支持的一些 SQL.

1.         不支持 Exists, 虽然支持 in(in 是 Exists 的一种情况)
2.         不支持多数据库, 如: create table db1.table1 as select * from db2.table1;
3.         不支持存储过程
4.         不支持 Alter View/Trigger/Table
5.         不支持 Truncate, 在 SQLite 中 Delete 不带 Where 字句时和 Truncate 的效果是一

样的.

6.         不支持 Floor 和 Ceiling 函数, 还有其他蛮多的函数
7.         没有 Auto Increment(自增)字段, 但是 SQLite 其实是支持 Auto Increment 的, 即在

” 

将该字段设置为 INTEGER PRIMARY KEY”的时候.

8.         不支持 If Exists

     ……

详细的 SQL 支持可以访问: http://www.sqlite.org/lang.htm
详细的不支持 SQL 可以访问: 

http://www.sqlite.org/cvstrac/wiki?p=UnsupportedSql

 

(三) SQLite 的数据类型

 
         首先你会接触到一个让你惊讶的名词: Typelessness(无类型). 对! SQLite 是无类型的. 
这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明
的数据类型是什么(只有在一种情况下不是, 稍后解释). 对于 SQLite 来说对字段不指定类
型是完全有效的. 如:
 
Create Table ex1(a, b, c);
 

诚然 SQLite 允许忽略数据类型, 但是仍然建议在你的 Create Table 语句中指定数据类

型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎. SQLite 支
持常见的数据类型, 如:

 

CREATE TABLE ex2(
  a VARCHAR(10),
  b NVARCHAR(15),
  c TEXT,
  d INTEGER,
  e FLOAT,
  f BOOLEAN,
  g CLOB,
  h BLOB,
  i TIMESTAMP,
  j NUMERIC(10,5)