Data Definition Language atau disebut DDL merupakan perintah di bahasa SQL yang digunakan untuk mendefinisikan dan mengelola struktur database, tabel, kolom, indeks, dan objek lainnya dalam sistem manajemen basis data (DBMS)
Agenda :
🟢 Pengantar: persiapan
🟢 Login akun gmail (wajib bagi ketua kelompok)
gmail (wajib bagi ketua kelompok)
🟢 Akses sqliteonline dan mendaftar akun baru kemudian login.
🟢 Akses basis data di sqliteonline
🟢 Login ERDplus old
🟢 Generate SQL pada masing-masing-masing akun ERDPlus
🟢 Ikuti step-step yang ada di kelas/ppt
🟢 Download kode program yang telah dibuat dan upload ke Google Form berikut / ke folder kelompok.
✅ Persiapan
Sebelum kita memulai praktik mengelola basis data, pastikan bahwa ERD dan Relational Schema sistem informasi yang akan dikembangkan sudah dibuat. Pada praktik kita kali ini, kita akan membuat basis data sederhana untuk sistem informasi kasir.

Gambar di atas merupakan ERD minimum yang akan kita buat. Sedangkan gambar di bawah ini merupakan relational schema yang diconvert dari ERD menggunakan ERDPlus dengan beberapa perubahan sedikit (Perubahan dilakukan karena tidak semua algoritma mapping ERD ke relational schema dapat diakomodasi oleh ERDPlus).

✅ Akses sqliteonline
1. Akses https://sqliteonline.com/. Pada halaman seperti berikut buat akun terlebih dahulu dengan klik tombol dengan gambar orang, dan pilih “di pojok kanan atas”Sign In”.

Pada pop-up modal seperti berikut masukkan email dan password kemudian klik “Create an account”.

Jika ada proses Captcha silahkan tunggu atau instruksi dari captcha tersebut. Klik kembali tombol “Create an account”.

Untuk bisa mengaktifkan akun baru, silahkan cek inbox email sesuai dengan nama akun email yang baru terdaftar. Pada inbox email, akan tertera link untuk konfirmasi. Klik link tersebut (Pastikan email yang masuk dari noreply@sqliteonline.com).
Jika pada inbox tidak muncul, silahkan cek pada folder spam.

2. Buka kembali sqliteonline, klik tombol “Sign in”, masukkan email dan password yang sudah didaftarkan. Jika berhasil login, icon pengguna akan menampilkan alamat email yang terdaftar.

✅ Konek ke Basis Data
Jika kita menggunakan sqliteonline, kita bisa connect pada masing-masing satu database pada tiap RDBMS (Relational Database Management System). Kita akan menggunakan MariaDB yang memiliki kesamaan sintaks dengan MySQL.
Klik “MariaDB” pada bagian kiri halaman. Klik “Click to connect” dan tunggu sampai tabel demo terlihat.



Maka kita siap untuk melakukan code pada tab yang tersedia.

Silahkan buka ERDplus old, kemudian generate kode SQL dari relasional schema yang sudah dibuat. Langkah-langkah untuk men-generate SQL code dapat dilihat pada artikel “Pembuatan Relasional Schema dan Generate SQL Code”
✅ Data Definition Language
Perintah dari bahasa SQL yang digunakan untuk mendefinisikan dan mengelola struktur database, tabel, kolom, indeks, dan objek lainnya dalam sistem manajemen basis data (DBMS)
Perintah-perintah utama DDL:
- CREATE : Digunakan untuk membuat objek baru dalam database, seperti tabel, indeks, atau view
- ALTER : Digunakan untuk mengubah struktur objek yang sudah ada, seperti menambah, menghapus, atau mengubah kolom dalam tabel.
- DROP : Digunakan untuk menghapus objek dalam database, seperti tabel, indeks, atau view. Setelah objek dihapus, semua data yang ada di dalamnya juga akan hilang.
- TRUNCATE : Digunakan untuk menghapus semua data dalam sebuah tabel, tetapi tetap mempertahankan struktur tabel tersebut. Berbeda dengan DELETE, TRUNCATE tidak mencatat perubahan di log transaksi dan biasanya lebih cepat.
💻 DATABASE
Fungsi : Membuat dan menghapus basis data.
Sintaks ini dapat dijalankan jika kita memiliki akses ke DBMS. Jika kita menggunakan virtual basis data seperti sqliteonline, kita tidak dapat melakukannya karena tidak memiliki priviledge untuk menambahkan basis data.
Lihat tabel berikut untuk cara membaca kode yang disediakan di modul ini.
| WARNA | KETERANGAN |
| Biru | Template: merupakan format umum bagaimana kode harus ditulis. Ganti kata yang berbahasa indonesia sesuai kebutuhan. |
| Biru muda | Contoh: merupakan contoh penggunaan kode pada template menggunakan nama basis data, nama tabel atau nama kolom yang dibutuhkan. |
</> Membuat Basis Data
CREATE DATABASE nama_database;
CREATE DATABASE kasir;
Berikut tampilan basis data yang dibuat di phpMyAdmin.

</> Menghapus Basis Data
DROP DATABASE nama_database;
DROP DATABASE kasir;
💻 TABEL
Fungsi : Membuat tabel dan mendefinisikan kolomnya.
Penentuan tipe data dan penjelasan tipe data lihat kembali pdf pertemuan 4 di link kuliah basis data.
</> Membuat Tabel
CREATE TABLE nama_tabel(
nama_kolom1 TIPE_DATA NOT NULL,
nama_kolom2 TIPE_DATA,
nama_kolom3 TIPE_DATA,
…
);
CREATE TABLE PELANGGAN(
id_pelanggan INT NOT NULL,
nama VARCHAR(100) NOT NULL,
alama VARCHAR(200),
no_hp DATE NOT NULL
);
Berikut contoh dari pembuatan tabel di satu basis data.


Ada yang kurang ga teman-teman tabel pelanggan kita?
Yup!
- Kurang kolom email
- Kurang primary key
- Kurang tepat tipe data kolom no_hp
- Nama kolom alamat typo
Mari kita pelajari bagaimana mengubah maupun menambah kolom dari tabel yang sudah dibuat sebelumnya. Jadi ga perlu drop terus bikin lagi.
</> Pengubahan Tabel
Pengubahan tabel dapat berupa ADD, DROP, MODIFY dari kolom.
</> Menambah Kolom
ALTER TABLE nama_tabel
ADD nama_kolom TIPE_DATA;
ALTER TABLE PELANGGAN
ADD COLUMN email VARCHAR(20);
</> Menambah Primary Key
ALTER TABLE nama_tabel
ADD PRIMARY KEY(nama_kolom);
ALTER TABLE PELANGGAN
ADD PRIMARY KEY(id_pelanggan);
</> Mengubah Tipe Data
ALTER TABLE nama_tabel
MODIFY COLUMN nama_kolom TIPE DATA;
ALTER TABLE PELANGGAN
MODIFY COLUMN no_hp INT;
</> Mengganti Nama Kolom
ALTER TABLE nama_tabel
RENAME COLUMN nama_kolom_lama to nama_kolom_baru;
ALTER TABLE PELANGGAN
RENAME COLUMN alama to alamat;
</> Menghapus Kolom
ALTER TABLE nama_tabel
DROP COLUMN nama_kolom;
Pada tahap ini kita telah menyelesaikan satu tabel. Kita akan lanjutkan pada tabel entitas kuat terlebih dahulu kemudian dapat melanjutkan ke tabel entitas lemah, tabel yang muncul karena ada multivalued attribute maupun karena relasi many-to-many.

Mari kita buat semua tabel dari entitas kuat terlebih dahulu!
CREATE TABLE PRODUK(
id_produk INT NOT NULL,
nama_produk VARCHAR(15),
deskripsi_produk VARCHAR(30),
PRIMARY KEY(id_produk)
);
CREATE TABLE KARYAWAN(
nik_karyawan CHAR(16) NOT NULL,
nama VARCHAR(100) NOT NULL,
jenis_kelamin CHAR(2),
alamat VARCHAR(200),
tanggal_lahir DATE NOT NULL,
tanggal_masuk DATE,
PRIMARY KEY(nik_karyawan)
);
CREATE TABLE DEPARTEMEN(
id_departemen INT NOT NULL,
nama_departemen VARCHAR(20),
deskripsi_departemen VARCHAR(50),
PRIMARY KEY(id_departemen)
);
Lanjutkan dengan tabel entitas lain yang memiliki foreign key
CREATE TABLE TRANSAKSI(
nomor_transaksi INT NOT NULL,
tanggal_transaksi DATE,
total_transaksi INT,
nik_pelanggan INT,
nik_karyawan CHAR(16),
PRIMARY KEY(nomor_transaksi),
FOREIGN KEY(nik_pelanggan) REFERENCES PELANGGAN(nik_pelanggan),
FOREIGN KEY(nik_karyawan) REFERENCES KARYAWAN(nik_karyawan)
);
Setelah semua entitas kuat dibuat, lanjutkan dengan tabel dengan entitas lemah!
CREATE TABLE TANGGUNGAN(
nik_tanggungan CHAR(16) NOT NULL,
nama VARCHAR(100) NOT NULL,
tanggal_lahir DATE,
jenis_kelamin CHAR(2),
hubungan VARCHAR(20),
nik_karyawan CHAR(16) NOT NULL,
PRIMARY KEY (nik_tanggungan, nik_karyawan),
FOREIGN KEY(nik_karyawan) REFERENCES KARYAWAN(nik_karyawan)
);
Tabel yang terbentuk karena atribut multivalued.
CREATE TABLE HOBI_KARYAWAN(
hobi VARCHAR(20),
nik_karyawan CHAR(16),
primary KEY(hobi, nik_karyawan),
FOREIGN KEY(nik_karyawan) REFERENCES KARYAWAN(nik_karyawan)
);
Terakhir tabel yang terbentuk karena relasi many-to-many maupun karena ternary.
CREATE TABLE DETAIL_TRANSAKSI(
nomor_transaksi INT,
id_produk INT,
qty INT,
harga_total_item INT,
PRIMARY KEY(nomor_transaksi, id_produk),
FOREIGN KEY(nomor_transaksi) REFERENCES TRANSAKSI(nomor_transaksi),
FOREIGN KEY(id_produk) REFERENCES PRODUK(id_produk)
);

Cek apakah tabel sudah berjumlah delapan?
Pada tabel karyawan dan departemen, terdapat foreign key yang harusnya kita tambahkan untuk mengakomodasi relasi “bekerja untuk” dan “mengepalai”. Jika ingin menambahkan foreign key dengan kondisi tabel sudah ada, kita gunakan alter.
ALTER TABLE nama_tabel
ADD FOREIGN KEY (nama_kolom) REFERENCES nama_tabel_referensi(nama_kolom_referensi)
ALTER TABLE KARYAWAN
ADD COLUMN id_departemen INT,
ADD FOREIGN KEY(id_departemen) REFERENCES DEPARTEMEN(id_departemen);
ALTER TABLE DEPARTEMEN
ADD COLUMN nik_karyawan CHAR(16),
ADD FOREIGN KEY(nik_karyawan) REFERENCES KARYAWAN(nik_karyawan);
</> Menghapus tabel
Harus diingat bahwa, penghapusan tabel maka akan menghapus semua data yang ada di dalamnya.
DROP TABLE nama_tabel;
DROP TABLE PRODUK;
</> Menghapus tabel dengan foreign key
SET foreign_key_checks = 0;
DROP TABLE KARYAWAN;
DROP TABLE DEPARTEMEN;
✅ Pengumpulan Hasil
Upload hasil yang sudah dikerjakan ke folder kelompok masing-masing. Mahasiswa yang akan mengunggah harus login gmail terlebih dahulu.
Silahkan ikuti langkah berikut untuk mengunduh hasil kode yang telah dibuat dan yang akan diunggah ke folder kelompok.
- Lakukan klik kanan pada tab sqliteonline yang sedang aktif. Kemudia pilih Save to File.

2. Simpan pada folder di komputer, kemudian upload ke Google Drive.
Cek link berikut untuk mengakses folder kelompok masing-masing!

