SQLite是一种嵌入式数据库,小型高效,值得移动开发者去学习利用 当然性能要去不高可以使用apple的coreData面向对象操作关系型数据库技术
首先我会建两个表 1.t_person 2.t_book 3.工具sqliteManager
- 外键约束(reference表的属性,4个delete选项)
.
- 外联表的连接(直接连接,左右连接,全局连接)
.
- 连接不需要外键约束,这不是必要条件
开始
外键约束
-
如果加入了外键约束,就是如:t_person的book_id输入的值必须是存在的t_book的id,比如我设置book_id=8,但t_book没有8的id那行,那样是报错的
-
CREATE TABLE “t_person” (name text,age integer,height real,id integer PRIMARY KEY AUTOINCREMENT,“book_id” integer REFERENCES “t_book” (id) ON DELETE CASCADE ON UPDATE NO ACTION)
关键字
-
Reference 表(属性).
-
ON delete (Cascade,SetNull,Default,Res) .
-
以上删除选项分别代表瀑布删除:即系删除一个行,另外一个表中对应的行也会删除掉,例如:我把t_book表中id=2那行删除,t_person中book_id=2的那一行也会完全删除
-
SetNull就是当t_book表中id=2那行删除,t_person中book_id=2的那一行的book_id=NULL,其他不受影响
-
Default就是就是当t_book表中id=2那行删除,t_person中book_id=2的那一行不受影响
查询连接
代码意义
关于Left Join跟Join的选择:
left join
- 如果要查询左边表中的所有符合条件的数据,使用left jion
- 通常查询出来的结果会多,因为右边表不存在的记录,同样可能会被查询出来,查询出来之后,右边表不存在的记录,全部为NULL
<br />join
- 如果要两个表中同时存在的符合条件的数据,使用jion
- 通常查询出来的结果会比左连接少,因为右边表不存在的记录,不会显示出来
通常在使用时,左边的表是主要信息表,右边的表是辅助修饰的信息表,其内容可有可无,因此,在实际应用中,left jion使用的比较频繁!如果用join的话,有可能会“丢(有些存在的数据不显示)”数据
一句话解析:"查询拥有 这些书的所有人"
p是person表别名-b是book别名
SELECT p.name,p.age,b.name,b.priceas bookPrice
FROM t_person p
JOIN t_book bON p.book_id =b.id
WHERE b.nameLIKE 'IOS%'
转自:http://my.oschina.net/nofree/blog/225534 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|