SQLITE 学习笔记

合集下载

C# SQLite用法

C# SQLite用法

SQLite Expert SQLite数据库管理工具,非常好用,类似我之前介绍的EMS SQL Manager 2007 for MySQLSystem.Data.SQLite SQLite For 驱动,类似我之前介绍的MySql.Data.dll这2个工具都包括1)SQL的指令格式所有的SQL指令都是以分号(;)结尾的。

如果遇到两个减号(--)则代表注解,sqlite3会略过去。

2)建立资料表假设我们要建一个名叫film的资料表,只要键入以下指令就可以了:create table film(title, length, year, starring);这样我们就建立了一个名叫film的资料表,里面有name、length、year、starring四个字段。

这个create table指令的语法为:create table table_name(field1, field2, field3, ...);table_name是资料表的名称,fieldx则是字段的名字。

sqlite3与许多SQL数据库软件不同的是,它不在乎字段属于哪一种资料型态:sqlite3的字段可以储存任何东西:文字、数字、大量文字(blub),它会在适时自动转换。

3)建立索引如果资料表有相当多的资料,我们便会建立索引来加快速度。

好比说:create index film_title_index on film(title);意思是针对film资料表的name字段,建立一个名叫film_name_index的索引。

这个指令的语法为create index index_name on table_name(field_to_be_indexed);一旦建立了索引,sqlite3会在针对该字段作查询时,自动使用该索引。

这一切的操作都是在幕后自动发生的,无须使用者特别指令。

4)加入一笔资料接下来我们要加入资料了,加入的方法为使用insert into指令,语法为:insert into table_name values(data1, data2, data3, ...);例如我们可以加入insert into film values ('Silence of the Lambs, The', 118, 1991, 'Jodie Foster');insert into film values ('Contact', 153, 1997, 'Jodie Foster');insert into film values ('Crouching Tiger, Hidden Dragon', 120, 2000, 'Yun-Fat Chow');insert into film values ('Hours, The', 114, 2002, 'Nicole Kidman');如果该字段没有资料,我们可以填NULL。

sqlite数据库教材

sqlite数据库教材

sqlite数据库教材目录1. 引言1.1 背景和意义1.2 结构概述1.3 目的2. SQLite数据库基础知识2.1 概述2.2 数据库管理系统简介2.3 SQLite的特点与优势3. SQLite数据库设计与创建3.1 数据建模与规范化3.2 创建数据库与数据表3.3 约束条件与关系定义4. 数据的增删改查操作4.1 插入数据4.2 更新数据4.3 删除数据4.4 查询数据5.SQL高级功能与优化技巧5-1 SQL函数5-2索引,视图,事务等引言1.1 背景和意义数据库是软件开发过程中必不可少的一环,用于存储和管理数据。

随着互联网和移动设备的快速发展,数据的规模和复杂性也呈现出爆炸式增长的趋势。

因此,如何高效、可靠地处理大量数据成为了一个重要问题。

SQLite数据库作为一种轻量级、可嵌入式的关系型数据库管理系统(RDBMS),广泛应用于各种领域,包括移动应用程序、桌面应用程序以及嵌入式设备等。

其简单易用、稳定高效的特点使得SQLite成为了许多开发者首选的数据库工具。

本教材旨在介绍SQLite数据库的基础知识、设计与创建方法以及常见操作技巧,帮助读者全面理解和掌握SQLite数据库,从而能够在实际项目中灵活运用并优化其性能。

1.2 结构概述本教材共分为五个章节,内容涵盖了SQLite数据库基础知识、设计与创建、数据的增删改查操作以及SQL高级功能与优化技巧。

具体而言,在第二章中我们将对SQLite数据库进行概述,并介绍数据库管理系统的基本概念。

接着,在第三章中,我们将学习数据建模与规范化的基本原理,以及如何使用SQLite创建数据库和数据表,并定义各种约束条件和关系。

在第四章中,我们将重点介绍SQLite数据库中常用的增加、删除、修改和查询数据的操作方法,并给出一些实例进行实际演示。

最后,在第五章中,我们将深入讨论SQL高级功能与优化技巧,包括SQL函数的应用、索引的使用以及视图和事务等高级特性。

Android笔记 week6

Android笔记 week6

Android笔记 week6.1之 "SQLite数据库"前言当我们需要存储大量复杂的关系型数据时,Sharedpreference和文件都是难以胜任的,于是我们要学习如何使用Android内置的SQLite数据库。

知识点如何使用SQLite数据库?1 创建&升级数据库:设计数据库和表2 增删查改3 事务4 优化5 对象关系映射**"ORM"**1 创建数据库为了方便我们管理数据库,Android提供了一个专门的帮助类:SQLiteOpenHelper。

它是一个抽象类,我们需要继承它来使用:DatabaseHelper extends SQLiteOpenHelper对于这个帮助类,我们有三个方法需要注意1 构造函数2 抽象方法1:onCreate()3 抽象方法2:onUpgrade()构造函数public DBHelper(Context context) {super(context, DB_NAME, null, 1);mContext = context;}这里我们可以看到,超类的构造函数有4个参数,我们来分析:参数1:context 上下文,一般在activity中传入this参数2:数据库名 String参数3:SQLiteDatabase.CursorFactory 自定义的Cursor。

一般使用null,使用系统默认的Cursor。

(后面会遇到Cursor,是查询数据库后返回的数据集合)参数4:数据库版本我这里的做法是把数据库名,版本号都通过硬编码的形式封装起来,有自己继承的Helper类统一管理,外部需要使用到数据库时,只需要传入context进行初始化,那么外部任何地方都能确保使用同一个数据库。

抽象方法1:onCreate() :通过sql语句创建数据表建表语句db.execSQL("create table user(......)");public static final String TABLE_PUBLISHER = "PubInfos";public static final String COLUMN_ORGNIZATION = "orgnization";public static final String COLUMN_PUBLISHER = "publisher";public static final String COLUMN_PUBDATE = "pubdate";public static final String COLUMN_DEADLINE = "deadline";public static final String COLUMN_PROJECT = "project";public static final String TABLE_USERINFO = "Userinfo";public static final String COLUMN_BRIEF = "brief";public static final String COLUMN_ID = "id";public static final String COLUMN_PHONE = "phone";public static final String COLUMN_PASSWD = "passwd";public static final String COLUMN_LOGINSTATE = "loging_status";@Overridepublic void onCreate(SQLiteDatabase db) {//建表db.execSQL("create table " + TABLE_PUBLISHER + "(" +COLUMN_ID + " integer primary key autoincrement," +COLUMN_ORGNIZATION + " text," +COLUMN_PUBLISHER + " text," +COLUMN_PUBDATE + " integer," +COLUMN_DEADLINE + " integer," +COLUMN_PROJECT + " text," +COLUMN_BRIEF + " text)");Log.i(SetPubInfoActivity.TAG_TEST, TABLE_PUBLISHER + " table created");db.execSQL("create table " + TABLE_USERINFO + "(" +"id integer primary key autoincrement," +COLUMN_PHONE + " text," +COLUMN_PASSWD + " text," +COLUMN_LOGINSTATE + " integer)");Log.i(SetPubInfoActivity.TAG_TEST, TABLE_USERINFO + " table created");}==========以上实例,我通过`db.execSQL(数据库语句)`创建了两张表。

90学时培训Python学习笔记(数据库篇上001)

90学时培训Python学习笔记(数据库篇上001)

90学时培训Python学习笔记(SQLite3数据库入门篇上)路桥中学陈朝晖SQLite数据库是一款非常小巧的嵌入式开源软件,它的数据库就是一个文件。

由于SQLite本身是C写的,体积小,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。

SQLite的驱动内置在Python标准库中,因此我们可以直接操作SQLite数据库。

Python定义了一套操作数据库的API接口,任何数据库要连接到Python,只需要提供符合Python标准的数据库驱动即可。

你不需安装任何东西就可以直接使用,最大优点当然就是操作方便啦!SQLite性能相比大型数据库并不逊色。

麻雀虽小,五脏俱全。

另外,SQLite实现了多数sql-92的标准,比如说transaction、trigger和复杂的查询等。

在使用SQLite前,我们得先要搞清楚几个概念:(1)表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表,比如学生的表,班级的表,学校的表等等。

表和表之间通过外键关联。

(2)要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection;(3)连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,获得执行结果。

Python的数据库模块有统一的接口标准,所以数据库操作都有统一的模式,这一点使用起来和VB选考中数据库章节要求的内容没啥两样!一、准备工作:我手头的版本是:SQLiteSpy_1.9.12,单击运行,让我们一步步走进Python中的SQLite吧。

如果你手头有数据库文件,就直接打开吧:说明一下:s3db是SQLite数据库文件二、利用SQLiteSpy软件管理数据库表下面,我们一起用SQLiteSpy软件来管理数据库中数据表,这里我选择其中的一张数据表进行操作,同时和大家一起复习一下常用的几条SQL语句:任何编程语言,若想从数据库中取值,从数据库中拿东西,那你得先学会SELECT对数据表查询,这里的SQL语句和我们平常VB教学中数据库操作没啥两样,相信大家都比我熟悉,在这里,我们可以好好地练练SQL语句,下面,请大家完成这个任务单吧,哈哈哈……(操作一遍)任务单:(1)SELECT*FROM students#从数据表students表中选择所有字段(2)SELECT name,score FROM students#从数据表students表中选择这name,score两个字段,投影出来(3)DELETE FROM students WHERE id=14#从数据表students表中,删除与id编号为14的这条记录(4)UPDATE students SET password='8888'WHERE id=17#更新students数据表,修改id编号为17的这条记录的密码,将其设置为'8888'(5)INSERT INTO students(name,score,account,password)#id是自动编号不需要给,系统会自动生成(6)INSERT INTO students(name,score,account,password)VALUES('sunxuanzhan','99','sxz','9999') #在students数据表中,添加一条记录,将表中相对应的字段设置为:students(name,score,account,password)=('sunxuanzhan','99','sxz','9999')到这里,我们已经对SQL查询语句有了一个初步了解,接下来,让我们一起进入到Python环境,熟悉一下在Python中访问数据库的流程:首先,我们先对数据库访问流程做一个概要的了解,大致分为下面几个步骤:import sqlite3#SELECT模块#1.得到数据库链接conn=sqlite3.connect("example.s3db")#先建立连接#2.先拿到游标Cursorcs=conn.cursor()#3.在游标Cursor上执行sql查询cs.execute("SELECT*FROM students")#查询多条记录,或按条件查询cs.execute("SELECT*FROM students WHERE id=15")#只查询一条记录#4.通过fetchall方法得到查询的结果result=c.fetchall()#获取全部结果fetcha allresult=c.fetchone()#只是取一条记录(可以简化、更加方便)#5.关闭Cursorcs.close();#6.事务提交mit();#7.关闭数据库链接conn.close()很简单吧,有没有感觉,这好像和我们VB中对数据库的访问如出一辙,完全一样啊!三、流程详解首先,我们在Python中导入SQLite数据库模块在Python中导入数据库模块、导入SQLite驱动import sqlite31、创建数据库、或打开已有数据库#1.利用变量conn建立与SQLite数据库文件的链接,文件名是example.s3db#如果不是在当前Python程序目录下,请使用绝对路径;conn=sqlite3.connect("example.s3db")conn=sqlite3.connect("E:/test/example.s3db")在调用connect函数的时候,如果你指定数据库文件根本就不存在,那么Python就会帮你直接在当前目录下创建这个数据库,这一点做的真挺好的!2、创建一个用来访问数据库的游标Cursor#2.创建一个用来访问数据表的游标cs=conn.cursor()#先拿到当前数据库的游标#print(type(cs))<class'sqlite3.Cursor'>3、利用游标Cursor,对数据表做有关查询操作#3.在游标Cursor上执行sql查询:cs.execute("SELECT*FROM students")可以通过fetchall()获取到表中所有的记录#4.通过fetchall()获取当前查询结果,类型为list[]:r esult=cs.fetchall()result是list[]类型,其中每一条记录都是元组,如下所示:'''(14,'虞颖健',41,'G1505001','666666')(15,'陈佳炎',36,'G1505002','132493')(16,'朱音明',42,'G1505003','101586')(17,'张晨阳',38,'G1505004','111296')(18,'朱晨炎',32,'G1505005','124733')'''#按条件进行查询(score>=45)cs.execute("SELECT*FROM students WHERE score>=45")#只查询一条记录result=cs.fetchall()#获取全部结果fetcha allprint(type(result))#<class'list'>for item in result:print(item)'''<class'list'>(25,'傅伊超',47,'G1505012','183824')(30,'高璐',47,'G1505017','192606')(53,'胡晓清',50,'G1505040','172419')'''借助游标Cursor,我们可以获取全部结果,操作非常方便,fetchall()获取后返回的数据类型是list。

SQLite学习

SQLite学习

SQLite 的安装这里只介绍windows平台下下载windows下的文件,其实就是一个命令行程序,(下载地址:/sqlite‐3_6_22.zip),这个命令行程序用来包括生成数据库文件、执行SQL查询、备份数据库等等功能。

其他系统的安装 官网上 都有 介绍 ( SQLite官方网站: )SQLite 的特点1.独立性:sqlite使用标准C语言实现,它只需要非常少的系统或外部库的支撑,这使得它非常易于移植进嵌入式设备,同样这也使得它能应用于更广泛的不同配置的软件环境。

sqlite使用一个VFS(虚拟文件系统)层完成和磁盘的交互,而在不同系统中完成这个交互层是非常简单的工作。

2.非服务式:多数SQL数据库是以服务的形式实现的,这要求客户程序必须通过某种中间接口来连接数据库。

与此相反,SQLite直接访问数据库文件本身,没有任何中间媒介。

3.零配置:如上所说,访问sqlite数据库没有中间媒介,我们不用安装,配置和管理那些服务程序。

SQLite just works。

4.元处理:sqlite的数据操作具有原子性、孤立性,程序或系统崩溃不会引发数据错误。

5.开放性:任何人可自由获得和使用sqlite,包括它的源码。

鉴于以上特性,有越来越多的网站和软件使用或嵌入了sqlite数据库引擎,已知的包括:Google、QQ、Mozilla Firefox 、Mac 电脑、PHP、Skype、SymbianOS、AOL、Solaris 10 installations、McAfee、iPhones 等。

相对于其他数据库 还有这样一些特点不需要配置,不需要安装,也不需要管理员支持大部分SQL92一个完整的数据库保存在磁盘上面一个文件同一个数据库文件可以在不同机器上面使用最大支持数据库到2T字符和BLOB的支持仅限制于可用内存整个系统少于3万行代码,少于250KB的内存占用(gcc)大部分应用比目前常见的 客户端/服务端 的数据库快没有其它依赖源代码开放, 代码95%有较好的注释简单易用的API. 官方带有TCL的编译版本。

android 数据库SQLite学习笔记

android 数据库SQLite学习笔记

SQLite简介Google为Andriod的较大的数据处理提供了SQLite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大。

SQLite具备下列特点:1.轻量级使用SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。

2.独立性SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。

3.隔离性SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。

4.跨平台SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。

5.多语言接口SQLite 数据库支持多语言编程接口。

6.安全性SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。

这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。

Android中的SQLite使用在context中创建:1由Context.createDatabase(String DB_NAME,int version,CursorFactory factory)通常factory为null2Context.openOrCreateDatabase(String DB_NAME, MODE_PRIVATE,CursorFactory factory)通常factory为nullSQLiteDatabase中的静态方法代码:SQLiteDatabase db = SQLiteDatabase .create(null);继承SQLiteOpenHleper类重写onCreate(SQLiteDatabase db)。

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)两个方法,在构造方法中调用父类中三个参数的构造方法;class DataBaseHelper extends SQLiteOpenHelper {public DataBaseHelper(Context context) {super(context, DB_NAME, null, DB_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_TABLE);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion) {db.execSQL("DROP TABLE IF EXISTS notes");onCreate(db);}}SQLiteOpenHelper类介绍SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。

SQLite笔记之注意和高级篇

SQLite笔记之注意和高级篇

SQLite笔记之注意和⾼级篇相信看了我博客的上篇的博友或路过者,都会觉得,sqlite⼩巧,易学,简单。

下⾯是我再把我的笔记上传博客中,以帮助⼀些⼈和我⾃⼰,今后翻阅⽅便。

因为我知道有这回事。

前⼏天看到有⼈回复帖⼦问了sqlite数据库⽤在哪些⽅⾯,其实这样的问题,都可以维基或是百度下的,什么都会出来,不过sqlite是⼩型的数据库,主要⽤在嵌⼊式设备中如⼿机等。

下⾯是对这sqlite3的⼀些注意和⾼级部分的笔记: 1、类型⾃动分类:具体的值⽐如sql语句部分的带双引号或单引号的⽂字被定为Text;如果⽂字没带引号和⼩数点或指数则被定义为INTEGER;如果⽂字没带引号但有⼩数点或指数则被定义为REAL;如果值是空则被定义为空值;BLOB数据使⽤符号X'ABCD'标识。

2、sqlite3.0中,值被定义为什么类型只和值⾃⾝有关,和列、变量都没关系,我们称其其为“弱类型”。

所有其他的数据库引擎都收静态类型系统的限制,其中的所有值的类型是由其所属列的属性决定的,⽽和值⽆关。

不过为了最⼤限度的增加sqlite和其他数据库的兼容性,sqlite提出了⼀个“类型亲和性”,意思就是说它⽀持列的“类型亲和性”。

列的“类型亲和性”是为该列所存储的数据建议⼀个类型。

我们还要注意是建议不是强迫。

在理论上讲,任何列上可以存储任何类型的数据。

只是针对某些列,如果给建议类型的话,数据库将按所建议的类型存储,⽽这个被优先使⽤的数数据类型则被称为“亲和类型”。

(1)、sqlite3.0中,数据库的每⼀列都被定义为以下亲和类型的⼀种:⽂本、数字(实数)、整数、⽆。

(这点的理解是这样的,就是说我给⼀个整数类型的值填充到⽂本字段上,此时整数类型的数据被当作⽂本存储。

) 规则: (1)、如果数据类型包括字符串"INT"那么它被定义成具有整数亲和性. (2)、如果列中的数据类型包括以下任何的字符串 "CHAR", "CLOB", or "TEXT" 那么这个列则具有⽂本亲和性.要注意VARCHAR 类型包括字符串"CHAR"因此也具有⽂本类型亲和性.(3)、如果⼀个列的数据类型包括字符串"BLOB"或者如果数据类型被具体化了,那么这个列具有⽆类型亲和性.(4)、否则就具有数字(实数)类型亲和性. 3、运算符 所有的数学运算符(所有的运算符⽽不是连锁作⽤标记符"||")运算对象⾸先具有数字亲和性, 如果⼀个或是两个都不能被转换为数字那么操作的结果将是空值。

Spatialite学习笔记

Spatialite学习笔记

Spatialite学习笔记1、前言Spatialite是Sqlite的空间版本数据库,迈高图的矢量图渲染绘制采用了矢量瓦片的方案,需要将shp、kml等输入矢量文件先加载进Spatialite,建立空间索引后,从数据库截取瓦片矢量数据。

所以必须对Spatialite非常熟悉,才有了这篇学习笔记。

对Spatialite的学习基于http://www.gaia-gis.it/gaia-sins/spatialite-tutorial-2.3.1.html#mbr_cache《A quick tutorial to SpatiaLite - a Spatial extension for SQLite》。

使用Spatialite-gui.exe(Spatialite-gui一个all in one的gui工具,很方便,就一个exe)和Spatialite.exe作为实例验证工具。

2、Spatialite:Sqlite的空间扩展SQLite in its own hasn't the slightest idea of what GEOMETRY is, and cannot do any other operation on it.SQLite本身并不知道什么是GEOMETRY,也不能对它进行任何其他操作。

引用《A quick tutorial to SpatiaLite - a Spatial extension for SQLite》中的一句话来说明Spatialite与Sqlite的关系。

如上所述中的“GEOMETRY”的是Spatialite数据库表中必须的字段,该字段是BLOB类型,对Sqlite来说它仅仅是一个二进制字段,此外不具备任何意义了。

但对Spatialite来说,GEOMETRY意义非凡,这是它的核心所在。

在这个字段上Spatialite存储了feature的全部数据,在该字段上,Spatialite也扩展了很多函数以支持对feature的空间运算、索引等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(1)创建数据库
在命令行中切换到sqlite.exe所在的文件夹
在命令中键入sqlite3test.db;即可创建了一个名为test.db的数据库
由于此时的数据库中没有任何表及数据存在,这时候是看不到test.db的,必须往里面插入一张表即可看到数据库
(2)创建表
create table Test(Id Integer primary key,value text);
此时即可完成表的创建,当把主键设为Integer时,则该主键为自动增长,插入数据时,可直接使用如下语句:
insert into Test values(null,'Acuzio');
(3)获取最后一次插入的主键:select last_insert_rowid();
(4)sqlite>.mode col
sqlite>.headers on
在数据库查询的时候,显示行数和头!
(5)在DOS中,键入Ctrl+C,退出数据库,Unix中,使用Ctrl+D
(6)SQLite Master Table Schema
-----------------------------------------------------------------
Name Description
-----------------------------------------------------------------
type The object’s type(table,index,view,trigger)
name The object’s name
tbl_name The table the object is associated with
rootpage The object’s root page index in the database(where it begins) sql The object’s SQL definition(DDL)
eg.
sqlite>.mode col
sqlite>.headers on
sqlite>select type,name,tbl_name,sql from sqlite_master order by type;
这样就能看到所有数据库中的信息,表、索引、视图等等
(7)导出数据
.output[filename],导出到文件中,如果该文件不存在,则自动创建
.dump导出数据命令
.output stdout返回输出到屏幕(进行其他操作)
eg.
sqlite>.output Acuzio.sql
sqlite>.dump
sqlite>.output stdout
这样就可以把数据导入到Acuzio.sql中
(8)导入数据
导入数据使用.read命令
eg.
如导入(7)中的数据
sqlite>.read Acuio.sql
(9)备份数据库
在切换到Sqlite文件夹
sqlite3test.db.dump>test.sql
如果在数据库中
sqlite>.output file.sql
sqlite>.dump
sqlite>.exit
(10)导入数据库
在切换到Sqlite文件夹
sqlite3test.db<test.sql
(11)备份二进制格式数据库,vacuum:释放掉已经被删除的空间(数据和表等被删除,不会被清空空间)
sqlite3test.db VACUUM
cp test.db test.backup
(12)获取数据库信息
如果想获得物理数据库结构的信息,可以去SQLite网站上下载SQLite Analyzer工具
使用:sqlite3_analyzer test.db
(13)其他的SQLite工具
SQLite Database Browser()
SQLite Control Center(/sqlitecc.html) SQLiteManager(/sqlitemanager.php)
(13)SQLite与其他数据库不同,它是以(;)来执行语句,而不是(go).
(14)SQLite注释(--)或(/**/)
eg.
--This is a comment on one line
/*This is a comment spanning
two lines*/
(15)创建表结构
CREATE[TEMP|TEMPORARY]TABLE table_name(column_definitions[, constraints]);
关键字TEMP、TEMPORARY表示创建的是临时表
(16)在SQLite中有5种基本类型:
Integer/Real/Text/Blob/Null
(17)确保唯一性可以用关键字UNIQUE
eg.
CREATE TABLE contacts(id INTEGER PRIMARY KEY,
name TEXT NOT NULL COLLATE NOCASE,
phone TEXT NOT NULL DEFAULT'UNKNOWN',
UNIQUE(name,phone));
(18)修改表
ALTER TABLE table{RENAME TO name|ADD COLUMN column_def} eg.
sqlite>ALTER TABLE contacts
ADD COLUMN email TEXT NOT NULL DEFAULT''COLLATE NOCASE; sqlite>.schema contacts
CREATE TABLE contacts(id INTEGER PRIMARY KEY,
name TEXT NOT NULL COLLATE NOCASE,
phone TEXT NOT NULL DEFAULT'UNKNOWN',
email TEXT NOT NULL DEFAULT''COLLATE NOCASE,
UNIQUE(name,phone));
(19)查询
SELECT DISTINCT heading FROM tables WHERE predicate
GROUP BY columns HAVING predicate
ORDER BY columns LIMIT count,offset;
(20)Limit和Offset关键字
Limit指返回记录的最大行数
Offset指跳过多少行数据。

相关文档
最新文档