文档章节

Sqlite之外键约束跟内外联表

MrBryant24
 MrBryant24
发布于 2014/04/23 15:52
字数 735
阅读 5256
收藏 4

SQLite

SQLite是一种嵌入式数据库,小型高效,值得移动开发者去学习利用 当然性能要去不高可以使用apple的coreData面向对象操作关系型数据库技术 —— 百度百科

**首先我会建两个表 1.t_person 2.t_book 3.工具sqliteManager ** t_person表 t_book表

<i><b>

  1. 外键约束(reference表的属性,4个delete选项) .
  2. 外联表的连接(直接连接,左右连接,全局连接) .
  3. 连接不需要外键约束,这不是必要条件 </i></b>

开始

##外键约束

<b>

  • 如果加入了外键约束,就是如: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)

<h7>关键字

<i><b>

  1. Reference 表(属性).
  2. ON delete (Cascade,SetNull,Default,Res) .</i>
  • 以上删除选项分别代表瀑布删除:即系删除一个行,另外一个表中对应的行也会删除掉,例如:我把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(表名) on 条件等式

  •   select * from t_person p 
      left join t_book b on p.book_id= b.id
    

代码意义

  • 左连接,把t_person表跟t_book表联系起来,而查询的结果的条件是 t_person.book_id= t_book.id

  • 然后把结果打印出来

##关于Left Join跟Join的选择:

left join

  • 如果要查询左边表中的所有符合条件的数据,使用left jion
  • 通常查询出来的结果会多,因为右边表不存在的记录,同样可能会被查询出来,查询出来之后,右边表不存在的记录,全部为NULL

join

  • 如果要两个表中同时存在的符合条件的数据,使用jion
  • 通常查询出来的结果会比左连接少,因为右边表不存在的记录,不会显示出来

<code><pre> 通常在使用时,左边的表是主要信息表,右边的表是辅助修饰的信息表,其内容可有可无,因此,在实际应用中,left jion使用的比较频繁!如果用join的话,有可能会“丢(有些存在的数据不显示)”数据 </code></pre>

<h3><font color="red"> 一句话解析:"查询拥有<IOSX>这些书的所有人" </font></h3>

p是person表别名-b是book别名

SELECT p.name,p.age,b.name,b.price as bookPrice

FROM t_person p

JOIN t_book b ON p.book_id =b.id

WHERE b.name LIKE 'IOS%'

© 著作权归作者所有

共有 人打赏支持
MrBryant24
粉丝 1
博文 7
码字总数 3289
作品 0
广州
程序员
私信 提问
加载中

评论(1)

MrBryant24
MrBryant24
暂时写给自己看得
使用 Entity Framework 7 进行 SQLite 的 CURD 操作

下载示例 ChinookMediaStore.zip - 392 KB 介绍 我善于使用传统的SQL查询风格,从SQL查询解析和转换出无类型的结果,EF给表的操作带来更多的舒适性和生产力:操作的是强类型对象 (比如 Empl...

oschina
2016/02/05
6.7K
9
Android 开发中使用 SQLite 数据库

SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都...

红薯
2010/08/22
67.2K
32
一个小时内学习 SQLite 数据库

1. 介绍 SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同,SQLite 的...

红薯
2012/05/11
53.2K
59
SQLite 指南之FAQ(中文)

1. 如何创建自增字段? 2. SQLite 支持哪些数据类型? 3. 为什么能向 SQLite 数据库的整型字段中插入字符串? 4. 为什么 SQLite 认为表达式 '0'=='00' 为真? 5. 为什么 SQLite 不允许在同一...

晨曦之光
2012/04/12
641
0
【我的Android进阶之旅】SQLite出错时候的错误码整理

版权声明:本文为【欧阳鹏】原创文章,欢迎转载,转载请注明出处! 【http://blog.csdn.net/ouyang_peng】 https://blog.csdn.net/qq446282412/article/details/85235154 一、背景 今天收到一...

欧阳鹏
2018/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
42分钟前
0
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
4
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部