Pastikan MySQL sudah terinstal di sistem Windows Anda. Untuk memeriksa apakah MySQL sudah terinstal, buka Command Prompt (CMD) dan ketik perintah berikut: ‘my sql –version’
Untuk mengakses MyQL, ketik perintah berikut: ‘mysql -u root -p’ masukkan password yang sudah dibuat saat instalasi MySQl.
Untuk memastikan dapat mengakses database, ketik perintah: ‘show databases;’
Instal beberapa library ini untuk menghubungkan R dengan MySQL:
install.packages(c("DBI", "odbc", "RMariaDB", "RMySQL", "RSQLite"))
install.packages("pacman")
Panggil library yang sudah diinstal dengan perintah:
library(pacman)
## Warning: package 'pacman' was built under R version 4.5.2
pacman::p_load(DBI, odbc, RMariaDB, RMySQL, RSQLite)
library(DBI)
library(RMariaDB)
library(RMySQL)
library(RSQLite)
Setelah library terinstal, buat koneksi MySQL ke R dengan perintah berikut:
MySQL=dbConnect(MySQL(),
user='root',
password='123456',
dbname='uasdatabase',
host='localhost')
dbListTables(MySQL) #Cek koneksi dengan menampilkan daftar tabel
## character(0)
Ganti ‘password’ sesuai password yang dibuat saat instalasi MySQL.
Saya akan membuat database bernama ‘car_sales_db’ berisi data penjualan mobil.
dbExecute(MySQL, "CREATE DATABASE car_sales_db")
## [1] 1
Sebagai contoh, saya akan menghapus database ‘car_sales_db’.
#dbExecute(MySQL, "DROP DATABASE car_sales_db") #Menghapus Database
Saya akan membuat dua tabel dalam database ‘car_sales_db’, yaitu tabel ‘Pegawai’ dan ‘Penjualan’.
car_sales_db=dbConnect(MySQL(),
user='root',
password='123456',
dbname='car_sales_db',
host='localhost')
#Buat Tabel Pegawai
dbExecute(car_sales_db, "CREATE TABLE Pegawai(
ID_Pegawai int NOT NULL PRIMARY KEY,
Nama_Pegawai varchar(255) NOT NULL)")
## [1] 0
#Buat Tabel Penjualan
dbExecute(car_sales_db, "CREATE TABLE Penjualan(
ID_Pesanan int NOT NULL,
Nomor_Pesanan varchar(50) NOT NULL,
ID_Pegawai int NOT NULL,
Merek varchar(100),
Model varchar(100),
Ukuran_Mesin decimal(3,1),
Jenis_bahan_bakar varchar(50),
Tahun_Pembuatan int,
Jarak_Tempuh int,
Harga decimal(10,2),
PRIMARY KEY (ID_Pesanan),
FOREIGN KEY (ID_Pegawai) REFERENCES Pegawai(ID_Pegawai))")
## [1] 0
#Melihat Tabel Keseluruhan dari Database
dbGetQuery(car_sales_db, "DESCRIBE Pegawai")
## Field Type Null Key Default Extra
## 1 ID_Pegawai int NO PRI <NA>
## 2 Nama_Pegawai varchar(255) NO <NA>
dbGetQuery(car_sales_db, "DESCRIBE Penjualan")
## Field Type Null Key Default Extra
## 1 ID_Pesanan int NO PRI <NA>
## 2 Nomor_Pesanan varchar(50) NO <NA>
## 3 ID_Pegawai int NO MUL <NA>
## 4 Merek varchar(100) YES <NA>
## 5 Model varchar(100) YES <NA>
## 6 Ukuran_Mesin decimal(3,1) YES <NA>
## 7 Jenis_bahan_bakar varchar(50) YES <NA>
## 8 Tahun_Pembuatan int YES <NA>
## 9 Jarak_Tempuh int YES <NA>
## 10 Harga decimal(10,2) YES <NA>
Gunakan ‘INSERT INTO’ untuk menambahkan isi/nilai/value ke dalam tabel.
#Masukkan Values (Tabel Pegawai)
dbExecute(car_sales_db, "INSERT INTO
Pegawai(ID_Pegawai, Nama_Pegawai)
VALUES
(1, 'Adityawan'),
(2, 'Putri Suryani'),
(3, 'Bhaskara Wicaksono'),
(4, 'Aulia Rahmatika'),
(5, 'Bagas Prasetyo'),
(6, 'Siti Hajar Rahmaniar'),
(7, 'Dwi Anggraeni Lestari'),
(8, 'Dimas Rachmat'),
(9, 'Melani Shofiya'),
(10, 'Irwan Nugroho')")
## [1] 10
#Masukkan Values (Tabel Penjualan)
dbExecute(car_sales_db, "INSERT INTO
Penjualan(ID_Pesanan, Nomor_Pesanan, ID_Pegawai, Merek, Model, Ukuran_Mesin, Jenis_Bahan_Bakar, Tahun_Pembuatan, Jarak_Tempuh, Harga)
VALUES
(1, 'ORD1V6C3', 1, 'Ford', 'Fiesta', 1, 'Petrol', 2002, 127300, 3074),
(2, 'ORD2L1X9', 2, 'Porsche', '718 Cayman', 4, 'Petrol', 2016, 57850, 49704),
(3, 'ORD2V2PT', 3, 'Toyota', 'RAV4', 1.8, 'Hybrid', 1988, 210814, 1705),
(4, 'ORDA2UV3', 4, 'VW', 'Polo', 1, 'Petrol', 2006, 127869, 4101),
(5, 'ORDARDNG', 5,'BMW', 'Z4', 2.2, 'Petrol', 2005, 133174, 8511),
(6, 'ORDC1QS0', 6, 'Toyota', 'RAV4', 2.2, 'Petrol', 2007, 79393, 16026),
(7, 'ORDC5VLZ', 7, 'Toyota', 'Yaris', 1.2, 'Petrol', 1992, 245990, 720),
(8, 'ORDDR0QJ', 8, 'Ford', 'Mondeo', 1.6, 'Diesel', 1996, 77584, 5667),
(9, 'ORDE2V33', 9, 'Porsche', 'Cayenne', 2.6, 'Diesel', 2015, 33693, 54037),
(10, 'ORDF6CL3', 10, 'VW', 'Passat', 1.6, 'Diesel', 1994, 179361, 2371),
(11, 'ORDG7PPL', 5, 'BMW', 'M5', 4.4, 'Petrol', 2008, 109941, 31711),
(12, 'ORDK8RRT', 9, 'Porsche', 'Cayenne', 2.6, 'Diesel', 2003, 105361, 15069),
(13, 'ORDLWY2A', 10, 'VW', 'Golf', 1.4, 'Diesel', 2001, 136439, 4049),
(14, 'ORDO363G', 3, 'Toyota', 'RAV4', 2.2, 'Hybrid', 2014, 66511, 33453),
(15, 'ORDOAMX1', 1, 'Ford', 'Focus', 2, 'Petrol', 1999, 135077, 4855),
(16, 'ORDPXPSR', 9, 'Porsche', '911', 3, 'Petrol', 2015, 44761, 77091),
(17, 'ORDR5ZJT', 4, 'VW', 'Passat', 2, 'Diesel', 1997, 50121, 8564),
(18, 'ORDU72NK', 7, 'Toyota', 'RAV4', 2.4, 'Petrol', 2011, 80839, 21637),
(19, 'ORDWS9LQ', 10, 'VW', 'Polo', 1, 'Petrol', 1992, 214329, 777),
(20, 'ORDWC3B9', 2, 'Porsche', '718 Cayman', 2.4, 'Petrol', 1988, 256489, 1183)")
## [1] 20
Gunakan ‘SELECT * FROM (nama tabel)’ untuk memilih tabel dari database.
#Melihat Isi Tabel
#Melihat Isi (Tabel Pegawai)
data_pegawai=dbGetQuery(car_sales_db, "SELECT * FROM Pegawai")
print(data_pegawai)
## ID_Pegawai Nama_Pegawai
## 1 1 Adityawan
## 2 2 Putri Suryani
## 3 3 Bhaskara Wicaksono
## 4 4 Aulia Rahmatika
## 5 5 Bagas Prasetyo
## 6 6 Siti Hajar Rahmaniar
## 7 7 Dwi Anggraeni Lestari
## 8 8 Dimas Rachmat
## 9 9 Melani Shofiya
## 10 10 Irwan Nugroho
#Melihat Isi (Tabel Penjualan)
data_penjualan=dbGetQuery(car_sales_db, "SELECT * FROM Penjualan")
## Warning in dbSendQuery(conn, statement, ...): Decimal MySQL column 5 imported
## as numeric
## Warning in dbSendQuery(conn, statement, ...): Decimal MySQL column 9 imported
## as numeric
print(data_penjualan)
## ID_Pesanan Nomor_Pesanan ID_Pegawai Merek Model Ukuran_Mesin
## 1 1 ORD1V6C3 1 Ford Fiesta 1.0
## 2 2 ORD2L1X9 2 Porsche 718 Cayman 4.0
## 3 3 ORD2V2PT 3 Toyota RAV4 1.8
## 4 4 ORDA2UV3 4 VW Polo 1.0
## 5 5 ORDARDNG 5 BMW Z4 2.2
## 6 6 ORDC1QS0 6 Toyota RAV4 2.2
## 7 7 ORDC5VLZ 7 Toyota Yaris 1.2
## 8 8 ORDDR0QJ 8 Ford Mondeo 1.6
## 9 9 ORDE2V33 9 Porsche Cayenne 2.6
## 10 10 ORDF6CL3 10 VW Passat 1.6
## 11 11 ORDG7PPL 5 BMW M5 4.4
## 12 12 ORDK8RRT 9 Porsche Cayenne 2.6
## 13 13 ORDLWY2A 10 VW Golf 1.4
## 14 14 ORDO363G 3 Toyota RAV4 2.2
## 15 15 ORDOAMX1 1 Ford Focus 2.0
## 16 16 ORDPXPSR 9 Porsche 911 3.0
## 17 17 ORDR5ZJT 4 VW Passat 2.0
## 18 18 ORDU72NK 7 Toyota RAV4 2.4
## 19 19 ORDWS9LQ 10 VW Polo 1.0
## 20 20 ORDWC3B9 2 Porsche 718 Cayman 2.4
## Jenis_bahan_bakar Tahun_Pembuatan Jarak_Tempuh Harga
## 1 Petrol 2002 127300 3074
## 2 Petrol 2016 57850 49704
## 3 Hybrid 1988 210814 1705
## 4 Petrol 2006 127869 4101
## 5 Petrol 2005 133174 8511
## 6 Petrol 2007 79393 16026
## 7 Petrol 1992 245990 720
## 8 Diesel 1996 77584 5667
## 9 Diesel 2015 33693 54037
## 10 Diesel 1994 179361 2371
## 11 Petrol 2008 109941 31711
## 12 Diesel 2003 105361 15069
## 13 Diesel 2001 136439 4049
## 14 Hybrid 2014 66511 33453
## 15 Petrol 1999 135077 4855
## 16 Petrol 2015 44761 77091
## 17 Diesel 1997 50121 8564
## 18 Petrol 2011 80839 21637
## 19 Petrol 1992 214329 777
## 20 Petrol 1988 256489 1183
Gunakan ‘TRUNCATE TABLE (nama tabel)’ untuk menghapus seluruh isi tabel, bukan menghapus tabelnya.
#Memotong Tabel
#dbExecute(car_sales_db, "TRUNCATE TABLE Pegawai") #Menghapus apa yang ada dalam tabel, bukan tabelnya
Gunakan ‘DROP TABLE (nama tabel)’ untuk menghapus keseluruhan tabel
#dbExecute(car_sales_db, "DROP TABLE Pegawai") #Hapus Tabel Pegawai
#dbExecute(car_sales_db, "DROP TABLE Penjualan") #Hapus Tabel Penjualan
Sebagai contoh, saya akan menambahkan kolom ‘Jenis_Kelamin’ berisi satu karakter (misal ‘L’ untuk laki-laki dan ‘P’ untuk perempuan) pada tabel Pegawai. Jadi, pada tabel Pegawai terdapat 3 kolom sekarang (ID_Pegawai, Nama_Pegawai, Jenis_Kelamin).
#Menambahkan Kolom Pada Tabel Pegawai
dbExecute(car_sales_db, "ALTER TABLE Pegawai
ADD Jenis_Kelamin varchar(1)")
## [1] 0
Sebagai contoh, saya akan menghapus kolom ‘Jenis_Kelamin’ yang sebelumnya baru ditambahkan. Maka, pada tabel Pegawai kembali menjadi 2 kolom saja (ID_Pegawai dan Nama_Pegawai).
#Menghapus Kolom (Tabel Pegawai)
dbSendQuery(car_sales_db, "ALTER TABLE Pegawai
DROP COLUMN Jenis_Kelamin")
## <MySQLResult:1327975880,1,9>
Sebagai contoh, saya ingin mengubah harga mobil pada tabel Penjualan untuk ID_Pesanan tertentu.
#Update Harga pada Tabel Penjualan
query_update_VW <- "
UPDATE Penjualan
SET Harga = 3500
WHERE ID_Pesanan IN (4, 19);
"
dbExecute(car_sales_db, query_update_VW)
## [1] 2
Untuk melihat hasil perubahan update, bisa gunakan perintah ini:
data_penjualan_update=dbGetQuery(car_sales_db, "SELECT * FROM Penjualan")
## Warning in dbSendQuery(conn, statement, ...): Decimal MySQL column 5 imported
## as numeric
## Warning in dbSendQuery(conn, statement, ...): Decimal MySQL column 9 imported
## as numeric
print(data_penjualan_update)
## ID_Pesanan Nomor_Pesanan ID_Pegawai Merek Model Ukuran_Mesin
## 1 1 ORD1V6C3 1 Ford Fiesta 1.0
## 2 2 ORD2L1X9 2 Porsche 718 Cayman 4.0
## 3 3 ORD2V2PT 3 Toyota RAV4 1.8
## 4 4 ORDA2UV3 4 VW Polo 1.0
## 5 5 ORDARDNG 5 BMW Z4 2.2
## 6 6 ORDC1QS0 6 Toyota RAV4 2.2
## 7 7 ORDC5VLZ 7 Toyota Yaris 1.2
## 8 8 ORDDR0QJ 8 Ford Mondeo 1.6
## 9 9 ORDE2V33 9 Porsche Cayenne 2.6
## 10 10 ORDF6CL3 10 VW Passat 1.6
## 11 11 ORDG7PPL 5 BMW M5 4.4
## 12 12 ORDK8RRT 9 Porsche Cayenne 2.6
## 13 13 ORDLWY2A 10 VW Golf 1.4
## 14 14 ORDO363G 3 Toyota RAV4 2.2
## 15 15 ORDOAMX1 1 Ford Focus 2.0
## 16 16 ORDPXPSR 9 Porsche 911 3.0
## 17 17 ORDR5ZJT 4 VW Passat 2.0
## 18 18 ORDU72NK 7 Toyota RAV4 2.4
## 19 19 ORDWS9LQ 10 VW Polo 1.0
## 20 20 ORDWC3B9 2 Porsche 718 Cayman 2.4
## Jenis_bahan_bakar Tahun_Pembuatan Jarak_Tempuh Harga
## 1 Petrol 2002 127300 3074
## 2 Petrol 2016 57850 49704
## 3 Hybrid 1988 210814 1705
## 4 Petrol 2006 127869 3500
## 5 Petrol 2005 133174 8511
## 6 Petrol 2007 79393 16026
## 7 Petrol 1992 245990 720
## 8 Diesel 1996 77584 5667
## 9 Diesel 2015 33693 54037
## 10 Diesel 1994 179361 2371
## 11 Petrol 2008 109941 31711
## 12 Diesel 2003 105361 15069
## 13 Diesel 2001 136439 4049
## 14 Hybrid 2014 66511 33453
## 15 Petrol 1999 135077 4855
## 16 Petrol 2015 44761 77091
## 17 Diesel 1997 50121 8564
## 18 Petrol 2011 80839 21637
## 19 Petrol 1992 214329 3500
## 20 Petrol 1988 256489 1183
Dapat dilihat harga pada ID_Pesanan 4 dan 19 sudah berubah akibat penggunaan ‘UPDATE’
Sebagai contoh, saya ingin mengurutkan kolom ‘Harga’ dari yang terkecil ke terbesar pakai ‘ASC’. Mengurutkan data berdasarkan suatu kolom dalam urutan menaik (ASC) bisa gunakan perintah berikut:
Harga_asc=dbGetQuery(car_sales_db, "SELECT * FROM Penjualan
ORDER BY Harga ASC")
## Warning in dbSendQuery(conn, statement, ...): Decimal MySQL column 5 imported
## as numeric
## Warning in dbSendQuery(conn, statement, ...): Decimal MySQL column 9 imported
## as numeric
print(Harga_asc)
## ID_Pesanan Nomor_Pesanan ID_Pegawai Merek Model Ukuran_Mesin
## 1 7 ORDC5VLZ 7 Toyota Yaris 1.2
## 2 20 ORDWC3B9 2 Porsche 718 Cayman 2.4
## 3 3 ORD2V2PT 3 Toyota RAV4 1.8
## 4 10 ORDF6CL3 10 VW Passat 1.6
## 5 1 ORD1V6C3 1 Ford Fiesta 1.0
## 6 4 ORDA2UV3 4 VW Polo 1.0
## 7 19 ORDWS9LQ 10 VW Polo 1.0
## 8 13 ORDLWY2A 10 VW Golf 1.4
## 9 15 ORDOAMX1 1 Ford Focus 2.0
## 10 8 ORDDR0QJ 8 Ford Mondeo 1.6
## 11 5 ORDARDNG 5 BMW Z4 2.2
## 12 17 ORDR5ZJT 4 VW Passat 2.0
## 13 12 ORDK8RRT 9 Porsche Cayenne 2.6
## 14 6 ORDC1QS0 6 Toyota RAV4 2.2
## 15 18 ORDU72NK 7 Toyota RAV4 2.4
## 16 11 ORDG7PPL 5 BMW M5 4.4
## 17 14 ORDO363G 3 Toyota RAV4 2.2
## 18 2 ORD2L1X9 2 Porsche 718 Cayman 4.0
## 19 9 ORDE2V33 9 Porsche Cayenne 2.6
## 20 16 ORDPXPSR 9 Porsche 911 3.0
## Jenis_bahan_bakar Tahun_Pembuatan Jarak_Tempuh Harga
## 1 Petrol 1992 245990 720
## 2 Petrol 1988 256489 1183
## 3 Hybrid 1988 210814 1705
## 4 Diesel 1994 179361 2371
## 5 Petrol 2002 127300 3074
## 6 Petrol 2006 127869 3500
## 7 Petrol 1992 214329 3500
## 8 Diesel 2001 136439 4049
## 9 Petrol 1999 135077 4855
## 10 Diesel 1996 77584 5667
## 11 Petrol 2005 133174 8511
## 12 Diesel 1997 50121 8564
## 13 Diesel 2003 105361 15069
## 14 Petrol 2007 79393 16026
## 15 Petrol 2011 80839 21637
## 16 Petrol 2008 109941 31711
## 17 Hybrid 2014 66511 33453
## 18 Petrol 2016 57850 49704
## 19 Diesel 2015 33693 54037
## 20 Petrol 2015 44761 77091
Sebagai contoh, saya ingin mengurutkan data berdasarkan kolom ‘Merek’ (ASC) kemudian berdasarkan kolom ‘Harga’ (DESC), bisa pakai perintah ini:
data_sort_multi=dbGetQuery(car_sales_db, "SELECT * FROM Penjualan
ORDER BY Merek ASC, Harga DESC")
## Warning in dbSendQuery(conn, statement, ...): Decimal MySQL column 5 imported
## as numeric
## Warning in dbSendQuery(conn, statement, ...): Decimal MySQL column 9 imported
## as numeric
print(data_sort_multi)
## ID_Pesanan Nomor_Pesanan ID_Pegawai Merek Model Ukuran_Mesin
## 1 11 ORDG7PPL 5 BMW M5 4.4
## 2 5 ORDARDNG 5 BMW Z4 2.2
## 3 8 ORDDR0QJ 8 Ford Mondeo 1.6
## 4 15 ORDOAMX1 1 Ford Focus 2.0
## 5 1 ORD1V6C3 1 Ford Fiesta 1.0
## 6 16 ORDPXPSR 9 Porsche 911 3.0
## 7 9 ORDE2V33 9 Porsche Cayenne 2.6
## 8 2 ORD2L1X9 2 Porsche 718 Cayman 4.0
## 9 12 ORDK8RRT 9 Porsche Cayenne 2.6
## 10 20 ORDWC3B9 2 Porsche 718 Cayman 2.4
## 11 14 ORDO363G 3 Toyota RAV4 2.2
## 12 18 ORDU72NK 7 Toyota RAV4 2.4
## 13 6 ORDC1QS0 6 Toyota RAV4 2.2
## 14 3 ORD2V2PT 3 Toyota RAV4 1.8
## 15 7 ORDC5VLZ 7 Toyota Yaris 1.2
## 16 17 ORDR5ZJT 4 VW Passat 2.0
## 17 13 ORDLWY2A 10 VW Golf 1.4
## 18 4 ORDA2UV3 4 VW Polo 1.0
## 19 19 ORDWS9LQ 10 VW Polo 1.0
## 20 10 ORDF6CL3 10 VW Passat 1.6
## Jenis_bahan_bakar Tahun_Pembuatan Jarak_Tempuh Harga
## 1 Petrol 2008 109941 31711
## 2 Petrol 2005 133174 8511
## 3 Diesel 1996 77584 5667
## 4 Petrol 1999 135077 4855
## 5 Petrol 2002 127300 3074
## 6 Petrol 2015 44761 77091
## 7 Diesel 2015 33693 54037
## 8 Petrol 2016 57850 49704
## 9 Diesel 2003 105361 15069
## 10 Petrol 1988 256489 1183
## 11 Hybrid 2014 66511 33453
## 12 Petrol 2011 80839 21637
## 13 Petrol 2007 79393 16026
## 14 Hybrid 1988 210814 1705
## 15 Petrol 1992 245990 720
## 16 Diesel 1997 50121 8564
## 17 Diesel 2001 136439 4049
## 18 Petrol 2006 127869 3500
## 19 Petrol 1992 214329 3500
## 20 Diesel 1994 179361 2371