of {$slidecount} ½ {$title} ATZJG.NET {$author}

首页






SQLite3 的基本操作(二)
数据库原理及应用实验


Haifeng Xu


(hfxu@yzu.edu.cn)

This slide is based on the book "SQLite" written by Chris Newman. Some are just translation of it.

References:

目录

SQLite 的特点

SQLite 的特点

SQLite 区别于其他大多数 SQL 数据库引擎的是其主要设计目标是简单:

SQLite 不仅小巧快速, 而且也十分稳定.

为了实现简单化,SQLite 不得不牺牲一些人认为有用的其他特征,例如高并发性、细粒度访问控制、丰富的内置函数、存储过程、深奥的 SQL 语言特性、XML 和/或 Java 扩展、太字节(Terabytes, TB) 或拍字节(Petabytes, PB)可扩展性等。 (1PB=1024TB)

如果您需要其中一些功能,并且不介意它们带来的复杂性,那么 SQLite 可能不是您需要的数据库。SQLite 并不打算成为企业数据库引擎。它的设计不是为了与Oracle或PostgreSQL竞争。

SQLite is not designed to replace Oracle. It is designed to replace fopen().

SQLite 的主要缺点是其不支持高并发性.

References

http://msnoise.org/doc/about_db_performances.html

SQLite 的安全性

SQLite 的安全性

SQLite 的数据库存储在文件系统中, 其访问控制是由所在操作系统基于文件权限设置而执行.

虽然 SQLite 可以通过以不同用户身份运行的流程访问,但如果设置了正确的文件权限,数据库引擎无法检测到哪个用户正在执行特定操作。

这样做的好处是管理简单,没有必要建立一个复杂的用户授权计划。任何有权阅读数据库文件的用户都可以访问数据库表和记录。同样,在共享环境中,用户可以在不受系统管理员任何参与的情况下创建自己的 SQLite 数据库到其文件空间。

SQL 实现

SQL 实现

SQLite 支持 ANSI SQL-92 标准的一个大子集. 某些功能得到了一定程度的实现, 少数几个功能完全不支持.

比如, 原子事务是可以的, 但是不能被嵌套: 简单的子查询是可以的, 但是 correlated 子查询不行; 触发器可以是行级触发, 但不能语句级触发. 有视图, 不过是只读的.

SQLite 不支持的 SQL 特性

https://www.sqlite.org/omitted.html

个性化

个性化

SQLite 库包含一个十分强大的机制用于添加用户自定义函数到 SQL 命令集中. 自定义函数甚至可以用许多受支持语言的API来写, 而不仅仅是 C/C++.

SQLite 的源代码是开放的, 任何人可以自由查看和修改代码. 如果 SQLite 缺失某个你认为必需的特性, 你可以自行添加, 然后反馈到社区.

受支持的 API

受支持的应用程序接口(API)

现在, SQLite 通过 API 对其他编程语言拥有广泛的支持. 这些接口使用基础的 C/C++ 接口与 SQLite 数据库文件进行通信.

C/C++

核心接口是由单一的库实现的, Linux/Unix 系统上是 libsqlite.so, Windows 系统上是 sqlite.dll.

仅 SQLite 库是被要求允许所有用户创建他们自己的数据库的, 因此,在共享系统中添加 SQL 数据库功能所需的管理非常少.

PHP

Perl

SQLite3 可以使用 DBD::SQLite 与 Perl 进行集成. DBD::SQLite 是 Perl 的数据库访问模块.

Tcl

Tcl(Tool Command Language) 是一个十分强大并且易学的动态编程语言.

Tk 是一个图形用户接口工具箱, 将桌面应用的开发带到比传统方法更高的层级. Tk 并不仅仅是 Tcl 的标准 GUI, 也是许多其他动态语言的 GUI. Tk 可以生成丰富、原生的应用程序, 在 Windows、Mac OS X、Linux 以及其他很多系统上运行而不会改变.

参考自

http://www.tcl.tk/

其他编程语言

对于很多其他编程语言, 包括 Java, .NET, Smalltalk 以及 Ruby 等, SQLite 也都有 API. 随着越来越多语言的支持, 它们被添加到下面的列表中. http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers .


End






Thanks very much!