1.Membuat Koneksi Database
library(DBI)
library(RSQLite)
library(dplyr)
# Buat koneksi database
con <- dbConnect(SQLite(), "seminar3.db")
2.Membuat Tabel Database
#1.Tabel tamu
dbExecute(con, "
CREATE TABLE tamu (
id_tamu INTEGER PRIMARY KEY,
nama_tamu TEXT,
instansi TEXT,
no_hp TEXT,
email TEXT
);
")
## [1] 0
#2.Tabel seminar
dbExecute(con, "
CREATE TABLE seminar (
id_seminar INTEGER PRIMARY KEY,
judul_seminar TEXT,
tanggal DATE,
lokasi TEXT
);
")
## [1] 0
#3.Tabel kehadiran
dbExecute(con, "
CREATE TABLE kehadiran (
id_hadir INTEGER PRIMARY KEY,
id_tamu INTEGER,
id_seminar INTEGER,
status TEXT,
waktu_absen TEXT,
FOREIGN KEY (id_tamu) REFERENCES tamu(id_tamu),
FOREIGN KEY (id_seminar) REFERENCES seminar(id_seminar)
);
")
## [1] 0
3.Mengisi Data Tabel
#1.Data tamu
dbExecute(con, "
INSERT INTO tamu VALUES
(1, 'Andi Saputra', 'UNTAD', '082134561111', 'andi@gmail.com'),
(2, 'Budi Santoso', 'STMIK', '082134562222', 'budi@gmail.com'),
(3, 'Citra Lestari', 'UIN', '082134563333', 'citra@gmail.com'),
(4, 'Dewi Rahma', 'UNISA', '082134564444', 'dewi@gmail.com');
")
## [1] 4
#2.Data seminar
dbExecute(con, "
INSERT INTO seminar VALUES
(1, 'Seminar Data Science', '2025-01-10', 'Aula Kampus'),
(2, 'Seminar Kewirausahaan', '2025-01-15', 'Gedung Serbaguna'),
(3, 'Seminar Teknologi AI', '2025-01-20', 'Ruang Multimedia'),
(4, 'Seminar Keamanan Data', '2025-01-25', 'Aula Fakultas');
")
## [1] 4
#3.Data kehadiran
dbExecute(con, "
INSERT INTO kehadiran VALUES
(1, 1, 1, 'Hadir', '08:05'),
(2, 2, 2, 'Hadir', '09:10'),
(3, 3, 3, 'Hadir', '10:00'),
(4, 4, 4, 'Tidak Hadir', '-');
")
## [1] 4
4.Menampilkan Tabel
# Tampilkan daftar tabel dalam database
dbListTables(con)
## [1] "kehadiran" "seminar" "tamu"
# Tampilkan seluruh isi tabel kehadiran
dbGetQuery(con, "SELECT * FROM kehadiran")
## id_hadir id_tamu id_seminar status waktu_absen
## 1 1 1 1 Hadir 08:05
## 2 2 2 2 Hadir 09:10
## 3 3 3 3 Hadir 10:00
## 4 4 4 4 Tidak Hadir -
5.Mengurutkan Tabel
#Urutkan kehadiran dari paling awal ke paling akhir
dbGetQuery(con, "
SELECT * FROM kehadiran
ORDER BY waktu_absen ASC;
")
## id_hadir id_tamu id_seminar status waktu_absen
## 1 4 4 4 Tidak Hadir -
## 2 1 1 1 Hadir 08:05
## 3 2 2 2 Hadir 09:10
## 4 3 3 3 Hadir 10:00
#Urutkan kehadiran dari paling akhir ke paling awal
dbGetQuery(con, "
SELECT * FROM kehadiran
ORDER BY waktu_absen DESC;
")
## id_hadir id_tamu id_seminar status waktu_absen
## 1 3 3 3 Hadir 10:00
## 2 2 2 2 Hadir 09:10
## 3 1 1 1 Hadir 08:05
## 4 4 4 4 Tidak Hadir -
6.Menampilkan Data Aktivitas Tertentu
#Menampilkan tamu yang tidak hadir saja
dbGetQuery(con, "
SELECT * FROM kehadiran
WHERE status = 'Tidak Hadir'
ORDER BY waktu_absen ASC;
")
## id_hadir id_tamu id_seminar status waktu_absen
## 1 4 4 4 Tidak Hadir -
7.Memperbarui Data (UPDATE)
#Memperbarui status kehadiran tamu
dbExecute(con, "
UPDATE kehadiran
SET status = 'Hadir', waktu_absen = '10:30'
WHERE id_hadir = 4;
")
## [1] 1
dbGetQuery(con, "SELECT * FROM kehadiran WHERE id_hadir = 4;")
## id_hadir id_tamu id_seminar status waktu_absen
## 1 4 4 4 Hadir 10:30
8.Menghapus Data (DELETE)
#Menghapus data ke 4 pada tabel kehadiran
dbExecute(con, "
DELETE FROM kehadiran
WHERE id_hadir = 4;
")
## [1] 1
dbGetQuery(con, "SELECT * FROM kehadiran")
## id_hadir id_tamu id_seminar status waktu_absen
## 1 1 1 1 Hadir 08:05
## 2 2 2 2 Hadir 09:10
## 3 3 3 3 Hadir 10:00
9.Menampilkan Gabungan Data (INNER JOIN
#Menampilkan data kehadiran yang lebih sepsifik
dbGetQuery(con, "
SELECT
t.id_tamu AS id,
t.nama_tamu AS nama,
s.judul_seminar AS judul_seminar,
s.tanggal AS tanggal,
k.status AS status,
k.waktu_absen AS waktu
FROM kehadiran AS k
INNER JOIN tamu AS t ON k.id_tamu = t.id_tamu
INNER JOIN seminar AS s ON k.id_seminar = s.id_seminar;
")
## id nama judul_seminar tanggal status waktu
## 1 1 Andi Saputra Seminar Data Science 2025-01-10 Hadir 08:05
## 2 2 Budi Santoso Seminar Kewirausahaan 2025-01-15 Hadir 09:10
## 3 3 Citra Lestari Seminar Teknologi AI 2025-01-20 Hadir 10:00
10.Laporan akhir
query_laporan <- "
SELECT
t.id_tamu,
t.nama_tamu,
s.judul_seminar,
s.tanggal,
k.status,
k.waktu_absen
FROM kehadiran k
JOIN tamu t ON k.id_tamu = t.id_tamu
JOIN seminar s ON k.id_seminar = s.id_seminar;
"
laporan <- dbGetQuery(con, query_laporan)
laporan
## id_tamu nama_tamu judul_seminar tanggal status waktu_absen
## 1 1 Andi Saputra Seminar Data Science 2025-01-10 Hadir 08:05
## 2 2 Budi Santoso Seminar Kewirausahaan 2025-01-15 Hadir 09:10
## 3 3 Citra Lestari Seminar Teknologi AI 2025-01-20 Hadir 10:00