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

相关文章

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

电脑死机无反应怎么强制重启? 一文读懂方法及注意事项

《电脑死机无反应怎么强制重启?一文读懂方法及注意事项》在日常使用电脑的过程中,我们难免会遇到电脑无法正常启动的情况,本文将详细介绍几种常见的电脑强制开机方法,并探讨在强制开机后应注意的事项,以及如何... 在日常生活和工作中,我们经常会遇到电脑突然无反应的情况,这时候强制重启就成了解决问题的“救命稻草”。那

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数