R - 数据库:初学者指南
你好,未来的R编程大师们!今天,我们将开始一段激动人心的旅程,使用R来探索数据库的世界。如果你之前从未编写过一行代码,也不用担心——我们将从最基础开始,一起逐步学习。在本教程结束时,你会对你用R和数据库所能做到的事情感到惊讶!
R和数据库简介
在我们深入了解之前,让我们先谈谈我们为什么在这里。想象一下,你经营着一家小书店。起初,你可能会用笔记本记录你的库存。但随着你的业务增长,你需要一种更高效的方式来管理你的数据。这时,数据库就派上用场了!而我们的忠实编程语言R,将帮助我们操作这些数据库。
RMySQL包:通往数据库魔法的门户
RMySQL是什么?
RMySQL就像一根魔杖,让R能够与MySQL数据库通信。它是一个包(可以把它想象成一个工具箱),我们将用它来连接R和MySQL,发送命令和检索数据。
安装RMySQL
让我们从安装RMySQL包开始。打开你的R控制台并输入:
install.packages("RMySQL")
安装完成后,我们需要将其加载到我们的R会话中:
library(RMySQL)
太棒了!你已经迈出了进入R和数据库世界的第一步。
将R连接到MySQL:建立桥梁
现在我们有了我们的魔杖(RMySQL),让我们用它来连接到MySQL数据库。把它想象成打开通往你的数据仓库的门。
con <- dbConnect(MySQL(),
user = "your_username",
password = "your_password",
dbname = "your_database_name",
host = "localhost")
让我们分解一下:
-
dbConnect
是我们用来建立连接的函数。 -
MySQL()
指定我们要连接到MySQL数据库。 - 然后我们提供我们的登录详情(用户名、密码)以及我们想要连接的数据库名称。
-
host
是我们的数据库位置。"localhost"意味着它在我们的电脑上。
记得将 "your_username"、"your_password" 和 "your_database_name" 替换为你的实际MySQL凭据。
查询表:向你的数据库提问
现在我们已经连接上了,让我们开始向我们的数据库提问吧!在数据库术语中,我们称之为“查询”。
result <- dbGetQuery(con, "SELECT * FROM books")
print(result)
这里发生了什么:
-
dbGetQuery
向我们的数据库发送一个SQL查询并检索结果。 -
SELECT * FROM books
是我们的SQL查询。它要求从 'books' 表中选择所有列(*)。 - 我们将结果存储在一个名为
result
的变量中,然后打印它。
带过滤条件的查询:获取特定信息
有时,我们不想获取所有数据,只想获取特定部分。假设我们只想获取2000年后出版的书籍:
filtered_result <- dbGetQuery(con, "SELECT * FROM books WHERE publication_year > 2000")
print(filtered_result)
我们的SQL查询中的 WHERE
子句作为一个过滤器,只给我们提供符合我们条件的书籍。
更新表中的行:进行更改
哦哦!我们刚刚意识到我们的数据中有一个错误。让我们修正它:
dbExecute(con, "UPDATE books SET author = 'J.K. Rowling' WHERE title = 'Harry Potter and the Philosopher''s Stone'")
dbExecute
用于执行那些修改数据库但不返回数据的查询。
向表中插入数据:添加新信息
你的库存里有一本新书?没问题!
dbExecute(con, "INSERT INTO books (title, author, publication_year) VALUES ('The Catcher in the Rye', 'J.D. Salinger', 1951)")
这个查询向我们的 'books' 表中添加了一个新行,包含了指定的信息。
在MySQL中创建表:构建新的数据结构
假设我们想要开始跟踪书籍评论。我们将需要一个新表来存储这些信息:
dbExecute(con, "CREATE TABLE reviews (
id INT AUTO_INCREMENT PRIMARY KEY,
book_id INT,
reviewer_name VARCHAR(100),
rating INT,
review_text TEXT,
FOREIGN KEY (book_id) REFERENCES books(id)
)")
这会创建一个新的 'reviews' 表,它与我们的 'books' 表相关联。
在MySQL中删除表:清理
有时,我们需要完全删除一个表:
dbExecute(con, "DROP TABLE IF EXISTS old_inventory")
小心使用这个命令——它是永久性的!
结论
恭喜你!你已经迈出了进入R和数据库世界的第一步。我们涵盖了从连接到数据库到创建和修改表的大量内容。记住,熟能生巧,所以不要害怕用这些命令进行实验。
这里有一个我们使用的主要函数的快速参考表:
函数 | 用途 |
---|---|
dbConnect() | 建立到数据库的连接 |
dbGetQuery() | 执行查询并检索结果 |
dbExecute() | 执行不返回结果的查询 |
dbDisconnect() | 关闭数据库连接 |
永远记得,当你完成时,关闭你的数据库连接:
dbDisconnect(con)
快乐编码,愿你的数据库总是井井有条,你的查询总是迅速有效!
Credits: Image by storyset