青少年编程与数学 02-012 SQLite 数据库简介 03课题、数据库语言
课题摘要:SQLite 使用 SQL(Structured Query Language,结构化查询语言)作为其数据库语言。
SQLite 使用 SQL(Structured Query Language,结构化查询语言)作为其数据库语言。SQL 是一种广泛应用于关系型数据库的标准编程语言,用于管理、查询和操作数据库中的数据。SQLite 支持大部分标准的 SQL 语句,以下是一些常见的 SQLite SQL 语句类型及其用途:
一、数据定义语言(DDL)
CREATE
-
用于创建数据库对象,如表、索引、视图等。
-
创建表:
sqlCREATE TABLE students ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER, grade TEXT );
这个语句创建了一个名为"students"的表,包含四个字段:id(整型,主键)、name(文本型,非空)、age(整型)和 grade(文本型)。
-
创建索引:
sqlCREATE INDEX idx_student_name ON students (name);
在"students"表的"name"列上创建了一个名为"idx_student_name"的索引,可以加快按姓名查询学生信息的速度。
-
创建视图:
sqlCREATE VIEW student_info AS SELECT id, name, age FROM students WHERE age > 18;
创建了一个名为"student_info"的视图,它是一个虚拟的表,包含 id、name 和 age 字段,且只包含年龄大于 18 的学生信息。
ALTER
-
用于修改已存在的数据库对象的结构。SQLite 的 ALTER TABLE 语句相对简单,主要支持添加新列。
-
例如,为"students"表添加一个新列"email":
sqlALTER TABLE students ADD COLUMN email TEXT;
这会在"students"表中添加一个名为"email"的文本型列。
DROP
-
用于删除数据库对象。
-
删除表:
sqlDROP TABLE students;
这会删除"students"表及其所有数据和结构。
-
删除索引:
sqlDROP INDEX idx_student_name;
删除名为"idx_student_name"的索引。
-
删除视图:
sqlDROP VIEW student_info;
删除名为"student_info"的视图。
二、数据操纵语言(DML)
INSERT
-
用于向表中插入新的数据行。
-
插入单行数据:
sqlINSERT INTO students (id, name, age, grade) VALUES (1, 'John', 20, 'A');
向"students"表中插入一行数据,id 为 1,姓名为"John",年龄为 20,成绩为"A"。
-
插入多行数据:
sqlINSERT INTO students (id, name, age, grade) VALUES (2, 'Alice', 19, 'B'), (3, 'Bob', 22, 'A');
一次性向表中插入多行数据。
UPDATE
-
用于更新表中已存在的数据行。
-
更新单个字段:
sqlUPDATE students SET grade = 'B' WHERE id = 1;
将"students"表中 id 为 1 的学生的成绩更新为"B"。
-
更新多个字段:
sqlUPDATE students SET age = 21, grade = 'A' WHERE name = 'Alice';
将姓名为"Alice"的学生的年龄更新为 21,成绩更新为"A"。
DELETE
-
用于删除表中的数据行。
-
删除单行数据:
sqlDELETE FROM students WHERE id = 2;
删除"students"表中 id 为 2 的学生记录。
-
删除多行数据:
sqlDELETE FROM students WHERE age < 18;
删除"students"表中年龄小于 18 的所有学生记录。
SELECT
-
用于从一个或多个表中检索数据。
-
查询所有列:
sqlSELECT * FROM students;
查询"students"表中的所有数据。
-
查询特定列:
sqlSELECT name, age FROM students;
只查询"students"表中的姓名和年龄两列数据。
-
带条件查询:
sqlSELECT * FROM students WHERE age > 20 AND grade = 'A';
查询"students"表中年龄大于 20 且成绩为"A"的学生记录。
-
排序查询:
sqlSELECT * FROM students ORDER BY age ASC, grade DESC;
查询"students"表中的所有学生记录,并按年龄升序、成绩降序排序。
三、数据控制语言(DCL)
SQLite 的数据控制语言相对简单,主要用于事务控制。
BEGIN TRANSACTION
-
开始一个事务。
sqlBEGIN TRANSACTION;
这个语句表示开始一个新的事务,在事务中可以执行多个 DML 语句,如 INSERT、UPDATE、DELETE 等。
COMMIT
-
提交事务,使事务中所有的操作永久生效。
sqlCOMMIT;
提交事务后,事务中对数据库所做的更改将被保存。
ROLLBACK
-
回滚事务,撤销事务中所有的操作。
sqlROLLBACK;
如果在事务执行过程中出现错误,可以通过回滚事务来撤销所有已经执行的操作,恢复数据库到事务开始前的状态。
SQLite 还支持一些其他 SQL 语句和功能,如联合查询(使用 UNION 和 UNION ALL)、子查询、事务的隔离级别设置(虽然 SQLite 的事务隔离级别相对简单,主要是串行化)等。不过,SQLite 的 SQL 实现也有一些限制,例如它不支持存储过程、游标等一些在大型数据库系统中常见的功能。尽管如此,SQLite 的 SQL 语言已经足够强大,能够满足大多数轻量级应用程序的数据库操作需求。