Lewati ke konten utama

Tutorial MySQL: Panduan Komprehensif untuk Pemula

Pelajari apa itu MySQL dan cara memulai dengan salah satu sistem manajemen basis data paling populer.
Diperbarui 28 Sep 2026  · 15 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

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.

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.

Client-server architecture.

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:


Javier Canales Luna's photo
Author
Javier Canales Luna
LinkedIn

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.

Topik
SQL

Mulai Perjalanan SQL Anda Hari Ini!

Kursus

Pengantar SQL

2 jam
1.6M
Pelajari cara membuat dan mengakses basis data relasional menggunakan SQL dalam waktu hanya dua jam.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya