1.Membuat Koneksi Database
library(DBI)
library(RSQLite)
library(dplyr)
library(knitr)
# 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
tabel <- dbListTables(con)
kable(as.data.frame(tabel), col.names = "Nama Tabel")
# Tampilkan seluruh isi tabel kehadiran
data_kehadiran <- dbGetQuery(con, "SELECT * FROM kehadiran")
kable(data_kehadiran)
| 1 |
1 |
1 |
Hadir |
08:05 |
| 2 |
2 |
2 |
Hadir |
09:10 |
| 3 |
3 |
3 |
Hadir |
10:00 |
| 4 |
4 |
4 |
Tidak Hadir |
- |
5.Mengurutkan Tabel
#Urutkan kehadiran dari paling awal ke paling akhir
awal <- dbGetQuery(con, "
SELECT * FROM kehadiran
ORDER BY waktu_absen ASC;
")
kable(awal)
| 4 |
4 |
4 |
Tidak Hadir |
- |
| 1 |
1 |
1 |
Hadir |
08:05 |
| 2 |
2 |
2 |
Hadir |
09:10 |
| 3 |
3 |
3 |
Hadir |
10:00 |
#Urutkan kehadiran dari paling akhir ke paling awal
akhir <- dbGetQuery(con, "
SELECT * FROM kehadiran
ORDER BY waktu_absen DESC;
")
kable(akhir)
| 3 |
3 |
3 |
Hadir |
10:00 |
| 2 |
2 |
2 |
Hadir |
09:10 |
| 1 |
1 |
1 |
Hadir |
08:05 |
| 4 |
4 |
4 |
Tidak Hadir |
- |
6.Menampilkan Data Aktivitas Tertentu
#Menampilkan tamu yang tidak hadir saja
tidak_hadir <- dbGetQuery(con, "
SELECT * FROM kehadiran
WHERE status = 'Tidak Hadir'
ORDER BY waktu_absen ASC;
")
kable(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
update_data <- dbGetQuery(con, "SELECT * FROM kehadiran WHERE id_hadir = 4;")
kable(update_data)
8.Menghapus Data (DELETE)
#Menghapus data ke 4 pada tabel kehadiran
dbExecute(con, "
DELETE FROM kehadiran
WHERE id_hadir = 4;
")
## [1] 1
hapus <- dbGetQuery(con, "SELECT * FROM kehadiran")
kable(hapus)
| 1 |
1 |
1 |
Hadir |
08:05 |
| 2 |
2 |
2 |
Hadir |
09:10 |
| 3 |
3 |
3 |
Hadir |
10:00 |
9.Menampilkan Gabungan Data (INNER JOIN)
#Menampilkan data kehadiran yang lebih sepsifik
spesifik <- 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;
")
kable(spesifik)
| 1 |
Andi Saputra |
Seminar Data Science |
2025-01-10 |
Hadir |
08:05 |
| 2 |
Budi Santoso |
Seminar Kewirausahaan |
2025-01-15 |
Hadir |
09:10 |
| 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)
kable(laporan)
| 1 |
Andi Saputra |
Seminar Data Science |
2025-01-10 |
Hadir |
08:05 |
| 2 |
Budi Santoso |
Seminar Kewirausahaan |
2025-01-15 |
Hadir |
09:10 |
| 3 |
Citra Lestari |
Seminar Teknologi AI |
2025-01-20 |
Hadir |
10:00 |