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

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

相关文章
|
27天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
105 6
|
27天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
64 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
13天前
|
存储 SQL 数据库
数据库知识:了解SQLite或其他移动端数据库的使用
【10月更文挑战第22天】本文介绍了SQLite在移动应用开发中的应用,包括其优势、如何在Android中集成SQLite、基本的数据库操作(增删改查)、并发访问和事务处理等。通过示例代码,帮助开发者更好地理解和使用SQLite。此外,还提到了其他移动端数据库的选择。
21 8
|
24天前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
|
1月前
|
存储 关系型数据库 数据库
轻量级数据库的利器:Python 及其内置 SQLite 简介
轻量级数据库的利器:Python 及其内置 SQLite 简介
|
1月前
|
应用服务中间件 PHP Apache
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
|
2月前
|
存储 API 数据库
QML使用Sqlite数据库存储ListModel数据
本文介绍了在QML中使用Sqlite数据库存储ListModel数据的方法,包括如何创建数据库、读取数据、动态添加和删除数据,以及如何在程序启动和退出时与数据库同步数据。
|
2月前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
114 1
|
24天前
|
存储 缓存 关系型数据库
sqlite 数据库 介绍
sqlite 数据库 介绍
35 0
|
2月前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08