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)
🟢 Akses freesql dan mendaftar akun baru kemudian login.
🟢 Akses basis data di https://freesql.com/
🟢 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 freesql.com
Freesql.com merupakan aplikasi berbasis web yang memungkinkan kita untuk berinteraksi dengan basis data, kita dapat lebih leluasa menggunakan freesql jika terdaftar sebagai user. Untuk mengakses freesql klik link berikut: https://freesql.com/. Pada halaman awal seperti pada gambar berikut, buat akun terlebih dahulu dengan klik tombol “Sign In” di pojok kanan atas.

Halaman baru akan muncul seperti pada tangkapan layar di bawah ini. Klik “Create Account” dan tunggu sampai halaman berikutnya terbuka pada tab baru.

Isi formulir pembuatan akun baru dengan lengkap. Tanda bintang merah (*) pada inputan wajib diisi kemudian klik tombol “Create Account”.


Pesan verifikasi akan dikirimkan ke email yang terdaftar. Silahkan cek inbox email.

Lihat inbox email masing-masing, cari pesan baru dari oracle-acct_ww[at]oracle.com yang memiliki subject “Your Oracle Account – Verify Your Email Address“

Klik tombol di tengah bertuliskan “Verify Email Address”.

Pada halaman yang muncul, klik tombol “Continue”.

Berikut halaman yang akan dituju setelah tombol “Continue” ditekan.

Buka kembali link berikut https://signon.oracle.com/signin dan lakukan sign in, masukkan email dan password.


Pilih verifikasi menggunakan email.

Cek kembali email dan masukkan kode yang diberikan.


Tekan tombol “Verify Email Address” dan klik “Continue” pada tampilan berikut.

Centang bahwa kita setuju dengan peraturan yang diberikan, klik “Accept”.

Tampilan freesql yang siap untuk digunakan.

✅ Konek ke Basis Data
Terdapat beberapa schema yang bisa kita gunakan untuk melatih query (pengambilan informasi) basis data di freesql. Pada modul ini kita akan menggunakan schema baru yaitu kasir. Schema merupakan struktur logis yang mendefinisikan cara data diorganisasikan dengan kata lain relational schema yang kita miliki.

✅ 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. |
| Orange | Contoh kode namun tidak perlu dieksekusi. |
</> 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 tidak perlu hapus kemudian create 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 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 nama_kolom TIPE DATA;
ALTER TABLE PELANGGAN
MODIFY 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),
TGL_LAHIR DATE NOT NULL,
TGL_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,
TGL_TRANSAKSI DATE,
TOTAL_TRANSAKSI INT,
ID_PELANGGAN INT,
NIK_KARYAWAN CHAR(16),
PRIMARY KEY(nomor_transaksi),
FOREIGN KEY(ID_PELANGGAN) REFERENCES PELANGGAN(ID_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,
TGL_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 id_departemen INT;
ALTER TABLE KARYAWAN
ADD FOREIGN KEY(ID_DEPARTEMEN) REFERENCES DEPARTEMEN(ID_DEPARTEMEN);
ALTER TABLE DEPARTEMEN
ADD (
NIK_KARYAWAN CHAR(16),
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;
🎁 Tugas Individu
Ibu Hasan ingin toko kue miliknya diberi ulasan oleh pelanggan. Data nilai rating, ulasan dan tanggal ulasan harus disimpan agar Bu Hasan bisa membuat toko kuenya semakin maju. Satu pelanggan hanya bisa memberi ulasan toko satu kali dan pelanggan tidak wajib memberikan ulasan.
Pada studi kasus di atas, buatlah tabel untuk menyimpan ulasan toko tersebut. Ingat tabel harus memiliki primary key. Jika terdapat foreign key sertakan.
Silahkan kumpulkan jawaban ke : https://forms.gle/oH4uedoW8AazFotq7
✅ Penyimpanan Code
Lakukan penyimpanan pada kode yang sudah dibuat. Pertama, klik SQL Worksheet yang berada di pojok kiri atas editor. Pilih “Save”

Isikan nama file dan klik tombol “Save”.

✅ 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.
- Klik gambar file dengan tanda panah ke bawah
.
2. Simpan file di komputer, kemudian upload ke Google Drive.



Leave a Reply