在 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 中创建连接对象。
Syntax: dbConnect(drv, user, password, dbname, host)
Parameter values:
- drv represents Database Driver
- user represents username
- password represents password value assigned to Database server
- dbname represents name of the database
- host represents host name
例子:
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()创建。如果表已经存在,此函数将覆盖该表。
Syntax: dbWriteTable(conn, name, value)
Parameter value:
- conn represents connection object
- name represents name of the table in MySQL
- value represents dataframe that has to be presented as MySQL table
例子:
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()函数用于执行查询。
Syntax: dbSendQuery(conn, statement)
Parameter values:
- conn represents connection object
- statement represents query to be executed in MySQL
例子:
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
数据库内容: