Kursus
Data menjadi fondasi masyarakat kita yang semakin digital. Dari aplikasi seluler dan sistem perbankan hingga mesin pencari dan chatbot AI generasi berikutnya seperti ChatGPT, semua alat ini tidak akan mungkin ada tanpa data. Pernahkah Anda bertanya-tanya di mana semua data ini disimpan? Benar sekali: basis data.
Basis data adalah kumpulan data terstruktur yang terorganisasi, biasanya disimpan dalam sistem komputer. Sebagian besar data di seluruh dunia disimpan dalam basis data relasional.
Dalam tutorial ini, kita akan berfokus pada MySQL, sistem manajemen basis data relasional (RDBMS) yang populer. Didukung oleh Oracle, MySQL adalah basis data open-source yang andal, dapat diskalakan, dan mudah digunakan, dipakai oleh beberapa perusahaan paling penting di bidang teknologi, termasuk Meta, Netflix, dan Airbnb.
Setelah membaca artikel ini, Anda akan siap mulai menggunakan alat yang populer dan mapan ini, mulai dari memasangnya di komputer Anda dan membuat basis data hingga menjalankan kueri SQL dasar serta operasi yang lebih lanjut. Siap menerima tantangan? Mari kita mulai!
Prasyarat dan Konsep Dasar
Ada banyak jenis basis data, dan masing-masing cocok untuk menyimpan jenis data yang berbeda. Dalam beberapa tahun terakhir, jenis basis data baru dikembangkan untuk mengatasi meningkatnya keragaman format data. Terlepas dari munculnya basis data yang disebut NoSQL, basis data relasional masih menjadi yang paling populer.
Basis data relasional dirancang untuk menyimpan data sebagai kumpulan tabel yang telah ditentukan sebelumnya dengan baris dan kolom yang saling terhubung melalui satu atau lebih relasi.
Cara standar untuk membuat, mengelola, dan berkomunikasi dengan basis data adalah SQL (Structured Query Language). SQL menjadi fondasi bagi beberapa yang paling populer di pasar, termasuk PostgreSQL, SQLite, dan MySQL.
Untuk mengikuti tutorial ini, kami merekomendasikan pemahaman dasar tentang SQL. Cara yang baik untuk memulai adalah melalui Kursus Pengantar SQL kami. Anda juga memerlukan MySQL di komputer Anda, jadi mari bahas cara memasang MySQL.
Menyiapkan MySQL
Proses pemasangan alat ini cukup mudah. Anda hanya perlu mengunduh penginstal yang sesuai dari situs resmi, tergantung pada sistem operasi komputer Anda, apakah macOS, Windows, atau Linux.
Pemasangan di macOS
Setelah Anda mengunduh paket penginstal MySQL, ikuti petunjuk dalam wizard penginstal. Anda dapat mengikuti pemasangan standar, meskipun Anda juga dapat menyesuaikan komponen yang akan dipasang dengan mengeklik tombol "Customize".

MySQL Package Installer Wizard: Customize. Sumber: MySQL
Setelah pemasangan MySQL Server baru berhasil, selesaikan langkah konfigurasi dengan memilih jenis enkripsi default untuk kata sandi, menentukan kata sandi root, dan mengaktifkan (atau menonaktifkan) server MySQL saat startup.
Saat memasang menggunakan paket penginstal, file akan dipasang ke direktori dalam /usr/local yang sesuai dengan nama versi dan platform pemasangan.
Pemasangan di Windows
Memasang MySQL di Windows cukup mudah. Metode yang direkomendasikan adalah mengunduh Windows Installer dan membiarkannya memasang serta mengonfigurasi versi MySQL tertentu. Jika Anda menggunakan pemasangan default, Windows akan otomatis menjalankan MySQL sebagai local host.
Pemasangan di Linux
Linux mendukung sejumlah solusi berbeda untuk memasang MySQL. MySQL merekomendasikan Anda menggunakan salah satu distribusi dari Oracle, yang menyediakan beberapa metode pemasangan sebagaimana tercantum dalam dokumentasi.
Memahami MySQL
Sebelum mulai menggunakan MySQL, ada baiknya menganalisis cara kerja MySQL. Mari kita bahas beberapa konsep intinya.
Arsitektur MySQL
Seperti banyak basis data relasional populer lainnya, MySQL dirancang dengan arsitektur klien-server.
Dalam model komputasi ini, server dirancang untuk menampung data, mengelola izin dan konfigurasi basis data, serta menangani sebagian besar sumber daya dan layanan yang diminta klien.
Dalam arsitektur klien-server yang umum, ada satu server terpusat dan banyak klien. Komputer apa pun dapat menjadi server jika dikonfigurasi untuk menyediakan layanan. Namun, server umumnya adalah mesin yang sangat bertenaga dan besar karena paling mampu menangani volume permintaan dan data yang tinggi.
Sebaliknya, klien dapat berada di jenis komputer apa pun.

Arsitektur klien-server. Sumber: DataCamp
Di MySQL, dua komponen tersebut adalah klien MySQL dan server MySQL.
Tipe Data
Tipe data digunakan untuk menentukan nilai yang dapat ditampung sebuah kolom. Ini berfungsi sebagai semacam metadata yang membantu SQL memahami jenis data yang diharapkan pada setiap kolom dan bagaimana memproses kueri terhadap kolom tertentu.
MySQL mendukung tipe data SQL umum dalam tiga kategori utama:
- Tipe numerik
- Tipe string
- Tipe tanggal dan waktu
Pada tabel berikut, Anda dapat melihat ikhtisar tipe data utama di MySQL.
Tipe Data Numerik
|
Tipe Data |
Deskripsi |
|
TINYINT |
Bilangan bulat yang sangat kecil. |
|
SMALLINT |
Bilangan bulat kecil. |
|
MEDIUMINT |
Bilangan bulat berukuran sedang. |
|
INT atau INTEGER |
Bilangan bulat standar. |
|
BIGINT |
Bilangan bulat besar. |
|
FLOAT |
Bilangan pecahan (floating-point). |
|
DOUBLE |
Bilangan floating-point dengan presisi ganda. |
|
DECIMAL atau NUMERIC |
Bilangan titik tetap (fixed-point). |
Tipe data tanggal dan waktu
|
Tipe Data |
Deskripsi |
|
DATE |
Nilai tanggal dalam format YYYY-MM-DD. |
|
TIME |
Nilai waktu dalam format HH:MM:SS. |
|
DATETIME |
Nilai tanggal dan waktu dalam format YYYY-MM-DD HH:MM:SS. |
|
TIMESTAMP |
Nilai stempel waktu dalam format YYYY-MM-DD HH:MM:SS. |
|
YEAR |
Nilai tahun dalam format YYYY atau YY. |
Tipe data string
|
Tipe Data |
Deskripsi |
|
CHAR |
String dengan panjang tetap. |
|
VARCHAR |
String dengan panjang variabel. |
|
TINYTEXT |
String teks yang sangat kecil. |
|
TEXT |
String teks kecil. |
|
MEDIUMTEXT |
String teks berukuran sedang. |
|
LONGTEXT |
String teks besar. |
|
ENUM |
Objek string yang hanya dapat memiliki satu nilai, dipilih dari daftar nilai yang telah ditentukan. |
|
SET |
Objek string yang dapat memiliki nol atau lebih nilai, dipilih dari daftar nilai yang telah ditentukan. |
Mengakses MySQL
Setelah Anda memasang MySQL di komputer, Anda dapat mulai menggunakannya dari terminal. Untuk menjalankan MySQL, Anda dapat mengaksesnya dengan nama pengguna dan kata sandi terkait. Dalam kasus ini, kita akan mengakses MySQL dengan akun root, beserta kata sandi root yang kita tetapkan saat pemasangan. Karena kita masuk pada mesin yang sama tempat MySQL berjalan, kita tidak perlu memberikan informasi pada parameter host (-h):
> mysql -uroot -p
Jika Anda ingin menambahkan pengguna baru, ketik:
> CREATE USER 'username' IDENTIFIED BY 'password';
Setelah Anda membuat pengguna baru, Anda dapat masuk ke MySQL menggunakan perintah ini dan pesan sambutan akan ditampilkan, diikuti oleh prompt mysql>:
> mysql -u username -p
Welcome to the MySQL monitor. Commands end with; or \g.
Your MySQL connection id is 25
Server version: 8.1.0 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
Owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Cara Membuat Basis Data MySQL
Membuat Basis Data
Sekarang saatnya membuat basis data pertama Anda di MySQL. Untuk tutorial ini, kita ingin membuat basis data bernama "datacamp_courses", yang akan memuat informasi tentang beberapa kursus DataCamp. Basis data dihosting secara lokal.
Untuk membuat basis data, gunakan perintah berikut:
mysql> CREATE DATABASE datacamp_courses;
Untuk memeriksa bahwa basis data telah dibuat, ketik perintah berikut dan sebuah tabel dengan semua basis data yang tersedia akan ditampilkan:
mysql> SHOW databases;
+--------------------+
| Database |
+--------------------+
| datacamp_courses |
| mysql |
+--------------------+
5 rows in set (0,00 sec)
Sekarang Anda siap mengakses basis data baru Anda.
mysql> USE datacamp_courses;
Database changed
Membuat Tabel
Sejauh ini, Anda telah membuat basis data pertama Anda. Namun masih kosong. Sekarang, kita akan membuat tabel pertama dari basis data tersebut. Kita ingin membuat tabel bernama 'courses', dengan informasi tentang beberapa kursus yang tersedia di katalog kursus DataCamp.
Saatnya membuat tabel pertama Anda di basis data "datacamp_courses". Kita ingin membuat tabel dengan informasi tentang beberapa kursus dalam Katalog Kursus DataCamp.
Kunci utama (primary key) tabel haruslah course_id (perhatikan bahwa hanya ini yang dicetak tebal), dan tipe datanya adalah integer. Primary key adalah kendala yang memaksa nilai kolom tidak boleh null dan unik. Ini memungkinkan Anda mengidentifikasi secara unik suatu instance tertentu atau sekumpulan instance yang ada di tabel.
Kolom-kolom lainnya memberikan informasi tentang nama kursus, instruktur kursus, topik kursus, dan url.
Untuk membuat tabel pertama dari basis data "datatacamp_courses", gunakan perintah berikut:
mysql> CREATE TABLE courses (
course_id int NOT NULL,
course_name varchar(250) NOT NULL,
instructor_name varchar(250) NOT NULL,
technology varchar(50) NOT NULL,
topic varchar(50) NOT NULL,
PRIMARY KEY (course_id)
);
Kueri SQL Dasar
Anda sudah memiliki basis data dan tabel pertama Anda. Bagus! Sekarang saatnya menambahkan data ke tabel tersebut.
Mari tambahkan beberapa baris berisi kursus populer yang tersedia di katalog kami dengan pernyataan INSERT. Kode berikut akan melakukan tugasnya.
INSERT INTO
courses (course_id, course_name, instructor_name, technology, topic) VALUES
(1, 'Introduction to SQL', 'Izzy Weber', 'SQL','Data Manipulation'),
(2, 'Database Design', 'Lis Sulmont', 'SQL', 'Data Engineering'),
(3, 'Data Manipulation with pandas', 'Richie Cotton', 'R','Programming'),
(4, 'Generative AI Concepts', 'Daniel Tedesco', 'Theory', 'AI & Machine Learning');
Untuk memeriksa bahwa baris-baris tersebut telah ditambahkan dengan benar, mari lihat semua baris dalam tabel dengan pernyataan SELECT:
SELECT * FROM courses;
+-----------+-------------------------------+-----------------+------------+-----------------------+
| course_id | course_name | instructor_name | technology | topic |
+-----------+-------------------------------+-----------------+------------+-----------------------+
| 1 | Introduction to SQL | Izzy Weber | SQL | Data Manipulation |
| 2 | Database Design | Lis Sulmont | SQL | Data Engineering |
| 3 | Data Manipulation with pandas | Richie Cotton | R | Programming |
| 4 | Generative AI Concepts | Daniel Tedesco | Theory | AI & Machine Learning |
+-----------+-------------------------------+-----------------+------------+-----------------------+
4 rows in set (0,00 sec)
Anda mungkin memperhatikan ada kesalahan pada data yang baru saja kita tambahkan. Teknologi untuk kursus Data Manipulation with pandas seharusnya Python, bukan R. Mari perbaiki kesalahan tersebut dengan pernyataan UPDATE bersama klausa WHERE untuk menentukan baris yang akan diperbarui
UPDATE courses SET technology = 'Python' WHERE course_id = 3;
SELECT * FROM courses;
+-----------+-------------------------------+-----------------+------------+-----------------------+
| course_id | course_name | instructor_name | technology | topic |
+-----------+-------------------------------+-----------------+------------+-----------------------+
| 1 | Introduction to SQL | Izzy Weber | SQL | Data Manipulation |
| 2 | Database Design | Lis Sulmont | SQL | Data Engineering |
| 3 | Data Manipulation with pandas | Richie Cotton | Python | Programming |
| 4 | Generative AI Concepts | Daniel Tedesco | Theory | AI & Machine Learning |
+-----------+-------------------------------+-----------------+------------+-----------------------+
4 rows in set (0,00 sec)
Terakhir, Anda mungkin ingin menghapus salah satu rekaman dalam tabel Anda. Misalnya, mari hapus kursus Generative AI Concepts:
DELETE from courses WHERE course_name = 'Generative AI Concepts';
SELECT * FROM courses;
+-----------+-------------------------------+-----------------+------------+-------------------+
| course_id | course_name | instructor_name | technology | topic |
+-----------+-------------------------------+-----------------+------------+-------------------+
| 1 | Introduction to SQL | Izzy Weber | SQL | Data Manipulation |
| 2 | Database Design | Lis Sulmont | SQL | Data Engineering |
| 3 | Data Manipulation with pandas | Richie Cotton | Python | Programming |
+-----------+-------------------------------+-----------------+------------+-------------------+
3 rows in set (0,00 sec)
Topik Lanjutan
Pengindeksan
Secara default, saat MySQL harus mencari beberapa baris, ia akan mulai dari baris pertama lalu membaca dari awal hingga akhir. Perilaku ini bisa bermasalah saat basis data Anda memiliki jutaan baris, karena prosesnya bisa sangat lambat.
Cara yang bagus untuk mempercepat pencarian baris di tabel Anda oleh MySQL adalah dengan membuat indeks. Indeks adalah komponen dari tabel Anda yang digunakan MySQL untuk mengambil baris dengan kolom tertentu lebih cepat.
Mari buat sebuah indeks pada tabel course kita bernama "idx_course" pada kolom "course_id".
CREATE INDEX idx_course
ON courses (course_id);
Join
Sampai titik ini, kita hanya bekerja dengan tabel course. Namun Anda baru mulai memanfaatkan potensi penuh basis data relasional, seperti MySQL, saat Anda bekerja dengan beberapa tabel sekaligus.
Alat andalan untuk menggabungkan beberapa tabel adalah operasi JOIN. Bayangkan kita memiliki tabel kedua di basis data kita bernama 'instructors' yang memuat informasi dasar tentang instruktur kursus DataCamp. Skrip berikut membuat tabel tersebut dan menambahkan beberapa baris (fiktif):
mysql> CREATE TABLE instructors (
instructor_id int NOT NULL,
instructor_name varchar(250) NOT NULL,
role varchar(500) NOT NULL,
number_courses int NOT NULL,
PRIMARY KEY (instructor_id)
);
INSERT INTO
instructors (instructor_id, instructor_name, role, number_courses) VALUES
(1, 'Lis Sulmont', 'Data Scientist', 4),
(2, 'Daniel Tedesco', 'Business Analyst', 1),
(3, 'Richie Cotton', 'Data Evangelist',5),
(4, 'Izzy Weber', 'Data Engineer', 2),
(5, 'James Chapman', 'Data Analyst',3);
Bayangkan Anda ingin menggabungkan kedua tabel untuk mendapatkan informasi tentang kursus sekaligus data terkait instruktur. Kita akan menggunakan INNER JOIN untuk hanya mengambil informasi kursus yang muncul di tabel course. Kolom umum untuk melakukan join adalah "instructor_name".
mysql> SELECT * FROM courses
-> INNER JOIN instructors
-> ON courses.instructor_name = instructors.instructor_name;
+-----------+-------------------------------+-----------------+------------+-------------------+---------------+-----------------+-----------------+----------------+
| course_id | course_name | instructor_name | technology | topic | instructor_id | instructor_name | role | number_courses |
+-----------+-------------------------------+-----------------+------------+-------------------+---------------+-----------------+-----------------+----------------+
| 2 | Database Design | Lis Sulmont | SQL | Data Engineering | 1 | Lis Sulmont | Data Scientist | 4 |
| 3 | Data Manipulation with pandas | Richie Cotton | Python | Programming | 3 | Richie Cotton | Data Evangelist | 5 |
| 1 | Introduction to SQL | Izzy Weber | SQL | Data Manipulation | 4 | Izzy Weber | Data Engineer | 2 |
+-----------+-------------------------------+-----------------+------------+-------------------+---------------+-----------------+-----------------+----------------+
3 rows in set (0,00 sec)
Ini hanya salah satu jenis join, tetapi ada jenis lain yang sama bermanfaatnya tergantung pada kasus penggunaan Anda. Kursus Joining Data in SQL dan lembar contekan tentang JOIN kami akan membantu Anda memulai.
Praktik Terbaik MySQL
Langkah Keamanan
Basis data modern dapat menyimpan tabel dengan jutaan baris. Dengan begitu banyak data dan aplikasi yang bergantung padanya, menjaga keamanan data ini sangat penting.
Basis data menghadapi risiko umum, termasuk salah kelola akses basis data, kata sandi yang lemah, dan injeksi SQL. Untuk mengatasi ancaman dan kelemahan ini, sejumlah strategi dan langkah dapat diterapkan, termasuk mengonfigurasi hak akses bergantung pada pengguna, membangun trigger di server SQL, dan menerapkan metodologi enkripsi. Tempat yang bagus untuk memulai keamanan SQL adalah Kursus Desain Basis Data kami.
Optimasi Kinerja
Seiring kemajuan Anda dalam menulis kode SQL, Anda akan mulai menyadari pentingnya kinerja. Satu kueri SQL dapat ditulis dengan berbagai cara. Semuanya bekerja, tetapi beberapa lebih efisien dibanding yang lain.
Ada banyak strategi dan kiat yang dapat membantu Anda meningkatkan kinerja kode SQL, termasuk subquery dan klausa SQL seperti WHERE, HAVING, dan DISTINCT.
Namun efisiensi bukan hanya masalah teknis; ini juga soal keteraturan dan keterbacaan. Dengan sedikit perubahan pada cara Anda menulis SQL, seperti menggunakan alias dan komentar, Anda dapat menghasilkan perbedaan besar yang membantu Anda dan tim Anda.
Ingin mempelajari lebih lanjut tentang optimasi kinerja SQL? Lihat Kursus Improving Query Performance in SQL Server kami
Kesimpulan
Selamat telah mencapai akhir tutorial MySQL ini. Kami berharap Anda menikmati pengantar MySQL dan kemampuannya. Jika Anda tertarik pada manajemen basis data, mempelajari MySQL adalah langkah yang cerdas.
Namun ini baru awal perjalanan Anda. Jika Anda ingin mempelajari lebih lanjut tentang MySQL dan SQL secara umum, Datacamp siap membantu. Berikut beberapa sumber untuk membantu Anda memulai:
Saya adalah analis data lepas yang berkolaborasi dengan perusahaan dan organisasi di seluruh dunia dalam proyek ilmu data. Saya juga instruktur ilmu data dengan pengalaman lebih dari 2 tahun. Saya rutin menulis artikel terkait ilmu data dalam bahasa Inggris dan Spanyol, beberapa di antaranya telah diterbitkan di situs tepercaya seperti DataCamp, Towards Data Science, dan Analytics Vidhya. Sebagai ilmuwan data dengan latar belakang ilmu politik dan hukum, tujuan saya adalah bekerja pada irisan kebijakan publik, hukum, dan teknologi, memanfaatkan kekuatan gagasan untuk mendorong solusi serta narasi inovatif yang dapat membantu kita menghadapi tantangan mendesak, khususnya krisis iklim. Saya menganggap diri saya seorang autodidak, pembelajar sepanjang hayat, dan pendukung kuat pendekatan multidisipliner. Tidak pernah ada kata terlambat untuk mempelajari hal baru.

