下面我们简单介绍一下创建数据库、创建数据表和索引、添加数据、查询数据、更改数据、删除数据、sqlite3命令行选项等几个项目。目录1创建数据库文件2在sqlite3提示符下操作3SQL指令格式4创建数据表5创建索引6添加一条数据7查询数据8如何更改或删除数据9sqlite的其他特殊用法10总结创建数据库文件在sqlite3中创建数据库的方法很简单,直接在shell中输入(后面的$符号是shell提示符,请勿输入):sqlite3foo.db如果没有foo.db目录,sqlite3将创建这个数据库。sqlite3没有强制选择数据库文件名,所以如果你愿意,你也可以选择一个文件名,比如foo.icannameitwhateverilike。在sqlite3提示栏下输入sqlite3后,会看到如下文字:SQLiteversion3.1.3Enter".help"forinstructionssqlite>此时使用.help可以得到帮助,.quit是离开(请注意:不是退出)SQL指令格式所有的SQL指令都以分号(;)结束。如果遇到两个减号(-),代表注释,sqlite3会跳过。创建数据表假设我们要创建一个名为电影的数据表,只需输入以下命令:createtablefilm(title,length,year,starring);所以我们创建了一个名为film的数据表,里面包含了四个字段:name,length,year,starring。这个创建表命令的语法是:createtabletable_name(field1,field2,field3,...);table_name为数据表名,fieldx为字段名。sqlite3和很多sql数据库软件的区别在于它不关心字段属于哪种数据类型:sqlite3的字段可以存储任何东西:文本,数字,大量的文本(blub),它会自动转换合适的时间。建立索引如果数据表的数据很多,我们会建立索引来加快速度。例如:createindexfilm_title_indexonfilm(title);意思是为电影数据表的name字段创建一个名为film_name_index的索引。这个命令的语法是createindexindex_nameontable_name(field_to_be_indexed);一旦建立了索引,sqlite3在查询字段时会自动使用索引。所有这些操作都在幕后自动发生,无需用户的特别指令。添加一条数据接下来我们需要添加数据,添加的方法是使用insertinto命令,语法为:insertintotable_namevalues(data1,data2,data3,…);例如,我们可以添加insertintofilmvalues('SilenceoftheLambs,The',118,1991,'JodieFoster');insertintofilmvalues('Contact',153,1997,'JodieFoster');insertintofilmvalues('CrouchingTiger,HiddenDragon',120,2000,'Yun-FatChow');insertintofilmvalues('Hours,The',114,2002,'NicoleKidman');如果这个字段没有信息,我们可以填NULL。查询数据到这里,终于要介绍SQL中最大的select命令了。先简单介绍一下select的基本句型:selectcolumnsfromtable_namewhereexpression;最常见的用法当然是倒出数据库的所有内容:select*fromfilm;如果数据太多,我们可能想限制条目数:select*fromfilmlimit10;或者按照电影年份排列:select*fromfilmorderbyyearlimit10;或者先列出最近年份的电影:select*fromfilmorderbyyeardesclimit10;或者我们只想查看电影名称和年份:selecttitle,yearfromfilmorderbyyeardesclimit10;查看所有朱迪福斯特演过的电影:select*fromfilmwherestarring='JodieFoster';检查演员名字以Jodie开头的所有电影('%'符号是SQL通配符):select*fromfilmwherestarringlike'Jodie%';查看所有名字以Jodie开头的演员,年份晚于1985,年份晚于1985,年份在前,最多十个,只列出电影名和年份:selecttitle,yearfromfilmwherestarringlike'Jodie%'andyear>=1985orderbyyeardesclimit10;有时我们只想知道数据库中有多少条记录信息:selectcount(*)fromfilm;有时我们只想知道1985年之后有多少部电影:selectcount(*)fromfilmwhereyear>=1985;(进一步的组合,你需要阅读SQL书,但你可能已经知道为什么SQL如此流行:这种语言允许你组合各种查询条件——而我们还没有提到“跨数据库联合查询”!)更改或删除数据了解select的用法非常重要,因为要在sqlite中更改或删除一条数据,也依赖相同的语法。例如,如果一段素材的名称输入错误:updatefilmsetstarring='JodieFoster'wherestarring='JodeeFoster';它会将主角字段中标记为“JodeeFoster”的一块(或多块)材料更改回JodieFoster。deletefromfilmwhereyear<1970;将删除所有年代早于1970年(不含)的电影。sqlite的其他特殊用途sqlite可以在shell下直接执行命令:sqlite3film.db"select*fromfilm;"输出HTML格式:sqlite3-htmlfilm.db"select*fromfilm;"“倒出”数据库:sqlite3film.db.dump”>output.sql使用输出数据创建一个一模一样的数据库(加上上面的命令,就是一个标准的SQL数据库备份):sqlite3film.db
