首页 > 数据库 > SQLite > 正文

sqlite介绍(二)使用 SQLite

2020-02-10 17:55:10
字体:
来源:转载
供稿:网友

sqlite介绍(二)使用 SQLite

使用 SQLite
SQL面向过程的接口跟MySQL和其它数据库的接口几乎是同样的.因而,对于大部分的将其它数据库迁移到SQLite的工作仅是将函数前缀mysql/pq/等等...改为sqlite.
SQLite和其它数据库一个大的不同在于其数据库引擎本身.不象其它数据库,SQLite是松散型的. SQLite中所有数据库都以空字符串结尾而不是对特定的列类型用特定的二进制表现.为了兼容性的原因,SQLite仍然在表创建时支持一些类型规范, 比如INT, CHAR, FLOAT, TEXT如此等等,但是实际上并没有用到这些数据类型.在内部,SQLite仅仅对字符串和整形在排序期间作了区分.因此,如果你不是有意地排序数据,你 可以无需在CREATE TABLE语句 中指定数据类型.

SQLite的类型无关特性也在一定程度上降低了其数据排序和数据比较的 速度.因为,每一次比较SQLite都需要判断数据,然后来决定是用字符串还是用数字型比较的机制.SQL表格也提供了自动增长的键值以对数据行快速访 问. 同时也意味着对最后插入的一行的引用的访问.在SQLite里,这有一个不太常见的语法规则. 要创建这样一个自动增长的键值的字段,你必须将字段声明为INTEGER PRIMARY KEY, 而不是将其指定为一个特殊类型,并赋值以附加属性来指出这是一个自增长的字段.
正如你所想象的.SQLite拥有许多提高其效能和扩展其功能的新的特性.这些特性的其中这五就是执行链式查询的能 力.这就意味着你可以通过一个查询函数来执行多条查询.这大大地减少了你需要运行的PHP函数的量.也提高了脚本运行的速度.这也允许你在事特处理中包含 查询语句块.大大提高性能.这是当执行多条写查询时提高性能的重要因素.当然,运用这个功能时也需要考虑到一些带来混乱的问题.

如果 SQLite中的任何查询用到了用户指定的输入,你必须仔细地验证用户的输入以防止SQL注射攻击.不像MySQL,SQL注射仅仅导致一个令人难堪的查 询错误.在SQLite中,允许攻击者在你的服务器上执行查询,可能导致潜在的灾难性的后果.如果查询展示会中包含了插入语句,并且你希望获得id, sqlite_last_insert_rowid() 函数可以达到这个目的,仅仅取得最后一次插入的id.另外一方面,当试图知道多少行受到查询影响时,可以用sqlite_changes(),这个函数的 结果 就是所有执行的查询所影响的总行数.如果你的查询块中包含了SELECT,请确保它是第一个查询.否则你的结果集将不包含查询中所存取的行.
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表