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

Wednesday, April 1, 2026

SQL DML

BASIS DATA SQL DML REKAM MEDIS DIPLOMA 3 RMIK

SQL — DML Dasar: INSERT, SELECT, UPDATE, DELETE & Klausa WHERE, ORDER BY
dalam Skenario Data Pasien & Kunjungan Rekam Medis

Kalau kamu pikir SQL itu susah — tunggu sampai kamu tahu betapa powerful-nya empat perintah ini buat mengelola data pasien di rumah sakit. Serius, ini game changer.

4
Perintah DML Core
2
Klausa Penting
10+
Contoh Query
1
Studi Kasus Nyata

Bayangkan kamu lagi kerja sebagai petugas rekam medis di sebuah rumah sakit. Di depan kamu ada ratusan folder fisik pasien, tumpukan kertas kunjungan, dan petugas lain yang sudah antre minta data. Kaos, kan? Nah, itulah kenapa SQL DML (Data Manipulation Language) — khususnya perintah INSERT, SELECT, UPDATE, dan DELETE — menjadi tulang punggung sistem informasi rekam medis modern.

Artikel ini bukan sekadar teori kering. Kamu akan belajar cara kerja SQL DML dasar lewat skenario nyata: mengelola data pasien dan kunjungan rekam medis. Setiap query punya konteks, setiap perintah punya "cerita". Siap? Mari kita mulai.

💡
FAKTA MENARIK

Menurut Connolly & Begg (2015) dalam Database Systems: A Practical Approach to Design, Implementation, and Management, DML adalah komponen SQL yang paling sering digunakan dalam aplikasi sehari-hari — lebih dari 80% operasi database adalah operasi DML, bukan DDL. Artinya, skill ini yang paling "laku" di dunia kerja! [1]

🗄️ Apa Itu SQL DML dan Kenapa Penting di RMIK?

SQL (Structured Query Language) terbagi jadi beberapa sublanguage. DDL untuk bikin struktur tabel, DCL untuk hak akses, dan DML untuk manipulasi data. Dalam konteks rekam medis, DML adalah "tangan" yang menyentuh data pasien setiap hari.

📊 Empat Pilar DML dalam Rekam Medis
INSERT
Mendaftarkan pasien baru
🔍
SELECT
Mencari data kunjungan
✏️
UPDATE
Memperbarui diagnosa
🗑️
DELETE
Menghapus data duplikat

Menurut Silberschatz, Korth, & Sudarshan (2020) dalam Database System Concepts (7th ed.), DML memungkinkan pengguna untuk mengakses dan memanipulasi data sebagaimana yang telah diorganisir oleh model data yang berlaku. [2] Dalam sistem rekam medis, ini berarti kamu bisa dengan presisi mengelola ribuan rekaman pasien tanpa takut data kacau.

🏥 Skenario: Database Rekam Medis Puskesmas Harapan

Sepanjang artikel ini, kita akan pakai skenario Puskesmas Harapan yang punya dua tabel utama. Anggap kamu adalah petugas IT rekam medis yang baru onboarding. Database-nya sudah ada, tinggal kamu yang pegang kendali query-nya!

📋 Tabel 1: pasien
Kolom Tipe Data Constraint Keterangan
no_rm VARCHAR(10) PRIMARY KEY Nomor rekam medis unik
nama_pasien VARCHAR(100) NOT NULL Nama lengkap pasien
tanggal_lahir DATE Format YYYY-MM-DD
jenis_kelamin ENUM('L','P') L = Laki-laki, P = Perempuan
alamat TEXT Alamat lengkap domisili
📋 Tabel 2: kunjungan
Kolom Tipe Data Constraint Keterangan
id_kunjungan INT AUTO_INCREMENT PRIMARY KEY ID otomatis
no_rm VARCHAR(10) FOREIGN KEY Referensi ke tabel pasien
tanggal_kunjungan DATE NOT NULL Tanggal datang
keluhan TEXT Keluhan utama pasien
diagnosa VARCHAR(200) Diagnosa dokter (ICD-10)

➕ INSERT: Mendaftarkan Pasien Baru ke Sistem

Perintah INSERT ibarat formulir pendaftaran pasien yang langsung masuk ke database. Saat pasien baru datang ke loket, petugas TPPRJ (Tempat Penerimaan Pasien Rawat Jalan) harus memasukkan data ke sistem. Inilah momennya INSERT bekerja.

📐 Sintaks Dasar INSERT
INSERT INTO nama_tabel (kolom1, kolom2, ...)
VALUES (nilai1, nilai2, ...);
📌 Skenario: Pasien Baru Bernama Budi Santoso Datang Berobat
1
Masukkan data pasien ke tabel pasien
INSERT INTO pasien (no_rm, nama_pasien, tanggal_lahir, jenis_kelamin, alamat)
VALUES ('RM-2024-001', 'Budi Santoso', '1990-05-15', 'L', 'Jl. Merdeka No. 12, Banjarmasin');
2
Catat kunjungan pertamanya di tabel kunjungan
INSERT INTO kunjungan (no_rm, tanggal_kunjungan, keluhan, diagnosa)
VALUES ('RM-2024-001', '2024-03-15', 'Batuk dan demam 3 hari', 'J06.9 - ISPA');
3
Bonus: INSERT banyak data sekaligus (Multi-Row INSERT)
INSERT INTO pasien (no_rm, nama_pasien, tanggal_lahir, jenis_kelamin, alamat)
VALUES
  ('RM-2024-002', 'Siti Rahayu', '1985-11-20', 'P', 'Jl. Ahmad Yani Km. 5'),
  ('RM-2024-003', 'Ahmad Fauzi', '2001-07-30', 'L', 'Jl. Lambung Mangkurat No. 3');
TIP PRAKTIS

Selalu sertakan nama kolom saat INSERT, meski kamu mengisi semua kolom. Kenapa? Karena kalau suatu hari struktur tabelnya berubah (kolom ditambah), query kamu tetap aman dan tidak error. Ini kebiasaan yang akan kamu syukuri saat kerja di proyek besar! Best practice ini dianjurkan oleh Date (2012) dalam An Introduction to Database Systems. [3]

🔍 SELECT, WHERE & ORDER BY: Menggali Data Seperti Detektif

Perintah SELECT adalah perintah yang paling sering kamu gunakan — jauh melebihi yang lain. Kalau INSERT seperti menulis catatan, SELECT adalah membaca dan mencari catatan itu kembali. Tambahkan klausa WHERE sebagai filter spesifik dan ORDER BY untuk mengurutkan hasilnya.

📐 Sintaks Lengkap SELECT
SELECT kolom1, kolom2, ...    -- atau * untuk semua kolom
FROM   nama_tabel
WHERE  kondisi               -- opsional: filter data
ORDER BY kolom [ASC|DESC];   -- opsional: urutan tampil
📌 Beragam Skenario SELECT di Rekam Medis:
🔹 1. Tampilkan SEMUA data pasien
SELECT * FROM pasien;

⚠️ Tanda bintang (*) = ambil semua kolom. Di production, hindari ini jika tabelnya besar!

🔹 2. Cari pasien berdasarkan nomor RM (WHERE)
SELECT no_rm, nama_pasien, alamat
FROM pasien
WHERE no_rm = 'RM-2024-001';
🔹 3. Cari kunjungan pasien di bulan Maret 2024 + urutkan terbaru (WHERE + ORDER BY)
SELECT id_kunjungan, no_rm, tanggal_kunjungan, diagnosa
FROM kunjungan
WHERE tanggal_kunjungan BETWEEN '2024-03-01' AND '2024-03-31'
ORDER BY tanggal_kunjungan DESC;

💡 DESC = terbaru tampil di atas. ASC = terlama tampil di atas (default).

🔹 4. Filter pasien perempuan, urutkan nama A-Z (WHERE + ORDER BY multi-guna)
SELECT nama_pasien, tanggal_lahir, alamat
FROM pasien
WHERE jenis_kelamin = 'P'
ORDER BY nama_pasien ASC;
🔹 5. Cari kunjungan dengan diagnosis tertentu menggunakan LIKE
SELECT no_rm, tanggal_kunjungan, keluhan, diagnosa
FROM kunjungan
WHERE diagnosa LIKE '%ISPA%'
ORDER BY tanggal_kunjungan DESC;

💡 LIKE '%ISPA%' = cari yang mengandung kata "ISPA" di mana saja dalam kolom diagnosa.

🎯
INSIGHT PENTING

Klausa WHERE bisa dikombinasikan dengan operator AND, OR, dan NOT untuk membuat kondisi yang lebih kompleks. Menurut Ramakrishnan & Gehrke (2003) dalam Database Management Systems, kemampuan filter SQL inilah yang menjadikannya jauh lebih efisien dibanding pemrosesan manual — bayangkan mencari 10 dari 10.000 rekam medis dalam milidetik! [4]

✏️ UPDATE & DELETE: Merawat Akurasi Data Rekam Medis

Data rekam medis bukan sesuatu yang statis. Alamat pasien berubah, diagnosa direvisi dokter, bahkan ada data yang harus dihapus karena duplikat. Di sinilah UPDATE dan DELETE menjadi senjata andalan — tapi juga senjata yang harus dipakai dengan hati-hati!

✏️ UPDATE: Perbarui Data yang Berubah

📐 Sintaks UPDATE
UPDATE nama_tabel
SET    kolom1 = nilai_baru1,
       kolom2 = nilai_baru2
WHERE  kondisi;
🔹 Skenario: Pasien Budi Santoso pindah alamat dan nomor RM yang dicatat salah perlu dikoreksi diagnosa
-- Update alamat pasien
UPDATE pasien
SET alamat = 'Jl. Sultan Adam No. 88, Banjarmasin'
WHERE no_rm = 'RM-2024-001';
-- Revisi diagnosa kunjungan (dokter mengoreksi kode ICD)
UPDATE kunjungan
SET diagnosa = 'J11.1 - Influenza dengan pneumonia'
WHERE id_kunjungan = 1;
⚠️
PERINGATAN KRITIS!

UPDATE tanpa WHERE = bencana! Kalau kamu nulis UPDATE pasien SET alamat = 'Jakarta' tanpa klausa WHERE, semua baris di tabel pasien akan diubah alamatnya jadi Jakarta. Ini salah satu human error paling sering terjadi di database production. Selalu verifikasi kondisi WHERE sebelum eksekusi UPDATE!

🗑️ DELETE: Hapus Data dengan Penuh Tanggung Jawab

📐 Sintaks DELETE
DELETE FROM nama_tabel
WHERE       kondisi;
🔹 Skenario: Hapus kunjungan yang ternyata diinput ganda (duplikat)
-- Step 1: CEK DULU sebelum hapus
SELECT * FROM kunjungan WHERE id_kunjungan = 7;

-- Step 2: Baru hapus setelah yakin
DELETE FROM kunjungan
WHERE id_kunjungan = 7;

Pro tip: Selalu jalankan SELECT dengan kondisi yang sama dulu sebelum DELETE. Pastikan kamu hapus yang benar!

🛡️
TIPS KEAMANAN DATA REKAM MEDIS
📌 Gunakan transaksi (BEGIN/COMMIT/ROLLBACK) saat melakukan UPDATE atau DELETE massal agar bisa dibatalkan jika ada kesalahan.
📌 Terapkan soft delete — daripada benar-benar hapus, tambahkan kolom is_deleted BOOLEAN dan ubah nilainya. Di rekam medis, data pasien tidak boleh dihapus permanen tanpa prosedur resmi.
📌 Hal ini sesuai dengan Permenkes No. 269/MENKES/PER/III/2008 tentang Rekam Medis yang mewajibkan penyimpanan data rekam medis minimal 5 tahun. [5]

🔎 Referensi Cepat: Operator WHERE & ORDER BY

Ini cheat sheet yang wajib kamu tempel di dinding kamar — atau minimal disave di notesmu. Semua operator ini bisa dipakai di semua DML yang pakai WHERE.

Operator Fungsi Contoh di Rekam Medis
= Sama dengan WHERE no_rm = 'RM-001'
<> atau != Tidak sama dengan WHERE jenis_kelamin <> 'L'
BETWEEN ... AND Antara dua nilai WHERE tgl BETWEEN '2024-01-01' AND '2024-12-31'
LIKE '%..%' Pencocokan pola teks WHERE diagnosa LIKE '%diabetes%'
IN (...) Cocok salah satu dari daftar WHERE no_rm IN ('RM-001','RM-002')
IS NULL Nilai kosong/tidak terisi WHERE diagnosa IS NULL
AND / OR / NOT Gabungkan kondisi WHERE jk='P' AND umur > 40
🌟
INSIGHT DUNIA KERJA RMIK

Dalam standar HL7 FHIR (Fast Healthcare Interoperability Resources) yang menjadi acuan interoperabilitas data kesehatan global, kemampuan query SQL dasar — termasuk SELECT dengan WHERE dan ORDER BY — masih menjadi fondasi back-end sistem informasi rumah sakit. Menurut Benson & Grieve (2021) dalam Principles of Health Interoperability, petugas rekam medis yang paham SQL minimal pada level query dasar punya nilai tambah signifikan dalam era SIMRS (Sistem Informasi Manajemen Rumah Sakit) berbasis digital. [6]

📚 Referensi

  1. Connolly, T. M., & Begg, C. E. (2015). Database Systems: A Practical Approach to Design, Implementation, and Management (6th ed.). Pearson Education.
  2. Silberschatz, A., Korth, H. F., & Sudarshan, S. (2020). Database System Concepts (7th ed.). McGraw-Hill Education.
  3. Date, C. J. (2012). An Introduction to Database Systems (8th ed.). Addison-Wesley.
  4. Ramakrishnan, R., & Gehrke, J. (2003). Database Management Systems (3rd ed.). McGraw-Hill.
  5. Kementerian Kesehatan RI. (2008). Peraturan Menteri Kesehatan RI Nomor 269/MENKES/PER/III/2008 tentang Rekam Medis. Jakarta: Kemenkes RI.
  6. Benson, T., & Grieve, G. (2021). Principles of Health Interoperability: SNOMED CT, HL7 and FHIR (4th ed.). Springer.
🎓 Kesimpulan: Kamu Sudah Pegang Kuncinya!

Dalam satu artikel ini, kamu sudah mempelajari empat perintah inti SQL DML yang menjadi tulang punggung sistem rekam medis digital:

INSERT — Tambah data baru pasien dan kunjungan
SELECT — Ambil dan tampilkan data sesuai kebutuhan
UPDATE — Perbarui informasi yang berubah
DELETE — Hapus data duplikat dengan bijak

Ditambah dua klausa super penting: WHERE untuk filter presisi dan ORDER BY untuk menampilkan data secara terurut. Ini bukan teori belaka — ini keahlian yang langsung kamu pakai saat kerja di TPPRJ, coding SIMRS, atau proyek skripsi kamu nanti.

💬 Yuk Diskusi Bareng!

Artikel ini bermanfaat? Coba tantangan kecil ini: Tulis query SELECT untuk menampilkan semua kunjungan pasien perempuan di bulan Januari 2024, diurutkan berdasarkan nama pasien A-Z. Tulis jawaban kamu di kolom komentar — biar kita koreksi bareng! 🎯

📝 Tulis Komentar 🔔 Subscribe Blog 📤 Share ke Teman
#SQL #BasisData #RekamMedis #DML #RMIK #Diploma3 #SIMRS #MySQL
📋 Meta Description (155 karakter)

Pelajari SQL DML INSERT, SELECT, UPDATE, DELETE + WHERE & ORDER BY lewat skenario data pasien rekam medis. Cocok untuk mahasiswa D3 RMIK semester 4!

DBMS DDL

📚 Basis Data · RMIK Semester 4

Pengenalan DBMS & DDL:
MySQL / MariaDB untuk Pemula

CREATE DATABASE, CREATE TABLE, ALTER TABLE & DROP — semua yang kamu butuhkan untuk mulai ngulik basis data dari nol.

4
Perintah DDL Utama
10+
Contoh SQL Siap Pakai
~12 min
Waktu Baca
DBMS MySQL MariaDB DDL Basis Data RMIK

Bayangin kamu lagi kerja di rumah sakit, dan tugasmu adalah mengelola data rekam medis ribuan pasien. Tanpa sistem yang terorganisir, data bisa berantakan seperti tumpukan kertas di meja IGD yang nggak pernah beres. Nah, di sinilah DBMS (Database Management System) jadi penyelamatnya.

Sebagai mahasiswa D3 RMIK (Rekam Medis dan Informasi Kesehatan), kamu pasti akan bersentuhan langsung dengan sistem informasi rumah sakit yang mengandalkan database. Artikel ini hadir sebagai panduan pertamamu untuk memahami DBMS dan perintah-perintah DDL di MySQL/MariaDB — dari nol, santai, tapi tetap serius biar bisa dipraktikkan langsung.

💡
Fakta Menarik

Menurut DB-Engines Ranking (2024), MySQL masih menjadi DBMS paling populer di dunia selama lebih dari satu dekade, digunakan oleh platform raksasa teknologi dan berbagai sistem SIMRS (Sistem Informasi Manajemen Rumah Sakit) di Indonesia.
Sumber: db-engines.com/en/ranking, 2024

🗄️ Apa Itu DBMS? Kenalan Dulu Sebelum Ngoding

DBMS (Database Management System) adalah perangkat lunak yang dirancang untuk membuat, mengelola, mengakses, dan mengontrol data dalam sebuah basis data. Secara sederhana, DBMS itu seperti manajer gudang yang tahu persis di mana setiap barang disimpan, siapa yang boleh mengambilnya, dan bagaimana cara merapikannya.

Menurut Silberschatz, Korth, dan Sudarshan dalam Database System Concepts (7th ed., McGraw-Hill, 2019), DBMS adalah kumpulan data yang saling berhubungan beserta sekumpulan program untuk mengakses data tersebut. Tujuan utamanya adalah menyediakan cara yang nyaman dan efisien untuk menyimpan serta mengambil informasi dari database.

🔧 Fungsi Utama DBMS
1
Data Definition — Mendefinisikan struktur data (nama tabel, kolom, tipe data) melalui DDL.
2
Data Manipulation — Operasi CRUD (Create, Read, Update, Delete) melalui DML.
3
Data Security & Integrity — Melindungi data dari akses tidak sah & menjaga konsistensinya.
4
Concurrency Control — Mengatur akses data secara bersamaan oleh banyak pengguna.
5
Backup & Recovery — Memulihkan data ketika terjadi kegagalan sistem.

Ada banyak pilihan DBMS di luar sana. Berikut perbandingan singkat beberapa yang paling populer:

DBMS Jenis Keunggulan Cocok Untuk
MySQL Relasional Open source, cepat, ekosistem besar Web app, SIMRS
MariaDB Relasional Fork MySQL, lebih cepat, community-driven Web app, enterprise
PostgreSQL Relasional Fitur lengkap, ACID compliant Analitik, kompleks
SQLite Relasional Ringan, serverless, mudah Belajar, mobile app

🐬 MySQL vs MariaDB: Mana yang Lebih Oke?

MySQL pertama kali dirilis oleh MySQL AB pada tahun 1995 dan saat ini dikembangkan oleh Oracle Corporation. Sedangkan MariaDB adalah fork (cabang) dari MySQL yang dibuat oleh Michael Widenius — sang co-founder MySQL sendiri — pada 2009, setelah Oracle mengakuisisi Sun Microsystems. Nama MariaDB diambil dari nama putri Widenius, Maria (sementara MySQL dari nama putri lainnya, My).

Kabar baiknya: sintaks SQL-nya hampir identik. Jadi kalau kamu belajar DDL di MySQL, bisa langsung dipake di MariaDB. Di banyak hosting lokal Indonesia dan SIMRS, MariaDB justru lebih umum dipakai karena performanya.

🛠️
Tips Praktikum

Untuk praktikum di kampus atau laptop, kamu bisa install XAMPP (sudah include MySQL/MariaDB + phpMyAdmin) atau HeidiSQL sebagai GUI client. Kalau mau yang lebih ringan, pakai DBeaver Community Edition — gratis dan mendukung semua DBMS populer.

📐 DDL (Data Definition Language): Arsitek-nya Database

Kalau kamu kenal istilah "SQL sublanguage", maka DDL (Data Definition Language) adalah bagian dari SQL yang bertugas mendefinisikan struktur atau skema database. Ibaratnya, DDL itu adalah arsitek yang menggambar denah gedung sebelum pembangunan dimulai — bukan yang mengisi furniturnya.

Menurut Ramakrishnan & Gehrke dalam Database Management Systems (3rd ed., McGraw-Hill, 2003), DDL digunakan untuk membuat, mengubah, dan menghapus objek-objek database seperti tabel, indeks, dan view. Perintah DDL utama yang wajib kamu kuasai adalah: CREATE DATABASE, CREATE TABLE, ALTER TABLE, dan DROP.

📊 Kategori Sub-Bahasa SQL
DDL — CREATE, ALTER, DROP, TRUNCATE
DML — SELECT, INSERT, UPDATE, DELETE
DCL — GRANT, REVOKE
TCL — COMMIT, ROLLBACK, SAVEPOINT
* Di artikel ini kita fokus pada DDL. DML akan dibahas di sesi berikutnya. 😉

1️⃣ CREATE DATABASE — Bikin "Folder" Datamu

Sebelum bisa bikin tabel apapun, kamu harus punya database dulu. Anggap saja database itu seperti folder besar di Google Drive-mu khusus untuk data rekam medis. Perintahnya sederhana banget:

SQL — MySQL / MariaDB
-- Membuat database baru untuk sistem rekam medis
CREATE DATABASE rekam_medis_rs;

-- Atau gunakan IF NOT EXISTS agar tidak error jika sudah ada
CREATE DATABASE IF NOT EXISTS rekam_medis_rs
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

-- Berpindah ke database tersebut
USE rekam_medis_rs;
💬 Kenapa utf8mb4? Karena utf8mb4 mendukung semua karakter Unicode termasuk aksara khusus dan karakter extended. utf8 biasa di MySQL hanya mendukung 3 byte, jadi bisa bermasalah dengan karakter tertentu.

2️⃣ CREATE TABLE — Desain Struktur Datamu

Ini adalah perintah DDL yang paling sering kamu pakai. CREATE TABLE digunakan untuk membuat tabel baru beserta kolom-kolomnya, tipe data, dan constraint-nya. Analoginya seperti membuat formulir rekam medis — kamu tentukan dulu kolom apa saja yang perlu diisi.

SQL — Tabel Pasien Rekam Medis
CREATE TABLE pasien (
  no_rm         VARCHAR(10)   NOT NULL PRIMARY KEY,
  nama_lengkap  VARCHAR(100)  NOT NULL,
  jenis_kelamin ENUM('L','P')    NOT NULL,
  tanggal_lahir DATE          NOT NULL,
  alamat        TEXT,
  no_telepon    VARCHAR(15),
  created_at    DATETIME      DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Tabel kunjungan dengan FOREIGN KEY
CREATE TABLE kunjungan (
  id_kunjungan  INT           AUTO_INCREMENT PRIMARY KEY,
  no_rm         VARCHAR(10)   NOT NULL,
  tanggal       DATE          NOT NULL,
  diagnosis     VARCHAR(200),
  dokter        VARCHAR(100)  NOT NULL,
  FOREIGN KEY (no_rm) REFERENCES pasien(no_rm)
    ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Tipe data yang sering dipakai dalam konteks rekam medis dan sistem informasi kesehatan:

Tipe Data Keterangan Contoh Penggunaan
INTBilangan bulatid_pasien, umur
VARCHAR(n)String panjang variabel max n karakternama, no_rm, telepon
DATETanggal (YYYY-MM-DD)tanggal_lahir, tgl_masuk
DATETIMETanggal + waktu lengkapcreated_at, updated_at
TEXTTeks panjang tak terbatascatatan, diagnosis, alamat
DECIMAL(m,d)Bilangan desimal dengan presisibiaya, berat_badan, suhu
ENUMNilai dari daftar pilihan tetapjenis_kelamin, goldar, status

3️⃣ ALTER TABLE — Edit Struktur Tabel yang Sudah Ada

Kadang kebutuhan berubah — misalnya kamu lupa tambahkan kolom email di tabel pasien, atau tiba-tiba perlu memperbesar ukuran kolom nama. Nah, ALTER TABLE adalah solusinya — tanpa perlu menghapus dan membuat ulang tabel, sehingga data kamu tetap aman.

SQL — ALTER TABLE Contoh Lengkap
-- 1. Menambah kolom baru
ALTER TABLE pasien
  ADD COLUMN email VARCHAR(100);

-- 2. Menambah kolom di posisi tertentu
ALTER TABLE pasien
  ADD COLUMN nik VARCHAR(16) AFTER no_rm;

-- 3. Mengubah tipe data kolom
ALTER TABLE pasien
  MODIFY COLUMN nama_lengkap VARCHAR(150) NOT NULL;

-- 4. Rename kolom (MySQL 8+ / MariaDB 10.5+)
ALTER TABLE pasien
  RENAME COLUMN no_telepon TO telepon;

-- 5. Menghapus kolom
ALTER TABLE pasien
  DROP COLUMN email;

-- 6. Menambah INDEX untuk performa query
ALTER TABLE pasien
  ADD INDEX idx_nama (nama_lengkap);
Insight Penting

Saat menggunakan ALTER TABLE pada tabel yang berisi jutaan baris data (seperti di SIMRS besar), operasi ini bisa memakan waktu lama dan bahkan mengunci tabel (table lock) sehingga operasi lain terhambat. Solusinya: gunakan pt-online-schema-change dari Percona Toolkit, atau fitur Online DDL di MySQL 8+/MariaDB 10.3+. Ini penting kamu tahu saat nanti kerja di fasilitas kesehatan!

4️⃣ DROP — Hapus dengan Penuh Kesadaran ⚠️

DROP adalah perintah DDL paling "berbahaya" karena sifatnya irreversible — tidak bisa di-undo! Kalau kamu DROP tabel, semua data di dalamnya ikut hilang. Makanya ada meme developer yang bilang: "Sebelum DROP, berdoa dulu..." 😅

⚠️ DANGER ZONE — Pastikan sudah backup!
-- Menghapus TABEL (data ikut hilang!)
DROP TABLE kunjungan;

-- Aman: cek dulu apakah tabel ada
DROP TABLE IF EXISTS kunjungan;

-- Menghapus DATABASE seluruhnya (semua tabel ikut hilang!)
DROP DATABASE rekam_medis_rs;
DROP DATABASE IF EXISTS rekam_medis_rs;

-- Alternatif: TRUNCATE (hapus semua data, tapi struktur tabel tetap)
TRUNCATE TABLE kunjungan;
-- Note: TRUNCATE lebih cepat dari DELETE, tapi tidak bisa di-rollback

Biar nggak bingung, ini perbedaan DROP, TRUNCATE, dan DELETE:

Perintah Hapus Data? Hapus Struktur? Bisa Rollback? Kategori
DROPYaYaTidakDDL
TRUNCATEYa (semua baris)TidakTidak*DDL
DELETEYa (bisa kondisional)TidakYaDML

🏥 Studi Kasus: Skema Database Rekam Medis Mini

Sekarang saatnya kita praktikkan semua yang sudah dipelajari dengan membuat skema mini database rekam medis. Anggap saja ini tugas pertamamu sebagai calon petugas RMIK yang melek IT!

📋 Spesifikasi Database: simrs_mini
Entitas yang perlu dibuat: pasien, dokter, poliklinik, kunjungan
Pasien
no_rm, nama, NIK, tgl_lahir, alamat, telepon
Dokter
id_dokter, nama, spesialisasi, SIP
Poliklinik
id_poli, nama_poli, lantai, telp
Kunjungan
id_kunjungan, no_rm, id_dokter, id_poli, tgl, diagnosa, icd10
SQL — Skema Lengkap SIMRS Mini
-- ==========================================
-- SIMRS MINI - Database Rekam Medis
-- Dibuat untuk praktikum Basis Data D3 RMIK
-- ==========================================

CREATE DATABASE IF NOT EXISTS simrs_mini
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE simrs_mini;

-- Tabel Poliklinik (dibuat duluan karena direferensikan)
CREATE TABLE poliklinik (
  id_poli    INT         AUTO_INCREMENT PRIMARY KEY,
  nama_poli  VARCHAR(80) NOT NULL UNIQUE,
  lantai     TINYINT     DEFAULT 1,
  telepon    VARCHAR(15)
);

-- Tabel Dokter
CREATE TABLE dokter (
  id_dokter     INT          AUTO_INCREMENT PRIMARY KEY,
  nama_dokter   VARCHAR(100) NOT NULL,
  spesialisasi  VARCHAR(80),
  no_sip        VARCHAR(30)  UNIQUE
);

-- Tabel Pasien
CREATE TABLE pasien (
  no_rm          VARCHAR(10)  PRIMARY KEY,
  nik            CHAR(16)     UNIQUE,
  nama_lengkap   VARCHAR(100) NOT NULL,
  jenis_kelamin  ENUM('L','P')  NOT NULL,
  tanggal_lahir  DATE         NOT NULL,
  golongan_darah ENUM('A','B','AB','O','Tidak Diketahui')
                              DEFAULT 'Tidak Diketahui',
  alamat         TEXT,
  telepon        VARCHAR(15),
  created_at     TIMESTAMP    DEFAULT CURRENT_TIMESTAMP
);

-- Tabel Kunjungan (tabel transaksi utama)
CREATE TABLE kunjungan (
  id_kunjungan   BIGINT      AUTO_INCREMENT PRIMARY KEY,
  no_rm          VARCHAR(10) NOT NULL,
  id_dokter      INT         NOT NULL,
  id_poli        INT         NOT NULL,
  tgl_kunjungan  DATE        NOT NULL,
  kode_icd10     VARCHAR(10),
  diagnosis      TEXT,
  FOREIGN KEY (no_rm)    REFERENCES pasien(no_rm)     ON UPDATE CASCADE,
  FOREIGN KEY (id_dokter) REFERENCES dokter(id_dokter)  ON UPDATE CASCADE,
  FOREIGN KEY (id_poli)   REFERENCES poliklinik(id_poli) ON UPDATE CASCADE
);

-- Tambah kolom yang terlupa
ALTER TABLE kunjungan
  ADD COLUMN berat_badan DECIMAL(5,2) AFTER tgl_kunjungan;

-- Hapus tabel sementara jika tidak diperlukan
DROP TABLE IF EXISTS tabel_sementara;
🚨
Peringatan Penting

Perintah DDL (CREATE, ALTER, DROP) di MySQL/MariaDB bersifat auto-commit — artinya langsung tersimpan tanpa bisa di-rollback meskipun kamu belum COMMIT. Berbeda dengan DML. Jadi selalu backup dulu sebelum menjalankan DDL di database produksi. Di dunia SIMRS, satu kesalahan DROP TABLE bisa mengakibatkan kehilangan data rekam medis ribuan pasien.

Best Practice DDL
  • Selalu gunakan IF NOT EXISTS / IF EXISTS untuk menghindari error tak terduga
  • Tentukan charset=utf8mb4 dari awal agar tidak repot migrasi nanti
  • Gunakan FOREIGN KEY untuk menjaga integritas data relasional
  • Dokumentasikan skema database dengan komentar SQL (-- komentar)
  • Selalu backup sebelum ALTER/DROP di database produksi!

📚 Referensi

  1. Silberschatz, A., Korth, H. F., & Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill Education.
  2. Ramakrishnan, R., & Gehrke, J. (2003). Database Management Systems (3rd ed.). McGraw-Hill.
  3. Schwartz, B., Zaitsev, P., & Tkachenko, V. (2012). High Performance MySQL (3rd ed.). O'Reilly Media.
  4. Oracle Corporation. (2024). MySQL 8.0 Reference Manual. Tersedia di: https://dev.mysql.com/doc/refman/8.0/en/
  5. MariaDB Foundation. (2024). MariaDB Knowledge Base — DDL Statements. Tersedia di: https://mariadb.com/kb/en/data-definition/
  6. DB-Engines. (2024). DB-Engines Ranking. Tersedia di: https://db-engines.com/en/ranking
  7. Kementerian Kesehatan RI. (2022). Peraturan Menteri Kesehatan Nomor 24 Tahun 2022 tentang Rekam Medis. Jakarta: Kemenkes RI.
🏁 Kesimpulan

Kamu Sudah Selangkah Lebih Maju!

Di artikel ini, kamu sudah belajar tentang DBMS sebagai fondasi sistem informasi, mengenal MySQL dan MariaDB sebagai DBMS pilihan, serta memahami empat perintah DDL utama yang wajib dikuasai oleh praktisi RMIK:

CREATE DATABASE CREATE TABLE ALTER TABLE DROP

Dengan pemahaman DDL ini, kamu sudah bisa membuat skema database dari nol — termasuk untuk konteks RMIK yang langsung relevan di dunia kerjamu nanti. Next step: pelajari DML (INSERT, SELECT, UPDATE, DELETE) untuk mulai mengisi dan mengolah data di tabel yang sudah kamu buat!

💬

Gimana, Udah Nyoba Sendiri?

Coba langsung praktikkan contoh-contoh SQL di atas di XAMPP atau HeidiSQL kamu. Kalau ada yang bingung, error-nya apa, atau ada pertanyaan seputar materi basis data lainnya — tulis di kolom komentar! Aku akan bantu jawab. 🙌

👍 Like artikel ini
🔗 Share ke teman sekelas
🔔 Subscribe blog ini

Next artikel: DML — INSERT, SELECT, UPDATE, DELETE dengan Studi Kasus SIMRS. Stay tuned!

#DBMS #MySQL #MariaDB #DDL #BasisData #RMIK #SistemInformasi #SQL

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