首页 Sqlite中文资料

Sqlite中文资料

举报
开通vip

Sqlite中文资料Sqlite中文资料 介绍 这是嵌入式SQL数据库引擎SQLite(SQLite Embeddable SQL Database Engine)的一个扩展。SQLite是一个实现嵌入式SQL数据库引擎的C语言库(C library)。用SQL ite连接的程序可以使用SQL数据库,但不需要运行一个单独的关系型数据库管理系统进程(separate RDBMS process)。 SQLite不是一个用于连接到大型数据库服务器(big database server)的客户端库(cli ent library)...

Sqlite中文资料
Sqlite中文资料 介绍 这是嵌入式SQL数据库引擎SQLite(SQLite Embeddable SQL Database Engine)的一个扩展。SQLite是一个实现嵌入式SQL数据库引擎的C语言库(C library)。用SQL ite连接的程序可以使用SQL数据库,但不需要运行一个单独的关系型数据库管理系统进程(separate RDBMS process)。 SQLite不是一个用于连接到大型数据库服务器(big database server)的客户端库(cli ent library)。SQLite是一个服务器。SQLite直接读写(reads and writes directly)在硬盘上的数据库文件。 注:更多关于SQLite的资料请查看SQLite的网站()。 安装 请阅读在安装包里的INSTALL 文件。或者使用PEAR installer with "pear install sqli te"。SQLite已经内置了,你不需要安装任何附加的软件(additional software)。Windows users可以下载SQLite扩展DLL(php_sqlite.dl)。 需求 为了可以使用那些函数,你必须编译带上SQLite支持PHP(compile PHP with SQLite support),或者在你的php.ini加载SQLite扩展。 资源类型 有两个在SQLite界面(the SQLite Interface)可用的资源。第一个是数据库连接(the database connection),第二是计算结果设置(the result set)。 预定义常量 函数sqlite_fetch_array()和sqlite_current()使用一个常量 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示不同的返回类型。下面的常量(表格1.)已经被定义: 表格 1. SQLite 常量 常量名意义 SQLITE_ASSOC Columns are returned into the array having the fieldname a s the array index. SQLITE_BOTH Columns are returned into the array having both a numerical index and the fieldname as the array index. SQLITE_NUM Columns are returned into the array having a numerical index to the fields. This index starts with 0, the first field in the result. 运行时配置 这些函数的行为受到全局配置文件php.ini 的影响。 表格 2. SQLite Configuration Options Name Default Changeable sqlite.assoc_case 0 PHP_INI_ALL For further details and definition of the PHP_INI_* constants see ini_set(). 以下是该配置选项的简要解释。 sqlite.assoc_case int Whether to use mixed case (0), upper case (1) or lower case (2) hash inde xes. This option is primarily useful when you need compatibility with other datab ase systems, where the names of the columns are always returned as uppe rcase or lowercase, regardless of the case of the actual field names in the database schema. The SQLite library returns the column names in their natural case (that mat ches the case you used in your schema). When sqlite.assoc_case is set to 0 the natural case will be preserved. When it is set to 1 or 2, PHP will apply case folding on the hash keys to upper- or lower-case the keys, respective ly. Use of this option incurs a slight performance penalty, but is MUCH faster t han performing the case folding yourself using PHP script. 目录 sqlite_array_query ——发送一条SQL 查询,并返回一个数组。 sqlite_busy_timeout ——设置超时时间(busy timeout duration),或者频繁的用户失去权限(disable busy handlers)。 sqlite_changes ——返回被最新的SQL 查询(changed by the most recent SQL statement)改变的行数。 sqlite_close ——关闭一个打开的SQLite数据库。 sqlite_column ——在当前的行中取得一列(a column from the current row of a result set)。 sqlite_create_aggregate ——Register an aggregating UDF for use in SQL st atements。 sqlite_create_function ——Registers a "regular" User Defined Function for u se in SQL statements。 sqlite_current ——在返回的数组中取得当前的行(the current row from a result s et as an array)。 sqlite_error_string ——返回错误代码的原始描述(the textual description of an e rror code)。 sqlite_escape_string ——释放一个用于查询的字符串(Escapes a string for use a s a query parameter)。 sqlite_fetch_array ——取得下一行并设置成一个数组(the next row from a result set as an array)。 sqlite_fetch_single ——取得第一列并设置成一个字符串(Fetches the first column of a result set as a string)。 sqlite_fetch_string ——sqlite_fetch_single()的别名。 sqlite_field_name ——取得结果中指定字段的字段名。 sqlite_has_more ——返回是否有更多可用的行(whether or not more rows are a vailable)。 sqlite_last_error ——返回数据库的最新的错误代码(the error code of the last er ror for a database)。 sqlite_last_insert_rowid ——返回最新插入的行的行号(the most recently inserte d row)。 sqlite_libencoding ——返回SQLite库(SQLite library)的编码(encoding)。sqlite_libversion ——返回SQLite库(SQLite library)的版本。 sqlite_next ——返回下一行的行号。 sqlite_num_fields ——取得结果集中字段的数目。 sqlite_num_rows ——取得结果集中行的数目。 sqlite_open ——打开一个SQLite数据库。如果文件不存在则尝试创建之。 sqlite_popen ——用永久连接的方式打开一个SQLite数据库。如果文件不存在则尝试创建之。 sqlite_query ——发送一条SQL 查询,并返回一个结果句柄(a result handle)。sqlite_rewind ——倒回第一行(Seek to the first row number)。 sqlite_seek ——在缓存结果中查找特定的行号(Seek to a particular row number of a buffered result set)。 sqlite_udf_decode_binary ——Decode binary data passed as parameters to an UDF。 sqlite_udf_encode_binary ——Encode binary data before returning it from a n UDF。 sqlite_unbuffered_query ——发送一条SQL 查询,并不获取和缓存结果的行。 关于Sqlite的问答 为什么选择SQLite 来捆绑而不用其它数据库?恐怕PHP 想把ASP 赶下台了。 对于PHP 所开发的留言本,整站等程序,为什么使用率比ASP 低呢?很大原因是数据库的安装,对于一般用户,安装一个MySQL 数据库相对比较难的,而Access 则只需要修改数据库路径即可,数据库和站点文件放在一起,非常方便。现在好了,PHP5 将SQLite 捆绑了,相信以后会出很多相关的应用程序,而这些应用程序的数据库安装相信可以和ASP 媲美,速度又比MySQL 快上1-2 倍(官方的数据),存储量又不是问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 (最大可超过2TB-2000GB,官方数据)。只是对于并发访问我比较担心,还没有测试过不知道如何。呵呵,但是相信这是PHP 的明智选择,即使服务器不支持SQLite ,也可以通过加载ph p_sqlite.dll 来实现SQLite 的支持。恩,为什么没有早点想到使用它呢?恐怕是有以下几点原因: 1.当初还不健壮--即使现在也不知道是不是健壮,代码就那么几百K,呵呵,和MySQL 对比起来…… 2.感觉好像有点文件系统的味道,就一个数据库文件包含了所有数据…… 3.不支持表的无损修改,也就是说不支持ALTER TABLE ,这恐怕带来了不少麻烦。改变数据表结构就要重建表,不过有其他方法解决。 4.只支持left join ,不过差不多够用了,对小型程序来说。 5.优化数据表恐怕比较麻烦。 优点还是很多的,我看了下: 1.安装方便 2.支持大量数据 3.支持大部分SQL 4.弱数据类型 5.速度快(没有测试,官方说法) 6.体积小 7.具备Command 窗口,下载一个SQLite.exe 文件即可对数据库进行命令行操作,和MySQL 差不多的样子,不过显然不如MySQL 友好和强大。 8.完全公开的源代码和版权 其他想到再说,感觉SQLite 很不错的,PEAR 已经提供扩展类支持了。有兴趣下载了看看。 翻译了一部分FAQ, 英语 关于好奇心的名言警句英语高中英语词汇下载高中英语词汇 下载英语衡水体下载小学英语关于形容词和副词的题 水平差,可能不准确,翻译得很累,有兴趣的帮忙翻译几段。 常见问答(FAQ) (最后更新:2004/03/20 15:34:56) (1) 如何创建自增字段? (2) SQLite 支持哪些数据类型? (3) 为什么能向SQLite 数据库的整型字段中插入字符串? (4) 为什么SQLite 认为表达式'0'=='00' 为真? (5) 为什么SQLite 不允许在同一张表里使用'0' 和'0.0' 作为两个不同的行的主键? (6) 为什么不能在Linux box 中读取在SparcStation 中创建的SQLite 数据库? (7) 多个应用程序或者同一个应用程序的多个例程能同时存取同一个数据库文件吗? (8) Is SQLite threadsafe? (9) 如何列出一个SQLite 数据库中的所有的表/索引? (10) 有对SQLite 数据库的任何已知的大小的限制吗? (11) 在SQLite 中VARCHAR 的最大长度是多少? (12) SQLite 是否支持BLOB 类型? (13) 如何从一个已存在的SQLite 数据表中添加/删除字段? (14) 我删除了很多数据但是数据库文件并没有减小,是不是Bug? (15) 是否能将SQLite 用于商业用途而不用交版税? -------------------------------------------------------------------------------- (1) 如何创建自增字段? 简单的回答:一个声明为INTEGER PRIMARY KEY 的字段将自动增加。 这里是详细的答案:从SQLite 的 2.3.4 版本开始,如果你将一个表中的一个字段声明为INTEGER PRIMARY KEY,那么无论你何时向该表的该字段插入一个NULL 值,这个N ULL 值将自动被更换为比表中该字段所有行的最大值大1 的整数;如果表为空,那么将被更换为1。比如,假设你有这样的一张数据表: CREATE TABLE t1( a INTEGER PRIMARY KEY, b INTEGER ); 在这张数据表里,声明 INSERT INTO t1 valueS(NULL,123); 在逻辑意义上等价于: INSERT INTO t1 valueS((SELECT max(a) FROM t1)+1,123); 至于SQLite 的 2.2.0 到 2.3.3 版本,如果你向一个INTEGER PRIMARY KEY 字段插入NULL 值, 它将被替换为一个唯一的整数,但它是个半随机的整数。通过这种方式产生的唯一键将不是连续的。而SQLite 的 2.3.4 及其以后版本,唯一键将是连续的直到其最大值超过2147483647。这是32 位整型的最大值因而不能继续增加。因此在SQLite 的2.3.3 及其早期版本,并发的插入尝试将返回一个半随机的键生成算法。 从 2.2.3 版本开始,一个新的名为sqlite_last_insert_rowid() 的API 函数将为最近的插入操作返回一个整型键。详细资料请查看API 手册 -------------------------------------------------------------------------------- (2) SQLite 支持哪些数据类型? SQLite 是弱类型的。所有数据以无终止的字符串存储。在CREATE TABLE 中,字段名后面的数据类型信息将被忽略(大部分),你可以往任何字段插入你想要的数据类型,而不用管那个字段被声明为什么类型。 这个规则的一个例外是字段为INTEGER PRIMARY KEY 类型。这样的字段强制一个整型。往INTEGER PRIMARY KEY 字段插入任何非整型数据将产生一个错误。 这是一个在SQLite 的数据类型中更深入解释这一概念的页面。 -------------------------------------------------------------------------------- (3) 为什么能向SQLite 数据库的整型字段中插入字符串? 这是一个特点,不是错误。SQLite 是弱类型的。任何数据都能够插入任何字段中。你可以往整型字段中插入任意长度的字符串,或者往布尔字段中插入浮点数,或者往字符字段中插入日期。在CREATE TABLE 命令中你指定给这个字段的数据类型不会限制插入这个字段的数据。所有的字段可以插入任意长度的字符串。(有一个例外:以INTEGER PRIMARY KE Y 为类型的字段只允许整数。如果你尝试往一个INTEGER PRIMARY KEY 字段插入非整型数据,将产生一个错误。) 然而数据类型是影响值的比较的。因为在一个数字类型(比如"integer")字段中,任何字符串在进行比较和排序时是被看成处理成数值的数字。考虑这两个命令序列: CREATE TABLE t1(a INTEGER UNIQUE); CREATE TABLE t2(b TEXT UNIQUE); INSERT INTO t1 valueS('0'); INSERT INTO t2 valueS(0); INSERT INTO t1 valueS('0.0'); INSERT INTO t2 valueS(0.0); 在左边的序列中,第二条插入语句将失败。这种情况下,当字符串'0' 和'0.0' 插入一个数字类型字段中时将被处理成数字而0==0.0 违反了唯一性约束。但是右边序列中的第二条插入语句正常执行。这种情况下,常量0 和0.0 被处理成字符串意味着它们是截然不同的。 这是一个在SQLite 的数据类型中更深入解释这一概念的页面。 -------------------------------------------------------------------------------- (4) 为什么SQLite 认为表达式'0'=='00' 为真? 在 2.7.0 之后,表达式不成立。 但是如果两个值之一在一个数字类型字段中比较,另一个将被转化为数字而不是字符串,而且结果成立。例如: CREATE TABLE t3(a INTEGER, b TEXT); INSERT INTO t3 valueS(0,0); SELECT count(*) FROM t3 WHERE a=='00'; 上面序列中的SELECT 语句返回1。字段"a" 是数字类型所以在WHERE 子句中字符串'00' 被转换成一个数字作为和'a' 的比较。0==00 所以这个测试返回TRUE。现在考虑一个不同的SELECT 语句: SELECT count(*) FROM t3 WHERE b=='00'; 在这种情况下答案是0。'b' 是一个text 字段,文本不匹配'00'。'0'!='00' 因此WHER E 子句返回FALSE 而返回行数为0。 这是一个在SQLite 的数据类型中更深入解释这一概念的页面。 -------------------------------------------------------------------------------- (5) 为什么SQLite 不允许在同一张表里使用'0' 和'0.0' 作为两个不同的行的主键? 你的主键必定是数字类型。将数据类型改成TEXT 后即可正常运行。 继续阅读
本文档为【Sqlite中文资料】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_633808
暂无简介~
格式:doc
大小:32KB
软件:Word
页数:0
分类:互联网
上传时间:2019-06-04
浏览量:35