青少年编程与数学 02-012 SQLite 数据库简介 02课题、数据库对象

devtools/2025/4/2 8:37:12/

青少年编程与数学 02-012 SQLite 数据库简介 02课题、数据库对象

  • 一、表(Tables)
  • 二、索引(Indexes)
  • 三、视图(Views)
  • 四、触发器(Triggers)
  • 五、触发程序(Triggers)和触发事件

课题摘要:SQLite 数据库对象。


SQLite 数据库包含以下几种主要的数据库对象:

一、表(Tables)

  1. 基本概念

    • 表是数据库中用于存储数据的基本结构。它由行(records)和列(fields)组成。每一行代表一个数据记录,每一列代表数据的一个属性。例如,在一个“员工”表中,每一行可以代表一个员工的信息,列可以包括“员工编号”“姓名”“年龄”“部门”等属性。
  2. 创建和使用

    • 可以通过 SQL 语句 CREATE TABLE 来创建表。例如:

      CREATE TABLE employees (id INTEGER PRIMARY KEY,name TEXT NOT NULL,age INTEGER,department TEXT
      );
      

      这个语句创建了一个名为“employees”的表,有四个字段:id(整型,主键)、name(文本型,非空)、age(整型)和 department(文本型)。在表中,可以插入数据、查询数据、更新数据和删除数据,使用 INSERTSELECTUPDATEDELETE 等 SQL 语句来操作表中的数据。

二、索引(Indexes)

  1. 基本概念

    • 索引是一种特殊的数据库对象,用于加快数据检索速度。它类似于书籍的索引,可以帮助数据库快速定位到表中的特定数据行。索引是基于表中的一个或多个列创建的。
  2. 创建和使用

    • 使用 CREATE INDEX 语句来创建索引。例如:

      CREATE INDEX idx_employee_name ON employees (name);
      

      这个语句在“employees”表的“name”列上创建了一个名为“idx_employee_name”的索引。当执行类似 SELECT * FROM employees WHERE name='John' 的查询语句时,SQLite 可以利用这个索引来快速找到名字为“John”的员工记录,而不需要扫描整个表。不过,索引也会占用额外的存储空间,并且在插入、更新和删除数据时可能会增加一些开销,因为索引也需要相应地进行维护。

三、视图(Views)

  1. 基本概念

    • 视图是一个虚拟的表,其内容由 SQL 查询定义。它不实际存储数据,而是根据定义的查询语句在需要时动态生成数据。视图可以简化复杂的查询操作,为用户提供一个更易于理解和使用的数据接口。
  2. 创建和使用

    • 通过 CREATE VIEW 语句来创建视图。例如:

      CREATE VIEW employee_details AS
      SELECT e.id, e.name, e.age, d.department_name
      FROM employees e
      JOIN departments d ON e.department = d.id;
      

      这个语句创建了一个名为“employee_details”的视图,它将“employees”表和“departments”表进行连接查询,生成一个包含员工编号、姓名、年龄和部门名称的虚拟表。在查询时,可以像查询普通表一样查询视图,例如 SELECT * FROM employee_details WHERE age > 30,这样可以方便地获取员工的详细信息,而无需每次都编写复杂的连接查询语句。

四、触发器(Triggers)

  1. 基本概念

    • 触发器是一种特殊的数据库对象,它会在特定的数据库操作(如插入、更新、删除)发生时自动执行预定义的 SQL 语句或操作。触发器可以用于实现数据的自动维护、审计等功能。
  2. 创建和使用

    • 使用 CREATE TRIGGER 语句来创建触发器。例如:

      CREATE TRIGGER after_employee_update
      AFTER UPDATE ON employees
      FOR EACH ROW
      BEGININSERT INTO employee_audit (employee_id, action, action_date)VALUES (OLD.id, 'UPDATE', CURRENT_TIMESTAMP);
      END;
      

      这个触发器名为“after_employee_update”,它在“employees”表的记录更新之后触发。对于每一行更新的记录,触发器会向“employee_audit”表中插入一条记录,记录被更新的员工编号、操作类型(这里是“UPDATE”)和操作时间。这样可以方便地对员工信息的更新操作进行审计。

五、触发程序(Triggers)和触发事件

  1. 触发程序
    • 触发程序是触发器的一部分,它定义了触发器触发后要执行的操作。在上面的触发器例子中,INSERT INTO employee_audit (employee_id, action, action_date) VALUES (OLD.id, 'UPDATE', CURRENT_TIMESTAMP) 就是触发程序,它指定了当触发器被触发时要插入一条记录到“employee_audit”表中。
  2. 触发事件
    • 触发事件是指导致触发器触发的数据库操作。主要有三种触发事件:INSERT、UPDATE 和 DELETE。在触发器定义中,需要指定触发事件的类型以及触发时机(BEFORE 或 AFTER)。例如,在前面的触发器例子中,触发事件是 UPDATE 操作,触发时机是 AFTER,即在更新操作完成之后触发触发器。

这些数据库对象共同构成了 SQLite 数据库的结构和功能基础,通过合理地使用这些对象,可以有效地存储、管理和操作数据。


http://www.ppmy.cn/devtools/172763.html

相关文章

本地化智能运维助手:基于 LangChain 数据增强 和 DeepSeek-R1 的K8s运维文档检索与问答系统 Demo

写在前面 博文内容为基于 LangChain 数据增强 和 Ollams 本地部署 DeepSeek-R1实现 K8s运维文档检索与问答系统 Demo通过 Demo 对 LEDVR 工作流, 语义检索有基本认知理解不足小伙伴帮忙指正 😃,生活加油 我看远山,远山悲悯 持续分享技术干货…

蓝桥杯算法实战分享

蓝桥杯算法实战分享 蓝桥杯是国内知名的程序设计竞赛,涵盖算法、数据结构、编程技巧等多个领域。本文将从实战角度分享蓝桥杯算法竞赛的常见题型、解题思路和优化技巧,帮助参赛者更好地备战。 1. 常见题型与解题思路 蓝桥杯的题型主要包括以下几类&…

02_MySQL安装及配置

文章目录 一、下载二、安装及配置2.1、选择安装类型2.2、检查需要的依赖2.3、安装2.4、配置2.4.1、配置类型和网络2.4.2、配置账户和角色2.4.3、配置Windows服务2.4.4、让配置生效 2.5、验证是否安装成功 三、卸载3.1、运行MySQL安装工具3.2、卸载及清理3.3、卸载之后的检查工作…

Matlab人脸识别考勤系统【PCA(主成分分析)+ SVM(支持向量机)】

基于PCA(主成分分析) SVM(支持向量机)的人脸识别考勤系统 (可作完整文档资料)(有演示视频) 一、系统概述 本系统是一个基于MATLAB的“人脸识别考勤系统”,通过人脸识别技…

快速入手-Django-rest-framework(一)

1、安装 Django REST Framework pip install djangorestframework 2、快速构建django项目基本结构,参考以下链接创建api模块,并注册应用 快速入手-Django项目创建(一)-CSDN博客 3、添加到 INSTALLED_APPS INSTALLED_APPS …

DeepSeek-V3-0324对比OpenAI GPT-4o和Gemini 2.5 Pro

以下是DeepSeek-V3-0324、OpenAI GPT-4o与谷歌Gemini 2.5 Pro模型的更新点及优化对比总结: 1. DeepSeek-V3-0324 开源地址:https://huggingface.co/deepseek-ai/DeepSeek-V3-0324 核心更新与优化 性能提升: 采用6850亿参数MoE架构&#xff…

uni-app页面怎么设计更美观

顶部 页面最顶部要获取到手机设备状态栏的高度&#xff0c;避免与状态栏重叠或者被状态栏挡住 // 这是最顶部的父级容器 <view :style"{ paddingTop: ${statusBarHeight extraPadding}px }">.... </view> export default {data() {return {statusBarH…

自定义协议族驱动模块的开发与验证

摘要 本文详细阐述了如何开发一个新的协议族驱动模块,并整合传输层协议、协议族和网络设备的注册逻辑。通过分步讲解模块初始化、关键实现细节以及验证方法,为开发者提供全面的技术指导,确保自定义协议族能够正确被内核使用并实现预期功能。 一、协议族驱动的核心结构 1.…