趋近智
SELECT 语句:获取数据结合对数据库工具选择和连接过程的理解,以及SQL命令(例如SELECT、INSERT、UPDATE和DELETE),可以与一个真实但简单的数据库环境进行交互。这种动手实践将弥合你了解数据库与实际使用数据库之间的差距。
对于本次练习,我们需要一个数据库系统来操作。我们将使用SQLite,而不是设置一个复杂的服务器。SQLite是学习的优秀选择,因为它将整个数据库存储在你的计算机上的一个文件中,只需极少的设置。许多编程语言都对它有内置支持,并且它是免费可用的。
获取SQLite:
sqlite3 --version。如果你看到版本号,你就可以开始使用了。sqlite3.exe文件解压到方便的位置。你可以通过打开命令提示符,导航到你保存文件的目录,然后输入sqlite3来运行它。创建和连接数据库:
使用命令行工具连接SQLite也会在数据库文件不存在时创建它。
打开你的终端或命令提示符。
导航到你想要存储练习数据库文件的目录(使用cd directory_name)。
输入以下命令并按回车键:
sqlite3 practice_db.sqlite
此命令启动SQLite命令行shell,并连接到(或创建)你当前目录中名为practice_db.sqlite的数据库文件。你应该会看到类似sqlite>的提示符。此提示符表明你现在正在直接与SQLite数据库交互。
在我们查询数据之前,我们需要一个地方来存储它。让我们创建一个名为students的简单表,用于保存学生信息。在sqlite>提示符下输入以下SQL命令并按回车键:
CREATE TABLE students (
student_id INTEGER PRIMARY KEY,
first_name TEXT,
last_name TEXT,
enrollment_date DATE
);
CREATE TABLE students:这告诉SQLite创建一个名为students的新表。(...):括号内包含列的定义。student_id INTEGER PRIMARY KEY:定义一个名为student_id的整型列。PRIMARY KEY表示此列将唯一标识每个学生记录,并且如果你在插入时没有提供值,SQLite通常会自动生成它的值。first_name TEXT、last_name TEXT:定义用于学生姓名的文本列。enrollment_date DATE:定义一个列来存储学生注册日期。如果命令成功,SQLite通常不会输出任何内容,只会将你返回到sqlite>提示符。
既然我们有了表结构,让我们使用你学过的INSERT语句添加一些数据。逐一执行这些命令:
INSERT INTO students (first_name, last_name, enrollment_date)
VALUES ('Ada', 'Lovelace', '2023-09-01');
INSERT INTO students (first_name, last_name, enrollment_date)
VALUES ('Charles', 'Babbage', '2023-09-01');
INSERT INTO students (first_name, last_name, enrollment_date)
VALUES ('Grace', 'Hopper', '2024-01-15');
每个INSERT INTO语句都会向students表中添加一个新行(一条记录),并包含为列指定的值。请注意我们没有指定student_id;SQLite很可能会自动处理它,因为它是一个主键。
让我们检查一下数据是否已正确插入。使用SELECT语句来检索信息。
1. 选择所有数据:
要查看所有列和所有行,请使用*:
SELECT * FROM students;
你应该会看到类似以下的输出(具体的student_id可能不同):
1|Ada|Lovelace|2023-09-01
2|Charles|Babbage|2023-09-01
3|Grace|Hopper|2024-01-15
2. 选择特定列: 如果你只想获取姓名,请指定列:
SELECT first_name, last_name FROM students;
输出:
Ada|Lovelace
Charles|Babbage
Grace|Hopper
3. 使用WHERE筛选数据: 要查找只在特定日期注册的学生:
SELECT first_name, last_name FROM students WHERE enrollment_date = '2023-09-01';
输出:
Ada|Lovelace
Charles|Babbage
假设查尔斯·巴贝奇的注册日期需要修正。我们可以使用UPDATE语句结合WHERE来只更改他的记录。
UPDATE students
SET enrollment_date = '2023-09-05'
WHERE first_name = 'Charles' AND last_name = 'Babbage';
让我们使用SELECT来验证更改:
SELECT * FROM students WHERE first_name = 'Charles';
输出(注意更新的日期):
2|Charles|Babbage|2023-09-05
假设艾达·洛夫莱斯退学了。我们可以使用DELETE语句删除她的记录。使用WHERE来精确指定要删除的记录非常重要。警告: 如果没有WHERE子句,DELETE FROM students;将删除表中的所有记录!
DELETE FROM students
WHERE first_name = 'Ada' AND last_name = 'Lovelace';
让我们再次检查表内容:
SELECT * FROM students;
输出(艾达的记录已删除):
2|Charles|Babbage|2023-09-05
3|Grace|Hopper|2024-01-15
当你练习完毕后,可以通过输入以下内容退出SQLite命令行shell:
.quit
或者按Ctrl+D(macOS/Linux)或Ctrl+Z然后按回车键(Windows)。你的数据库文件(practice_db.sqlite)会保留在你创建它的目录中。
尽管命令行是与数据库交互的直接方式,但许多开发者使用图形用户界面(GUI)工具。像DB Browser for SQLite、DBeaver或TablePlus这样的工具提供了一种可视化方式来查看表结构、浏览数据以及在专门的编辑器窗口中编写/运行SQL查询。它们执行相同的操作(连接、发送SQL命令),但提供了一种不同的用户体验,一些人觉得这更容易,尤其是在开始时。你可以随意查看这些工具;你学过的SQL命令保持不变。
你现在已经成功连接到数据库,创建了表,并执行了基本的数据操作:INSERT、SELECT、UPDATE和DELETE。这种实践经验是有效使用数据库的重要一步。继续在你的示例数据上尝试不同的查询,以建立信心和熟练度。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造