MySQL - Versi

Hai, penggemar basis data yang sedang berkembang! Saya sangat senang untuk mengantar Anda melalui dunia yang menarik dari MySQL versi. Sebagai guru komputer tetangga yang ramah dengan tahun-tahun pengalaman, saya akan memastikan kita menjelajahi topik ini dengan mudah dan menyenangkan. Jadi, siapkan notepad virtual Anda, dan mari kita masuk ke dalamnya!

MySQL - Versions

MySQL Versi

MySQL, seperti anggur yang bagus, semakin baik seiring waktu. Sejak inisiasi pada tahun 1995, itu telah mengalami banyak pembaruan dan peningkatan. Mari kita buat perjalanan singkat melalui beberapa versi utama:

MySQL 3.23 (2001)

Versi ini adalah perubahan besar, memperkenalkan fitur seperti:

  • Indeks teks lengkap
  • Replikasi
  • Cache query

MySQL 4.0 (2003)

Rilis ini membawa beberapa penambahan menarik:

  • Query gabungan (union)
  • Subquery
  • Fungsi GIS

MySQL 5.0 (2005)

Sebuah tonggak utama, memperkenalkan:

  • Prosedur tersimpan
  • View
  • Trigger

MySQL 5.5 (2010)

Versi ini fokus pada peningkatan kinerja:

  • InnoDB sebagai mesin penyimpanan default
  • Replikasi semi-sinkron

MySQL 5.6 (2013)

Meningkatkan kinerja dan skala:

  • Operasi DDL daring
  • Peningkatan kinerja replikasi

MySQL 5.7 (2015)

Pembaruan penting dengan:

  • Dukungan JSON
  • Fitur keamanan yang ditingkatkan
  • Peningkatan skema kinerja

MySQL 8.0 (2018)

Versi utama terbaru, yang kita akan jelajahi lebih detail segera!

Fitur Ditambahkan di MySQL 8.0

MySQL 8.0 seperti superhero basis data, penuh dengan kekuatan dan kemampuan baru. Mari kita eksplor beberapa fitur terbaiknya:

1. Penyimpanan Dokumen

MySQL sekarang mendukung penyimpanan dan pengqueryan dokumen JSON, membuatnya menjadi basis data relasional dan dokumen. Berikut adalah contoh sederhana:

CREATE TABLE products (
id INT PRIMARY KEY,
details JSON
);

INSERT INTO products VALUES (1, '{"name": "Laptop", "price": 999.99, "specs": {"RAM": "16GB", "CPU": "i7"}}');

SELECT JSON_EXTRACT(details, '$.name') AS product_name
FROM products
WHERE JSON_EXTRACT(details, '$.price') < 1000;

Kode ini membuat tabel dengan kolom JSON, memasukkan produk dengan rincian bersarang, dan kemudian mengquerynya berdasarkan properti JSON.

2. Fungsi Window

Fungsi window memungkinkan Anda melakukan perhitungan di atas set baris yang terkait dengan baris saat ini. Berikut adalah contoh:

SELECT
product_name,
category,
price,
AVG(price) OVER (PARTITION BY category) AS avg_category_price
FROM products;

Query ini menghitung rata-rata harga untuk setiap kategori bersamaan dengan harga produk individual.

3. Ekspresi Tabel Umum (CTEs)

CTEs membuat query kompleks lebih mudah dibaca. Berikut adalah contoh sederhana:

WITH high_value_customers AS (
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 10000
)
SELECT c.name, c.email
FROM customers c
JOIN high_value_customers hvc ON c.id = hvc.customer_id;

Query ini terlebih dahulu mendefinisikan CTE untuk pelanggan berharga tinggi, kemudian menggunakannya dalam query utama.

4. Indeks Tak Terlihat

Anda sekarang dapat membuat indeks tak terlihat untuk tujuan pengujian:

ALTER TABLE customers ALTER INDEX idx_email INVISIBLE;

Ini memungkinkan Anda menguji dampak indeks tanpa menghapusnya secara fisik.

5. Peningkatan SQL Roles

MySQL 8.0 memperkenalkan kontrol akses berbasis role yang lebih kuat:

CREATE ROLE 'app_developer', 'app_read', 'app_write';

GRANT SELECT ON app_db.* TO 'app_read';
GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';

GRANT 'app_read', 'app_write' TO 'app_developer';

CREATE USER 'jane'@'localhost' IDENTIFIED BY 'password123';
GRANT 'app_developer' TO 'jane'@'localhost';

Contoh ini membuat role dengan izin yang berbeda dan mengassignnya ke pengguna.

Fitur Tak Terpakai di MySQL 8.0

Sebagai MySQL berkembang, beberapa fitur menjadi usang. Itu seperti membersihkan lemari - kadang-kadang Anda perlu membuat ruang untuk hal baru! Berikut adalah beberapa fitur tak terpakai di MySQL 8.0:

Fitur Tak Terpakai Pengganti/Alternatif
Opksi --skip-symbolic-links --skip-symlink
Fungsi ENCRYPT() Gunakan AES_ENCRYPT()
Fungsi DES_ENCRYPT() dan DES_DECRYPT() Gunakan AES_ENCRYPT() dan AES_DECRYPT()
Fungsi FOUND_ROWS() Gunakan SELECT dengan klausa LIMIT
SQL_CALC_FOUND_ROWS Gunakan SELECT COUNT(*)

Ingat, "tak terpakai" tidak berarti fitur ini telah hilang segera. Itu lebih seperti peringatan ramah bahwa mereka mungkin tidak ada di versi mendatang, jadi sebaiknya mulai menggunakan alternatifnya.

Dalam kesimpulan, MySQL 8.0 seperti pisau Wenger untuk manajemen basis data - penuh dengan alat yang kuat sambil mempercepat beberapa yang lama. Sebagai Anda terus menjelajahi MySQL, ingat bahwa setiap versi membawa kemungkinan dan peningkatan baru. Tetap curiga, terus mencoba, dan terutama, bersenang-senang dengan basis data Anda!

Credits: Image by storyset