永利博程序技术员整理SQLite详细使用教程.doc_第1页
永利博程序技术员整理SQLite详细使用教程.doc_第2页
永利博程序技术员整理SQLite详细使用教程.doc_第3页
永利博程序技术员整理SQLite详细使用教程.doc_第4页
永利博程序技术员整理SQLite详细使用教程.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二八杠游戏下载地址 二八杠游戏下载地址 永利博程序技术员整理 SQLite 详细使用教程 第一章第一章 数据库数据库 SQLITE 1 1 SQLite 概述概述 1 1 1 SQLite 简介简介 SQLite 是一款轻型的数据库 是遵守 ACID 的关联式数据库管理系统 SQLite 是 D Richard Hipp 用 C 语言编写的开源嵌入式数据库引擎 SQLite 是完全独立的 不具有外部 依赖性 SQLite 第一个 Alpha 版本诞生于 2000 年 5 月 至今已经有 10 个年头 最新版本 Sqlite3 已经发布 SQLite 是免费开源软件 SQLite 能够运行在 Windows Linux Unix 等各种操作系统 同时还能够跟其他编程语言 相结合 如 PHP Python Tcl Java 等 还有 ODBC 接口 SQLite 支持 SQL92 标准 SQLIte 源代码大约 3 万行 250KB 大小 占用资源非常少 相比 Mysql PostgreSQL 这两 款著名的开源数据库 SQLite 占用资源更少 处理速度更快 ACID 指数据库事务正确执行的四个基本要素的缩写 原子性 Atomicity 一致性 Consistency 隔离性 Isolation 持久性 Durability 一个支持事务 Transaction 处理的数据库系统 必须具备这四种特性 否则在事务过程 Transaction processing 中无法保证数据的正确性的二八杠游戏下载 SQLite 最初的设计目标是用于嵌入式系统 目前已经在嵌入式产品中广泛使用 它占 用资源非常少 在嵌入式设备中 只需要几百 K 的内存就够了 SQLite 特性 1 支持 ACID 保证数据的正确性 2 数据保存在一个单一的磁盘文件 支持数据库大小至 2TB 3 数据库文件可以在不同字节顺序的机器间自由的共享 4 占用资源少 处理速度快 5 提供 C C 等 API 接口 方便使用 6 支持多种开发语言 如 PHP Python Tcl Perl 等 1 1 2 SQLite 安装安装 安装 SQLite 可以通过二进制 RPM 包 或者源码安装 1 二进制 二进制 RPM 包安装包安装 从其官方网站 http www sqlite org 或其他网站下载 sqlite 3 2 8 15 2 i586 rpm sqlite devel 3 2 8 15 2 i586 rpm 或更高版本 sqlite 3 2 8 15 2 i586 rpm 主要包含 sqlite 命令文件和 库文件 sqlite devel 3 2 8 15 2 i586 rpm 主要包括 sqlite 头文件和库文件 二八杠游戏下载地址 二八杠游戏下载地址 rpm qa grep sqlite 查询是否安装 sqlite rpm e xxx 卸载 RMP 包 rpm e xxx nodeps 强制卸载 RPM 包 如果版本太低 可以先卸载老版本 再安装先版本 rpm qpl sqlite 3 2 8 15 2 i586 rpm 查看 sqlite 安装路径 rpm qpl sqlite devel 3 2 8 15 2 i586 rpm 查看 sqlite devel 安装路径 rpm ivh sqlite 3 2 8 15 2 i586 rpm 安装 sqlite rpm ivh sqlite devel 3 2 8 15 2 i586 rpm 安装 sqlite devel 目录文件说明 usr bin sqlite3sqlite3 命令文件 usr include sqlite3 hsqlite 头文件 usr lib libsqlite3 so 0sqlite 动态库 usr lib libsqlite3 asqlite 静态库 usr share doc sqlite 帮助文档 2 源码安装 源码安装 从其官方网站 http www sqlite org download html 下载源码 sqlite 3 7 0 tar gz 或更高版本 tar zxvf sqlite 3 7 0 tar gz 解压源文件 cd sqlite 3 7 0 tar gz 进入目录 configure prefix usr local sqlite 配置 安装到 usr local sqlite 目录 make 编译 make install 安装 安装好 SQLite 后 主要包括命令文件 头文件和库文件 目录文件说明 usr local sqlite bin只有一个命令文件 Sqlite usr local sqlite include包含 sqlite3 h 和 sqlite3ext h 两个头文件 usr local sqlite lib包含 libsqlite3 so 和 libsqlite3 a 等 SQLite 静态库和动态库文件 使用时将 sqlite3 命令文件和库文件路径导入到环境变量 可修改 bashrc 文件或 bash profile 文件或 etc profile 文件 vi bashrc 修改配置文件 添加以下两行 export PATH usr local sqlite bin PATH export LD LIBRARY PATH usr local sqlite lib LD LIBRARY PATH source bashrc 执行配置文件 如果要将其移植到嵌入式系统 ARM 平台 在配置的时候设置一下即可 二八杠游戏下载地址 二八杠游戏下载地址 configure prefix PWD install disable tcl build x86 linux host arm linux 1 1 3 SQLite 列类型列类型 SQLite 与其他数据库最大不同是它对数据类型的支持 其他常见数据库支持强类型的 数据 即必须指定每一列具体的 严格的数据类型 但 SQLite 采用的是弱类型的数据 SQLite 2 0 版本把所有列的值都存储成 ASCII 文本格式 SQLite 3 0 版本支持更多的数据类 型 每个数据值本身的数据类型可以是下列五种类型对象之一 1 NULL 空值 2 INTEGER 整型 根据大小使用 1 2 3 4 6 8 个字节来存储 3 REAL 浮点型 用来存储 8 个字节的 IEEE 浮点 4 TEXT 文本字符串 使用 UTF 8 UTF 16 UTF 32 等保存数据 5 BLOB Binary Large Objects 二进制类型 按照二进制存储 不做任何改变 为了增强 SQLite 数据库和其他数据库列类型的兼容性 SQLite 支持列的 类型亲和性 列的亲和性是为该列所存储的数据建议一个类型 注意 是建议而不是强迫 理论上 讲 任何列依然可以存储任何类型的数据 只是针对某些列 如果给出了建议类型 数据 库将按建议的类型先转换再存储 这个被优先使用的数据类型则被称为 亲和类型 在 SQLite3 0 版中数据库中的列类型有五种类型亲和性 文本类型 数字类型 整数类型 浮点类型 NULL 无类型 1 一个具有文本类型亲和性的列 可以使用 NULL TEXT BLOB 值类型存储数据 比如数字数据被插入一个具有文本类型亲和性的列 在存储之前数字将被转换成文本 2 一个具有数字类型亲和性的列 可以使用 NULL INTEGER REAL TEXT BLOB 五种值类型保存数据 比如一个文本类型数据被插入到一个具有数字类型亲和性的列 在 存储之前将被转变成整型或浮点型 3 一个具有整数亲和性的列 在转换方面和具有数字亲和性的列是一样的 但也有些区 别 比如浮点型的值 将被转换成整型 4 一个具有浮点亲和性的列 可以使用 REAL FLOAT DOUBLE 值类型保存数据 5 一个具有无类型亲和性的列 不会选择用哪个类型保存数据 数据不会进行任何转换 一个列的亲和类型是由该列所宣称的类型决定的 遵守以下二八杠 规则 1 如果列的数据类型包括字符串 INT 它被定义为具有整数型亲和性 2 如果列的数据类型包括字符串 CHAR CLOB TEXT 它被定义为具有文本亲 和性 注意 VARCHAR 类型包括字符串 CHAR 因此具有文本类型亲和性 3 如果列的数据类型包括字符串 BLOB 或没有指定类型 它被定义为无类型亲和性 4 如果列的数据类型包括字符串 REAL FLOA DOUB 它被定义为浮点型亲和 性 5 其他的都被定义为数字型亲和性 二八杠游戏下载地址 二八杠游戏下载地址 类型亲和类型 INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT UNSIGNED BIG INT INT 2 INT8 INTEGER CHARACTER 20 VARCHAR 255 NCHAR 55 VARYING CHARACTER 255 NATIVE CHARACTER 70 NVARCHAR 100 TEXT CLOB TEXT BOLB no datatype specifiedNONE REAL FLOAT DOUBLE DOUBLE PRECISION REAL NUMERIC DECIMAL 10 5 BOOLEAN DATE DATETIME NUMERIC TEXT 存储可变长度的数据 最大长度为 2 31 1 2 147 483 647 个字符 设置主键使用 INTEGER PRIMARY KEY 不能用 INT 自动增加是 AUTOINCREMENT 不同于 MySQL 的 AUTO INCREMENT 1 2 SQLite 命令命令 1 2 1 创建数据库创建数据库 创建数据库 test db sqlite3 test db 运行 sqlite3 并指定数据库 SQLite version 3 5 1 Enter help for instructions sqlite help 查看帮助 后面的参数指定创建或打开的数据库 1 2 2 创建表创建表 创建一个表 class 有 5 列分别是 id name sex phone address sqlite create table class id integer primary key autoincrement name varchar 10 not null sex varchar 6 phone char 15 address varchar 20 设置主键使用 INTEGER PRIMARY KEY 不能用 INT 自动增加是 autoincrement 不同于 MySQL 的 auto increment 1 2 3 插入数据插入数据 向表 class 中插入数据 二八杠游戏下载地址 二八杠游戏下载地址 sqlite insert into class id name sex phone address values 1 hongdy male 11111 shanghai sqlite insert into class name sex phone address values Tom male 22222 nanjing sqlite insert into class name sex phone address values Mary female 33333 beijing sqlite insert into class name sex phone address values Jacky female 44444 guangzhou 假定插入数据之前 数据表是空的 第一条数据指定了 id 实际上这个值是自动增加的 下面的插入语句就没有指定这个值 1 2 4 查询数据查询数据 查询表 class 中的数据 sqlite select from class 选择所有数据 sqlite select from class where name hongdy 选择特定的行 sqlite select name phone from class 选择特定的列 sqlite select from class order by id desc 根据 ID 降序排列 sqlite select from class order by id asc 根据 ID 升序排列 sqlite select from class order by id desc limit 1 选择 ID 最大的一行 sqlite select from class where id select max id from class 通过函数取 ID 最大值一行 limit 子句可被用来限制 SELECT 语句返回的行数 Limit 有 1 或 2 个参数 如给定 2 个参 数 第一个指定要返回的第一行偏移量 第二个指定返回行的最大数目 初始行的偏移量 是 0 1 2 5 更新数据更新数据 更新表 class 中 name hongdy 的 phone 88888 sqlite update class set phone 88888 where name hongdy 1 2 6 删除数据删除数据 删除表中的某一行 或删除表中所有的行 sqlite delete from class where name hongdy 删除表中 name hongdy 的那一行 sqlite delete from class 删除表中所有的行 1 2 7 删除表删除表 删除表 class sqlite drop table class 二八杠游戏下载地址 二八杠游戏下载地址 1 2 8 设置输出模式设置输出模式 表的输出模式有 column list tables csv insert line html tcl 设置完表的模式后 使用 select 查询语句 即可看到最新的输出格式 sqlite mode column class 设置 column 输出模式 sqlite select from class 查看 column 输出模式结果 sqlite mode list class 设置 list 输出模式 sqlite select from class 查看 list 输出模式结果 sqlite mode tables class 设置 tables 输出模式 sqlite select from class 查看 tables 输出模式结果 sqlite mode cvs class 设置 cvs 输出模式 sqlite select from class 查看 cvs 输出模式结果 sqlite mode insert class 设置 insert 输出模式 sqlite select from class 查看 insert 输出模式结果 sqlite mode line class 设置 line 输出模式 sqlite select from class 查看 line 输出模式结果 sqlite mode html class 设置 html 输出模式 sqlite select from class 查看 html 输出模式结果 1 2 9 导出数据导出数据 先设置导出的文件名 然后查询数据 这样查询的数据就全部输出到指定的文件 终端看 不到数据 此后所有的查询操作 数据都输出到文件二八杠绝技 如果想重新让数据在终端显示 设置输出模式为 stdout sqlite output result 指定导出文件 sqlite select from class 查询数据 输出到文件 sqlite read result 查看到处的文件数据 sqlite output stdout 重新设置输出终端 sqlite select from class 查询数据 可在终端看到数据 1 2 10 导入数据导入数据 从某一个文件中导入数据 二八杠游戏下载地址 二八杠游戏下载地址 sqlite import result class 将 result 文件的数据导入到表 class 中 sqlite select from class 查询数据 1 2 11 显示数据库信息显示数据库信息 sqlite database 显示数据库文件 sqlite tables 显示数据库中的表 sqlite schema 显示数据库中所有表的创建模式 sqlite schema class 显示数据库中 class 表的创建模式 sqlite header on 显示表头 sqlite header off 关闭表头 sqlite show 显示 sqlite 设置 1 2 12 显示时间显示时间 显示现在的日期 时间 sqlite select datetime now 2007 10 29 15 39 05 sqlite select date now 2007 10 29 sqlite select time now 15 39 19 1 3 SQLite 编程编程 1 3 1 SQLite 函数接口函数接口 SQLite 应用编程接口 API 非常简单易用 只需要三个用来执行 SQL 和获得数据的函 数 它还是可以扩展的 允许程序员自定义函数然后以 callback 的形式集合进去 C 语言 API 是其它接口的基础 开放源码团体基于此已经扩展了众多的客户接口 使得其他语言 对 sqlite 的使用也成为可能 创建或打开数据库 int sqlite3 open const char sqlite3 执行语句 typedef int sqlite callback void int char char int sqlite3 exec sqlite3 const char sql sqlite callback void char 二八杠游戏下载地址 二八杠游戏下载地址 关闭数据库 int sqlite3 close sqlite3 1 3 2 SQLite 编程实例编程实例 Sqlite 应用程序实例 编写测试文件 vi test sqlite c include include include int main void sqlite3 db char zErrMsg 0 char resultp int nrow int ncolumn char errmsg int i j create db test db if sqlite3 open people db exit 1 cr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论