R - 数据库:初学者指南

你好,未来的R编程大师们!今天,我们将开始一段激动人心的旅程,使用R来探索数据库的世界。如果你之前从未编写过一行代码,也不用担心——我们将从最基础开始,一起逐步学习。在本教程结束时,你会对你用R和数据库所能做到的事情感到惊讶!

R - Database

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