java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query

Monday, October 5, 2026

integrasi basis data rmik

🗄️🩺
SERI KULIAH BASIS DATA · ARTIKEL 16 DARI 16

Dari Rancangan sampai Query: Merangkai Semua Konsep Basis Data untuk RMIK

Satu alur utuh dari kebutuhan informasi, rancangan tabel, DDL, DML, sampai JOIN yang menjawab pertanyaan manajemen rumah sakit.

#IntegrasiBasisData #DDL & DML #JOIN #RMIK
⏱️ 9 menit
Estimasi baca
📘 Dasar
Level
📅 2026
Tahun

Bayangkan kamu bekerja di unit rekam medis. Pagi-pagi, kepala rumah sakit bertanya: "Berapa pasien diabetes yang berkunjung bulan ini, dan dokter mana yang paling banyak menanganinya?" Kalau datamu tersebar di buku register dan beberapa file Excel, kamu butuh berjam-jam. Kalau kamu paham basis data untuk rekam medis, jawabannya keluar dalam hitungan detik lewat satu query.

Ini artikel penutup seri "Kuliah Basis Data" (Artikel 16 dari 16). Kita tidak belajar hal baru, tapi merangkai semua yang sudah kamu pelajari menjadi satu alur kerja nyata. Artikel ini untuk kamu, mahasiswa D3 RMIK, yang ingin melihat gambaran besarnya.

🎯 Capaian pertemuan (Sub-CPMK T4): kamu mampu menjelaskan integrasi konsep basis data dalam pengelolaan data kesehatan, dan menghubungkan struktur tabel, SQL, serta kebutuhan informasi RMIK.

Gambaran Besar: Basis Data untuk Rekam Medis Itu Satu Alur

Analogi gampangnya begini: membangun basis data itu seperti membangun rumah sakit. Ada denah (rancangan), ada pembangunan gedung dan ruangan (DDL), ada pasien dan tenaga kesehatan yang mulai beraktivitas (DML), dan ada laporan yang disusun manajemen (SELECT). Dan DBMS adalah "pengelola gedung" yang menjaga semuanya tetap rapi, aman, dan bisa diakses banyak orang sekaligus.

📐 FORMULA ALUR INTEGRASI
Kebutuhan Informasi → ERD → Normalisasi → DDL → DML → SELECT + JOIN → Informasi
Setiap tahap bergantung pada tahap sebelumnya. Rancangan buruk di awal akan terasa menyakitkan di query terakhir.
⚡ Insight Penting
Query SQL hanyalah ujung dari rantai panjang. Menurut Elmasri dan Navathe (2016), kualitas basis data ditentukan sejak tahap analisis kebutuhan dan perancangan, bukan saat menulis perintah SQL.

Merancang Basis Data untuk Rekam Medis dari Kebutuhan Informasi

Jangan langsung membuka DBMS. Mulailah dari pertanyaan: informasi apa yang dibutuhkan? Di rekam medis, kebutuhan itu biasanya seputar siapa pasiennya, kapan berkunjung, apa diagnosisnya, tindakan apa yang diberikan, dan siapa tenaga kesehatan yang menangani. Dari situ lahirlah entitas dan relasi.

[PASIEN] 1 ──── N [KUNJUNGAN] N ──── 1 [NAKES]
                     │
        ┌────────────┴────────────┐
        N                         N
 [KUNJUNGAN_DIAGNOSIS]     [KUNJUNGAN_TINDAKAN]
        │ N                       │ N
        1                         1
   [DIAGNOSIS]                [TINDAKAN]

Satu pasien bisa berkunjung berkali-kali. Satu kunjungan bisa punya banyak diagnosis dan tindakan, sehingga relasi N:M dipecah lewat tabel penghubung (hasil normalisasi).

Langkah merancang, urut dan praktis

1
Tulis daftar pertanyaan informasi. Contoh: "Berapa kunjungan per poli per bulan?" Pertanyaan ini jadi patokan tabelmu.
2
Identifikasi entitas dan atribut. Pasien, kunjungan, diagnosis, tindakan, nakes. Tentukan atribut tiap entitas.
3
Tentukan primary key dan relasi. Contoh: no_rm unik untuk pasien, id_kunjungan unik untuk tiap kunjungan.
4
Normalisasi. Pisahkan data berulang (misalnya nama diagnosis) ke tabel sendiri supaya tidak terjadi anomali data.
💡 Tips
Jangan simpan umur pasien sebagai kolom. Simpan tgl_lahir, lalu hitung umur saat query. Umur berubah tiap tahun, tanggal lahir tidak.

DDL dan DML: Mewujudkan Basis Data untuk Rekam Medis di DBMS

DDL (Data Definition Language) itu seperti tukang yang membangun ruangan: CREATE, ALTER, DROP. DML (Data Manipulation Language) itu seperti petugas pendaftaran yang mengisi dan memperbarui data: INSERT, UPDATE, DELETE, SELECT. Contoh berikut memakai sintaks MySQL.

ddl_rekam_medis.sql
-- DDL: membangun struktur
CREATE TABLE pasien (
  no_rm      VARCHAR(10) PRIMARY KEY,
  nama       VARCHAR(100) NOT NULL,
  tgl_lahir  DATE NOT NULL,
  jenis_kel  CHAR(1) NOT NULL
);

CREATE TABLE nakes (
  id_nakes   INT PRIMARY KEY,
  nama_nakes VARCHAR(100) NOT NULL,
  profesi    VARCHAR(50)
);

CREATE TABLE kunjungan (
  id_kunjungan INT PRIMARY KEY AUTO_INCREMENT,
  no_rm        VARCHAR(10) NOT NULL,
  id_nakes     INT NOT NULL,
  tgl_kunjungan DATE NOT NULL,
  poli         VARCHAR(50),
  FOREIGN KEY (no_rm)    REFERENCES pasien(no_rm),
  FOREIGN KEY (id_nakes) REFERENCES nakes(id_nakes)
);

CREATE TABLE diagnosis (
  kode_icd   VARCHAR(10) PRIMARY KEY,
  nama_diagnosis VARCHAR(150) NOT NULL
);

CREATE TABLE kunjungan_diagnosis (
  id_kunjungan INT,
  kode_icd     VARCHAR(10),
  PRIMARY KEY (id_kunjungan, kode_icd),
  FOREIGN KEY (id_kunjungan) REFERENCES kunjungan(id_kunjungan),
  FOREIGN KEY (kode_icd)     REFERENCES diagnosis(kode_icd)
);
dml_rekam_medis.sql
-- DML: mengisi dan mengubah data
INSERT INTO pasien VALUES ('RM0001','Siti Rahma','1990-04-12','P');
INSERT INTO nakes  VALUES (1,'dr. Budi Santoso','Dokter');
INSERT INTO diagnosis VALUES ('E11','Diabetes melitus tipe 2');
INSERT INTO kunjungan (no_rm,id_nakes,tgl_kunjungan,poli)
  VALUES ('RM0001',1,'2026-10-05','Poli Penyakit Dalam');
INSERT INTO kunjungan_diagnosis VALUES (1,'E11');

UPDATE pasien SET nama = 'Siti Rahmawati' WHERE no_rm = 'RM0001';
⚠️ Perhatian
Selalu pakai WHERE saat UPDATE atau DELETE. Tanpa WHERE, seluruh baris di tabel ikut berubah atau terhapus. Dalam rekam medis, itu bisa jadi bencana. Pembatasan hak akses oleh DBMS dan pencadangan rutin wajib jadi kebiasaan.

JOIN dan SELECT: Basis Data untuk Rekam Medis Menjawab Pertanyaan

Inilah momen payoff-nya. Data sudah tersimpan rapi di banyak tabel, dan JOIN menyatukannya kembali seperti menyatukan kepingan puzzle lewat kunci yang sama. Mari jawab pertanyaan kepala rumah sakit tadi.

laporan_diagnosis.sql
-- Pasien diabetes bulan Oktober 2026 per dokter
SELECT n.nama_nakes,
       COUNT(DISTINCT k.no_rm) AS jumlah_pasien
FROM kunjungan k
JOIN kunjungan_diagnosis kd ON kd.id_kunjungan = k.id_kunjungan
JOIN diagnosis d            ON d.kode_icd = kd.kode_icd
JOIN nakes n                ON n.id_nakes = k.id_nakes
WHERE d.kode_icd LIKE 'E11%'
  AND k.tgl_kunjungan BETWEEN '2026-10-01' AND '2026-10-31'
GROUP BY n.nama_nakes
ORDER BY jumlah_pasien DESC;
🔥 Fakta Menarik
Kode diagnosis seperti E11 berasal dari ICD-10 yang diterbitkan WHO. Berkat standar kode ini, data diagnosis dari rumah sakit berbeda bisa dibandingkan, dan query di atas mudah dijalankan karena diagnosis disimpan sebagai kode, bukan teks bebas.
🔍 ANALYSIS BOX: Mengapa Query Itu Berhasil?
Query tadi hanya bisa ditulis karena tiga hal berantai: (1) kebutuhan informasi sudah jelas sehingga tabel nakes dan diagnosis ada; (2) struktur memakai foreign key sehingga tabel bisa dihubungkan; (3) SQL memakai JOIN, WHERE, dan GROUP BY untuk menyaring serta merangkum. Kalau satu mata rantai putus, misalnya diagnosis ditulis teks bebas "DM", "kencing manis", "diabetes", hasil hitungan akan salah.

Peta cepat: konsep, fungsi, dan contoh RMIK

KonsepFungsiContoh di RMIK
ERDDenah entitas dan relasiPasien 1:N kunjungan
NormalisasiMengurangi redundansiTabel diagnosis terpisah
DDLMembuat dan mengubah strukturCREATE TABLE pasien
DMLMengelola isi dataINSERT kunjungan baru
JOINMenyatukan tabelLaporan diagnosis per dokter

Peran DBMS dan Etika dalam Basis Data untuk Rekam Medis

DBMS bukan sekadar tempat menyimpan data. Ia menegakkan integritas (foreign key dan constraint), mengatur hak akses per pengguna, mengelola transaksi, serta menyediakan pencadangan. Ini penting karena rekam medis adalah data pribadi yang sensitif. Rekam medis di Indonesia diatur dalam Permenkes No. 24 Tahun 2022 tentang Rekam Medis, dan pelindungan data pribadi diatur dalam UU No. 27 Tahun 2022. Sebagai calon perekam medis, kamu ikut bertanggung jawab menjaga kerahasiaannya.

Latihan mandiri: tambahkan tabel tindakan dan kunjungan_tindakan, lalu tulis query untuk menampilkan tindakan terbanyak di setiap poli bulan ini. Kalau berhasil, kamu sudah menguasai seluruh alur di artikel ini.

🏁 Kesimpulan

Basis data untuk rekam medis adalah satu rangkaian: kebutuhan informasi menentukan ERD, ERD dinormalisasi lalu dibangun dengan DDL, data dikelola dengan DML, dan informasi diambil lewat SELECT serta JOIN, semuanya dijaga oleh DBMS.

Kamu sudah sampai di akhir seri. Dengan fondasi ini, kamu siap menghadapi praktikum dan dunia kerja RMIK yang makin digital.

Mana konsep yang paling menantang buatmu? Tulis di kolom komentar, dan bagikan artikel ini ke temanmu!

💬 Tulis Komentar 🔗 Bagikan
📚 Daftar Referensi
  1. Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.
  2. Silberschatz, A., Korth, H. F., & Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill.
  3. Peraturan Menteri Kesehatan Republik Indonesia Nomor 24 Tahun 2022 tentang Rekam Medis.
  4. Undang-Undang Republik Indonesia Nomor 27 Tahun 2022 tentang Pelindungan Data Pribadi.
  5. World Health Organization. International Statistical Classification of Diseases and Related Health Problems, 10th Revision (ICD-10).
  6. Oracle. MySQL 8.0 Reference Manual. https://dev.mysql.com/doc/refman/8.0/en/
#BasisData #Database #RMIK #IntegrasiBasisData #RMIK #SQL
Label: Basis Data untuk Rekam Medis Integrasi DDL DML JOIN
📚
ARTIKEL UTAMA

Daftar Isi Kuliah Basis Data

Artikel ini bagian dari seri "Kuliah Basis Data" (Artikel 16 dari 16). Lihat seluruh materinya di sini.

Buka Daftar Isi →
ARTIKEL SELANJUTNYA →
🎉 Ini artikel terakhir, selamat!

join select sql

🔗🏥
Kuliah Basis Data · Artikel 15 dari 16
Satukan Data dengan JOIN: Menjawab Kebutuhan Informasi lewat SELECT
Cara menyambungkan tabel pasien, kunjungan, dokter, dan diagnosis menjadi satu laporan yang bisa kamu baca dan pertanggungjawabkan.
JOIN SQL INNER JOIN LEFT JOIN Rekam Medis
⏱️
9 menit
Estimasi baca
📊
Pemula–Menengah
Level
📅
2026
Tahun

Bayangkan kamu petugas rekam medis, lalu atasan meminta: "Tolong, daftar pasien hipertensi bulan ini beserta dokter yang menanganinya." Nama pasien ada di satu tabel, diagnosis di tabel lain, dokter di tabel ketiga. Menyalin manual? Itu bukan kerja cerdas, apalagi kalau datanya ribuan baris.

Di sinilah JOIN SQL jadi penyelamat. Perintah ini menyambungkan beberapa tabel menjadi satu hasil utuh dalam sekali SELECT. Artikel 15 dari 16 seri Kuliah Basis Data ini membantu kamu, mahasiswa D3 RMIK semester 3, memahami cara kerja JOIN SQL, membaca hasilnya, lalu memilih query yang tepat untuk kebutuhan informasi tertentu. Kita mulai dari pertanyaan paling mendasar: kenapa data kesehatan sengaja dipecah ke banyak tabel?

Mengapa JOIN SQL Dibutuhkan pada Data Rekam Medis?

Kalau kamu pernah melihat ruang filing atau bagian pendaftaran, kamu tahu informasi pasien tidak ditulis dalam satu lembar. Identitas ada di kartu pasien, jadwal praktik ada di buku dokter, dan kode penyakit ada di katalog ICD-10. Basis data bekerja serupa: data dipecah ke beberapa tabel agar tidak ada informasi yang tersimpan berulang (Elmasri & Navathe, 2016). Nama dokter cukup ditulis sekali di tabel dokter, bukan disalin ke ribuan baris kunjungan.

Konsekuensinya, satu pertanyaan sering membutuhkan data dari beberapa tabel sekaligus. JOIN SQL berperan seperti petugas yang mencocokkan nomor rekam medis dari satu berkas ke berkas lain. Silberschatz dkk. (2019) menjelaskan bahwa operasi join menggabungkan baris-baris berhubungan dari dua relasi menjadi satu. Satu hal penting: JOIN SQL hanya bekerja di dalam SELECT, jadi ia menampilkan gabungan data tanpa mengubah isi tabel.

Kita pakai kasus sebuah klinik pratama dengan empat tabel berikut sebagai bahan latihan sepanjang artikel:

🗂️ Struktur & data contoh klinik
pasien    (id_pasien PK, no_rm, nama)
dokter    (id_dokter PK, nama_dokter)
diagnosis (kode_icd10 PK, nama_diagnosis)
kunjungan (id_kunjungan PK, id_pasien FK, id_dokter FK,
           kode_icd10 FK, tgl_kunjungan)

pasien                          kunjungan
1 | RM-000101 | Siti Aminah     1 | 1 | 1 | I10   | 2026-09-14
2 | RM-000102 | Budi Santoso    2 | 2 | 1 | E11.9 | 2026-09-15
3 | RM-000103 | Dewi Lestari    3 | 1 | 2 | J06.9 | 2026-09-20

dokter                               diagnosis
1 | dr. Andi Pratama, Sp.PD          I10   | Hipertensi esensial (primer)
2 | dr. Rina Wulandari               E11.9 | Diabetes melitus tipe 2
                                     J06.9 | Infeksi saluran napas atas akut
🔥 Fakta Menarik
Permenkes Nomor 24 Tahun 2022 tentang Rekam Medis mewajibkan fasilitas pelayanan kesehatan menyelenggarakan rekam medis elektronik (Kemenkes RI, 2022). Artinya data pasien tersimpan terstruktur di sistem informasi, sehingga kemampuan menggabungkan dan membaca data lewat JOIN SQL makin relevan untuk kariermu.

Anatomi JOIN SQL: Kunci Penghubung dan Klausa ON

Setiap JOIN SQL punya tiga bagian: tabel mana yang digabung, jenis JOIN-nya, dan kondisi pencocokan di klausa ON. Kondisi itu hampir selalu mempertemukan primary key (PK) di satu tabel dengan foreign key (FK) di tabel lain. Pada contoh kita, id_pasien adalah PK di tabel pasien dan FK di tabel kunjungan. Tanpa kunci penghubung, database tidak tahu baris mana yang berpasangan.

📐 Rumus Dasar JOIN SQL
SELECT  kolom_yang_dibutuhkan
FROM    tabel_A
[jenis] JOIN tabel_B
        ON tabel_A.kunci = tabel_B.kunci;
Baca ON sebagai: "cocokkan baris A dengan baris B kalau nilai kuncinya sama."

Contoh pertama: tampilkan nama pasien beserta tanggal kunjungan dan kode diagnosisnya.

SQL
SELECT p.nama, k.tgl_kunjungan, k.kode_icd10
FROM pasien AS p
INNER JOIN kunjungan AS k
        ON p.id_pasien = k.id_pasien;
Hasil
nama          | tgl_kunjungan | kode_icd10
--------------+---------------+-----------
Siti Aminah   | 2026-09-14    | I10
Budi Santoso  | 2026-09-15    | E11.9
Siti Aminah   | 2026-09-20    | J06.9

Perhatikan dua hal. Siti muncul dua kali karena memang dua kali berkunjung. Dewi tidak muncul sama sekali karena belum punya kunjungan. Itulah perilaku dasar JOIN SQL jenis INNER JOIN: hanya baris yang berpasangan yang ikut tampil.

⚡ Insight Penting
Satu baris hasil JOIN SQL mewakili satu pasangan data yang cocok. Jumlah baris hasil mengikuti sisi yang paling "banyak" (kunjungan), bukan jumlah pasien. Pegang prinsip ini saat kamu menganalisis hasil SELECT.
💡 Tips
Pakai alias (pasien AS p) agar query lebih ringkas. Awali setiap kolom dengan alias tabelnya, misalnya p.nama, supaya jelas asal datanya dan tidak ambigu ketika dua tabel punya kolom bernama sama.

INNER JOIN vs LEFT JOIN: Dua Jenis JOIN SQL yang Paling Sering Dipakai

Analogi gampangnya: INNER JOIN seperti daftar hadir yang hanya mencatat orang yang datang. LEFT JOIN seperti daftar undangan lengkap, dengan kolom "hadir" yang dibiarkan kosong untuk tamu yang tidak datang. Dokumentasi resmi MySQL dan PostgreSQL sama-sama menjelaskan kedua jenis ini sebagai bagian inti sintaks JOIN (Oracle, 2026; PostgreSQL Global Development Group, 2026).

Aspek INNER JOIN LEFT JOIN
Baris yang tampilHanya yang berpasangan di kedua tabelSemua baris tabel kiri, plus pasangannya bila ada
Data tanpa pasanganHilang dari hasilTetap tampil dengan nilai NULL
Contoh di RMIKLaporan kunjungan lengkap dengan nama dokterDaftar semua pasien terdaftar, termasuk yang belum pernah berkunjung
Risiko salah bacaMengira data tanpa pasangan tidak adaMengira NULL berarti data rusak

Sekarang kita tampilkan semua pasien, termasuk yang belum pernah berkunjung:

SQL
SELECT p.nama, k.tgl_kunjungan
FROM pasien AS p
LEFT JOIN kunjungan AS k
       ON p.id_pasien = k.id_pasien;
Hasil
nama          | tgl_kunjungan
--------------+--------------
Siti Aminah   | 2026-09-14
Siti Aminah   | 2026-09-20
Budi Santoso  | 2026-09-15
Dewi Lestari  | NULL
🔍 Analisis: Kapan Memilih Jenis JOIN SQL yang Mana?
Tanyakan satu hal pada dirimu: "Apakah data tanpa pasangan penting untuk laporan ini?"
  • Tidak penting (hanya ingin kunjungan yang tercatat) → INNER JOIN.
  • Penting (ingin tahu siapa yang belum punya kunjungan) → LEFT JOIN, lalu tambahkan WHERE k.id_kunjungan IS NULL untuk menyaring pasien tanpa kunjungan.
Pada data contoh, filter tersebut hanya menyisakan Dewi Lestari. Teknik ini berguna untuk memeriksa kelengkapan data atau mencari pasien yang perlu ditindaklanjuti.
⚠️ Perhatian
Jangan lupa kondisi ON. Tanpa pencocokan kunci, setiap baris pasien dipasangkan dengan semua baris kunjungan: 3 pasien × 3 kunjungan = 9 baris, dan sebagian besar pasangan itu palsu. Dalam laporan rekam medis, hasil seperti ini menyesatkan.

Langkah Menyusun Query JOIN SQL dari Kebutuhan Informasi

Kesalahan paling umum mahasiswa adalah langsung mengetik query sebelum jelas apa yang ditanyakan. Balik urutannya: mulai dari kebutuhan informasi, baru ke sintaks. Kasus kita: "Tampilkan nama pasien, nama dokter, dan nama diagnosis untuk kunjungan pasien hipertensi (I10) pada September 2026, urut berdasarkan tanggal."

1
Rumuskan kebutuhan jadi kolom hasil. Dari kalimat tadi, hasil akhirnya berisi: nama pasien, nama dokter, nama diagnosis, dan tanggal kunjungan.
2
Petakan tiap kolom ke tabel asalnya. Nama pasien dari pasien, nama dokter dari dokter, diagnosis dari diagnosis, tanggal dari kunjungan.
3
Telusuri jalur kunci. Tabel kunjungan memegang FK ke tiga tabel lain, jadi ia menjadi pusat. Mulai dari FROM kunjungan, lalu sambungkan satu per satu.
4
Pilih jenis JOIN. Kita hanya butuh kunjungan dengan data lengkap, jadi INNER JOIN sudah tepat.
5
Tambahkan filter dan urutan, lalu uji hasilnya. Gunakan WHERE untuk kode I10 dan rentang tanggal, ORDER BY untuk urutan, lalu cocokkan hasilnya dengan data asli.
SQL
SELECT p.nama, d.nama_dokter, g.nama_diagnosis, k.tgl_kunjungan
FROM kunjungan AS k
INNER JOIN pasien    AS p ON k.id_pasien  = p.id_pasien
INNER JOIN dokter    AS d ON k.id_dokter  = d.id_dokter
INNER JOIN diagnosis AS g ON k.kode_icd10 = g.kode_icd10
WHERE k.kode_icd10 = 'I10'
  AND k.tgl_kunjungan BETWEEN '2026-09-01' AND '2026-09-30'
ORDER BY k.tgl_kunjungan;
Hasil
nama         | nama_dokter            | nama_diagnosis              | tgl_kunjungan
-------------+------------------------+-----------------------------+--------------
Siti Aminah  | dr. Andi Pratama, Sp.PD| Hipertensi esensial (primer)| 2026-09-14
💡 Tips
Bangun JOIN SQL bertahap. Jalankan dulu dengan satu JOIN, cek hasilnya, baru tambah JOIN berikutnya. Kalau ada yang janggal, kamu langsung tahu JOIN mana penyebabnya.

Menganalisis Hasil JOIN SQL Sebelum Kamu Memercayainya

Query yang berjalan tanpa error belum tentu benar. Dalam laporan morbiditas, satu baris ganda saja bisa membuat jumlah kasus membengkak. Biasakan memeriksa hasil JOIN SQL dengan empat pertanyaan ini:

✅ Analisis: Empat Cek Kewajaran Hasil
  1. Jumlah baris. Apakah sesuai perkiraanmu? Bandingkan dengan COUNT(*) di tabel sumber.
  2. Nilai NULL. Kalau memakai LEFT JOIN, NULL wajar muncul untuk data tanpa pasangan. Kalau memakai INNER JOIN, NULL patut dicurigai.
  3. Baris ganda. Satu pasien muncul berkali-kali itu wajar bila kunjungannya banyak. Kalau satu kunjungan yang sama muncul ganda, periksa kunci di klausa ON.
  4. Uji sampel. Ambil satu pasien, lalu cocokkan hasilnya secara manual dengan tabel asal.

Sekarang uji kemampuanmu. Tentukan jenis JOIN SQL untuk tiga kebutuhan informasi berikut, lalu cocokkan dengan jawabannya:

Kebutuhan informasi Pilihan query Alasan
Laporan kunjungan lengkap dengan nama dokterINNER JOINHanya data yang berpasangan yang dilaporkan
Semua pasien terdaftar beserta tanggal kunjungannyaLEFT JOIN (pasien ke kunjungan)Pasien tanpa kunjungan tetap tampil
Pasien yang belum pernah berkunjungLEFT JOIN + IS NULLMenyaring baris yang tidak punya pasangan
🏆 Kesimpulan

Kamu sekarang punya pegangan untuk menjawab kebutuhan informasi dari data yang tersebar. Poin utamanya:

  • JOIN SQL menyambungkan tabel lewat kunci penghubung (PK dan FK) di klausa ON, tanpa mengubah isi tabel.
  • INNER JOIN menampilkan data yang berpasangan, sedangkan LEFT JOIN mempertahankan semua baris tabel kiri.
  • Susun query dari kebutuhan informasi: kolom hasil, tabel asal, jalur kunci, jenis JOIN, lalu filter.
  • Selalu periksa jumlah baris, NULL, dan duplikasi sebelum memercayai hasil.

Menguasai JOIN SQL berarti kamu bisa mengubah tabel-tabel terpisah menjadi informasi yang siap dipakai untuk laporan. Pada artikel terakhir, kita akan merangkai semua konsep basis data dari rancangan sampai query.

Ceritakan di komentar: JOIN mana yang paling membingungkan buatmu, INNER atau LEFT?
📖 Daftar Referensi
  1. Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.
  2. Silberschatz, A., Korth, H. F., & Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill Education.
  3. Kementerian Kesehatan Republik Indonesia. (2022). Peraturan Menteri Kesehatan Nomor 24 Tahun 2022 tentang Rekam Medis.
  4. Oracle Corporation. (2026). MySQL 8.0 Reference Manual: JOIN Clause. https://dev.mysql.com/doc/refman/8.0/en/join.html
  5. PostgreSQL Global Development Group. (2026). PostgreSQL Documentation: Joins Between Tables. https://www.postgresql.org/docs/current/tutorial-join.html
#BasisData #Database #RMIK #JOINSQL #SELECT #QueryData
🏷️ Label: JOIN SQL untuk Kebutuhan Informasi INNER JOIN & LEFT JOIN
📚
Artikel Utama Seri
Daftar Isi Kuliah Basis Data
Artikel ini bagian dari seri Kuliah Basis Data (Artikel 15 dari 16). Lihat seluruh materi dalam satu halaman.
Buka Daftar Isi →

dml insert update delete select

🗄️✍️

Kuliah Basis Data · Artikel 14 dari 16

INSERT, UPDATE, DELETE, SELECT: Empat Jurus Mengelola Data dengan DML

Cara memasukkan, mengubah, menghapus, dan membaca data pasien dengan SQL, tanpa deg-degan.

#DML #SQL #RekamMedis #BasisData
⏱️ 9 mnt
Estimasi baca
🎓 Dasar
Level · Semester 3 D3 RMIK
📅 2026
Tahun terbit

Bayangkan kamu bertugas di bagian pendaftaran sebuah puskesmas. Pasien bernama Siti datang, tapi kamu salah mengetik tanggal lahirnya. Di antrean yang sama, pasien lain minta datanya dihapus karena merasa sudah pindah domisili. Satu perintah yang salah, dan riwayat berobat seseorang bisa berubah atau hilang begitu saja. Di sinilah DML SQL INSERT UPDATE DELETE SELECT berperan: empat perintah yang memberi kamu kendali atas isi basis data, mulai dari memasukkan, mengubah, menghapus, sampai membaca data. Artikel ini adalah bagian ke-14 dari 16 seri Kuliah Basis Data. Setelah membaca, kamu mampu menjelaskan DML dan membedakan keempat perintahnya lewat contoh data pasien. Siap? Kita mulai!

Apa Itu DML dalam SQL? Kenalan dengan Empat Jurusnya

Di artikel sebelumnya, kamu sudah belajar DDL (Data Definition Language), yaitu perintah untuk membangun struktur seperti tabel. Kalau DDL adalah membangun gedung rumah sakit lengkap dengan rak arsipnya, maka DML (Data Manipulation Language) adalah pekerjaan harian petugas: menaruh berkas baru, mengoreksi isi berkas, membuang berkas yang salah, dan mencari berkas yang dibutuhkan dokter.

📐 DEFINISI UTAMA

DML adalah kelompok perintah SQL untuk memanipulasi isi data di dalam tabel yang sudah ada: INSERT menambah, UPDATE mengubah, DELETE menghapus, dan SELECT membaca data (Silberschatz dkk., 2019).

Kenapa mahasiswa RMIK wajib paham ini? Karena hampir semua pekerjaanmu nanti bersinggungan dengan data. Pendaftaran pasien memakai INSERT. Koreksi kesalahan penulisan identitas memakai UPDATE. Pembersihan data ganda memakai DELETE. Laporan kunjungan bulanan, daftar penyakit terbanyak, sampai pencarian berkas pasien lama semuanya bertumpu pada SELECT. Aplikasi SIMRS yang kamu pakai saat magang pun diam-diam menjalankan keempat perintah ini setiap kali kamu menekan tombol simpan, ubah, hapus, atau cari.

Supaya contohnya konsisten, sepanjang artikel ini kita memakai dua tabel sederhana milik klinik fiktif: pasien (identitas) dan kunjungan (riwayat berobat). Kolom no_rm adalah nomor rekam medis yang menghubungkan keduanya.

Perintah Fungsi Analogi Contoh di RMIK
INSERTMenambah baris baruMenaruh map pasien baru di rakRegistrasi pasien baru
UPDATEMengubah isi dataMencoret dan menulis ulang di berkasKoreksi alamat atau diagnosis
DELETEMenghapus barisMengeluarkan map dari rakMembuang data input ganda
SELECTMembaca atau menampilkan dataMeminta petugas mencarikan berkasDaftar kunjungan hari ini
⚡ Insight Penting
Sebagian buku menaruh SELECT di kelompok tersendiri bernama DQL (Data Query Language). Namun buku teks basis data klasik memasukkan bahasa query ke dalam DML karena SELECT juga bekerja pada data (Elmasri & Navathe, 2016). Di mata kuliah ini, kita pakai pandangan itu: keempatnya satu keluarga DML.

INSERT dan SELECT: Dua Jurus Pertama dalam DML SQL

Mulai dari yang paling sering kamu pakai. Setiap kali pasien baru mendaftar, sistem menjalankan INSERT. Setiap kali petugas membuka riwayat berobat, sistem menjalankan SELECT. Dua perintah ini adalah roti dan mentega pekerjaan RMIK.

Langkah menambah dan membaca data pasien

1
Pastikan tabelnya ada. Jalankan struktur dari DDL dulu. Kalau tabel belum ada, INSERT pasti gagal.
📄 struktur_tabel.sql
CREATE TABLE pasien (
  no_rm         VARCHAR(10) PRIMARY KEY,
  nama_pasien   VARCHAR(100) NOT NULL,
  tgl_lahir     DATE,
  jenis_kelamin CHAR(1),
  alamat        VARCHAR(150)
);

CREATE TABLE kunjungan (
  id_kunjungan  INT PRIMARY KEY AUTO_INCREMENT,
  no_rm         VARCHAR(10),
  tgl_kunjungan DATE,
  poli          VARCHAR(50),
  diagnosis     VARCHAR(100),
  kode_icd10    VARCHAR(10),
  FOREIGN KEY (no_rm) REFERENCES pasien(no_rm)
);
2
Masukkan data dengan INSERT. Tulis nama kolom secara eksplisit supaya urutan nilainya tidak tertukar.
📄 insert_pasien.sql
INSERT INTO pasien (no_rm, nama_pasien, tgl_lahir, jenis_kelamin, alamat)
VALUES ('RM-0001', 'Siti Aminah', '1990-05-14', 'P', 'Banjarbaru');

INSERT INTO kunjungan (no_rm, tgl_kunjungan, poli, diagnosis, kode_icd10)
VALUES
  ('RM-0001', '2026-10-05', 'Poli Umum', 'Hipertensi esensial', 'I10'),
  ('RM-0001', '2026-10-12', 'Poli Umum', 'Nasofaringitis akut', 'J00');
3
Baca hasilnya dengan SELECT. Gunakan WHERE untuk menyaring dan ORDER BY untuk mengurutkan. Hindari SELECT * kalau kamu hanya butuh beberapa kolom.
📄 select_kunjungan.sql
SELECT no_rm, tgl_kunjungan, poli, diagnosis, kode_icd10
FROM kunjungan
WHERE no_rm = 'RM-0001'
ORDER BY tgl_kunjungan DESC;

Perhatikan juga bahwa SELECT bersifat hanya-baca. Perintah ini tidak mengubah satu pun isi tabel, jadi aman kamu jalankan berkali-kali saat berlatih. Inilah alasan para praktisi menjadikannya langkah pertama sebelum menyentuh data dengan perintah lain. Kalau ragu, jalankan SELECT dulu, lihat hasilnya, baru putuskan langkah berikutnya.

Klausa WHERE adalah saringanmu. Kamu bisa memakai operator perbandingan seperti =, >, dan <, atau LIKE untuk mencari pola nama, misalnya semua pasien yang namanya diawali "Siti". Kamu juga bisa menggabungkan beberapa syarat dengan AND dan OR. Contohnya, tampilkan kunjungan Poli Umum pada bulan Oktober 2026 saja. Semakin tepat syaratmu, semakin cepat petugas menemukan berkas yang dicari, dan semakin kecil pula peluang salah baca data.

💡 Tips
Biasakan menulis daftar kolom di INSERT. Kalau suatu hari tabel pasien ditambah kolom baru lewat DDL, perintah INSERT tanpa daftar kolom langsung error, sedangkan yang menulis kolom eksplisit tetap aman.

UPDATE dan DELETE: Mengubah dan Menghapus Data Tanpa Panik

Dua perintah ini punya kekuatan besar, jadi butuh kehati-hatian ekstra. UPDATE mengubah nilai yang sudah ada, sedangkan DELETE membuang baris secara utuh. Keduanya bekerja pada baris yang cocok dengan syarat WHERE. Tanpa WHERE, mereka bekerja pada seluruh baris di tabel. Bayangkan satu klinik dengan 20.000 pasien yang tiba-tiba semuanya beralamat sama. Mengerikan, bukan?

Ada satu jebakan lagi yang sering membuat mahasiswa bingung saat praktikum. Kalau kamu mencoba menghapus baris di tabel pasien padahal pasien itu masih punya riwayat di tabel kunjungan, DBMS akan menolak dan menampilkan pesan error karena ada foreign key yang menghubungkan keduanya. Jangan kesal dulu. Penolakan itu justru fitur pelindung. DBMS menjaga supaya tidak ada data kunjungan yang "yatim", yaitu menunjuk ke pasien yang sudah tidak ada. Urutan yang benar: hapus atau nonaktifkan data anak (kunjungan) terlebih dulu, baru data induknya (pasien).

📄 update_delete.sql
-- Mengoreksi alamat pasien yang pindah domisili
UPDATE pasien
SET alamat = 'Martapura'
WHERE no_rm = 'RM-0001';

-- Menghapus data kunjungan yang terinput ganda
DELETE FROM kunjungan
WHERE id_kunjungan = 2;
⚠️ Perhatian
Jangan pernah menjalankan UPDATE atau DELETE tanpa WHERE di data sungguhan. Ingat juga bahwa rekam medis adalah dokumen yang harus dijaga keakuratan, keamanan, dan kerahasiaannya sebagaimana diatur dalam Permenkes No. 24 Tahun 2022 tentang Rekam Medis (Kemenkes RI, 2022). Penghapusan data pasien di sistem nyata tidak boleh asal klik.
🔍 Analisis: Hapus Sungguhan atau Tandai Saja?
Hard delete (DELETE)
  • Baris hilang permanen dari tabel
  • Cocok untuk data uji coba atau input ganda
  • Berisiko memutus riwayat yang harus tersimpan
Soft delete (UPDATE status)
  • Baris tetap ada, hanya diberi status nonaktif
  • Riwayat dan jejak data terjaga
  • Pilihan yang lebih aman untuk data kesehatan

Caranya: tambah kolom status_aktif lewat DDL, lalu jalankan UPDATE pasien SET status_aktif = 0 WHERE no_rm = 'RM-0001';. Dengan begitu, SELECT bisa menyaring data aktif tanpa membuang apa pun.

Praktik Aman DML SQL INSERT UPDATE DELETE SELECT untuk Data Kesehatan

Di dunia nyata, kesalahan DML hampir selalu berasal dari kurang teliti, bukan kurang pintar. Lupa WHERE, salah mengetik nomor rekam medis, atau menjalankan perintah di database yang keliru adalah tiga penyebab paling umum. Kabar baiknya, semuanya bisa dicegah dengan kebiasaan sederhana. Anggap saja seperti petugas farmasi yang selalu membaca ulang nama obat sebelum menyerahkannya kepada pasien: sedikit lebih lama, jauh lebih aman.

Kebiasaan kecil bisa menyelamatkan kamu dari kesalahan besar. Ikuti alur lima langkah ini setiap kali akan mengubah atau menghapus data:

1
Cek dulu dengan SELECT. Tulis SELECT * FROM kunjungan WHERE id_kunjungan = 2; dan pastikan baris yang muncul memang yang kamu maksud.
2
Ubah SELECT menjadi UPDATE atau DELETE. Syarat WHERE yang sama langsung kamu salin, jadi tidak ada yang terlupa.
3
Buka transaksi. Jalankan START TRANSACTION; sebelum perintah perubahan, supaya hasilnya bisa dibatalkan.
4
Verifikasi hasil. Jalankan SELECT lagi. Kalau sesuai, ketik COMMIT;. Kalau meleset, ketik ROLLBACK;.
5
Catat perubahan. Tulis alasan, waktu, dan siapa yang mengubah. Di dunia rekam medis, jejak perubahan adalah bagian dari akuntabilitas.
📄 alur_aman.sql
START TRANSACTION;

UPDATE kunjungan
SET diagnosis = 'Diabetes melitus tipe 2', kode_icd10 = 'E11.9'
WHERE id_kunjungan = 1;

SELECT id_kunjungan, diagnosis, kode_icd10
FROM kunjungan
WHERE id_kunjungan = 1;

-- Jika sudah benar:
COMMIT;
-- Jika salah:
-- ROLLBACK;
🔥 Fakta Menarik
Bahasa SQL lahir di IBM pada awal 1970-an dengan nama awal SEQUEL, dan baru distandardisasi ANSI pada pertengahan 1980-an (Date, 2004). Para pengembang sering menyebut empat perintah DML sebagai CRUD: Create, Read, Update, Delete. Jadi kalau kamu paham DML, kamu sebenarnya sudah paham fondasi hampir semua aplikasi data.
💡 Tips Praktikum
Latihan di database uji coba, bukan database klinik sungguhan. Banyak aplikasi mengaktifkan mode autocommit secara bawaan, sehingga perubahan langsung permanen. Karena itu, kebiasaan membuka transaksi lebih dulu sangat berguna. Cek perilaku DBMS yang kamu pakai di dokumentasi resminya (MySQL, 2024).

Kesimpulan: Empat Jurus, Satu Kebiasaan Hati-Hati

Kamu sudah mengenal DML SQL INSERT UPDATE DELETE SELECT sebagai empat perintah untuk mengelola isi data. INSERT menambah baris, UPDATE mengubah nilai, DELETE membuang baris, dan SELECT membaca data. Bedanya dengan DDL jelas: DDL membangun struktur, DML mengelola isinya.

Pegangan terpentingnya sederhana: selalu pakai WHERE pada UPDATE dan DELETE, cek dengan SELECT sebelum mengubah, dan pakai transaksi. Untuk data kesehatan, pertimbangkan soft delete agar riwayat pasien tetap terjaga.

Pernah salah menghapus data waktu praktikum? Ceritakan di kolom komentar, siapa tahu kisahmu menyelamatkan teman lain. Kalau artikel ini membantu, bagikan ke teman satu angkatan ya!

💬 Tulis Komentar 🚀 Bagikan Artikel
#BasisData #Database #RMIK #DML #SQL #InsertUpdateDelete
🏷️ Label: DML SQL INSERT UPDATE DELETE SELECT Kuliah Basis Data · Artikel 14 dari 16

Daftar Referensi

  1. Date, C. J. (2004). An Introduction to Database Systems (8th ed.). Addison-Wesley.
  2. Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.
  3. Kementerian Kesehatan Republik Indonesia. (2022). Peraturan Menteri Kesehatan Nomor 24 Tahun 2022 tentang Rekam Medis.
  4. MySQL. (2024). MySQL 8.0 Reference Manual. Oracle Corporation. https://dev.mysql.com/doc/refman/8.0/en/
  5. Silberschatz, A., Korth, H. F., & Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill.
📚
ARTIKEL UTAMA

Daftar Isi Kuliah Basis Data

Artikel ini bagian dari seri 16 pertemuan. Lihat peta lengkap materinya di sini.

Buka Daftar Isi →

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux