青少年编程与数学 02-012 SQLite 数据库简介 02课题、数据库对象
课题摘要:SQLite 数据库对象。
SQLite 数据库包含以下几种主要的数据库对象:
一、表(Tables)
基本概念
- 表是数据库中用于存储数据的基本结构。它由行(records)和列(fields)组成。每一行代表一个数据记录,每一列代表数据的一个属性。例如,在一个“员工”表中,每一行可以代表一个员工的信息,列可以包括“员工编号”“姓名”“年龄”“部门”等属性。
创建和使用
可以通过 SQL 语句
CREATE TABLE
来创建表。例如:CREATE TABLE employees ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER, department TEXT );
这个语句创建了一个名为“employees”的表,有四个字段:id(整型,主键)、name(文本型,非空)、age(整型)和 department(文本型)。在表中,可以插入数据、查询数据、更新数据和删除数据,使用
INSERT
、SELECT
、UPDATE
和DELETE
等 SQL 语句来操作表中的数据。
二、索引(Indexes)
基本概念
- 索引是一种特殊的数据库对象,用于加快数据检索速度。它类似于书籍的索引,可以帮助数据库快速定位到表中的特定数据行。索引是基于表中的一个或多个列创建的。
创建和使用
使用
CREATE INDEX
语句来创建索引。例如:CREATE INDEX idx_employee_name ON employees (name);
这个语句在“employees”表的“name”列上创建了一个名为“idx_employee_name”的索引。当执行类似
SELECT * FROM employees WHERE name='John'
的查询语句时,SQLite 可以利用这个索引来快速找到名字为“John”的员工记录,而不需要扫描整个表。不过,索引也会占用额外的存储空间,并且在插入、更新和删除数据时可能会增加一些开销,因为索引也需要相应地进行维护。
三、视图(Views)
基本概念
- 视图是一个虚拟的表,其内容由 SQL 查询定义。它不实际存储数据,而是根据定义的查询语句在需要时动态生成数据。视图可以简化复杂的查询操作,为用户提供一个更易于理解和使用的数据接口。
创建和使用
通过
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)
基本概念
- 触发器是一种特殊的数据库对象,它会在特定的数据库操作(如插入、更新、删除)发生时自动执行预定义的 SQL 语句或操作。触发器可以用于实现数据的自动维护、审计等功能。
创建和使用
使用
CREATE TRIGGER
语句来创建触发器。例如:CREATE TRIGGER after_employee_update AFTER UPDATE ON employees FOR EACH ROW BEGIN INSERT INTO employee_audit (employee_id, action, action_date) VALUES (OLD.id, 'UPDATE', CURRENT_TIMESTAMP); END;
这个触发器名为“after_employee_update”,它在“employees”表的记录更新之后触发。对于每一行更新的记录,触发器会向“employee_audit”表中插入一条记录,记录被更新的员工编号、操作类型(这里是“UPDATE”)和操作时间。这样可以方便地对员工信息的更新操作进行审计。
五、触发程序(Triggers)和触发事件
- 触发程序
- 触发程序是触发器的一部分,它定义了触发器触发后要执行的操作。在上面的触发器例子中,
INSERT INTO employee_audit (employee_id, action, action_date) VALUES (OLD.id, 'UPDATE', CURRENT_TIMESTAMP)
就是触发程序,它指定了当触发器被触发时要插入一条记录到“employee_audit”表中。
- 触发程序是触发器的一部分,它定义了触发器触发后要执行的操作。在上面的触发器例子中,
- 触发事件
- 触发事件是指导致触发器触发的数据库操作。主要有三种触发事件:INSERT、UPDATE 和 DELETE。在触发器定义中,需要指定触发事件的类型以及触发时机(BEFORE 或 AFTER)。例如,在前面的触发器例子中,触发事件是 UPDATE 操作,触发时机是 AFTER,即在更新操作完成之后触发触发器。
这些数据库对象共同构成了 SQLite 数据库的结构和功能基础,通过合理地使用这些对象,可以有效地存储、管理和操作数据。