Rangkuman MySQL
2020-09-06Apa 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.
Perintah pada MySQL
Memeriksa versi
Untuk memeriksa versi dari MySQL
atau mariadb
, kita bisa menjalankan perintah dibawah.
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.
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;
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.
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;
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.
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.
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.