Persiapan

1.Download dan Instal MySQL

Pastikan sudah mengunduh dan menginstal MySQL pada perangkat.

2.Verifikasi Instalasi MySQL

Buka CMD, ketik mysql –version untuk memastikan MySQL sudah terinstal dengan benar.

3.Masuk ke MySQL

Melalui CMD, ketik mysql -u root -p lalu masukkan password yang sudah dibuat saat instalasi.

4.Menampilkan Daftar Database

Melalui CMD, ketik show databases;.

5.Membuat Database Baru

Melalui CMD, ketik create database uasdatabase;. Jika ingin menghapus database, ketik drop database uasdatabase;.

Instalasi Paket di R

Instal beberapa package ini untuk menghubungkan R dengan MySQL:

install.packages(c("DBI", "odbc", "RMariaDB", "RMySQL", "RSQLite"))
install.packages("pacman")

Koneksikan MySQL dengan R

Koneksikan menggunakan package yang telah terinstal

#Muat package yang diperlukan
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)

#Hubungkan ke MySQL
car_sales_db=dbConnect(MySQL(),
                       user='root',
                       password='123456',
                       dbname='uasdatabase',
                       host='localhost')
dbListTables(car_sales_db) #Menampilkan tabel dalam database
## character(0)

Catatan: Ganti ‘password’ sesuai password yang dibuat saat instalasi MySQL.

Penjelasan: Kode ini menghubungkan R dengan MySQL menggunakan dbConnect() dan menyimpan koneksi ke variabel car_sales_db. Setelah itu, dengan menggunakan dbListTables() dapat menampilkan semua tabel yang ada dalam database yang terhubung.

Membuat Tabel dalam Database

Buat dua tabel dalam database car_sales_db, yaitu tabel Pegawai dan Penjualan:

#Buat Tabel Database
#Penggunaan "CREATE TABLE"
#Tabel Pegawai
dbExecute(car_sales_db, "CREATE TABLE Pegawai(
                            ID_Pegawai int AUTO_INCREMENT NOT NULL PRIMARY KEY,
                            Nama_Pegawai varchar(255) NOT NULL)")
## [1] 0
#Tabel Penjualan
dbExecute(car_sales_db, "CREATE TABLE Penjualan(
                            ID_Pesanan int AUTO_INCREMENT 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) NOT NULL,
                            PRIMARY KEY (ID_Pesanan),
                            FOREIGN KEY (ID_Pegawai) REFERENCES Pegawai(ID_Pegawai))")
## [1] 0

Penjelasan: 1) Tabel Pegawai menyimpan data pegawai dengan kolom ID_Pegawai yang menjadi primary key. 2) Tabel Penjualan menyimpan data penjualan mobil dengan ID_Pesanan sebagai primary key dan ID_Pegawai sebagai foreign key yang merujuk pada tabel Pegawai.

Memasukkan Data ke dalam Tabel

Dengan menggunakan INSERT INTO dapat memasukkan data/values ke dalam tabel Pegawai dan Penjualan.

#Masukkan Nilai/Values
#Penggunaan "INSERT INTO"
#Masukkan Values (Tabel Pegawai)
data_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')")
print(data_pegawai)
## [1] 10
#Masukkan Values (Tabel Penjualan)
data_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', null, 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)")
print(data_penjualan)
## [1] 20

Melihat Daftar Tabel

Jika ingin melihat tabel dari database car_sales_db:

#Melihat tabel dalam database car_sales_db
tabel=dbListTables(car_sales_db)
tabel
## [1] "pegawai"   "penjualan"

Penjelasan: dbListTables(car_sales_db) adalah fungsi dari package DBI yang digunakan untuk mendapatkan daftar semua tabel yang ada dalam database yang terhubung (car_sales_db).

Melihat Isi Tabel Pegawai

Jika ingin melihat isi tabel Pegawai dari database car_sales_db:

#Melihat isi tabel (tabel Pegawai)
#Penggunaan "SELECT"
tabel_pegawai=dbGetQuery(car_sales_db, "SELECT * FROM Pegawai")
print(tabel_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

Penjelasan: dbGetQuery() digunakan untuk menjalankan query SQL di MySQL (dalam hal ini, SELECT * FROM Pegawai) untuk mengambil semua data (* menandakan semua kolom) dari tabel Pegawai.

Melihat Isi Tabel Penjualan

Jika ingin melihat isi tabel Penjualan dari database car_sales_db:

#Melihat isi tabel (tabel Penjualan)
tabel_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(tabel_penjualan)
##    ID_Pesanan Nomor_Pesanan ID_Pegawai   Merek      Model Ukuran_Mesin
## 1           1      ORD1V6C3          1    Ford       <NA>          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

Mengubah Data (Update)

Jika ingin memperbarui data yang sudah ada dalam tabel, dapat menggunakan UPDATE. Contoh memperbarui data model mobil yang sebelumnya null:

#Mengubah/memperbarui data null dalam tabel database
#Penggunaan "UPDATE" dan "WHERE"
update1=dbExecute(car_sales_db, "UPDATE 
                  Penjualan SET Model='Ford'
                  WHERE ID_Pesanan=1")
print(update1)
## [1] 1

Penjelasan: Perintah ini digunakan untuk mengubah nilai/data null pada model mobil di tabel Penjualan, khususnya untuk ID_Pesanan 1. Dari data null menjadi ada nilainya yaitu model mobil Ford.

Mengurutkan Data

Data dalam tabel bisa diurutkan dengan menggunakan ORDER BY. Contoh mengurutkan data berdasarkan harga secara menaik ( ASC ) dan menurun ( DESC ):

#Mengurutkan data
#Penggunaan "ORDER BY", "ASC", dan "DESC"
#Ascending (kecil-besar) kolom harga pada tabel Penjualan
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          19      ORDWS9LQ         10      VW       Polo          1.0
## 3          20      ORDWC3B9          2 Porsche 718 Cayman          2.4
## 4           3      ORD2V2PT          3  Toyota       RAV4          1.8
## 5          10      ORDF6CL3         10      VW     Passat          1.6
## 6           1      ORD1V6C3          1    Ford       Ford          1.0
## 7          13      ORDLWY2A         10      VW       Golf          1.4
## 8           4      ORDA2UV3          4      VW       Polo          1.0
## 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            1992       214329   777
## 3             Petrol            1988       256489  1183
## 4             Hybrid            1988       210814  1705
## 5             Diesel            1994       179361  2371
## 6             Petrol            2002       127300  3074
## 7             Diesel            2001       136439  4049
## 8             Petrol            2006       127869  4101
## 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
#Descending (besar-kecil) kolom harga pada tabel Penjualan
harga_desc=dbGetQuery(car_sales_db,"SELECT * FROM Penjualan
                     ORDER BY 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(harga_desc)
##    ID_Pesanan Nomor_Pesanan ID_Pegawai   Merek      Model Ukuran_Mesin
## 1          16      ORDPXPSR          9 Porsche        911          3.0
## 2           9      ORDE2V33          9 Porsche    Cayenne          2.6
## 3           2      ORD2L1X9          2 Porsche 718 Cayman          4.0
## 4          14      ORDO363G          3  Toyota       RAV4          2.2
## 5          11      ORDG7PPL          5     BMW         M5          4.4
## 6          18      ORDU72NK          7  Toyota       RAV4          2.4
## 7           6      ORDC1QS0          6  Toyota       RAV4          2.2
## 8          12      ORDK8RRT          9 Porsche    Cayenne          2.6
## 9          17      ORDR5ZJT          4      VW     Passat          2.0
## 10          5      ORDARDNG          5     BMW         Z4          2.2
## 11          8      ORDDR0QJ          8    Ford     Mondeo          1.6
## 12         15      ORDOAMX1          1    Ford      Focus          2.0
## 13          4      ORDA2UV3          4      VW       Polo          1.0
## 14         13      ORDLWY2A         10      VW       Golf          1.4
## 15          1      ORD1V6C3          1    Ford       Ford          1.0
## 16         10      ORDF6CL3         10      VW     Passat          1.6
## 17          3      ORD2V2PT          3  Toyota       RAV4          1.8
## 18         20      ORDWC3B9          2 Porsche 718 Cayman          2.4
## 19         19      ORDWS9LQ         10      VW       Polo          1.0
## 20          7      ORDC5VLZ          7  Toyota      Yaris          1.2
##    Jenis_bahan_bakar Tahun_Pembuatan Jarak_Tempuh Harga
## 1             Petrol            2015        44761 77091
## 2             Diesel            2015        33693 54037
## 3             Petrol            2016        57850 49704
## 4             Hybrid            2014        66511 33453
## 5             Petrol            2008       109941 31711
## 6             Petrol            2011        80839 21637
## 7             Petrol            2007        79393 16026
## 8             Diesel            2003       105361 15069
## 9             Diesel            1997        50121  8564
## 10            Petrol            2005       133174  8511
## 11            Diesel            1996        77584  5667
## 12            Petrol            1999       135077  4855
## 13            Petrol            2006       127869  4101
## 14            Diesel            2001       136439  4049
## 15            Petrol            2002       127300  3074
## 16            Diesel            1994       179361  2371
## 17            Hybrid            1988       210814  1705
## 18            Petrol            1988       256489  1183
## 19            Petrol            1992       214329   777
## 20            Petrol            1992       245990   720

Menambah, Mengubah, dan Menghapus Kolom

Dengan menggunakan ALTER dapat menambah, mengubah nama kolom, ataupun menghapus kolom pada tabel yang sudah ada:

#Menambah/mengubah nama/menghapus field
#Penggunaan "ALTER"
#Menambahkan kolom (tabel Pegawai)
dbExecute(car_sales_db, "ALTER TABLE Pegawai
          ADD Jenis_Kelamin varchar(1)")
## [1] 0
dbGetQuery(car_sales_db, "DESCRIBE Pegawai") #Memeriksa struktur tabel setelah perubahan
##           Field         Type Null Key Default          Extra
## 1    ID_Pegawai          int   NO PRI    <NA> auto_increment
## 2  Nama_Pegawai varchar(255)   NO        <NA>               
## 3 Jenis_Kelamin   varchar(1)  YES        <NA>
#Menghapus Kolom (Tabel Pegawai)
dbExecute(car_sales_db, "ALTER TABLE Pegawai
            DROP COLUMN Jenis_Kelamin")
## [1] 0
dbGetQuery(car_sales_db, "DESCRIBE Pegawai")
##          Field         Type Null Key Default          Extra
## 1   ID_Pegawai          int   NO PRI    <NA> auto_increment
## 2 Nama_Pegawai varchar(255)   NO        <NA>
#Mengubah nama field
dbExecute(car_sales_db, "ALTER TABLE Pegawai
          CHANGE COLUMN Nama_Pegawai
          NamaPegawai varchar(255) NOT NULL")
## [1] 0

Memberi Hak Akses Pengguna

Untuk memberi hak askes ke pengguna lain, bisa gunakan GRANT. Untuk mencabut hak akses ke pengguna lain, gunakan REVOKE Contoh memberikan hak akses SELECT pada tabel Pegawai untuk pengguna tertentu:

#Memberi hak SELECT kepada user1 untuk tabel Pegawai
#Penggunaan "GRANT"
#CREATE USER 'user1'@'localhost' IDENTIFIED BY '123'; #Ketik ini di mySQL CMD
#DROP USER 'user1'@'localhost' #Untuk hapus user1 di mySQL CMD
dbExecute(car_sales_db, "GRANT SELECT ON uasdatabase.Pegawai
          TO 'user1'@'localhost'")
## [1] 0
#Mencabut hak SELECT dari user1 pada tabel Pegawai
dbExecute(car_sales_db, "REVOKE SELECT ON uasdatabase.Pegawai
          FROM 'user1'@'localhost'")
## [1] 0