Sqlite之外键约束跟内外联表
Sqlite之外键约束跟内外联表
MrBryant24 发表于4年前
Sqlite之外键约束跟内外联表
  • 发表于 4年前
  • 阅读 4878
  • 收藏 4
  • 点赞 1
  • 评论 1

标题:腾讯云 新注册用户域名抢购1元起>>>   

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

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%'

共有 人打赏支持
粉丝 1
博文 6
码字总数 3289
评论 (1)
MrBryant24
暂时写给自己看得
×
MrBryant24
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: