SQLite怎么统计一个数据库中有多少张表,视图或者触发器 .

2024-02-07 16:32

本文主要是介绍SQLite怎么统计一个数据库中有多少张表,视图或者触发器 .,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

sqlite数据库中表、视图和触发器的基本信息存储在一张叫做sqlite_master的系统表中,所以要想统计有多少张表就要先学习sqlite_master表。


每一个sqlite数据库都有一张叫做sqlite_master的表,它定义数据库的模式。sqlite_master的表结构如下:

CREATE TABLE sqlite_master (
type TEXT,
name TEXT,
tbl_name TEXT,
rootpage INTEGER,
sql TEXT
);
type字段的内容是数据库单元(不知道这么叫恰不恰当...)的属性,比如table。view,trigger等。如果是一张表的话,type字段的内容是‘table’,name字段则是表的名字,tbl_name对于表没有差别也是表的名字(对于索引才有差别)。rootpage我从网络上搜索了很多资料好像都没有详细说明这个字段是用来干什么的,我也不好乱去猜测,有知道请留言哈!sql字段就是创建表或者索引的SQL语句。


对于索引而言,不同于于表的是:type等于‘index’,name是索引的名字,tbl_name是该索引所属的表的名字。对于自动创建的索引(用来实现PRIMARY KEY或 UNIQUE约束),sql字段为NULL。


sqlite_master表是只读的(这像视图),不能对它使用update,insert或delete。它会被create table、create index、drop table和drop index命令自动更新(这像触发器)。


临时表不会出现在sqlite_master中。临时表及其索引和触发器存放在另外一个叫sqlite_temp_master的表中。sqlite_temp_master和sqlite_master表结构一样,但它只是对

创建那些临时表的应用可见。如果要获取所有表的列表,不管是永久的还是临时的,可以使用类似下面的SQL命令:


SELECT name FROM
(SELECT * FROM sqlite_master UNION ALL
SELECT * FROM sqlite_temp_master)
WHERE type=’table’
ORDER BY name

举个例子:

test.db 数据库中有两张表,通过SQL:select * from  sqlite_master;我们可以看到sqlite_master中的内容和我们预期的一样,至于rootpage LZ真的不知道是什么意思额,table1和table2两张表是一样的表结构的,但是rootpage的值一个是2一个却是3.。。。


对 sqlite_master有了一定的了解后我们就可以解决标题中的问题(SQLite怎么统计一个数据库中有多少张表,视图或者触发器)了。 

下面是我总结的几条针对这个问题的SQL,可以根据自己的需求灵活去更改SQL以获取自己需要的结果。

查看表的总数SQL:
select count(
1) from sqlite_master where type in('table');

select count(
1) from sqlite_master where type = 'table';
查看视图的总数SQL:
select count(
1) from sqlite_master where type in('view');

select count(
1) from sqlite_master where type = 'view';
查看表以及视图的总数:
select count(
1) from sqlite_master where type in('table','view');


验证一下是否正确:


test.db中有两张表和一张视图,没有触发器,执行SQL:select count(1) from sqlite_master where type in('table','view','trigger');得到的结果是1+2+0=3,。单独去验证也都是正确的。

这篇关于SQLite怎么统计一个数据库中有多少张表,视图或者触发器 .的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688300

相关文章

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查