Rangkuman MySQL

2020-09-06

Apa itu MySQL?

MySQL adalah sistem manajemen database relasional open source (RDBMS) dengan client-server model.

Dasar Penggunaan

Sebelum bisa menjalankan MySQL, kita harus menginstallnya terlebih dahulu. Karena saya tidak punya Windows dan mager untuk install sehingga tidak bisa menggunakan XAMPP, saya akan menggunakan paket MySQL dari repositori Archlinux. Lagipula yg akan kita gunakan hanya MySQL saja. Tidak membutuhkan server apache.

Instalasi MySQL

Sesuaikan dengan package manager masing masing apabila tidak menggunakan Archlinux atau turunannya.

sudo pacman -S mariadb

Setelah paket mariadb terpasang, jalankan perintah dibawah untuk memasang database pada direktori /var/lib/MySQL

sudo mariadb-install-db --user=MySQL --basedir=/usr --datadir=/var/lib/MySQL

Setelah itu nyalakan service mariadb dengan cara menjalankan perintah dibawah ini.

sudo systemctl start mariadb

Apabila berhasil, seharusnya kita sudah bisa menjalankan perintah dibawah ini.

sukses

Perintah pada MySQL

Memeriksa versi

Untuk memeriksa versi dari MySQL atau mariadb, kita bisa menjalankan perintah dibawah.

versi

Sebenarnya paket yg ada pada Archlinux adalah mariadb, namun apabila kita mengganti perintah mariadb dengan MySQL tetap bisa. Penjelasan lebih detailnya ada disini

Memeriksa status service

Untuk memeriksa apakah MySQL berjalan atau tidak, cukup ketikkan perintah dibawah ini.

systemctl status mariadb | grep Active

Maka kira kira outputnya akan seperti ini

Active: active (running) since Fri 2020-09-04 13:59:04 WIB; 5s ago

Apabila sedang aktif, maka akan menunjukkan active. Sedangkan apabila sedang tidak aktif, maka akan menunjukkan inactive.

Menampilkan bantuan pada MySQL

Untuk menampilkan bantuan/help pada MySQL, cukup ketikkan help atau ? pada prompt MySQL. Maka akan keluar output seperti ini.

General information about MariaDB can be found at
http://mariadb.org

List of all client commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to MariaDB server, display result vertically.
exit      (\q) Exit MySQL. Same as quit.
go        (\g) Send command to MariaDB server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your MySQL prompt.
quit      (\q) Quit MySQL.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.

For server side help, type 'help contents'

Operasi dasar matematika

MySQL mampu melakukan operasi dasar matematika seperti +, -, *, /, %, dan div. Cara melakukannya sangat mudah, cukup awali ekspresi matematika dengan select atau SELECT dan diakhiri dengan ; seperti gambar dibawah ini.

math

Karena keyword MySQL tidak case sensitive, select dan SELECT memiliki makna yang sama.

Menampilkan waktu saat ini

Untuk menampilkan waktu saat ini, kita cukup menuliskanSELECT curtime();, maka akan menghasilkan output seperti ini.

+-----------+
| curtime() |
+-----------+
| 14:12:53  |
+-----------+
1 row in set (0.000 sec)

Data Definition Language (DDL)

Menampilkan database

Untuk menampilkan semua database yg ada pada MySQL/mariadb, kita cukup menjalankan perintah SHOW DATABASES;

database

Membuat database

Kita akan membuat sebuah database dengan nama dbtoko. Untuk membuat database pada MySQL, kita menjalankan perintah CREATE DATABASE nama_database;

Pastikan database telah berhasil dibuat. Kita bisa cek apakah database berhasil dibuat atau tidak dengan perintah sebelumnya.

dbtoko

Menghapus database

Untuk menghapus database pada MySQL/mariadb, kita perlu menjalankan perintah DROP DATABASE nama_database;. Apabila sukses, maka akan muncul pesan kira kira seperti ini.

Query OK, 0 rows affected (0.00 sec)

Mengaktifkan database

Sebelum melakukan perintah pada database, kita harus mengaktifkan database yang ingin kita manipulasi isinya. Untuk melakukan hal tersebut, kita perlu menjalankan perintah USE nama_database;

aktif

Tipe Data

MySQL memiliki berbagai macam tipe data. Sebelum membuat tabel, kita harus mengetahui tipe data yg ada pada MySQL.

Tipe data numerik

Tipe data numerik berisi sekumpulan tipe data sejenis yang mampu menangani data-data numerik. Berikut ini beberapa tipe data yang digunakan dalam MySQL.

| Type | Bytes | Keterangan | | --------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | TINYINT | 1 | Type ini merupakan bentuk numerik yang paling kecil dalam menangani data di dalamnya, yang dapat menangani data mulai dari angka –128 sampai dengan 127. | | SMALLINT | 2 | Memiliki kemampuan menyimpan data lebih besar dari TINYINT, yaitu mampu untuk menangani data mulai dari -32768 sampai dengan 32767. | | MEDIUMINT | 3 | Mampu menangani data mulai dari -8388608 sampai dengan 8388607. | | INT | 4 | Type INT merupakan type yang sangat sering digunakan dalam pembuatan database, karena tipe ini dirasakan sangat cukup menampung dalam menangani data. Mampu menyimpan data mulai dari -2147483648 sampai 2147483647. | | BIGINT | 8 | Bentuk terbesar dalam menangani data Numerik, mampu menangani data mulai dari -9223372036854775808 sampai 9223372036854775807. |

Tipe data untuk waktu

Untuk menangani data-data yang berkaitan dengan waktu, kita dapat melihat beberapat tipe pada tabel berikut:

| Type | Keterangan | | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | DATETIME | Bentuk ini dapat menyimpan dua buah bentuk type data sekaligus, yaitu penanggalan dan waktu. Bentuk yang dapat diciptakan oleh DATETIME adalah '0000-00-00 00:00:00'. '0000-00-00’ merupakan bentuk penanggalan yang dimulai dari tahun, bulan, dan tanggal. Sedangkan 00:00:00 adalah tempat menyimpan waktu atau jam. Misalnya: ‘2004-06-22 08:15:45’. | | DATE | Bentuk ini digunakan untuk menyimpan data penanggalan saja, dengan bentuk penulisan '0000-00-00'. Penggunaan ini mirip seperti pada DATETIME, hanya saja yang ditampilkan hanya penanggalan saja. Misalnya, ‘2004-06-22’. | | TIMESTAMP | Bentuk penanggalan dengan TIMESTAMP ditampilkan berjajar tanpa ada pembatasnya, dengan bentuk penulisan 00000000000000 | | TIME | Bentuk TIME hanya digunakan untuk menyimpan data berbentuk jam. Yaitu dimulai dari tahun yang dibaca dari dua karakter terakhir dan selanjutnya diikuti bulan dan tanggal .bentuk penulisanya adalah '00:00:00'. pada prototype pewaktuan tersebut dapat dijabarkan bahwa 00 perma adalah jam yang diikuti menit dan detik. Contoh 08:35:55. | | YEAR | Bentuk yang paling sederhana adalah YEAR yang hanya menyimpan data berupa tahun saja. Ditulis secara lengkap 4 digit, misalnya: 2004 atau 1999 |

Tipe data string

| Type | Bytes | Keterangan | | ---------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | TINYTEXT | 255 | Type ini merupakan bentuk terkecil dari data String, yang mampu manangani data sampai dengan 2^8-1 data | | TINYBLOB | 255 | Bentuk TINYTEXT adalah bentuk yang sama dengan TINYBLOB, yaitu mampu menangani data sampai dengan 2^8-1 data | | TEXT | 65535 | Bentuk TEXT salah satu bentuk type String yang mampu menangani data sampai dengan berukuran 2^16-1 (64K-1) data | | BLOB | 65535 | Memiliki kemampuan sama dengan TEXT, yaitu sampai dengan 2^16-1 (64K-1) data | | MEDIUMTEXT | 16777215 | Dapat menyimpan data dengan ukuran cukup besar, sampai dengan 2^24-1 (16M-1) data | | MEDIUMBLOB | 16777215 | Bentuk MEDIUMTEXT dapat Anda ganti dengan bentuk data MEDIUMBLOB, yang mampu menyimpan data sampai dengan 2^24-1 (16M-1) data | | LONGBLOB | 4294967295 | Type data LONGBLOB adalah bentuk Type data yang paling besar dalam menangani data. Data yang disimpan sampai dengan berukuran Giga Byte. Type ini memiliki batasan penyimpanan sampai dengan 2^32-1 (4G-1) data |

Daftar Tipe Data String yang Sering Digunakan

| Type | Keterangan | | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | VARCHAR | Bentuk ini dapat menyimpan data sampai dengan 225 karakter. Anda dapat menggunakan type ini apabila data yang dimasukan tidak lebih dari batasan tersebut | | CHAR | Bentuk CHAR hamper sama dengan VARCHAR, mampu menangani data sampai dengan 225 karakter | | ENUM | Digunakan untuk validasi. Type data seperti ini, biasanya, kolom ditentukan terlebih dahulu | | SET | Type data SET sebenarnya memiliki fungsi yang sama dengan type ENUM, yaitu dengan mendeklarasikan anggota dari isi kolom yang mungkin akan menjadi anggotanya |

BLOB(Binary Large Object) merupakan tipe data yang biasa digunakan untuk menyimpan data berbentuk biner. Tipe data seperti LONGBLOB dapat digunakan untuk menyimpan gambar.

Berikut beberapa contoh kurang tepatnya pemilihan tipe data:

  • Memilih CHAR(8) atau VARCHAR(10) dan bukannya DATE untuk menyimpan tanggal; kerugiannya, lebih boros tempat dan tidak bisa memanfaatkan fungsi-fungsi khusus tanggal;
  • Memilih CHAR(3) atau CHAR(6) ketimbang TINYINT UNSIGNED untuk menyimpan data boolean (“YES” dan “NO”; atau “TRUE” dan “FALSE”; padahal jauh lebih irit dinyatakan dengan 1 dan 0 yang hanya menempati 1 byte);
  • Memilih FLOAT atau DOUBLE dan bukannya DECIMAL untuk menyimpan jumlah uang; kerugiannya, FLOAT dan DOUBLE adalah berbasis biner dan seringkali tidak eksak dalam menyimpan pecahan desimal.

Operasi pada tabel

Membuat tabel

Untuk membuat tabel pada mysql, kita perlu menjalankan perintah dibawah ini.

CREATE tabel nama_tabel (nama_kolom TIPE_DATA, nama_kolom TIPE DATA);

Kita akan mencoba untuk membuat tabel seperti dibawah ini.

| nama | tipe data | | ---------- | -------- | | idkelompok | autonumber | | kelompok | varchar |

Untuk membuat tabel diatas, lihat gambar di bawah ini.

tblkelompok

Tekan enter pada tiap barisnya agar kursor berpindah ke bawah.

Menampilkan tabel

Untuk menampilkan tabel yang sudah dibuat, gunakan perintah SHOW TABLES; Maka akan muncul output seperti ini.

+------------------+
| Tables_in_dbtoko |
+------------------+
| tblkelompok      |
+------------------+
1 row in set (0.000 sec)

Menampilkan struktur tabel

Untuk menampilkan struktur dari tabel yg telah kita buat, gunakan perintah DESCRIBE nama_tabel;. Maka akan muncul output seperti ini.

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| idkelompok | int(11)      | NO   | PRI | NULL    | auto_increment |
| kelompok   | varchar(100) | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
2 rows in set (0.001 sec)

Membuat tabel barang

Untuk membuat tabel barang, lihat gambar dibawah ini.

tblbarang

Menampilkan semua kolom

Untuk menampilkan semua kolom pada suatu tabel, kita bisa gunakan perintah dibawah ini.

SELECT * FROM nama_tabel;

Menampilkan sebagian kolom

Apabila kita hanya ingin melihat sebagian kolom, maka gunakan perintah dibawah ini.

SELECT nama_kolom, nama_kolom FROM nama_tabel;

Menambahkan kolom

Jika dilihat pada desain terdapat kekurangan kolom pada tabel yang dibuat, kita bisa menambahkan kolom dengan perintah sebagai

ALTER TABLE nama_table ADD nama_kolom TIPE_DATA;

Menambahkan kolom setelah kolom

Apabila ingin menambahkan kolom setelah kolom tertentu, kita dapat menggunakan perintah dibawah ini.

ALTER TABLE nama_table ADD nama_kolom TIPE_DATA AFTER kolom_sebelumnya;

Merubah tipa data

Apabila kita ingin merubah data pada tabel yang sudah ada, kita gunakan perintah

ALTER TABLE nama_table MODIFY nama_kolom TIPE_DATA;

Memberi nilai default

Untuk memberi nilai awal pada sebuah kolom, gunakan perintah

ALTER TABLE nama_table ALTER COLUMN nama_kolom SET DEFAULT nilai_default;

Menghapus kolom

Untuk menghapus kolom, gunakan perintah

ALTER TABLE nama_table DROP COLUMN nama_kolom;

Merubah nama kolom

Untuk merubah nama kolom, kita bisa menggunakan perintah

ALTER TABLE nama_table CHANGE nama_kolom_lama nama_kolom_baru TIPE_DATA;

Menampilkan engine yg digunakan

MySQL memiliki 2 engine yaitu MyISAM dan InnoDB. Hanya InnoDB yang dapat menggunakan foreign key. Untuk mengetahui sebuah tabel dibuat menggunakan engine apa, kita bisa menjalankan perintah

SHOW CREATE nama_table;

Membuat index

Index digunakan untuk mempercepat proses pencarian data, terutama data yg sudah berjumlah ratusan ribu. Untuk membuat index, gunakan perintah dibawah ini.

CREATE INDEX nama_index ON nama_tabel (kolom);

Menampilkan index

Index yang sudah dibuat bisa ditampilkan dengan perintah dibawah ini.

SHOW INDEX FROM nama_tabel;

Data Manipulation Language (DML)

Memasukkan data pada semua kolom

Untuk memasukkan data pada kolom, kita dapat menggunakan perintah dibawah ini.

INSERT INTO nama_tabel VALUES (data_kolom, data_kolom);

Jumlah argumen untuk keyword VALUES tergantung banyaknya kolom yg ada pada tabel kita.

Memasukkan data pada sebagian kolom

Apabila hanya ingin mengisi sebagian kolom, kita dapat menggunakan perintah dibawah.

INSERT INTO nama_tabel (nama_kolom) VALUES (data_kolom);

Melihat data yg ada pada tabel

Untuk melihat data yg ada pada tabel, gunakan perintah dibawah ini.

SELECT * FROM nama_tabel;

Hapus sebagian data (satu baris)

Jika kita tidak ingin suatu data lagi, kita bisa menghapusnya dengan menggunakan perintah dibawah ini.

DELETE FROM nama_table WHERE baris_yang_akan_dihapus;

Hapus semua data

Apabila kita ingin menghapus seluruh tabel, gunakan perintah dibawah ini.

DELETE FROM nama_table;

Memperbarui sebagian data

Untuk memperbarui sebagian data yg ada pada tabel, kita bisa menggunakan perintah dibawah ini.

UPDATE nama_tabel SET nama_kolom=isi_kolom WHERE
nama_kolom=baris_yang_dipilih_untuk_diubah;

Memperbarui semua data

Jika kita ingin memperbarui semua data sekaligus pada tabel, gunakan perintah dibawah ini.

UPDATE nama_tabel SET nama_kolom=isi_kolom;

Tabel Master dan Tabel Transaksi

Tabel master

Tabel master adalah suatu tabel yang memasuki tabel lain.

Tabel transaksi

Tabel master adalah suatu tabel yang dimasuki tabel lain.

Primary dan Foreign Key

Primary key

Primary key adalah field yang digunakan sebagai identifikasi tabel yang akan digunakan untuk masuk ke tabel yang lain.

Foreign key

Foreign key adalah field yang datang dari tabel lain yang memiliki field primary key.

Relational Dependencies (Hubungan Ketergantungan)

Relational dependencies atau hubungan ketergantungan berarti suatu tabel bergantung pada tabel lainnya. Tabel tersebut tidak akan bisa berfungsi apabila tabel ketergantungannya tidak ada. Misalnya A bergantung pada B, apabila B tidak ada maka A tidak akan berfungsi.

Proses Bisnis (Alur Kerja)

Pada relasi tersebut terdapat alur kerja yang sering disebut dengan PROSES BISNIS. Proses bisnis pada relasi tersebut misalnya: Sebelum toko dibuka pemilik akan mengelompokan barang – barang yang akan dijual. Kelompok barang tersebut akan disimpan di tabel kelompok.

Tiap tabel akan memiliki primary key yang akan digunakan sebagai foreign key pada 1 tabel yang berisikan foreign key dari tabel lainnya.

Operasi relasi pada tabel

Membuat relasi antar tabel

Apabila kita ingin membuat relasi antar tabel pada MySQL, kita bisa menggunakan perintah dibawah ini.

ALTER TABLE nama_tabel_detail ADD CONSTRAINT
FK_foreign_key_pada_tabel_detail FOREIGN KEY (foreign_key) REFRENCES
nama_tabel_master (primary_key_tabel_master) ON UPDATE CASCADE ON
DELETE RESTRICT;
  • ON UPDATE CASECADE: jika kolom primary key pada tabel master maka kolom foreign key pada tabel transaksi akan berubah.

  • ON DELETE RESTRICT: Kolom primary key di tabel master TIDAK BISA di hapus jika kolom tersebut masih digunakan pada tabel transaksi. ON DELETE CASCADE jika baris pada kolom master dihapus maka semua baris data yang menggunakan isi tabel master pada tabel transaksi akan terhapus

Membuat tabel view

Tabel view digunakan untuk menggabungkan tabel master dan tabel transaksi menjadi sebuah tabel baru agar lebih mudah dilihat dan digunakan. Untuk membuatnya, gunakan perintah dibawah ini.

CREATE VIEW nama_view AS SELECT tabel_transaksi.kolom_transaksi,
tabel_master.kolom_master FROM tabel_transaksi INNER JOIN tabel_master
ON tabel_transaksi.kolom_transaksi = tabel_master.kolom_master;

Menampilkan semua view

Apabila kita ingin melihat semua tabel view, kita bisa menggunakan perintah dibawah ini.

SHOW FULL TABLES IN nama_database WHERE TABLE_TYPE LIKE ‘VIEW’;

Melihat isi view

Untuk melihat isi view, perintahnya sama dengan cara melihat isi kolom.

Menghapus view

Jika dirasa tabel view sudah tidak digunakan lagi, kita bisa menghapusnya menggunakan perintah dibawah ini.

DROP VIEW nama_view;

Urutan SELECT

Kita bisa mengurutkan hasil dari SELECT, caranya adalah sebagai berikut.

SELECT * FROM nama_tabel_atau_view ORDER BY nama_kolom ASC/DESC;

Mengelompokkan SELECT

Apabila kita ingin mengelompokan kolom yg kita SELECT, kita bisa menggunakan perintah dibawah ini.

SELECT * FROM nama_tabel_atau_view GROUP BY nama_kolom;

Pembanding pada keyword WHERE

Kita bisa menggunakan pembanding seperti =, >, <>, >=, <=, LIKE, AND, dan OR. Untuk melakukan hal tersebut, gunakan perintah dibawah ini.

SELECT * FROM nama_tabel_atau_view WHERE pengujian ORDER BY nama_kolom;

MySQL juga mendukung globbing, namun syntaxnya sedikit berbeda. Alih alih menggunkan *, MySQL menggunakan % sebagai gantinya. Misalnya *a menjadi %a.

Kita juga bisa melakukan nested SELECT. Yaitu mengambil data dari data yg sebelumnya diambil menggunakan SELECT. Namun penggunaan tanda * hanya bisa dilakukan oleh SELECT pertama saja. Misalnya seperti ini.

SELECT * FROM nama_tabel WHERE nama_kolom IN (SELECT nama_kolom FROM
nama_tabel)

Konsep trigger

Trigger adalah perintah INSERT, UPDATE, DELETE, FUNCTION, PROCEDURE yang ditanam pada MySQL yang akan dijalankan pada kejadian berikut:

  • AFTER INSERT
  • BEFORE INSERT
  • AFTER DELETE
  • BEFORE DELETE
  • AFTER UPDATE
  • BEFORE UPDATE

Membuat trigger

Untuk membuat trigger, kita bisa menggunakan perintah dibawah ini.

CREATE TRIGGER nama_trigger
AFTER INSERT ON nama_tabel_yang_dipasang_trigger
FOR EACH ROW
ketik_perintah_trigger_disini_akhiri_dengan_titik_koma;

Menampilkan trigger

Apabila kita ingin melihat trigger yang telah kita buat, maka kita bisa menggunakan perintah dibawah ini.

SHOW TRIGGERS;

Menghapus trigger

Jika kita tidak menginginkan suatu trigger lagi, kita bisa menghapusnya dengan perintah dibawah ini.

DROP TRIGGER nama_trigger;

Join tabel

Join adalah penggabungan table yang dilakukan melalui kolom / key tertentu yang memiliki nilai terkait untuk mendapatkan satu set data dengan informasi lengkap.

Join diperlukan karena perancangan table pada sistem transaksional kebanyakan di-normalisasi, salah satu alasannya untuk menghindari redundansi data.

Jenis jenis join

  • Inner Join

    Mengembalikan baris-baris dari dua tabel atau lebih yang memenuhi syarat.

    SELECT nama_kolom
    FROM nama_table
    INNER JOIN nama_tabel_lain
    ON nama_table.nama_kolom = nama_table.nama_kolom;
    
  • Left (outer) Join

    Mengembalikan seluruh baris dari tabel disebelah kiri yang dikenai kondisi ON dan baris dari tabel disebelah kanan yang hanya memenuhi kondisi join.

    SELECT nama_kolom
    FROM nama_table
    LEFT OUTER JOIN nama_tabel_lain
    ON nama_table.nama_kolom = nama_table_lain.nama_kolom;
    
  • Left (outer) Join no intersection

    Mengambil data dari tabel sebelah kiri yang dikenai kondisi ON yang juga memenuhi kondisi Join tanpa data dari tabel sebelah kanan yang memenuhi kondisi Join.

    SELECT nama_kolom
    FROM nama_table
    LEFT OUTER JOIN nama_tabel_lain
    ON nama_table.nama_kolom = nama_table_lain.nama_kolom;
    WHERE nama_table_lain.nama_kolom IS NULL;
    
  • Right (outer) Join

    Mengembalikan seluruh baris dari tabel disebelah kanan yang dikenai kondisi ON dan baris dari tabel disebelah kiri yang hanya memenuhi kondisi join.

    SELECT nama_kolom
    FROM nama_table
    RIGHT OUTER JOIN nama_tabel_lain
    ON nama_table.nama_kolom = nama_table_lain.nama_kolom;
    
  • Left (outer) Join no intersection

    Mengambil data dari tabel sebelah kanan yang dikenai kondisi ON yang juga memenuhi kondisi Join tanpa data dari tabel sebelah kiri yang memenuhi kondisi Join.

    SELECT nama_kolom
    FROM nama_table
    RIGHT OUTER JOIN nama_tabel_lain
    ON nama_table.nama_kolom = nama_table_lain.nama_kolom;
    WHERE nama_table_lain.nama_kolom IS NULL;
    

Store procedure

Stor Procedure adalah blok program yang diletakan pada MySQL. Blok yang sudah dibuat bisa dipanggil jika diperlukan. Procedure tidak memiliki nilai kembalian.

Hal ini mirip dengan function yang ada pada bahasa pemrograman, hanya saja tidak bisa memiliki nilai kembalian. Procedure bisa menerima parameter atau tidak.

Procedure tanpa parameter

Cara membuat procedure yakni dengan menggunakan keyword CREATE PROCEDURE

CREATE PROCEDURE nama_procedure()
isi_procedure;

Cara memanggil procedure

Untuk memanggil procedure, kita menggunakan keyword CALL

CALL nama_procedure();

Menampilkan semua procedure

Apabila kita ingin melihat semua procedure yang telah kita buat, kita bisa menggunakan perintah dibawah ini.

SHOW PROCEDURE STATUS;

Maka kira kira akan menghasilkan output seperti ini.

+--------+--------------------+-----------+-----------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db     | Name               | Type      | Definer               | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+--------+--------------------+-----------+-----------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| dbtoko | getAll             | PROCEDURE | root@localhost        | 2020-09-06 04:36:19 | 2020-09-06 04:36:19 | DEFINER       |         | utf8                 | utf8_general_ci      | utf8mb4_unicode_ci |
| mysql  | AddGeometryColumn  | PROCEDURE | mariadb.sys@localhost | 2020-09-04 13:38:52 | 2020-09-04 13:38:52 | INVOKER       |         | utf8                 | utf8_general_ci      | utf8mb4_unicode_ci |
| mysql  | DropGeometryColumn | PROCEDURE | mariadb.sys@localhost | 2020-09-04 13:38:52 | 2020-09-04 13:38:52 | INVOKER       |         | utf8                 | utf8_general_ci      | utf8mb4_unicode_ci |
+--------+--------------------+-----------+-----------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
3 rows in set (0.001 sec)

Menghapus store procedure

Apabila kita sudah tidak memerlukan suatu procedure lagi, kita bisa menggunakan perintah dibawah ini untuk menghapusnya.

DROP PROCEDURE nama_procedure;

Function

Function adalah blok program yang disimpan di MySQL yang bisa menerima input atau parameter dan dapat memiliki nilai kembalian.

Membuat function

Untuk membuat function, kita bisa menggunakan perintah dibawah ini.

CREATE FUNCTION nama_function (parameter TIPE_DATA) RETURNS TIPE_DATA
RETURN (isi_function);

Memanggil function

Setelah selesai membuat sebuah function, kita bisa memanggilnya dengan cara seperti ini.

SELECT FUNCTION nama_function (parameter);

Menampilkan function

Sama seperti menampilkan procedure hanya saja berbeda keyword. Kita bisa menggunakan perintah dibawah.

SHOW FUNCTION STATUS;

Maka akan muncul output kira kira seperti ini.

+--------+---------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db     | Name    | Type     | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+--------+---------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| dbtoko | getData | FUNCTION | root@localhost | 2020-09-06 05:16:17 | 2020-09-06 05:16:17 | DEFINER       |         | utf8                 | utf8_general_ci      | utf8mb4_unicode_ci |
+--------+---------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.001 sec)

Menghapus function

Apabila dirasa sudah tidak membutuhkan suatu function, kita bisa menghapusnya dengan cara seperti ini.

DROP FUNCTION nama_function;

Function bawaan MySQL

Select Aggregate

SELECT AGREGATE adalah SELECT yang menampilkan function bawaan dari MySQL. Beberapa diantaranya adalah sebagai berikut.

  • MIN: Menampilkan nilai TERKECIL pada kolom yg dimaksud
  • MAX: Menampilkan nilai TERBESAR pada kolom yg dimaksud
  • SUM: Menampilkan nilai JUMLAH pada kolom yg dimaksud
  • AVG: Menampilkan nilai RATA-RATA pada kolom yg dimaksud
  • COUNT: Menampilkan jumlah baris pada kolom yg dimaksud
  • COUNT(*): Menampilkan jumlah baris pada tabel

Cara memanggilnya sama dengan cara memanggil function, misalnya seperti ini.

SELECT AVG(hargajual) from tblbarang;

Select Between

Digunakan untuk mengambil suatu nilai diantara 2 value yang kita tentukan.

SELECT nama_kolom_atau_* FROM nama_tabel WHERE nama_kolom BETWEEN awal
AND akhir

Select Distinct

Digunakan untuk menampilkan data namun apabila terdapat duplikat maka hanya akan ditampilkan 1x saja.

SELECT DISTINCT nama_kolom FROM nama_table

Start Transaction

Setiap perintah di MySQL yang masuk kelompok (INSERT, UPDATE, DELETE, SELECT) bisa dimasukan kedalam perintah START TRANSACTION, COMMIT, DAN ROLLBACK. Perintah yang dimulai dengan START TRANSACTION bisa dilakukan ROLLBACK (undo atau pembatalan perintah). COMMIT digunakan agar perintah yang dijalankan TIDAK BISA DI ROLLBACK (undo).

Database Administration (DBA)

Pengaturan USER diperlukan agar database yang sudah dibuat dengan susah payah tidak di acak – acak oleh orang yang tidak berhak.

Menampilkan semua user

Untuk menampilkan semua user yang ada pada MySQL, gunakan perintah dibawah ini.

SELECT user, host, password FROM mysql.user;

Maka kira kira akan keluar output seperti ini.

+-------------+-----------+----------+
| User        | Host      | Password |
+-------------+-----------+----------+
| mariadb.sys | localhost |          |
| root        | localhost | invalid  |
| mysql       | localhost | invalid  |
|             | localhost |          |
|             | loonix    |          |
+-------------+-----------+----------+
5 rows in set (0.012 sec)

HOST adalah lokasi komputer dimana database MySQL disimpan. Jika menggunakan komputer atau laptop sendiri maka HOST nya adalah localhost atau dengan menggunakan alamat IP 12.7.0.0.1

Menambahkan user

Apabila kita ingin menambahkan user, maka kita bisa menggunakan perintah dibawah ini.

CREATE USER ‘nama_user’@’host’;

Memberikan password kepada User

User yang dibuat di awal BELUM ada passwordnya. Untuk memberikan password gunakan perintah dibawah ini.

SET PASSWORD FOR ‘nama_user’@’host’ = PASSWORD (‘password_user’);

Merubah password user

Untuk merubah password user, pastikan kita menggunakan akun root dan jalankan perintah dibawah ini.

SET PASSWORD FOR 'nama_user'@'nama_host' = PASSWORD('password');

Setelah menjalankan perintah diatas, refresh dengan cara menjalankan perintah FLUSH PRIVILEGES;

Merubah password root

Untuk merubah password root, kita bisa menjalankan perintah dibawah ini di terminal, bukan prompt mysql.

mysqladmin -u root –p password_lama password

Menampilkan user yang sedang aktif

Apabila ingin mengetahui siapa saja yang sedang aktif/login, maka gunakan perintah dibawah ini.

SELECT USER(),CURRENT_USER();

Memberikan hak akses kepada user

Untuk memberikan hak akses suatu database kepada user, gunakan perintah dibawah ini.

GRANT ALL PRIVILEGES ON nama_database.* TO 'nama_user'@'host' IDENTIFIED BY 'password_user';

Setelah melakukan perintah diatas, refresh dengen perintah FLUSH PRIVILEGES;

Menampilkan hak akses user

Untuk menampilkan hak akses user, pastikan kita masuk sebagai root dan jalankan perintah dibawah ini.

SHOW GRANTS FOR 'nama_user'@'localhost';

Menghapus hak akses user

Untuk menghapus hak akses user, kita bisa menjalankan perintah dibawah ini.

REVOKE ALL PRIVILEGES ON nama_database.* FROM 'nama_user'@'localhost';

Pastikan kita telah login menggunakan akun root agar berhasil. Kemudian refresh menggunakan perintah FLUSH PRIVILEGES;

Memberi hak akses lebih spesifik

Jika kita ingin memberi seorang user beberapa hak akses saja seperti SELECT, dan INSERT saja, maka kita bisa menggunakan perintah dibawah ini.

GRANT SELECT,INSERT ON nama_database.nama_tabel TO
'nama_user'@'localhost';

Pisahkan perintah yang akan diizinkan dengan tanda koma. Apabila ingin memberi hak akses terhadap semua perintah, gunakan keyword ALL.

Menghapus user

Apabila kita sudah tidak memerlukan seorang user, maka kita bisa menghapusnya dari database kita dengan cara dibawah ini.

DROP USER 'nama_user'@'nama_host';

Kesimpulan

MySQL adalah sebuah bahasa Query yang cukup mudah untuk dipahami namun susah untuk dikuasai. Syntax MySQL sangat mudah dibaca karena masih mendekati bahasa manusia. Untuk referensi lebih lanjut, silahkan menuju website MySQL dan MariaDB.