MEMAHAMI DATABASE
Materi :
1.1 Mengenal Database
1.2 Mengenal DBMS
1.3 Perancangan Basis Data
Mengenal Database
Basis data terdiri dari dua kata, yaitu basis dan data. Basis dapat diartikan sebagai markas
atau gudang yaitu tempat bersarang/berkumpul. Sedangkan data adalah representasi fakta
dunia nyata yang mewakili suatu objek seperti manusia, barang, hewan, peristiwa,
konsep, keadaan dan sebagainya, yang direkam dalam bentuk angka, huruf, symbol, teks,
gambar, bunyi atau kombinasinya.
Prinsip utama basis data adalah pengaturan data/arsip. Sedangkan tujuan utamanya
adalah kemudahan dan kecepatan dalam pengambilan kembali data/arsip. Satu hal yang
juga harus diperhatikan, bahwa basis data bukan hanya sekedar penyimpanan data secara
Mengenal DBMS
Sistem adalah sebuah tatanan atau keterpaduan yang terdiri dari sejumlah komponen
fungsional (dengan satuan fungsi/tugas khusus) yang saling berhubungan dan secara
bersama-sama bertujuan untuk memenuhi suatu proses/pekerjaan tertentu. Suatu sistem
terdiri dari sejumlah komponen yang saling berinteraksi, artinya saling bekerja sama
Abstraksi Data
Salah satu tujuan dari DBMS adalah untuk menyediakan fasilitas antar muka (interface)
dalam melihat data (yang lebih ramah/user oriented) kepada pemakai/user. Untuk itu,
sistem tersebut akan menyembunyikan detail tentang bagaimana data disimpan dan
dipelihara. Abstraksi data merupakan tingkatan/level dalam bagaimana melihat data
dalam sistemn basis data. Ada 3 level abstraksi data, yaitu :
1. Level Fisik (physical level)
Level ini merupakan level terendah dalam abstraksi data, yang menunjukkan
bagaimana sesungguhnya suatu data disimpan. Pada level ini pemakai melihat data
Untuk merancang basis data kita perlu mengetahui terlebih dahulu komponen-komponen
basis data tersebut. Komponen yang paling penting adalah entitas dan atribut.
1. Entitas
Entitas digunakan untuk menerapkan integritas pada tingakt entity (tabel), agar setiap
instance (record/baris) pada sustu entity bersifat unique yang disebut sebagai primary
key sehingga dapat dibedakan antara yang satu dengan yang lainnya.
Contohnya :
• Semua pelanggan atau pelanggan saja dengan entitas Ani, Budi, Amin dan
seterusnya
• Semua mobil atau mobil apa saja dengan entitas mobil kijang, starlet dan lain-lain
• Semua mahasiswa atau mahasiswa saja dengan entitas Eti, Ahmad dll
2. Atribut
Tahap-tahap Normalisasi
1. membawa suatu relasi tak ternomalisasi ke bentuk normal kesatu (1NF) dengan cara
menghapus semua pengulangan group dan mungkin diperlukan pemecahan relasi
menjadi 2 atau lebih. Pada langkah ini diperlukan pula penentuan kunci primer
(primary key). Suatu relasi dikatakan berada dalam bentuk normal kesatu (1NF) bila
tidak terjadi pengulangan group atau semua data bersifat atomic.
2. menghilangkan ketergantungan parsial atribut yaitu merubah/memecah relasi
sehingga semua atribut bergantung fungsi kepada kunci primer. Ini disebut bentuk
normal kedua (2NF).
ISBN Topik
979-533-791-2 Pemrograman
979-533-791-2 Internet
979-522-897-1 Basisdata
979-522-897-1 Pemrograman
Materi :
2.1 Membuat Database
2.2 Membuat Tabel
2.3 Relasi
Membuat Database
Sebagai contoh untuk membuat sebuah database yang diberi nama db_karyawan,
syntaxnya adalah sebagai berikut :
mysql> CREATE DATABASE db_karyawan;
Query OK, 1 row affected (0.06 sec)
Catatan :
Dalam penulisan nama database tidak diperbolehkan menggunakan spasi atau
karakter khusus lainnya.
Nama sebuah database tidak boleh diawali dengan angka
Melihat database
Untuk melihat database yang baru saja dibuat atau database lain yang ada dalam server,
dapat menggunakan perintah SHOW. Bentuk penulisan untuk melihat database yang ada di
server adalah sebagai berikut :
SHOW DATABASES;
Contoh :
mysql> SHOW DATABASES;
+------------------------------------------+
| Database |
+------------------------------------------+
| information_schema |
| camels |
| db_karyawan |
| konsultasi |
| mysql |
| pasar |
| pasar_3 |
| phpmyadmin |
| sim_pasar |
| simpasar |
| test |
| tuxpaint |
+------------------------------------------+
12 rows in set (0.01 sec)
Sebagai contoh :
mysql> USE db_karyawan;
Database changed
Menghapus database
Untuk menghapus database yang tidak dipakai atau database yang rusak, pengguna dapat
mengunakan perintah DROP. Struktur penulisan untuk menghapus database adalah sebagai
berikut :
DROP DATABASE nama_database;
Contoh :
mysql> DROP DATABASE db_karyawan;
Query OK, 0 rows affected (0.09 sec)
Tabel
1. membuat tabel
Perlu diperhatikan dalam pembuatan tabel, apakah database sudah diaktifkan
sebelumnya. Jika belum, aktifkan database tersebut atau buat database baru jika
belum tersedia. Hal ini dilakukan agar tabel yang akan dibuat mempunyai tempat
dalam database. Tabel sebagai tempat penampungan data mempunyai dua bagian
utama yaitu nama dan tipe data. Tipe data yang bisa digunakan dalam MySQL dapat
dilihat dibawah ini.
Tipe data untuk bilangan
Tipe Data Keterangan
TINYINT Ukuran 1 byte. Bilangan bulat terkecil, dengan jangkauan
untuk bilangan bertanda: -128 sampai dengan 127 dan untuk
yang tidak bertanda : 0 sampai dengan 255. Bilangan tak
bertanda ditandai dengan tanda UNSIGNED
SMALLINT Ukuran 2 byte. Bilangan bulat dengan jangkauan untuk
bilangan bertanda : -32768 sampai dengan 32767 dan untuk
pribadi
PK nip bagian
nama PK kode_bagian
alamat
kota nama_bagian
kelamin
tgl_lahir
pekerjaan
gaji
PK,FK3 nip
PK gol
FK1 kode_bagian
FK2 gol gaji_pokok
jabatan tunj_gol
Keterangan :
Æ field nip didefinisikan bertipe SMALLINT dan berkedudukan sebagai kunci
primer
Æ field nama bertipe CHAR yang dapat menampung hingga 25 karakter
Æ field alamat bertipe CHAR yang dapat menampung hingga 35 karakter
Æ field kota bertipe CHAR yang dapat menampung hingga 15 karakter
Æ field kelamin bertipe ENUM yang dapat menampung huruf P (menyatakan pria)
dan W (menyatakan wanita)
Æ field tgl_lahir bertipe DATE yang menyatakan tanggal lahir
Keterangan :
Æ field nip didefinisikan bertipe SMALLINT dan berkedudukan sebagai primary key
Æ field kode_bagian bertipe CHAR yang menampung sebuah karakter
Æ filed gol bertipe CHAR yang dapat menampung hingga 2 karakter
Æ field jabatan bertipe CHAR yang dapat menampung hingga 15 karakter
Keterangan :
Æ field kode_bagian didefinisikan bertipe CHAR dengan panjang sebuah karakter
dan berkedudukan sebagai primary key
Æ field nama_bagian bertipe CHAR yang menampung hingga 12 karakter
Keterangan :
Æ field gol didefinisikan bertipe CHAR dengan panjang 2 karakter dan
berkedudukan sebagai kunci primer
Æ field gaji_pokok bertipe INTEGER
Æ field tunj_gol bertipe INTEGER
Æ UNSIGNED menyatakan bilangan tak bertanda (artinya hanya bilangan positif)
Gunakan perintah
SHOW TABLES ;
digunakan untuk melihat struktur tabel yang telah dibuat. Namun sebelumnya
pastikan sudah berada pada database yang mempunyai tabel tersebut. Perhatikan
contoh di bawah ini :
mysql> DESCRIBE pribadi;
+------------------+----------------------------+-------------------+-------+-----------------------+---------+
| Field | Type | Null | Key | Default | Extra |
+------------------+----------------------------+-------------------+-------+-----------------------+---------+
| nip | smallint(6) | NO | PRI | NULL | |
Contoh :
Mengubah field nama_bagian menjadi nama_departemen.
mysql> ALTER TABLE bagian CHANGE nama_bagian nama_departemen CHAR(12);
Query OK, 0 rows affected (0.39 sec)
Records: 0 Duplicates: 0 Warnings: 0
Contoh :
Mengubah tipe data nama_departemen dari CHAR(12) menjadi VARCHAR(20)
mysql> ALTER TABLE bagian MODIFY nama_departemen VARCHAR(20);
Query OK, 0 rows affected (0.28 sec)
Records: 0 Duplicates: 0 Warnings: 0
penambahan field
Contoh :
Menambahkan field bonus pada tabel gaji
mysql> ALTER TABLE gaji ADD bonus INTEGER UNSIGNED;
Query OK, 0 rows affected (0.32 sec)
Records: 0 Duplicates: 0 Warnings: 0
penghapusan field
struktur tabel mengalamai perubahan akibat berkurangnya field/kolom tertentu.
Struktur penulisan :
ALTER TABLE nama_tabel DROP COLUMN namafield;
Contoh :
Menghapus field bonus pada tabel gaji.
mysql> ALTER TABLE gaji DROP COLUMN bonus;
Query OK, 0 rows affected (0.28 sec)
Records: 0 Duplicates: 0 Warnings: 0
Contoh :
Mengubah nama tabel bagian menjadi departemen.
mysql> ALTER TABLE bagian RENAME departemen;
Query OK, 0 rows affected (0.07 sec)
5. menghapus tabel
tabel dapat saja dihapus karena sudah tidak dibutuhkan lagi atau terjadi kesalahan.
Perintah untuk menghapus tabel adalah drop table. Struktur penulisan :
DROP TABLE nama_tabel;
Contoh :
Menghapus tabel gaji.
mysql> DROP TABLE gaji;
Query OK, 0 rows affected (0.07 sec)
Contoh :
Field nip pada tabel pekerjaan direlasikan dengan field nip pada tabel pribadi.
mysql> ALTER TABLE pekerjaan ADD FOREIGN KEY (nip) REFERENCES
pribadi(nip);
Query OK, 0 rows affected (0.53 sec)
Records: 0 Duplicates: 0 Warnings: 0
Materi :
3.1 Insert
3.2 Update
3.3 Delete
3.4 Select
3.5 Kondisi
3.6 View
INSERT
Perintah :
INSRT INTO nama_tabel (field1 [,field2 [field3 [,…]]]) VALUES (nilai1
[,nilai2 [,nilai3 [,..]]]);
Nama_tabel adalah tabel yang akan diisi data. Field1, field2, field3,… adalah field-field
(kolom) dari tabel yang akan diisi. Nilai1, nilai2, nilai3, … adalah data yang akan
dimasukkan ke dalam tiap kolom yang disebutkan pada bagian field.
Penulisan nilai1, nilai2, nilai3,… disesuaikan dengan tipe datanya jika tipe data
merupakan kelompok tipe data karakter maka data harus diapit dengan menggunakan
tanda petik (apostrophe).
Contoh :
mysql> INSERT INTO pribadi(nip,nama,alamat,kota,kelamin,tgl_lahir)
-> VALUES (12340, 'Dian Sastro', 'Karangwaru II/3B', 'Yogya', 'W',
-> '1968/12/03');
Query OK, 1 row affected (0.17 sec)
Penulisan tanpa menyebutkan nama field dapat diberikan apabila akan mengisi ke seluruh
field yang ada dalam tabel, urutan data dalam bagian values menunjukkan urutan field
yang akan diisi. Jadi harus hati-hati menggunakan perintah insert apabila tidak
menyatakan nama field karena bisa tertukar.
Contoh :
mysql> INSERT INTO pribadi
-> VALUES (12341, 'Hamdan Arif', 'Jl. Krapyak 2', 'Bantul', 'P',
-> '1964/05/12');
Query OK, 1 row affected (0.06 sec)
Kelebihan dengan menyebutkan nama field adalah kita tidak harus berurutan
menyebutkan nama field dan datanya pada saat mengisikan, yang penting adalah urutan
pasangan yang benar agar tidak tertukar.
UPDATE
Perintah :
UPDATE nama_tabel SET field1=nilai1 [,field2=nilai2 [,…]] [WHERE
kondisi];
Nama_tabel adalah nama dari tabel yang akan diperbaiki datanya. Field1 adalah nama
field dalam tabel yang akan diubah. Nilai1 adalah data yang akan dimasukkan ke dalam
field1. field2 dan nilai2 adalah nama field dan datanya, dan seterusnya. Kondisi adalah
criteria data dalam tabel yang akan diperbaiki.
Contoh :
mysql> UPDATE pribadi SET kota='Yogyakarta' WHERE kota='Yogya';
Query OK, 1 row affected (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Perintah update digunakan untuk memperbaiki data dalam satu record (baris) dalam satu
tabel. Perbaikan dapat dilakukan untuk satu record, beberapa atau seluruh record.
Hati-hati saat memberikan perintah update ini, jangan sampai lupa menuliskan kondisi
data dalam tabel yang akan diperbaiki datanya. Jika kondisi tidak dituliskan maka bisa
menyebabkan seluruh record dalam tabel akan diubah sesuai dengan field yang akan
diperbaiki datanya.
Nama_tabel adalah nama tabel yang akan dihapus datanya. Kondisi adalah criteria data
dalam tabel yang akan dihapus.
Perintah delete digunakan untuk melakukan penghapusan record dari suatu tabel yang
memilik kondisi yang dinyatakan dalam pernyataan kondisi.
Hati-hati dalam memberikan perintah delete ini karena jika terlupa memberikan
pernyataan kondisi, perintah ini akan menyebabklan terhapusnya seluruh isi tabel.
SELECT
Perintah :
SELECT (* |field1 [,field2 [,…]]) FROM nama_tabel [WHERE kondisi];
Nama_tabel adalah nama tabel yang akan ditampung datanya. Field1, field2, … adalah
nama field yang akan ditampilkan datanya. * digunakan untuk menampilkan seluruh field
dari tabel. Kondisi adalah criteria data dalam tabel yang akan ditampilkan.
Contoh :
mysql> SELECT * FROM pribadi;
+-----------+-------------------+------------------------------+--------------------+--------------+----------------+
| nip | nama | alamat | kota | kelamin | tgl_lahir |
+----------+--------------------+-------------------------------+--------------------+-------------+-----------------+
| 12340 | Dian Sastro | Karangwaru II/3B | Yogyakarta | W | 1968-12-03 |
| 12341 | Hamdan Arif | Jl. Krapyak 2 | Bantul |P | 1964-05-12 |
+----------+---------------------+-----------------------------+--------------------+--------------+-----------------+
2 rows in set (0.01 sec)
Perintah select digunakan untuk menampilkan isi dari suatu tabel. Bentuk perintah di
atas adalah bentuk perintah select yang sederhana yang digunakan untuk menampilkan
data dari satu tabel saja. Perintah select ini dapat digunakan untuk menampilkan data dari
berbagai tabel.
Data dari tabel dapat dipilih filed mana saja yang akan ditampilkan, dinyatakan pada
pernyataan select. Jika ingin menampilkan seluruh field maka dapat digunakan tanda *
pada pernyataan select.
Straight Join
Straight join identik dengan join.
SELECT pribadi.nip, pribadi.nama, pribadi.alamat, pribadi.kota, pribadi.kelamin,
pribadi.tgl_lahir, pekerjaan.kode_bagian, pekerjaan.gol, pekerjaan.jabatan FROM pribadi
STRAIGHT_JOIN pekerjaan ON pribadi.nip=pekerjaan.nip;
Kondisi
Kondisi yang dibentuk pada perintah-perintah SQL dapat dalam criteria yang sifatnya
pembandingan dengan menggunakan tanda= untuk mencari suatu record.
LIKE merupakan kata kunci dalam SQL yang digunakan untuk mendefinisikan suatu
criteria yang lebih luwes (fleksibel). Kondisi yang dinyatakan dengan menggunakan
LIKE dapat memfilter data sehingga kita dapat menampilkan suatu criteria seolah dengan
menggunakan bahasa inggris.
Criteria yang dibentuk juga dapat digunakan untuk melakukan pemfilteran data secara
mudah dengan menggunakan tanda %, yang memerintahkan agar database mencari
semua data yang memiliki karakter apa saja, karena % mewakili karakater apa saja.
Perintah dengan kondisi LIKE
SELECT * FROM nama_tabel WHERE nama_field LIKE ‘data_yang_dicari’;
Contoh :
mysql> SELECT * FROM pribadi WHERE kota LIKE 'Yogyakarta';
+----------+------------------+-----------------------------+------------------+-------------+-----------------+
| nip | nama | alamat | kota | kelamin | tgl_lahir |
+----------+------------------+-----------------------------+------------------+-------------+-----------------+
| 12340 | Dian Sastro | Karangwaru II/3B | Yogyakarta | W | 1968-12-03 |
+-----------+-----------------+-----------------------------+------------------+-------------+-----------------+
1 row in set (0.00 sec)
Perintah ini akan menampilkan seluruh record dalam tabel yang memiliki data dalam
nama field yang disebutkan sama dengan ‘data_yang_dicari’. Perintah ini sama seperti
menggunakan perintah select yang menggunakan tanda sama dengan pada bagian
kondisi.
SELECT * FROM nama_tabel WHERE nama_field LIKE ‘data_yang_dicari%’;
Contoh :
mysql> SELECT * FROM pribadi WHERE kota LIKE 'Ban%';
Perintah ini akan menampilkan seluruh record dalam tabel yang memiliki data dalam
nama_field yang disebutkan diawali deangan ‘data_yang_dicari’.
Contoh :
mysql> SELECT * FROM pribadi WHERE kota LIKE '%tul';
+----------+---------------------+---------------------+----------+-------------+-----------------+
| nip | nama | alamat | kota | kelamin | tgl_lahir |
+----------+---------------------+---------------------+-----------+------------+-----------------+
| 12341 | Hamdan Arif | Jl. Krapyak 2 | Bantul | P | 1964-05-12 |
+----------+---------------------+---------------------+-----------+------------+------------------+
1 row in set (0.00 sec)
Perintah ini akan menampilkan seluruh record dalam tabel yang memiliki data dalam
nama_field yang disebutkan pada bagian akhirnya ada ‘data_yang_dicari’.
Contoh :
mysql> SELECT * FROM pribadi WHERE kota LIKE '%ntu%';
+----------+---------------------+---------------------+----------+-------------+-----------------+
| nip | nama | alamat | kota | kelamin | tgl_lahir |
+----------+---------------------+---------------------+-----------+------------+-----------------+
| 12341 | Hamdan Arif | Jl. Krapyak 2 | Bantul | P | 1964-05-12 |
+----------+---------------------+---------------------+-----------+------------+------------------+
1 row in set (0.00 sec)
Perintah ini akan menampilkan seluruh record dalam tabel yang data dalam nama_field
yang disebutkan mengandung ‘data_yang_dicari’. % di awal dan % di akhir
menunjukkan agar database mencarikan semua record yang di awal atau di akhir data
pada nama field yang disebutkan terdiri atas karakter apa saja asalkan ada
‘data_yang_dicari’ dalam field tersebut.
Nama_view adalah nama dari view yang akan dibuat. Ekspresi_Query adalah perintah
select dan kondisi query yang ditentukan sama seperti halnya pada saat kita melakukan
perintah select dengan menggunakan kondisi (criteria).
Contoh :
mysql> CREATE VIEW karyawan_bantul(nip,nama) AS SELECT nip,nama FROM
pribadi
-> WHERE kota='Bantul';
Query OK, 0 rows affected (0.08 sec)
View mempermudah proses select, jika ada perintah join maka perintah tersebut sudah
disimpan dalam definisi view. Adanya view memungkinkan kita untuk melakukan proses
pemfilteran lebih rinci, karena hasil dari suatu view dapat dianggap sebagai tabel virtual.
Sebagai suatu tabel virtual, view akan memiliki kolom-kolom yang sesuai dengan nama-
nama kolom yang ada pada ekspresi query.
View merupakan alias yang berupa isi sebagian suatu tabel atau gabungan beberapa tabel
yang disederhanakan proses pembacaannya.
Pembuatan view seringkali berhubungan dengan masalah keamanan agar pengakses data
tidak perlu mengetahui secara fisik ada di mana data tersebut berada dan apa criteria yang
digunakan untuk membuat view tersebut, sehingga sebagian pemakai hanya diberikan
akses hanya kepada view.
FUNGSI MYSQL
Materi :
4.1 Fungsi Sistem
4.2 Fungsi Agregat
4.3 Fungsi Matematika
4.4 Fungsi String
4.5 Fungsi Tanggal
4.6 Fungsi Logika
Fungsi (function) merupakan fasilitas yang disediakan oleh database secara umum untuk
memanipulasi data yang kompleks, seperti mencari jumlah data, mencari rata-rata nilai
yang ada dalam suatu tabel dan lain-lain, bukan hanya sekedar membaca data dari tabel
saja. Fungsi adalah suatau rutin khusus yang disediakan oleh MySQL untuk melakukan
manipulasi suatu data.
Secara anatomi maka suatu fungsi terdiri atas nama fungsi diikuti dengan parameter
(argument) fungsi yang diapit dalam tanda kurung. Tidak ada spasi antara nama fungsi
dengan tanda kurung pembuka. Berikut adalah bentuk umum fungsi dalam MySQL :
Namafungsi([argument_1 [,argument_2 [,…]]])
Argument_1,argument_2,… adalah argument atau parameter yang dibutuhkan oleh
fungsi. Jumlah parameter telah didefinisikan oleh sistem, harus dilihat pada manual
database.
Fungsi digunakan (disertakan) sebagai bagian dari suatu perintah query SQL (select).
Secara umum fungsi dinyatakan dalam SQL select adalah sebagai berikut :
SELECT fungsi (ekspresi) [FROM namatabel];
Fungsi Sistem
Kelompok fungsi sistem adalah kelompok yang memberikan informasi tentang
pemakaian server database oleh pemakai. Kelompok ini terdiri atas :
DATABASE()
Fungsi ini digunakan untuk memberikan informasi database apa yang sedang digunakan
oleh pemakai.
LAST_INSSERT_ID()
Digunakan untuk menampilkan informasi data yang telah dihasilkan (digenerate) oleh
MySQL pada kolom yang menggunakan tipe data AUTOINCREMENT.
SESSION_USER()
Fungsi yang digunakan untuk menampilkan informasi pemakai yang sedang melakukan
akses ke dalam server MySQL saat ini. Fungsi ini kadang digunakan oleh pemakai untuk
mengetahui siapa yang sedang login ke dalam MySQL pada suatu terminal yang sedang
ditinggalkan oleh pemakai lain atau kadang juga kita ingin tahu kita sedang mengakses
MySQL dengan nama pemakai yang mana, karena kita memiliki banyak nama pemakai
berbeda-beda privilege-nya demi keamanan.
SYSTEM_USER()
Fungsi ini sama dengan fungsi SESSION_USER()
USER()
Fungsi ini sama dengan fungsi SESSION_USER() dan SYSTEM_SESSION().
Fungsi Agregat
Fungsi agregat adalah fungsi standar di dalam SQL, suatu fungsi yang digunakan untuk
melakukan summary, merupakan fungsi stastistik standar yang dikenakan pada suatu
tabel atau query.
AVG(ekspresi)
Fungsi ini digunakan untuk mencari rata-rata nilai dalam suatu kolom dari satu tabel atau
ekspresi. Ekspresi dalam fungsi AVG umumnya adalah nama kolom. Kolom yang dicari
nilai rata-ratanya adalah kolom dengan tipe data numerik.
Nilai rata-rata yang dihasilkan oleh fungsi ini tidak melibatkan dalam perhitungannya
baris yang memiliki nilai pada kolom yang dicari rata-ratanya bernilai NULL.
COUNT(x)
Fungsi ini digunakan untuk menghitung jumlah record (baris) dari suatu kolom atau suatu
tabel. X adalah nama kolom dari tabel yang diinginkan dicari jumlah record (baris)nya
MAX(ekspresi)
• Pengurangan(-)
Digunakan untuk melakukan operasi pengurangan dua buah data numerik, bilangan yang
disebelah kiri dikurangi dengan bilangan yang disebelah kanan. Hasil dari operasi ini
adalah data numerik.
mysql> SELECT 20-5;
+--------+
| 20-5 |
+--------+
| 15 |
+--------+
1 row in set (0.00 sec)
• Perkalian(*)
Digunakan untuk melakukan operasi perkalian dua data numerik. Hasil dari operasi ini
adalah data numerik juga.
mysql> SELECT 3*4;
+-----+
| 3*4 |
+-----+
| 12 |
+-----+
1 row in set (0.00 sec)
• Pembagian sisa(%)
Digunakan untuk mendapatkan sisa pembagian dari suatu operasi pembagian, bilangan di
sebelah kiri dibagi dengan bilangan disebelah kanan, sisa dari hasil pembagian ini yang
menjadi hasil dari operasi ini. Operasi pembagian sisa biasa disebut modulus.
mysql> SELECT 10%2;
+------+
| 10%2 |
+------+
| 0|
+------+
1 row in set (0.02 sec)
Fungsi Tanggal
Tanggal dalam MySQL menggunakan tanggal dari sistem Unix, tidak ada masalah
sampai dengan 2069. Semua tahun yang dinyatakan dengan dua digit diasumsikan tahun
tersebut pada range tanggal antara tahun 1970 sampai dengan 2069. Jika dimasukkan
tahun 01 maka akan dianggap tahun 2001.
Format tanggal dan jam dalam MySQL adalah dengan menggunakan format tahun, bulan,
tangal, jam, menit dan detik
yyyy-mm-dd HH:ii:ss
yyyy adalah tahun dalam format angka
mm adalah nomor bulan dalam format 2 angka
dd adalah tanggal dalam bulan dengan format 2 angka
HH adalah jam dalam format jam 00-23
Fungsi String
Fungsi string digunakan untuk manipulasi teks (string). MySQL menyediakan banyak
fungsi built-in untuk melakukan manipulasi teks ini. Berikut ini adalah daftar fungsi
string yang telah disediakan :
• ASCII(x)
• CHAR(x,y,z,…)
• CHARACTER_LENGTH, CHAR_LENGTH
• COALES(ekspresi1, ekspresi2, …)
• CONCAT(x,y,z,…)
• DECODE(string_biner,string_enkripsi)
• ELT(x,a,b,c,…)
• ENCODE(owrd,string_enkripsi)
• ENCRYPT(word[,seed])
• FIELD(x,y,z,…)
• FIND_IN_SET(x,stringlist)
• INSERT(x,y,z,j)
• INSTR(x,y)
• LCASE(x)
• LEFT(x,y)
Fungsi Logika
Fungsi logika merupakan fungsi yang disediakan oleh MySQL untuk melakukan evaluasi
suatu ekspresi. Berdasarkan nilai ekspresi ini akan dihasilkan suatu nilai yang akan
ditampilkan pada hasil query.
Berikut adalah fungsi built-in yang disediakan untuk melakukan evaluasi ekspresi :
IF(ekspresi1, ekspresi2, ekspresi3)
IFNULL(ekspresi1, ekspresi2)
Fungsi ini akan mengevaluasi ekspresi1, jika ekspresi1 berisi NULL, maka ekspresi2
menjadi hasilnya, sedangkan jika ekspresi1 bukan NULL maka ekspresi1 itu sendiri yang
menjadi hasilnya
mysql> SELECT IFNULL(gol,"6A") FROM gaji WHERE tunj_gol="1200000";
Empty set (0.00 sec)
ISNULL(ekspresi)
Menghasilkan nilai 1 jika ekspresi bernilai NULL, nilai 0 jika ekspresi salah
mysql> SELECT ISNULL(gol) FROM gaji WHERE tunj_gol="1200000";
Empty set (0.00 sec)
STORE PROCEDURE
Materi :
5.1 Membuat Store Prosedur
5.2 Alter Procedure
5.3 Call Procedure
5.4 Drop Procedure
Store procedure adalah pernyataan SQL yang dapat disimpan didalam server. Sekali store
prosedur itu dijalankan, klien tidak perlu membuat lagi tetapi cukup memanggil store
procedure yang ada.
CREATE
[DEFINER = { user | CURRENT_USER }]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
routine_body:
Valid SQL procedure statement
Secara default, rutin dihubungkan dengan database default. Untuk menghubungkan rutin
secara eksplisit dengan databases yang diberikan, sebutkan nama db_name.sp_name
ketika menciptakan rutin.
Secara default, masing-masing parameter adalah parameter IN. Untuk menentukan
parameter lainnya, gunakan kata kunci OUT atau INOUT sebelum nama parameter.
RETURNS hanya digunakan untuk fungsi. Hal itu mengindikasikan tipe kembalian dari
sederhana seperti SELECT atau INSERT, atau dapat berupa pernyataan yang banyak ditulis
dengan menggunakan BEGIN…END.
Jika tidak disebutkan DETERMINISTIC atau NOT DETERMINISTIC maka defaultnya
adalah NOT DETERMINISTIC.
mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
-> RETURN CONCAT('Hello, ',s,'!');
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT hello('world');
+----------------+
| hello('world') |
+----------------+
| Hello, world! |
+----------------+
1 row in set (0.03 sec)
characteristic:
{ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'
Contoh :
mysql> delimiter //
mysql> CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param
INT)
-> BEGIN
-> # Set value of OUT parameter
-> SELECT VERSION() INTO ver_param;
-> # Increment value of INOUT parameter
-> SET incr_param = incr_param + 1;
-> END;
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> SET @increment = 10;//
Query OK, 0 rows affected (0.00 sec)
DROP Prosedur
Perintah yang digunakan untuk menghapus store prosedur adalah :
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
Contoh :
mysql> DROP PROCEDURE p;
-> //
TRIGGER
Materi :
6.1 Membuat Trigger
6.2 Menghapus Trigger
Trigger berisi program yang dihubungkan dengan suatu tabel yang secara otomatis
melakukan suatu tindakan ketika suatu baris di dalam tabel dikenai operasi.
Membuat Trigger
Sintax :
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
Trigger diasosiasikan dengan sebuah tabel yang bernama tbl_name, yang harus berupa
tabel permanen, tidak boleh berupa tabel sementara atau view.
Ketika trigger diaktifkan, DEFINER memperkirakan privilege yang berlaku untuk user
tersebut.
Triger_time adalah waktu aksi bagi trigger, dapat berupa BEFORE atau AFTER yang
mengindikasikan bahwa trigger aktif sebelum atau sesudah pernyataan yang
mengaktifkan trigger.
Trigger_event mengindikasikan macam pernyataan yang mengaktifkan trigger, yaitu :
INSERT. Trigger aktif ketika sebuah baris baru dimasukkan ke dalam tabel melalui
DELETE atau REPLACE. Meskipun demikian, DROP TABLE dan TRUNCATE pada sebuah
mysql> DELIMITER |
mysql>
mysql> CREATE TRIGGER testref BEFORE INSERT ON test1
-> FOR EACH ROW BEGIN
-> INSERT INTO test2 SET a2 = NEW.a1;
-> DELETE FROM test3 WHERE a3 = NEW.a1;
-> UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
-> END;
-> |
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> DELIMITER ;
Menghapus Trigger
Perintah :
DROP TRIGGER [schema_name.]trigger_name
Contoh :
mysql> DROP TRIGGER testref;
Query OK, 0 rows affected (0.02 sec)
GRANT/REVOKE
Materi :
7.1 Privilege
7.2 Pengelolaan User dengan DML
7.3 Pengelolaan User dengan DCL
Salah satu fungsi administrasi yang harus dilakukan agar MySQL dapat digunakan secara
aman, dalam pengertian harus ada pengaturan siapa saja yang berhak mengakses sistem
database adalah mengkonfigurasi bagaimana server mengelola pemakainya (kliennya).
Privilege
Privilege adalah hak dan wewenang yang diberikan kepada pemakai yang telah
didefinisikan untuk mengakses dan mengelola database MySQL. Privilege dalam bahasa
yang lebih sederhana adalah hak akses atau permission.
Privilege melakukan pengaturan hak siapa saja yang boleh mengakses data, data mana
saja yang bisa dilihat oleh user. Privilege setiap pemakai berbeda-beda, ditentukan oleh
yang berwenang dalam hal ini ditentukan oleh super user database.
Struktur tabel
Saat pertama kali MySQL diaktifkan maka akan ada dua database penting yaitu database
mysql dan test. Database mysql adalah database sistem, database yang berisi informasi
yang digunakan oleh server MySQL untuk melakukan kendali terhadap siapa saja yang
bisa mengakses server MySQL dan dari mana saja, kemudian apa saja hak (privilege)
yang diberikan oleh pemakai tersebut pada saat telah berada dalam lingkungan MySQL.
Tabel user
Data yang dimasukkan ke dalam tabel user:
1. host, data alamat komputer yang bisa digunakan untuk mengakses server database
Host merupakan alamat komputer atau nama komputer yang digunakan untuk
mengakses server MySQL. Alamat komputer didefinisikan dengan menggunakan
nomor IP atau nama server. Alamat IP dapat juga dinyatakan dengan tanda % untuk
menyatakan semua nomor IP.
2. user, nama pemakai
Dalam field user disimpan nama pemakai atau userid sebagai identifikasi pemakai
(user identification, atau userid), pengenal yang digunakan untuk melakukan
otentikasi untuk mengakses ke dalam server MySQL.
3. password, password untuk pemakai
Password adalah kata sandi yang digunakan oleh setiap pemakai untuk memverifikasi
bahwa userid yang dimasukkan tadi memang sah milik pemakai tersebut.
4. privilege-privilege untuk pemakai tersebut di dalam mengakses dan mengelola data
dalam server MySQL.
Field-field untuk privilege diisi dengan data ‘Y’ atau ‘N’. jika diisi ‘Y’ maka pada
record tersebut diijinkan untuk memiliki privilege tersebut, sebaliknya jika diisi ‘N’
maka record tersebut tidak memiliki privilege.
Tabel db
Struktur tabel db hampir sama dengan tabel user, hanya saja tabel db memiliki tambahan
field yaitu field db. Field db digunakan untuk mendefinisikan nama tabel yang dapat
diakses oleh setiap pemakai, dari host mana dan apa saja privilegenya.
Tabel tables_priv
Tabel tables_priv mendefinisikan privilege lebih detail untuk seorang pemakai pada level
tabel mana saja yang diberikan privilegenya kepada pemakai tersebut dan privilege apa
yang dimiliki.
Host adalah nama host untuk mengakses database
Db adalah nama database yang didefinisikan.
User mendefinisikan pemakai yang diberi privelege untuk tabel yang didefinisikan.
Table_name mendefinisikan nama tabel yang didefinisikan
Grantor adalah pemakai yang memberikan privilege kepada pemakai
Timestamp mencatat kapan (waktu) perubahan dilakukan.
Tabel columns_priv
Isi tabel columns_priv seperti halnya tables_priv, digunakan untuk lebih merinci lagi
privilege yang dimiliki oleh seseorang pemakai sampai dengan level kolom dari suatu
tabel.
Menambah pemakai
Penambahan pemakai dilakukan dengan memasukkan data pemakai ke dalam tabel user
yang ada pada database mysql.
Proses menambahkan pemakai langsung dengan menggunakan perintah sebagai berikut:
INSERT INTO USER (Host,User) VALUES (‘alamatkomputer’,’namapemakai’);
Nama tabel adalah nama tabel tempat didefinisikannya privilege untuk pemakai atau
komputer untuk suatu database atau tabel.
NamaKol_priv adalah nama-nama kolom yang digunakan untuk mendefinisikan privilege
seperti Select_priv, Update_priv dan lainnya.
Namapemakai adalah nama pemakai yang akan diubah privilege
Contoh
mysql> UPDATE user SET Select_priv='Y' WHERE User='praktikan';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Pencabutan privilege
Perintah :
UPDATE user
SET NamaKol1_priv=’N’ [,NamaKol2_priv=’N’[,…]]
WHERE User=’namapemakai’;
Namatabel adalah nama tabel tempat didefinisikannya privelege untuk pemakai atau
komputer untuk suatu database atau tabel
NamaKol_priv adalah nama-nama kolom yang digunakan untuk mendefinisikan privilege
seperti Select_priv, Update_priv dan lainnya.
Namapemakai adalah nama pemaki yang diubah privilege.
Contoh :
Contoh :
mysql> INSERT INTO db(host,Db,User)VALUES('localhost','db_karyawan','praktikan');
Query OK, 1 row affected (0.00 sec)
Pencabutan privilege
Perintah :
REVOKE [privileges] [nama-nama kolom]
ON namadatabase.namatabel
FROM namauser@hostkomputer
Flush privilege merupakan perintah yang memaksa MySQL untuk menggunakan daftar
pemakai dan privilegenya dari data pemakai dan privilege database yang baru.