结合对数据库工具选择和连接过程的理解,以及SQL命令(例如SELECT、INSERT、UPDATE和DELETE),可以与一个真实但简单的数据库环境进行交互。这种动手实践将弥合你了解数据库与实际使用数据库之间的差距。设置你的练习环境:SQLite对于本次练习,我们需要一个数据库系统来操作。我们将使用SQLite,而不是设置一个复杂的服务器。SQLite是学习的优秀选择,因为它将整个数据库存储在你的计算机上的一个文件中,只需极少的设置。许多编程语言都对它有内置支持,并且它是免费可用的。获取SQLite:macOS和Linux: SQLite通常预装。打开你的终端应用程序并输入sqlite3 --version。如果你看到版本号,你就可以开始使用了。Windows: 从官方SQLite下载页面下载预编译二进制文件(特别是命令行shell程序)。将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语句添加一些数据。逐一执行这些命令: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检索数据让我们检查一下数据是否已正确插入。使用SELECT语句来检索信息。1. 选择所有数据: 要查看所有列和所有行,请使用*:SELECT * FROM students;你应该会看到类似以下的输出(具体的student_id可能不同):1|Ada|Lovelace|2023-09-01 2|Charles|Babbage|2023-09-01 3|Grace|Hopper|2024-01-152. 选择特定列: 如果你只想获取姓名,请指定列:SELECT first_name, last_name FROM students;输出:Ada|Lovelace Charles|Babbage Grace|Hopper3. 使用WHERE筛选数据: 要查找只在特定日期注册的学生:SELECT first_name, last_name FROM students WHERE enrollment_date = '2023-09-01';输出:Ada|Lovelace Charles|Babbage使用UPDATE修改数据假设查尔斯·巴贝奇的注册日期需要修正。我们可以使用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删除数据假设艾达·洛夫莱斯退学了。我们可以使用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当你练习完毕后,可以通过输入以下内容退出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。这种实践经验是有效使用数据库的重要一步。继续在你的示例数据上尝试不同的查询,以建立信心和熟练度。