DDL & DML in MariaDB [MySQL]

RIIF
13 min readNov 30, 2023

--

Hai… kembali lagi dengan saya RIIF, jika sebelumnya saya menuliskan article mengenai portofolio yang saya kerjakan, maka kali ini saya akan menuliskan sebuah article bagaimana database dibuat yang nantinya akan diolah untuk menemukan beberapa insight dari data tersebut. Tentunya pembahasan kali ini masih mencakup MySQL ya 😁

Pertama saya akan menuliskan article terkait dengan DDL & DML untuk MySQL, sebelumnya saya akan menjelaskan sedikit terkait dengan MySQL. MySQL adalah sistem manajemen basis data (SMBD) relasional yang bersifat open-source. Ini berarti bahwa MySQL dapat digunakan, diubah, dan didistribusikan secara gratis.

MySQL dikembangkan oleh Oracle Corporation dan merupakan salah satu database relasional yang paling populer di dunia. MySQL pertama kali dibuat dan diperkenalkan tahun 1995 oleh David Axmark dan Michael Widenius

Lalu MySQL banyak digunakan dalam pengembangan aplikasi web, sistem manajemen konten (CMS), dan berbagai jenis proyek pengembangan perangkat lunak. Karena sifat open source dan kinerja yang baik, MySQL telah menjadi salah satu pilihan utama dalam lingkungan pengembangan perangkat lunak.

Saya ingin menginformasikan untuk article kali ini saya akan menggunakan SMDB MariaDB. MariaDB adalah cabang atau fork dari MySQL yang dibuat oleh komunitas open source setelah akuisisi MySQL oleh Oracle Corporation.

MariaDB dirancang untuk mempertahankan kompatibilitas dengan MySQL, sehingga banyak fitur dan perintah SQL yang sama dapat ditemui di keduanya.

Oke… langsung saja kita masuk pada bahasan sesuai dengan judul yang ada 😁

Apa yang dimaksud dari DDL dan DML?

Menurut beberapa article yang saya baca dan telusuri di google, untuk DDL (Data Definition Language) dan DML (Data Manipulation Language) adalah dua jenis bahasa yang digunakan dalam SQL (Structured Query Language) untuk mengelola basis data.

DDL (Data Definition Language):

  • DDL digunakan untuk mendefinisikan struktur basis data. Ini mencakup operasi-operasi seperti membuat tabel, mengubah struktur tabel, dan menghapus tabel. DDL mengelola skema basis data dan objek-objek terkait.

Example Operasi DDL

-- Membuat tabel
CREATE TABLE nama_tabel (
kolom1 Tipe_Data,
kolom2 Tipe_Data,
...
);

-- Mengubah tabel (menambah kolom)
ALTER TABLE nama_tabel
ADD COLUMN kolom_baru Tipe_Data;

-- Menghapus tabel
DROP TABLE nama_tabel;

— DML (Data Manipulation Language):

  • DML digunakan untuk memanipulasi data yang ada dalam basis data. Ini mencakup operasi-operasi seperti menambah, mengubah, dan menghapus data dari tabel. DML digunakan untuk mengambil, memperbarui, dan menghapus data.

Example Operasi DML

-- Menambah data ke tabel
INSERT INTO nama_tabel (kolom1, kolom2, ...)
VALUES (nilai1, nilai2, ...);

-- Mengubah data dalam tabel
UPDATE nama_tabel
SET kolom1 = nilai_baru
WHERE kondisi;

-- Menghapus data dari tabel
DELETE FROM nama_tabel
WHERE kondisi;

Jadi, singkatnya, DDL digunakan untuk mendefinisikan struktur basis data, sementara DML digunakan untuk memanipulasi (menambah, mengubah, menghapus) data dalam basis data. DDL dan DML bersama-sama membentuk SQL sebagai bahasa yang kuat untuk mengelola basis data relasional seperti MySQL.

Oke… setelah mengenal apa itu DDL & DML disini saya akan melakukan demonstrasi yang mungkin bisa kalian tiru untuk memahami lebih jauh terkait dengan pembuatan database dan juga disini saya akan melakukan sedikit demontrasi penulisan SQL untuk database yang sudah dibuat.

— Install

Hal pertama yang perlu kalian lakukan adalah melakukan installasi DBMS pada komputer / laptop kalian, disini kalian bisa mengunjungi link dibawah ini untuk melakukan installasi pada windows ya:

  • Link MySQL pilih baigan Windows (x86, 32-bit), MSI Installer dengan ukuran file 288.6 MB, lalu silakan klik download. Pada page baru klaian bisa scroll kebawah dan silakan klik No thanks, just start my download.
  • Link XAMPP for MariaDB [MySQL], setelah kalian masuk pada link tersebut selanjutnya silakan pilih untuk download sesuai dengan sistem operasi yang kalian gunakan ya.

Sedikit penjelasan untuk MariaDB, saya menggunakan software XAMPP untuk melakukan aksesnya, karena kedepannya saya berencana untuk membuat beberapa project yang mungkin akan menggunakan bahasa PHP ataupun Python untuk membuat seuah website.

Lalu jika kalian menggunakan XAMPP untuk mengakses database MariaDB [MySQL] maka langkah selanjutnya silakan bukan software tersebut, jika erhasil maka akan tampak seperti dibawah ini:

Setelah installasi berhasil dan software terbuka, maka silakan klik start pada Apache terlebih dahulu, lalu selanjutnya silakan pilih start untuk menjalankan MySQL. Setelan keduanya berhasil dijalankan maka silakan klik Admin pada MySQL untuk masuk pada tampilan localhost dari MariaD [MySQL].

Namun kali ini saya tidak akan menunjukkan tampilan tersebut, karena saat ini saya akan mengakses MariaDB [MySQL] pada CMD untuk membiasakan diri ketika membuat database tidak didalam tampilan GUI ataupun dalam tampilan Website.

Cara masuk MySQL melalui CMD

Untuk mengakses CMD, kamu dapat mengaksesnya dengan cara tekan Windows + R, lalu ketik CMD dan tekan Enter. Setelah CMD terbuka maka silakan untuk mengikuti langkah dibawah ini:

  • Langkah pertama ketika kita telah membuka CMD, maka silakan untuk memastikan keluar dari semua folder pada tampilkan awal CDM, seperti dibawah ini.
  • Setelah memastikan bahwa tampilan CMD saat ini hanya tersisan pada folder “C” saja, maka langkah selanjutnya adalah seperti dibawah ini.

Pastikan kamu mengetikannya dengan sesuai pada tempat kamu menginstall XAMPP pada laptop / komputer kamu. Lalu setelah kamu masuk pada folder MySQL yang ada pada XAMPP maka silakan untuk ketik mysql -u root -p.

Ketika pada tampilan CMD kamu diminta untuk memasukkan password maka silakan untuk memasukkannya. Namun jika kamu tidak memilikinya maka silakan tekan ENTER untuk melanjutkan proses masuk.

Jika kamu berhasil masuk pada MySQL melalui CMD, maka tampilannya akan seperti pada gambar diatas 😉

Ketika kalian ingin melihat database apa saja yang ada pada MySQL saat ini, maka silakan ketik perintah show databases; . Perlu diketahui bahwa pada MariaDB [MySQL] ini bersifat case insensitive yang artinya dimana huruf besar dan huruf kecil diartikan sama. Maka kamu dapat mengetikkan huruf besar dan kecil pada MariaDB [MySQL] ini ya 😉

Cara Membuat Database baru pada MariaDB [MySQL]

Oke… akhirnya saat ini kita masuk pada bahasan utamanya, yaitu membuat database dengan DDL, kalian dapat mengikuti query dibawah ini:

CREATE DATABASE nama_database;

-- Example
CREATE DATABASE example_mysql;

Jika saat ini kalian sudah membuat database maka silakan kalian lihat kembali database yang sudah kalian buat, apakah berhasil atau tidak? 😊

Seperti pada query sebelumnya, saat ini saya membuat database baru dengan nama example_mysql dan ketika saya melihat database yang sudah saya buat, maka tampilan pada database akan memunculkan daftar database yang sudah saya buat, itupun jika berhasil dalam pembuatannya ya 😂

Menghapus Database pada MariaDB [MySQL]

Setelah kalian berhasil membuat database yang kalian inginkan, maka selanjutnya saya akan memberikan contoh bagaimana untuk menghapusnya, siapa tau sewaktu-waktu kalian ingin menghapus database yang sudah kalian buat 😄

DROP DATABASE nama_database;

-- Example
DROP DATABASE example_mysql;

Bisa kalian lihat saat ini sudah tidak ada lagi daftar database dengan nama example_mysql, sampai sini bukankah masih sangat mudah untuk dipahami? 🤔

Saya harap pada article ini kalian bisa memahami tulisan saya untuk membuat database dengan konsep DDL, jika ada pertanyaan apapun atau kalian tidak paham terhadap tulisan saya kali ini, silakan komen saja ya 😁

Memilih Database [In]

Oke… kali ini kita akan membahas bagaimana untuk masuk pada database yang sudah kita buat sebelumnya, ini digunakan ketika kita ingin menerapkan konsep DML untuk melakukan INSERT, UPDATE, atau DELETE pada database yang telah kita buat.

USE nama_database;

-- Example
USE example_mysql;

Jika kalian perhatikan kembali, sebelumnya pada tulisan MariaDB [(none)] disini mengartikan bahwa saya belum memilih database mana yang akan saya gunakan dan ketika saya memilihnya dengan perintah diatas, maka artinya saya akan menggunakan database tersebut untuk dilakukan proses lebih lanjut.

Oke… setelah kita memilih database yang akan kita olah, maka selanjutnya…

Bagaimana cara untuk mengganti database?

Ini cukup mudah, kita hanya perlu mengetikkan perintah use nama_database_lainnya agar dapat mengakses database lainnya yang ada pada DBMS komputer / laptop kita.

Setelah kalian memahami bagaimana cara untuk mengganti database pada langkah sebelumnya, saya akan menunjukkan kembali pada kalian bagaimana cara kalian untuk keluar dari sistem database yang kalian gunakan pada CMD.

Disini langkahnya cukup sangat mudah, kalian hanya perlu mengetikkan perintah exit; untuk keluar dari sistem database saat ini lalu tekan ENTER 😁

Jika tampilan sudah seperti pada gambar diatas, maka saat ini kalian sudah sukses keluar dari sistem DBMS pada CMD yang kalian olah saat ini.

Setelah kalian memahami bagaimana cara untuk membuat database dan masuk pada sistem DBMS melalui CMD juga bagaimana cara keluar dari sistemnya, selanjutnya disini saya akan memberikan contoh bagaimana penerapan DML untuk database kita.

Membuat Table

Asumsikan saja saat ini saya membuat table didalam database example_mysql dengan nama barang lalu untuk tipe data dari kolom yang ada pada table ini adalah INT dan juga VARCHAR, khusus untuk tipe data VARCHAR ini saya memberikan panjang data dengan nilai 100, karena antisipasi siapa tahu ada nama yang sangat panjang dan user tidak menyingkatnya bukan 😂

CREATE TABLE barang(
id INT,
nama VARCHAR(100),
harga INT,
jumlah INT
) ENGINE = InnoDB;

-- Perlu diingat bahwa nama sebelum tipe data
-- adalah nama kolom dari sebuah table ya

Saya akan sedikit menjelaskan kenapa diakhir pembuatan kolom terdapat tulisan ENGINE = InnoDB, selain tipe data yang sudah kita tulis sebelumnya.

MySQL memiliki berbagai cara melakukan pengolahan data, hal ini disebut Storage Engines. Saat ini, yang biasa dan populer digunakan adalah InnoDB, untuk melihat storage engines apa saja yang terdapat di MySQL, kita bisa menggunakan perintah SHOW ENGINES;

Seperti yang terlihat pada gambar diatas, saat ini terdapat beberapa ENGINES yang tersedia, salah satunya adalah InnoDB pada article kali ini saya akan terus menggunakan ENGINE ini, karena InnoDB adalah salah satu jenis penyimpanan (storage engine) yang umum digunakan dalam MySQL dan MariaDB, dan ada beberapa alasan mengapa kita mungkin memilih InnoDB:

— Dukungan untuk Transaksi

  • InnoDB mendukung transaksi, yang merupakan fitur kunci dalam aplikasi yang memerlukan konsistensi dan keamanan data tingkat tinggi. Dengan transaksi, kita dapat memastikan bahwa serangkaian pernyataan SQL dijalankan sebagai satu kesatuan, dan dapat di-rollback jika terjadi kesalahan.

— Kunci Asing (Foreign Keys)

  • InnoDB mendukung kunci asing (foreign keys), yang memungkinkan kita membuat relasi antar tabel. Ini adalah fitur penting untuk menjaga integritas referensial antar tabel.

— Penguncian Baris (Row-Level Locking)

  • InnoDB menggunakan penguncian baris (row-level locking) daripada penguncian tabel secara keseluruhan. Hal ini meminimalkan potensi konflik dan meningkatkan kemampuan basis data untuk mengelola banyak koneksi secara efisien.

— Autokomit

  • InnoDB mendukung otomatisasi transaksi (autocommit). Ini berarti setiap pernyataan SQL secara default dianggap sebagai transaksi, dan perubahan tersebut secara otomatis di-commit ke basis data kecuali ada kesalahan.

— Recovery dan Log

  • InnoDB menyediakan mekanisme pemulihan yang andal dan logging untuk memastikan keandalan dan konsistensi data bahkan dalam situasi pemadaman sistem atau kegagalan lainnya.

— Penanganan Konflik

  • Dengan penguncian baris dan isolasi transaksi yang baik, InnoDB menangani konflik dengan baik dan dapat memberikan tingkat isolasi transaksi yang tinggi.

— Penanganan Crash

  • InnoDB dirancang untuk menangani kegagalan sistem dan pemadaman tanpa mengorbankan integritas data.

Meskipun InnoDB memiliki banyak keunggulan, pemilihan storage engine juga harus disesuaikan dengan kebutuhan spesifik proyek kita ya.

Melihat Struktur Table

Sekarang setelah memahami sedikit penjelasan diatas, selanjutnya saya akan menunjukkan pada kalian bagaimana untuk melihat struktur table yang saya buat dengan menggunakan perintah dibawah ini:

-- Melihat isi table
DESCRIBE nama_table;
DESC nama_table;

-- Melihat struktur pembuatan table
SHOW CREATE TABLE nama_table;

Jika kalian sesuai mengetikkan perintah sebelumnya, maka tampilan CDM akan seperti gambar diatas.

Mengubah Table

Oke… selanjutnya saya akan menunjukkan bagaimana menggunakan DDL untuk melakukan perubahan pada struktur table yang sudah saya buat sebelumnya, ini bisa dilakukan jika kamu telah terlanjur membuat table dengan kolom sebelumnya dan ingin menambahkan, menghapus ataupun mengubah isi kolom dalam table yang sudah dibuat ataupun strukturnya, maka kamu dapat menggunakan perintah ALTER TABLE seperti dibawah ini:

-- Example menambahkan kolom
ALTER TABLE barang
ADD COLUMN deskripsi TEXT;

-- Example Menghapus kolom
-- pertama coba tambahkan kolom yang akan dihapus
ALTER TABLE barang
ADD COLUMN example_salah TEXT;

-- Masuk proses hapus kolom
ALTER TABLE barang
DROP COLUMN example_salah;

💡 PERLU DIKETAHUI!!!

Cara mengubah data nama kolom pada MySQL di XAMPP menggunakan RENAME belum bisa dilakukan, untuk mengakalinya, bisa menggunakan:

ALTER TABLE table_name CHANGE old_column_name1 new_col_name1 Data Type;

Atau bisa kunjungi LINK INI untuk lebih jelasnya

Null Value

Saya akan mencoba menjelaskan nilai dari kolom NULL seperti pada gambar diatas:

  • Null adalah nilai ketika kita tidak mengisi data ke dalam kolom
  • Secara default, saat kita membuat kolom, kolom tersebut bisa bernilai NULL, jika kita tidak ingin menerima nilai NULL, kita bisa menambahkan NOT NULL ketika pembuatan kolom-nya

Jika kalian perhatikan kembali pada deskripsi table barang yang dibuat sebelumnya pada kolom NULL isinya dibolehkan untuk diisi dengan kosong saja, namun saya disini akan mengubah beberapa kolom dimana data yang masuk harus diisi dan tidak boleh kosong.

Lalu bagaimana jika kita telah terlanjur membuat table yang ada?

Jawabannya mudah saja kita dapat menggunakan perintah ALTER TABLE untuk melakukan perubahan pada table barang yang sudah terlanjur dibuat 😁

ALTER TABLE barang
MODIFY id INT NOT NULL,
MODIFY nama VARCHAR(200) NOT NULL;

— Before

— After

Default Value

Setelah penjelasan kolo NULL sebelumnya, saya akan mencoba menjelaskan sedikit terkait dengan kolom Default:

  • Saat kita menyimpan data ke dalam tabel, lalu kita hanya menyimpan beberapa kolom (tidak semuanya), kolom yang tidak kita beri nilai secara default nilainya adalah NULL
  • Jika kita ingin mengubah default value nya, kita bisa menambahkan perintah DEFAULT VALUE ketika pembuatan kolom nya
  • Khusus tipe data DATETIME atau TIMESTAMP, jika kita ingin menggunakan default value dengan nilai waktu saat ini, kita bisa gunakan kata kunci CURRENT_TIMESTAMP

Jika kalian perhatikan kembali pada deskripsi table barang saat ini dalam kolom DEAULT nilainya adalah NULL, namun disini saya tidak ingin ketika input data oleh end user nantinya nilai akan NULL, sebagai contoh jika end user tidak memasukkan data harga atau jumlah saya ingin disini nilainya adalah 0 dan bukan NULL. Maka saya dapat mengubah deskripsi tablenya sebagai berikut:

ALTER TABLE barang
MODIFY harga INT NOT NULL DEFAULT 0,
MODIFY jumlah INT NOT NULL DEFAULT 0;

— Before

— After

Lalu seperti pada penjelasan awal sebelumnya untuk DATETIME atau TIMESTAMP, jika kita ingin menggunakan default value dengan nilai waktu saat ini, kita bisa gunakan kata kunci CURRENT_TIMESTAMP

-- Sebagai contoh disini saya akan menambahkan kolom baru 
-- untuk tanggal input dan kapan dimasukkannya sebuah data
ALTER TABLE barang
ADD COLUMN waktu_dibuat TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

Membuat Ulang Table

Setelah penjelasan pada kolom yang ada pada table dibuat, saya akan menunjukkan pada kalian ketika saya memasukkan data pada table yang sudah dibuat lalu saya akan menggunakan fungsi TRUNCATE.

TRUNCATE nama_tabel;

-- Example
TRUNCATE barang;

Oke… Sebagai percobaan pertama untuk TRUNCATE saya akan memasukkan 1 data pada table barang

Setelah memasukkan data pada table dengan DML, selanjutnya saya akan mencoba menampilkan data tersebut:

Lalu saya akan melakukan penghapusan pada isi data pada table barang dengan menggunakan TRUNCATE, maka hasilnya akan menjadi seperti dibawah ini:

Bisa dilihat bahwa saat saya ingin menampilkan data pada table barang kembali, data yang ada didalamnya akan kosong karena saya menghapusnya dengan fungsi TRUNCATE 😁

Menghapus Table

Setelah kalian memahami fungsi TRUNCATE, disini saya akan menunjukkan kembali pada kalian bagaimana melakukan penghapusan kembali, namun disini bukan melakukan penghapusan pada data table, melainkan menghapus table yang ada pada database example_mysql.

Jika saja suatu saat kalian merasa bahwa table yang dibuat kurang efisien untuk digunakan maka kalian juga bisa melakukan penghapusan secara permanen pada table yang telah dibuat dengan perintah dibawah ini:

-- Untuk melakukan penghapusan pada table, 
-- masih sama seperti melakukan penghapusan pada dataase
-- masih menggunakan fungsi DROP
DROP TABLE nama_tabel;

-- Example
DROP TABLE barang;

Setelah kalian melakukan penghapusan pada table yang sudah dibuat sebelumnya, maka ketika melihat isi table kembali pada database kalian maka sistem akan memacanya bahwa tidak ada table lagi yang tersedia.

Ini karena table yang ada pada database yang saya buat hanya berjumlah satu saja, agar sebagi contoh ketika melakukan DDL pada database 😁

Sejauh ini saya sudah memberikan contoh bagaimana cara menerapkan DDL (Data Definition Language) pada MariaDB [MySQL], lalu untuk article kali ini saya akan berhenti pada DDL terlebih dahulu, karena tulisan kali ini sudah sangat panjang menurut saya 😂

Pada article selanjutnya saya akan menuliskan kembali fungsi DML pada MariaDB [MySQL], jika kalian tertarik pada tulisan saya… silakan untuk memberikan tepuk tangan yang meriah dan silakan untuk memberikan komentar jika kalian memiliki pemikiran lainnya, mari bangun diskusi bersama dan belajar bersama guys 😄

References

Youtube: Programmer Zaman Now

Author

Email: syarifudinjaelani@gmail.com

LinkedIn: https://www.linkedin.com/in/syarifudin-jaelani-b956761b3/

GitHub: https://github.com/RIFF7

My Instagram: https://www.instagram.com/riif_j/

Instagram Portofolio: https://www.instagram.com/paper.curt/

Threads: https://www.threads.net/@riif_j

--

--