当前位置:首页>python>Python开发从零开始-49.19-数据库操作

Python开发从零开始-49.19-数据库操作

  • 2026-09-11 20:08:28
Python开发从零开始-49.19-数据库操作

接上文Python开发从零开始-49.18-数据库操作,本文小编与大家分享 Python 数据库操作的相关知识。

(31)视图

SQLite 视图是数据库中的虚拟表‌,它不存储实际数据,而是保存一条 SELECT 查询语句,每次查询视图时都会动态执行该语句生成结果。这种机制能简化复杂查询逻辑,同时提供数据访问的安全抽象层。‌‌‌

视图是只读的,查询视图中的记录与查询实际表的方式相同,但是无法在视图上执行 DELETE、INSERT 或 UPDATE 语句,如果需要通过视图进行数据修改,可以在视图上创建一个触发器,当尝试 DELETE、INSERT 或 UPDATE 视图时触发,需要做的动作在触发器中定义。

1)创建视图

CREATE VIEW 语句用于创建视图,视图可以从一个单一的表、多个表或其他视图创建。其基本语法为:

CREATE [TEMP | TEMPORARY] VIEW view_name AS

SELECT column_list

FROM table_name

[WHERE condition];

语法解释:

  • [TEMP | TEMPORARY] :可选,TEMP 与 TEMPORARY 是一个意思,表示创建临时视图,该视图只对当前数据库连接可见,并且在连接关闭时自动删除;

  • view_name:视图名;

  • column_list:查询表的字段列表;

  • table_name:查询表名;

  • [WHERE condition]:可选,查询语句条件子句。

① 创建普通视图

普通视图是持久存在的,直至显式地使用 DROP VIEW 语句删除,或者数据库被删除。下面从 COMPANY 表中选取 ID、NAME 和 SALARY 字段创建 COMPANY_VIEW 普通视图:

CREATE VIEW COMPANY_VIEW ASSELECT ID, NAME, SALARYFROM  COMPANY;

查询 COMPANY_VIEW 视图结果:

② 创建临时视图

临时视图仅在创建它们的会话中可见,并且在会话结束时自动删除。要创建临时视图,可以在 CREATE VIEW 语句中使用 TEMP 或 TEMPORARY 关键字。下面从 COMPANY 表中选取 ID、NAME 和 AGE 字段创建临时视图 COMPANY_TEMP_VIEW:

CREATE TEMP VIEW COMPANY_TEMP_VIEW ASSELECT ID, NAME, AGEFROM  COMPANY;

查询 COMPANY_TEMP_VIEW 临时视图:

2)查看所有视图

可以查询数据库内置表 sqlite_master 来获取所有视图信息:

SELECT name FROM sqlite_master WHERE type='view';

3)修改视图

SQLite 不支持直接修改视图,所以修改视图通常使用先删除视图,然后重新创建视图方式。

4)删除视图

要删除视图,只需使用带有 view_name 的 DROP VIEW 语句。DROP VIEW 的基本语法如下:

DROP VIEW view_name;

(32)修改表结构

在 SQLite 中,可以使用 ALTER TABLE 语句来修改表结构。不过,SQLite 的 ALTER TABLE 功能相对有限,不像其他一些数据库系统(如PostgreSQL、MySQL 等)那样强大。在 SQLite 中,可以进行以下几种类型的表结构修改:

  • ‌重命名表(Rename Table)‌

  • 添加列(Add Column)‌

1)重命名表

重命名已有表的 ALTER TABLE 的基本语法如下:

ALTER TABLE table_name 

RENAME TO new_table_name;

例如,将前文中的 COMPANY_BAK 表重名为 COMPANY_BAK_1:

ALTER TABLE COMPANY_BAK RENAME TO COMPANY_BAK_1;

2)添加列

在已有的表中添加一个新的列的 ALTER TABLE 的基本语法如下:

ALTER TABLE table_name 

ADD COLUMN column_def[,,,];

  • table_name:表名;

  • column_def[,,,]:一个或多个字段定义。

    例如,将前文中的 COMPANY 表添加一个新列 STATUS 类型为 TEXT:

    ALTER TABLE COMPANY ADD COLUMN STATUS TEXT;

    查询添加字段后的 COMPANY 表,新添加的列没有数据所以为 NULL。

    SQLite 不支持直接删除列。要删除列,通常的做法是创建一个新表,只包含需要保留的列,然后将旧表的数据复制到新表中,最后删除旧表。

    受文章篇幅所限,下文将继续介绍 Python 数据库操作的相关知识。

    最新文章

    随机文章