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