SQLite 联接表操作 | 学习笔记

简介: 快速学习 SQLite 联接表操作

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:SQLite 联接表操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11232


SQLite 联接表操作

连接表(多表操作)

1.概念:

保存数据时往往不会将所有数据保存在一个表中,而是在多个表中存储,联结表就是从多个表中查询数据。

在一个表中不利于分解数据,也容易使相同数据出现多次,浪费存储空间;使用联结表查看各个数据更直观,这使得在处理数据时更简单。

例如:学生每年的考试成绩,学生个人信息基本固定(包括学号、姓名、地址等);把所有信息放在同一个表中必然会造成学生的学号等基本信息重复。

对比:学生信息和成绩放在一个表中

Id

Name

Addr

Score

Year

1

Lucy

Beijing

70

2013

2

Peter

Tianjin

95

2013

3

Bob

Heibei

80

2013

1

Lucy

Beijing

88

2014

当学生信息和成绩放在一个表中,各科老师会重复收到学生的 id、name、addr,我们认为这些列没有必要出现在成绩表中,要单独放置在一个表中,以 score 和year 为内容的表会有多个,学生信息表一个。表之间通过 id 进行关联,之后就可以通过 id 查看 name 和 score。

连接表操作的意义:表与表之间独立,但通过连接表操作又可以合并。

单表缺点:

①每年记录的成绩都需要添加重复的学生信息,如: name,addr

②lucy 的地址 (addr)修改,整个表所有的关于 lucy 的 addr 都需更改,处理复杂。

学生信息和成绩在不同的表中

学生信息:

Id

Name

Addr

1

Lucy

Beijing

2

Peter

Tianjin

3

Bob

Hebei

学生成绩:

Id

Score

Year

1

70

2013

2

95

2013

3

80

2013

①每个人的信息只需保存一份,没有重复,成绩 id 与学生信息 id 相同,作为关联,用于查找相应学生的成绩。

②lucy 的地址( addr )修改,只需修改 persons 表中的 addr

分表优点:

①将学生信息和成绩分开存储,节省空间,处理简单,效率更高,在处理大量数据时尤为明显。

②使用关系型数据库存储数据,各个表的设计是非常重要的,良好的表设计,能够简化数据的处理, 提高效率,提高数据库的稳定性。

2.使用联结:

通过select语句将要联结的所有表以及它们如何关联

常用语句: select 列名 1,列名 2,.. from 表 1,表 2,. where 判断语句;

注意:在联结两个表时,实际上是将第一个表中的每来行与第二个表中每一行配对,where 子句作为过滤条件,只有满足条件的才显示出来。

下面创建两个新表:

sqlite> create table info(id INT,name text, addr text);

sqlite> create table class(id INT, score INT, year text);

sqlite> insert into info(id ,name , addr) select id ,name , addr from tbl;

sqlite> select * from info;

id     name    addr

----   --------  -------

101     zs      bj

102     ls       tj

103     ww     sh

104     zs       cd

105     sw      cq

106     xh      hb

107

sqlite> insert into class(id,score) select id,score from tbl;

sqlite> select * from class;

id     score    year

----   --------  -------

101     40

102     40

103     60

104     60

105     90

106     90

107

以上两张表通过 id 进行关联。

进行查看操作:

sqlite> select * from info,class where info.id=class.id;

id     name    addr     id     score    year

----   --------  -------  -------   --------  -------

101     zs      bj       101      40

102     ls       tj       102      40

103     ww     sh      103      60

104     zs       cd      104      60

105     sw      cq      105      90

106     xh      hb      106      90

107                      107

要求:id 列不重复显示

sqlite> select info.id,info.name, info.addr , score from info,class where info.id=class.id;

id     name    addr    score

----   --------  -------  ------  

101     zs      bj       40

102     ls       tj       40

103     ww     sh      60

104     zs       cd     60

105     sw      cq      90

106      xh      hb     90

107

看起来是一张表,其实是两张表组合而成的,od、name、addr 属于一张表,id、score 属于另一张表。

还有一些联结表的配合操作,可以做一些虚拟表、触发器。

匹配语句: persons.id = grade.id

完全限定列名,用一个点(.)分隔表名和列名

相关文章
|
6天前
|
存储 API 数据库
QML使用Sqlite数据库存储ListModel数据
本文介绍了在QML中使用Sqlite数据库存储ListModel数据的方法,包括如何创建数据库、读取数据、动态添加和删除数据,以及如何在程序启动和退出时与数据库同步数据。
|
6天前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
|
8天前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
2月前
|
人工智能 小程序 Java
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
本文介绍了一款名为PyWxDump的开源工具,它可以获取微信账户信息、解密SQLite数据库以查看和备份聊天记录。此工具适用于已登录电脑版微信的用户,通过GitHub下载后简单几步即可操作。适合对数据恢复感兴趣的开发者,但请注意合法合规使用并尊重隐私。
204 2
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
|
8天前
|
SQL 数据库 数据库管理
SQLite 创建数据库
SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库。您不需要任何特殊的权限即可创建一个数据。
13 0
|
10天前
|
JSON NoSQL 数据库
和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。
24 0
|
2月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
49 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
2月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
69 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
2月前
|
SQL 存储 小程序
【教程】navicat配合HTTP通道远程连接SQLite数据库
本文介绍了如何通过 Navicat Premium 工具配合 n_tunnel_sqlite.php 和 HTTP 通道远程连接服务器上的 SQLite 数据库。SQLite 是一种自给自足的、无服务器的 SQL 数据库引擎,由于其端口未对外开放,直接使用 Navicat 进行远程连接不可行。文章详细记录了使用 HTTP 通道实现远程连接的过程,包括定位本地 `ntunnel_sqlite.php` 文件,将其上传至服务器,并通过 Navicat 配置 HTTP 通道连接 SQLite 数据库的具体步骤。
52 0
【教程】navicat配合HTTP通道远程连接SQLite数据库
|
2月前
|
关系型数据库 Java MySQL
C#winform中使用SQLite数据库
C#winform中使用SQLite数据库
65 3
C#winform中使用SQLite数据库
下一篇
无影云桌面