📜  在 R 编程中使用数据库

📅  最后修改于: 2022-05-13 01:54:37.486000             🧑  作者: Mango

在 R 编程中使用数据库

先决条件:使用 R 编程的数据库连接

在 R 编程语言中,许多数据集被传递给函数以使用统计计算将它们可视化。因此,我们可以从关系数据库中传递那些规范化的数据集,而不是在控制台中一次又一次地创建数据集。

R 编程语言中的数据库

R 可以连接到许多关系数据库,如 Oracle、MySQL、SQL Server 等,并将结果作为数据框获取。一旦结果集被提取到数据框中,可视化和操作它们就变得非常容易。在本文中,我们将讨论 MySQl 作为与 R 连接的参考,使用 R 语言创建、删除、插入、更新和查询表。

RMySQL 包

它是 R 中的一个内置包,它提供 R 和 MySql 数据库之间的连接。可以使用以下命令安装它:

install.packages("RMySQL")

连接 MySQL 和 R 编程语言

R 需要RMySQL包来创建一个连接对象,该对象在调用函数时需要用户名、密码、主机名和数据库名称。 dbConnect()函数用于在 R 中创建连接对象。

例子:

R
# Install package
install.packages("RMySQL")
 
# Loading library
library("RMySQL")
 
# Create connection
mysqlconn = dbConnect(MySQL(), user = 'root', password = 'welcome',
                      dbname = 'GFG', host = 'localhost')
 
# Show tables in database
dbListTables(mysqlconn)


R
# Create connection object
mysqlconn = dbConnect(MySQL(), user = 'root',
                      password = 'welcome',
                      dbname = 'GFG',
                      host = 'localhost')
 
# Create new table mtcars
dbWriteTable(mysqlconn, "mtcars",
             mtcars[1:10, ],
             overwrite = TRUE)


R
# Create connection object
mysqlconn = dbConnect(MySQL(), user = 'root',
                      password = 'welcome',
                      dbname = 'GFG',
                      host = 'localhost')
 
# Drop table mtcars from database
dbSendQuery(mysqlconn, 'DROP TABLE mtcars')


R
# Create connection object
mysqlconn = dbConnect(MySQL(), user = 'root',
                      password = 'welcome',
                      dbname = 'GFG', host = 'localhost')
 
# Inserting into articles table
dbSendQuery(mysqlconn, "insert into articles(sno, type)
values(1, 'R language')"
)


R
# Create connection object
mysqlconn = dbConnect(MySQL(), user = 'root',
                      password = 'welcome',
                      dbname = 'GFG', host = 'localhost')
 
# Update query
dbSendQuery(mysqlconn, "UPDATE articles SET sno = 10 \
where type = 'R language'")


R
# Create connection object
mysqlconn = dbConnect(MySQL(), user = 'root',
                      password = 'welcome',
                      dbname = 'GFG', host = 'localhost')
 
# Select all rows from articles table
res = dbSendQuery(mysqlconn, "SELECT *FROM articles")
 
# Fetch first 3 rows in data frame
df = fetch(res, n = 3)
print(df)


给定数据库中存在的表:

输出:

Loading required package: DBI
[1] "articles"

使用 R 在 MySQL 中创建表

MySQL 中的表可以使用 R 中的函数dbWriteTable()创建。如果表已经存在,此函数将覆盖该表。

例子:

R

# Create connection object
mysqlconn = dbConnect(MySQL(), user = 'root',
                      password = 'welcome',
                      dbname = 'GFG',
                      host = 'localhost')
 
# Create new table mtcars
dbWriteTable(mysqlconn, "mtcars",
             mtcars[1:10, ],
             overwrite = TRUE)

输出:

[1] TRUE

数据库表内容:

使用 R 在 MySQL 中删除表

要执行创建表以外的其他操作, dbSendQuery()函数用于执行查询。

例子:

R

# Create connection object
mysqlconn = dbConnect(MySQL(), user = 'root',
                      password = 'welcome',
                      dbname = 'GFG',
                      host = 'localhost')
 
# Drop table mtcars from database
dbSendQuery(mysqlconn, 'DROP TABLE mtcars')

输出:

数据库内容:

使用 R 在 MySQL 中插入表

在这里,我们将向表中插入一个值。

例子:

R

# Create connection object
mysqlconn = dbConnect(MySQL(), user = 'root',
                      password = 'welcome',
                      dbname = 'GFG', host = 'localhost')
 
# Inserting into articles table
dbSendQuery(mysqlconn, "insert into articles(sno, type)
values(1, 'R language')"
)

输出:

数据库内容:

使用 R 更新 MySQL 中的表

在这里,我们将更新 Mysql 中的表。

例子:

R

# Create connection object
mysqlconn = dbConnect(MySQL(), user = 'root',
                      password = 'welcome',
                      dbname = 'GFG', host = 'localhost')
 
# Update query
dbSendQuery(mysqlconn, "UPDATE articles SET sno = 10 \
where type = 'R language'")

输出:

数据库内容:

使用 R 查询 MySQL 中的表

在这里,我们将看到如何在表中使用查询。

例子:

R

# Create connection object
mysqlconn = dbConnect(MySQL(), user = 'root',
                      password = 'welcome',
                      dbname = 'GFG', host = 'localhost')
 
# Select all rows from articles table
res = dbSendQuery(mysqlconn, "SELECT *FROM articles")
 
# Fetch first 3 rows in data frame
df = fetch(res, n = 3)
print(df)

输出:

sno       type
1   1 Data Struc
2   2       Algo
3   3       Java

数据库内容: