易语言外部数据库sqlite3教程===========================================================第一部分sqlite基础-----------------------------------------------------------1、什么是sqlietSQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite源代码不受版权限制。SQLite与其他SQL数据库不同,SQLite没有单独的服务器进程。它直接读取和写入普通磁盘文件。具有多个表,索引,触发器和视图的完整SQL数据库包含在单个磁盘文件中。-----------------------------------------------------------2、为什么要用SQLite?不需要一个单独的服务器进程或操作的系统(无服务器的)。SQLite不需要配置,这意味着不需要安装或管理。一个完整的SQLite数据库是存储在一个单一的跨平台的磁盘文件。SQLite是非常小的,是轻量级的,完全配置时小于400KiB,省略可选功能配置时小于250KiB。SQLite是自给自足的,这意味着不需要任何外部的依赖。SQLite事务是完全兼容ACID的,允许从多个进程或线程安全访问。SQLite支持SQL92(SQL2)标准的大多数查询语言的功能。SQLite使用ANSI-C编写的,并提供了简单和易于使用的API。SQLite可在UNIX(Linux,MacOS-X,Android,iOS)和Windows(Win32,WinCE,WinRT)中运行。-----------------------------------------------------------3、常用易语言单机的、免费、轻量级数据库比较易语言自带数据库易数据库可以说不能称为数据库,它只是“表”,而且还是单张表,所以直接PASS掉。大部分人会用access,其实Access数据库本身有很多的问题:性能不行;数据不安全,用户可以直接用Access打开数据库文件进行数据修改,即使加密后都可以直接破解;Access的数据量一大,文件本身的体积就异常庞大等因素。SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。SQLite就是Access理想的替代品。-----------------------------------------------------------4、sqlite3数据类型SQLite存储类比数据类型更通用一些。类型比其他数据库的数据类型少,但是更实用些。SQLite存储类每个存储在SQLite数据库中的值都具有以下存储类之一:存储类描述NULL值是一个NULL值。INTEGER(整数型)值是一个带符号的整数,根据值的大小存储在1、2、3、4、6或8字节中。REAL值是一个浮点值,存储为8字节的IEEE浮点数字。(近似双精度浮点型)TEXT(文本型)值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE或UTF-16LE)存储。BLOB(二进制值是一个blob数据,完全根据它的输入存储。SQLite的存储类稍微比数据类型更普遍。INTEGER存储类,例如,包含6种不同的不同长度的整数数据类型。SQLite亲和(Affinity)类型(近似)SQLite支持列的亲和类型概念。任何列仍然可以存储任何类型的数据,当数据插入时,该字段的数据将会优先采用亲缘类型作为该值的存储方式。SQLite目前的版本支持以下五种亲缘类型:亲和类型描述TEXT数值型数据在被插入之前,需要先被转换为文本格式,之后再插入到目标字段中。此列可使用存储类为NULL,TEXT或BLOB来存储所有数据。NUMERIC(数字、数值当文本数据被插入到亲缘性为NUMERIC的字段中时,如果转换操作不会导致数据信息丢失以及完全可逆,那么SQLite就会将该文本数据转换为INTEGER或REAL类型的数据,如果转换失败,SQLite仍会以TEXT方式存储该数据。对于NULL或BLOB类型的新数据,SQLite将不做任何转换,直接以NULL或BLOB的方式存储该数据。需要额外说明的是,对于浮点格式的常量文本,如30000.0,如果该值可以转换为INTEGER同时又不会丢失数值信息,那么SQLite就会将其转换为INTEGER的存储方式。此列可包含使用所有五个存储类的值。也就是可以存上面所列的五种类型。INTEGER整数型对于亲缘类型为INTEGER的字段,其规则等同于NUMERIC,唯一差别是在执行CAST表达式时。它的行为与带有转换表达式异常的具有数字近似的列相同。REAL其规则基本等同于NUMERIC,唯一的差别是不会将30000.0这样的文本数据转换为INTEGER存储方式。它的行为类似于具有数字近似的列(除了它将整数值强制以浮点表示)NONE不做任何的转换,直接以该数据所属的数据类型进行存储。具有近似性NONE的列不会将一个存储类转为另一个存储类型SQLite近似和类型名称以下是可以在创建SQLite表时使用的各种数据类型名称的列表。数据类型相应的近似类型INTINTEGERTINYINTSMALLINTMEDIUMINTBIGINTUNSIGNEDBIGINTINT2INT8INTEGERCHARACTER(20)VARCHAR(255)VARYINGCHARACTER(255)NCHAR(55)NATIVECHARACTER(70)NVARCHAR(100)TEXTCLOBTEXTBLOB-未指定数据类型NONEREALDOUBLEDOUBLEPRECISIONFLOATREALNUMERICDECIMAL(10,5)BOOLEANDATEDATETIMENUMERIC日期和时间数据类型在SQLite中,没有单独的类型来存储日期和时间。但是可以将日期和时间存储为TEXT,REAL或INTEGER值。存储类日期格式存储类日期格式TEXT它以“yyyy-mm-ddhh:mm:ss.sss”格式指定日期REAL它规定了从公元前4714年11月24日在格林威治中午以后的天数。INTEGER它指定从1970-01-0100:00:00utc开始的秒数。附:易语言基本数据类型基本数据类型有6种:数值型、逻辑型、日期时间型、文本型、字节集型、子程序指针型。数值型又包括:字节型、短整数型、整数型、长整数型、小数型、双精度小数型。-----------------------------------------------------------5、sqlite命令大全SQLite命令与SQL命令类似。有三种类型的SQLite命令:DDL数据定义语言数据定义语言中主要有三个命令:•CREATE建表,数据库中的表或其他对象的视图。•ALTER:此命令用于修改现有的数据库对象,如表。•DROP:DROP命令用于删除整个表,数据库中的表或其他对象的视图。DML数据操作语言数据操作语言中主要有三个命令:•INSERT:此命令用于创建记录。•UPDATE:用于修改记录。•DELETE:用于删除记录。DQL数据查询语言•SELECT:此命令用于从一个或多个表中检索某些记录。6、sqlite点命令SQLite编程人员所使用的简单却有用的命令。这些命令被称为SQLite的点命令,这些命令的不同之处在于它们不以分号;结束。命令及其描述如下表所示:命令描述说明.backup?db?file备份数据库(默认“main”)到文件中.bailon/off遇到错误后停止,默认为off.databases附件数据库的列表名称和文件.dump?table?以sql文本格式转储数据库。如果指定表,则只转储表匹配像模式表。.echoon/off打开或关闭echo命令.exit退出sqlite提示符.explainon/off转向输出模式适合说明on/off。如没有参参数,则它为on。.header(s)on/off打开或关闭标题的显示.help显示指定帮助消息.importfiletable将数据从文件导入表.indices?table?显示所有索引的名称。如果指定表,则只显示匹配的表的索引,如模式表。.loadfile?entry?加载扩展库.logfile/off打开或关闭日志记录。文件可以是stderr/stdout.modemode设置输出模式.nullvaluestring打印字符串代替空值.outputfilename发送输出到文件名.outputstdout发送输出到屏幕.printstring...打印文字字符串.promptmaincontinue替换标准提示命令描述说明.quit退出sqlite提示符.readfilename在文件名中执行sql.schema?table?显示创建语句。如果指定表,则只显示与模式表匹配的表。.separatorstring更改分隔符由输出模式和.import使用.show显示各种设置的当前值.statson/off打开或关闭统计信息.tables?pattern?列出匹配类似模式的表的名称.timeoutms尝试打开锁定的表毫秒.widthnumnum设置“列”模式的列宽.timeron/off打开或关闭cpu定时器测量个人认为,因为我们在易语言里直接操作sqlite数据库,所以用点命令还是很少的,知道几个常用的即可。---------------------------------------------------------7、sqlite语法大全SQLite是遵循一套独特的称为语法的规则和准则。本教程列出了所有基本的SQLite语法,向您提供了一个SQLite快速入门。大小写敏感性有个重要的点值得注意,SQLite是不区分大小写的,但也有一些命令是大小写敏感的,比如GLOB和glob在SQLite的语句中有不同的含义。SQLite注释是附加的注释,可以在SQLite代码中添加注释以增加其可读性,他们可以出现在任何空白处,包括在表达式内和其他SQL语句的中间,但它们不能嵌套。SQL注释以两个连续的-字符(ASCII0x2d)开始,并扩展至下一个换行符(ASCII0x0a)或直到输入结束,以先到者为准。您也可以使用C风格的注释,以/*开始,并扩展至下一个*/字符对或直到输入结束,以先到者为准。SQLite的注释可以跨越多行。sqlite.help--Thisisasinglelinecomment所有的SQLite语句可以以任何关键字开始,如SELECT、INSERT、UPDATE、DELETE、ALTER、DROP等,所有的语句以分号(;)结束。---------------------------------------------------------8、sqlite运算符Sqlite算术运算符假设变量a=10,变量b=20,则:运算符描述实例+加法-把运算符两边的值相加a+b将得到30-减法-左操作数减去右操作数a-b将得到-10*乘法-把运算符两边的值相乘a*b将得到200/除法-左操作数除以右操作数b/a将得到2%取模-左操作数除以右操作数后得到的余数b%awillgive0Sqlite比较运算符下表中列出了SQLite中的比较运算符。在这个表中,有两个变量“a”和“b”,它们的值分别是50和100。运算符描述实例==检查两个操作数的值是否相等,如果相等则条件为真。(a==b)不为真。=检查两个操作数的值是否相等,如果相等则条件为真。(a=b)不为真。!=检查两个操作数的值是否相等,如果不相等则条件为真。(a!=b)为真。检查两个操作数的值是否相等,如果不相等则条件为真。(ab)为真。检查左操作数的值是否大于右操作数的值,如