Modul BASIS DATA Fitria

Embed Size (px)

Citation preview

BAB I MEMAHAMI DATABASEMateri : 1.1 1.2 1.3 Mengenal Database Mengenal DBMS Perancangan Basis Data

Mengenal DatabaseBasis 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.

Beberapa definisi tentang basis data : 1. Basis data merupakan himpunan kelompok data (arsip) yang saling berhubungan yang diorganisasi sedemikian rupa agar kelak dapat dimanfaatkan kembali dengan cepat dan mudah. 2. Kumpulan data yang saling berhubungan yang disimpan secara bersama sedemikian rupa dan tanpa pengulangan (redudansi) yang tidak perlu, untuk memenuhi berbagai kebutuhan. 3. kumpulan file/tabel/arsip yang saling berhubungan yang disimpan dalam media penyimpanan elektronis.

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

Praktikum Basis Data D3 REKMED FMIPA UGM 1

elektronis (dengan bantuan computer). Artinya, tidak semua bentuk penyimpanan data secara electronis disebut basis data. Kita dapat menyimpan dokumen berisi data dalam file teks (dengan program pengolah kata), file spread sheet, dan lain-lain, tetapi tidak bisa disebut sebagai basis data karena di dalamnya tidak ada pemilihan dan pengelompokan data sesuai jenis/fungsi data, sehingga akan menyulitkan pencarian kelak. Dalam sebuah basis data yang sangat ditonjolkan adalah pengaturan/pemilihan/pengelompokan/ pengorganisasian data yang akan kita simpan sesuai dengan fungsinya/jenisnya. Operasi Dasar Basis Data Operasi-operasi dasar basis data yang dapat kita lakukan berkenaan dengan basis data meliputi : pembuatan basis data baru (create database), yang identik dengan pembuatan lemari arsip yang baru penghapusan basis data (drop database), yang identik dengan perusakan lemari arsip (sekaligus beserta isinya jika ada) pembuatan file/tabel baru ke suatu basis data (create table), yang identik dengan penambahan map arsip baru ke sebuah lemari arsip yang telah ada. Penghapusan file/tabel dari suatu basis data (drop table), yang identik dengan perusakan map arsip lama yang ada disebuah lemari map. Penambahan/pengisian data baru ke sebuah file/tabel di sebuah basis data (insert), yang identik dengan penambahan lembaran arsip dari sebuah map arsip. Pengambilan data dari sebuah file/tabel (retrieve/search), yang identik dengan pencarian lembaran arsip dari map arsip. Perubahan data dari sebuah file/tabel (update), yang identik dengan perbaikan isi lembaran arsip yang ada di sebuah map arsip. Penghapusan data dari sebuah file/tabel (delete), yang identik dengan penghapusan sebuah lembaran arsip yang ada di sebuah map arsip. Tujuan Basis Data Secara lebih lengkap, pemanfaatan basis data dilakukan untuk memenuhi sejumlah tujuan (objektif) seperti berikut ini: Praktikum Basis Data D3 REKMED FMIPA UGM 2

Kecepatan dan kemudahan (Speed)

Pemanfaatan basis data memungkinkan kita untuk menyimpan data atau melakukan perubahan/manipulasi data atau menampilkan kembali data tersebut dengan cepat dan mudah Efisiensi ruang penyimpanan (Space)

Dengan basis data, efisiensi/optimalisasi penggunaan ruang penyimpanan dapat dilakukan, karena kita dapat melakukan penekanan jumlah redudansi data, baik dengan menerapkan sejumlah pengkodean atau dengan membuat relasi-relasi (dalam bentuk file) antar kelompok data yang saling berhubungan. Keakuratan (Accuracy)

Pemanfaatan pengkodean atau pembentukan relasi antar data bersama dengan penerapan aturan/batasan (constraint) tipe data, domain data, keunikan data, dan sebagainya, yang secara ketat dapat diterapkan dalam sebuah basis data, sangat berguna untuk menekan ketidakakuratan pemasukan/penyimpanan data. Ketersediaan(Availability)

Karena kepentingan pemakaian data, sebuah basis data dapat memiliki data yang disebar di banyak lokasi geografis. Dengan pemanfaatan teknologi jaringan computer, data yang berada di suatu lokasi/cabang, dapat juga diakses (menjadi tersedia/available) bagi lokasi/cabang lain. Kelengkapan(Completeness)

Untuk mengakomodasi kebutuhan kelengkapan data yang semakin berkembang, maka kita tidak hanya dapat menambah record-record data, tetapi juga dapat melakukan perubahan struktur dalam basis data, baik dalam bentuk penambahan objek baru (tabel) atau dengan penambahan field-field baru pada suatu tabel. Keamanan(Security)

Memang ada sejumlah sistem (aplikasi) pengelola basis data yang tidak menerapkan aspek keamanan dalam penggunaan basis data. Tetapi untuk sistem yang besar dan serius, aspek keamanan juga dapat diterapkan dengan ketat. Dengan begitu, kita dapat menentukan siapa-siapa (pemakai) yang boleh menggunakan basis data beserta objekobjek di dalamnya dan menentukan jenis-jenis operasi apa saja yang boleh dilakukannya. Kebersamaan pemakaian (Sharability)

Praktikum Basis Data D3 REKMED FMIPA UGM 3

Basis data yang dikelola oleh sistem (aplikasi) yang mendukung lingkungan multiuser, akan dapat memenuhi kebutuhan, tetapi tetap terjaga/menghindari terhadap munculnya persoalan baru seperti inkonsistensi data. Penerapan Basis Data Secara lebih nyata/teknis, bidang-bidang fungsional yang telah umum memanfaatkan basis data demi efisiensi, akurasi dan kecepatan operasi antara lain: Kepegawaian Pergudangan (inventory) Akuntansi Reservasi Layanan Pelanggan (customer care) Dan lain-lain

Sedangkan bentuk organisasi/perusahaan yang memanfaatkan basis data dapat berupa : Perbankan Asuransi Rumah Sakit Produsen Barang Industri Manufaktur Pendidikan/Sekolah Telekomunikasi Dan lain-lain

Mengenal DBMSSistem 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

Praktikum Basis Data D3 REKMED FMIPA UGM 4

membentuk satu kesatuan. Karena itu, secara umum sebuah sistem basis data merupakan sistem yang terdiri atas kumpulan file (tabel) yang saling berhubungan (dalam sebuah basis data di sebuah computer) dan sekumpulan program (DBMS) yang memungkinkan beberapa pemakai dan/atau program lain untuk mengakses dan memanipulasi file-file (tabel-tabel) tersebut. Komponen Sistem Basis Data Perangkat keras (hardware) Perangkat keras yang biasa terdapat dalam sebuah sistem basis data adalah computer, memori sekunder online (harddisk), memori sekunder offline (tape/removable disk) dan media perangkat komunikasi. Sistem Operasi (operating system) Sistem operasi merupakan program yang mengaktifkan/memfungsikan sistem computer (operasi I/O, pengelolaan file dan lain-lain). Sejumlah sistem operasi yang banyak digunakan seperti : MS-DOS, MS-Windows 3.1, MS-WINDOWS 98 (computer stand alone atau computer untuk computer client dalam sistem jaringan) atau Novel-Netware, MS Windows NT, Unix dan Sun Solaris (untuk computer server dan jaringan). Program pengelola basis data hanya dapat aktif (running) jika sistem operasi yang dikehendaki aktif. Basis Data (database) Setiap basis data dapat memiliki/berisi sejumlah objek basis data (seperti file/tabel, indeks dan lain-lain). Disamping berisi/menyimpan data, setiap basis data juga mengandung dan menyimpan definisi struktur (baik untuk basis data maupun objeknya secara detail). Sistem pengelolaan basis data (Database Management System/DBMS) Perangkat DBMS akan menentukan bagaimana data diorganisasi, disimpan, diubah dan diambil kembali serta menerapkan mekanisme pengamanan data, pemakaian data bersama dan pemaksaan keakuratan/konsistensi data. Perangkat lunak yang termasuk DBMS seperti dBase III+, dBase IV, FoxBase, Rbase, Ms Access dan Borland Paradox (untuk kelas sederhana) atau Borland Interbase., MS SQLL Server, CAOpen Ingres, Infomix dan SysBAse (untuk kelas Kompleks/berat)

Praktikum Basis Data D3 REKMED FMIPA UGM 5

Pemakai (user) Ada beberapa jenis/tipe pemakai terhadap suatu sistem basis data yang dibedakan berdasarkan cara berinteraksi terhadap sistem : 1. programmer aplikasi, pemakai yang berinteraksi dengan basis data melalui Data Manipulation Language (DML) yang disertakan (embedded) dalam program. 2. User mahir (casual user), pemakai yang berinteraksi dengan menyatakan query untuk mengakses data dengan bahasa query yang telah disediakan oleh suatu DBMS. 3. User umum (end user/native user), pemakai yang berinteraksi dengan sistem basis data melalui pemanggilan suatu program aplikasi permanent (executable program) yang telah ditulis/disediakan sebelumnya. 4. User Khusus (specialized user), pemakai yang menulis aplikasi basis data non konvensional, tetapi keperluan-keperluan, seperti untuk aplikasi AI (Artificial intelligence), sistem pakar, pengolahan citra dan lain-lain yang bisa saja mengakses basis data dengan/tanpa DBMS yang bersangkutan.

Aplikasi Perangkat Lunak Aplikasi (perangkat lunak) lain ini bersifat opsional. Artinya ada/tidaknya tergantung pada kebutuhan pemakai. DBMS yang pemakai gunakan lebih berperan dalam pengorganisasian data dalam sistem basis data, sementara bagi pemakai basis data (khususnya yang menjadi end-user/native-user) dapat dibuatkan/disediakan program khusus/lain untuk melakukan pengisian, pengubahan dan pengambilan data.

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

Praktikum Basis Data D3 REKMED FMIPA UGM 6

sebagai gabungan dari struktur dan datanya sendiri. Pemakai juga berkompeten dalam mengetahui bagaimana representasi fisik dari penyimpanan/pengorganisasian data. Pada level ini pemakai berurusan dengan data sebagai teks, angka atau bahkan melihatnya sebagai hinpunan bit data. 2. Level Konseptual (conceptual level) Level ini merupkan data apa yang sebenarnya (secara fungsional) disimpan dalam basis data dan hubungannya dengan data yang lain. Pada level ini misalnya mengetahui bahwa data pegawai disimpan/direpresentasikan dalam beberapa file/tabel. 3. Level Penampakan (view level) Level ini merupakan level tertinggi dari abstraksi data yang hanya menunjukkan sebagian dari basis data. Banyak user dalam sistem basis data tidak akan terlibat (concern) dengan semua data/informasi dalam basis data yang kemunculannya dimata pemakai diatur oleh aplikasi end user. Data yang diperhatikan juga bisa saja tidak berasal dari hanya sebuah tabel tapi mewakili relasi antar tabel, tapi bagi pemakai menggunakannya terasa sebagai satu kesatuan yang kompak.

Perancangan Basis 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 Praktikum Basis Data D3 REKMED FMIPA UGM 7

Setiap entitas pasti memiliki atribut yang mendeskripsikan karakteristik dari entitas tersebut. Penentuan/pemilihan atribut-atribut yang relevan bagi sebuah entitas merupakan hal penting lainnya dalam pembentukan model data. Penetapan atribut bagi sebuah entitas umumnya memang didasarkan pada fakta yang ada. Tetapi tidak selalu sepeti itu. Istilah atribut sebenarnya identik dengan pemakaian kolom data. Macam-macam atribut : Atribut deskriptif Adalah atribut-atribut yang tidak menjadi atau merupakan anggota dari primary key. Contoh : atribut-atribut nama_mhs, alamat_mhs dan tanggal_lahir Atribut sederhana dan atribut komposit Atribut sederhana adalah atribut atomic yang tidak dapat diuraikan lagi. Sedangkan atribut komposit adalah atribut yang masih dapat diuraikan lagi menjadi sub-sub atribut yang masing-masing memiliki makna. Contoh atribut sederhana : atribut nama_mhs Contoh atribut komposit : atribut alamat_mhs dimana alamat masih dapat diuraikan lagi menjadi alamat, nama kota, kode pos yang masing-masing memiliki makna Atribut bernilai tunggal dan atribut bernilai banyak Atribut yang bernilai tunggal ditujukan pada atribut-atribut yang memiliki paling banyak satu nilai untuk setiap basis data. Contoh atribut bernilai tunggal : nim, nama_mhs, alamat_mhs dan tgl_lahir karena atribut-atribut tersebut hanya dapat bernilai satu nilai. Contoh atribut bernilai banyak : atribut hobi karena bisa diisi dengan banyak nilai. Seseorang bisa memiliki hobi lebih dari satu. Atribut harus bernilai Ada sejumlah atribut pada sebuah tabel yang kita tetapkan harus berisi data. Jadi nilainya tidak boleh kosong (mandatory atribut). Contoh : nim, nama_mhs karena setiap mahasiswa yang ingin datanya disimpan di tabel tersebut paling tidak harus diketahui nama dan nimnya. Atribut turunan

Praktikum Basis Data D3 REKMED FMIPA UGM 8

Atribut turunan adalah atribut yang nilai-nilainya diperoleh dari pengolahan atau dapat diturunkan dari atribut atau tabel lain yang berhubungan. Contoh penambahan atribut angkatan dan ip. 3. Normalisasi Dalam perancangan basis data perlu dilakukan secara cermat agar dihasilkan basis data yang kompak dan efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam manipulasi data. Salah satu cara yang dapat dilakukan dalam merancang basis data adalah dengan melakukan normalisasi. Normalisasi adalah proses penyusunan tabel-tabel yang tidak redundant (dobel), yang dapat menyebabkan anomaly pada saat terjadi operasi manipulasi data seperti tambah, ubah dan hapus. Anomali yaitu proses basis data yang memberikan efek samping yang tidak diharapkan (misalnya menyebabkan ketidakkonsistenan data atau membuat sesuatu data menjadi hilang ketika data lain dihapus). Sebuah tabel dikategorikan efisien atau normal jika telah mengalami tiga criteria, yaitu: 1. jika ada dekomposisi tabel dimana dekomposisinya dijamin aman (Lossless Join Decomposition). Dekomposisi adalah proses pemisahan satu tabel menjadi dua atau lebih tabel baru. 2. terpeliharanya ketergantungan fungsional pada saat perubahan data (dependency preservation) 3. tidak melanggar Boyce-Codd Normal Form (BCNF)

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).

Praktikum Basis Data D3 REKMED FMIPA UGM 9

3. mengeliminasi ketergantungan transitif yaitu merubah/memecah sebagai relasi sehingga semua atribut yang bukan kunci tergantung fungsi secara penuh kepada kunci primer/tidak ada ketergantungan parsial yaitu ketergantungan atribut kepada atribut yang bukan kunci. Ini disebut bentuk normal ketiga (3NF). Contoh : Terdapat suatu informasi seperti berikut ini : ISBN 979-533-791-2 PHP Judul 631 Halaman Topik Pemrograman Internet 979-522-897-1 MySQL dan PHP 500 Basisdata Pemrograman

Bentuk normal pertama ISBN 979-533-791-2 979-533-791-2 979-522-897-1 979-522-897-1 PHP PHP MySQL dan PHP MySQL dan PHP Judul 631 631 500 500 Halaman Topik Pemrograman Internet Basisdata Pemrograman

Bentuk normal kedua ISBN 979-533-791-2 979-522-897-1 PHP MySQL dan PHP Judul 631 500 Halaman

ISBN 979-533-791-2 979-533-791-2 979-522-897-1 979-522-897-1

Topik Pemrograman Internet Basisdata Pemrograman

Praktikum Basis Data D3 REKMED FMIPA UGM 10

BAB II PERANCANGAN BASIS DATA DI MySQLMateri : 2.1 2.2 2.3 Membuat Database Membuat Tabel Relasi

MySQL merupakan software sistem manajemen database (Database Management System,DBMS) yang sangat popular. MySQL bersifat open source. Website MySQL www.mysql.com menyediakan informasi terkini tentang MySQL.

Pengelolaan database dapat dilakukan dengan menggunakan perintah-perintah SQL (Struktur Query Language), bahasa yang khusus digunakan untuk melakukan akses database relasional. Perintah SQL dikelompokkan menjadi : 1. DDL (Data Definition Language) DDL merupakan perintah yang digunakan untuk membuat dan mendefinisikan database dan struktur datanya. 2. DML (Data Manipulation Language) DML adalah perintah yang digunakan untuk melakukan manipulasi atau pengelolaan data yang ada dalam database. 3. DCL (Data Control Language)

Membuat Database

Praktikum Basis Data D3 REKMED FMIPA UGM 11

Dalam membuat database, yang sangat penting untuk diperhatikan adalah penulisan nama database tidak boleh menggunakan spasi dan karakter non standar. Bentuk penulisan untuk membuat database adalah :CREATE DATABASE nama_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)

Praktikum Basis Data D3 REKMED FMIPA UGM 12

Mengaktifkan database Setelah database dibuat, untuk dapat menggunakannya diperlukan perintah USE. Perintah ini selalu digunakan setiap user/pengguna akan mengakses table-table yang ada di dalamnya. Struktur penulisannya adalah sebagai berikut:USE nama_database;

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)

Tabel1. 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 TINYINT Keterangan 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 Ukuran 2 byte. Bilangan bulat dengan jangkauan untuk bilangan bertanda : -32768 sampai dengan 32767 dan untuk

SMALLINT

Praktikum Basis Data D3 REKMED FMIPA UGM 13

MEDIUMINT

INT

INTEGER BIGINT

FLOAT DOUBLE DOUBLE PRECISION REAL DECIMAL(M,D)

NUMERICAL(M,D)

yang tidak bertanda : 0 sampai dengan 65535. Ukuran 3 byte. Bilangan bulat dengan jangkauan untuk bilangan bertanda : -8388608 sampai dengan 8388607 dan untuk bertanda : 0 sampai dengan 16777215 Ukuran 4 byte. Bilangan bulat dengan jangkauan untuk bilangan bertanda : - 2147483648 sampai dengan 2147483647 dan untuk yang tidak bertanda : 0 sampai dengan 4294967295 Ukuran 4 byte. Sinonim dari INT Ukuran 8 byte. Bilangan bulat terbsar dengan jangkauan untuk bilangan bertanda : -9223372036854775808 sampai dengan 9223372036854775807 dan untuk yang tidak bertanda : 0 sampai dengan 18446744073709551615 Ukuran 4 byte. Bilangan pecahan Ukuran 8 byte. Bilangan pecahan Ukuran 8 byte. Bilangan pecahan berpresisi ganda Ukuran 8 byte. Sinonim dari DOUBLE Ukuran M byte. Bilangan pecahan. Misalnya DECIMAL(5,2) dapat digunakan untuk menyimpan bilangan -99,99 sampai dengan 99,99 Ukuran M byte. Sinonim dari DECIMAL. Misalnya NUMERICAL(5,2) dapat digunakan untuk menyimpan bilangan -99,99 sampai dengan 99,99 Tipe data untuk tanggal dan jam

Tipe Data DATETIME

DATE TIMESTAMP TIME YEAR

Keterangan Ukuran 8 byte. Kombinasi tanggal dan jam, dengan jangkauan dari 100-01-01 00:00:00 sampai dengan 9999-12-31 23:59:59 Ukuran 3 byte. Tanggal dengan jangkauan dari 100-01-01 sampai dengan 9999-12-31 Ukuran 4 byte. Kombinasi tanggal dan jam dengan jangkauan 1970-01-01 00:00:00 sampai dengan tahun 2037 Ukuran 3 byte. Waktu dengan jangkauan dari -838:59:59 sampai dengan 838:59:59 Ukuran 1 byte. Data tahun antara 1901 sampai dengan 2155 Tipe data untuk karakter dan lain-lain

Tipe Data CHAR(M) VARCHAR(M) TINYBLOB,

Keterangan Ukuran M byte, 1 M 255 . Data string dengan panjang yang tetap. CHAR(1) cukup ditulis dengan CHAR. Ukuran L=1 byte dengan L M dan 1 M 255 . Data string dengan panjang bervariasi, tergantung datanya L+1 byte, dengan L < 2 8 . Tipe TEXT atau BLOB dengan Praktikum Basis Data D3 REKMED FMIPA UGM 14

TINYTEXT BLOB,TEXT MEDIUMBLOB, MEDIUMTEXT LONGBLOB, LONGTEXT ENUM(nilai1, nilai2,) SET(nilai1, nilai2, )

panjang maksimum 255 karakter L+2 byte, dengan L < 216 . Tipe TEXT atau BLOB dengan panjang maksimum 65535 karakter L+3 byte, dengan L < 2 24 . Tipe TEXT atau BLOB dengan panjang maksimum 16777215 karakter L+4 byte, dengan L < 2 32 . Tipe TEXT atau BLOB dengan panjang maksimum 4294967295 karakter Ukuran 1 atau 2 byte tergantung jumlah enumerasinya (maksimum 65535 nilai) 1, 2, 3, 4 atau 8 byte, tergantung jumlah anggota himpunan (maksimum 64 anggota)

Di dalam database db_karyawan dibuat 4 tabel yaitu pribadi, pekerjaan, bagian dan gaji. Hubungan keempat tabel ini adalah sebagai berikut :pribadi PK nip nama alamat kota kelamin tgl_lahir PK bagian kode_bagian nama_bagian

pekerjaan PK,FK3 FK1 FK2 nip PK kode_bagian gol jabatan gaji gol gaji_pokok tunj_gol

Berikut ini perintah SQL untuk membuat tabel-tabelnya : Perintah untuk membuat tabel pribadi :mysql> CREATE TABLE pribadi ( -> nip SMALLINT PRIMARY KEY, -> nama CHAR(25), -> alamat CHAR(35), -> kota CHAR(15), -> kelamin ENUM('P','W'), -> tgl_lahir DATE);

Praktikum Basis Data D3 REKMED FMIPA UGM 15

Query OK, 0 rows affected (0.26 sec)

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

Perintah untuk membuat tabel pekerjaan :mysql> CREATE TABLE pekerjaan ( -> nip SMALLINT PRIMARY KEY, -> kode_bagian CHAR, -> gol CHAR(2), -> jabatan CHAR(15)); Query OK, 0 rows affected (0.12 sec)

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

Perintah untuk membuat tabel bagian :mysql> CREATE TABLE bagian ( -> kode_bagian CHAR PRIMARY KEY, -> nama_bagian CHAR(12)); Query OK, 0 rows affected (0.11 sec)

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

Praktikum Basis Data D3 REKMED FMIPA UGM 16

Perintah untuk membuat tabel gaji :mysql> CREATE TABLE gaji ( -> gol CHAR(2) PRIMARY KEY, -> gaji_pokok INTEGER UNSIGNED, -> tunj_gol INTEGER UNSIGNED); Query OK, 0 rows affected (0.15 sec)

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 perintahSHOW TABLES ;

untuk melihat tabel-tabel yang telah dibuat.mysql> SHOW TABLES; +------------------------------------------+ | Tables_in_db_karyawan | +------------------------------------------+ | bagian | | gaji | | pekerjaan | | pribadi | +------------------------------------------+ 4 rows in set (0.04 sec)

2. melihat struktur tabel PerintahDESCRIBE nama_tabel;

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 | |

Praktikum Basis Data D3 REKMED FMIPA UGM 17

| nama | char(25) | YES | | NULL | | | alamat | char(35) | YES | | NULL | | | kota | char(15) | YES | | NULL | | | kelamin | enum('P','W') | YES | | NULL | | | tgl_lahir | date | YES | | NULL | | +------------------+----------------------------+-------------------+--------+----------------------+---------+ 6 rows in set (0.15 sec)

3. mengubah struktur tabel Jika struktur tabel yang telah dibuat terdapat kesalahan atau menginginkan penggantian, dapat menggunakan perintah alter untuk mengubahnya. Ada empat macam perubahan dalam struktur tabel, yaitu : perubahan nama field/kolom perubahan yang terjadi hanya sebatas pada nama field/kolom saja. Nama field/kolom yang lama diganti dengan nama filed/kolom yang baru Struktur penulisan:ALTER TABLE nama_tabel CHANGE nama_field_lama nama_filed_baru tipe_data;

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

perubahan tipe data perubahan yang terjadi hanya terbatas pada tipe data yang digunakan oleh field/kolom tertentu. Tipe data yang baru langsung disebutkan dibelakang nama field/kolom, tanpa harus menyebutkan tipe data yang lama. Struktur penulisan:ALTER TABLE namatabel MODIFY nama_field tipe_data_baru;

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

Praktikum Basis Data D3 REKMED FMIPA UGM 18

struktur tabel akan tambah dengan bertambahnya field/kolom baru didalamnya. Struktur penulisan :ALTER TABLE nama_tabel ADD nama_field tipe_data_baru;

Contoh : Menambahkan field bonus pada tabel gajimysql> 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

4. mengganti nama tabel seringkali, penggantian tabel juga meliputi nama tabel itu sendiri. Struktur penulisan :ALTER TABLE nama_tabel_lama RENAME nama_tabel_baru;

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)

Praktikum Basis Data D3 REKMED FMIPA UGM 19

RelasiRelasi dalam basis data digunakan untuk menghubungkan beberapa tabel, sehingga datadata yang disimpan dalam tabel tetap normal. Dalam MySQL relasi antar tabel dapat dibuat jika tipe tersebut innoDB. Secara otomatis saat membuat tabel baru, tipe tabel tersebut adalah MyISAM. Untuk merubah ke tipe innoDB dapat menggunakan perintah SQL sebagai berikut Struktur penulisan :ALTER TABLE name_tabel type=type_tabel;

Sebagai contoh pembuatan relasi dalam MySQL adalah sebagai berikut : 1. membuat tabel baru dan langsung direlasikanmysql> CREATE TABLE pekerjaan( -> nip SMALLINT PRIMARY KEY, -> kode_bagian CHAR, -> gol CHAR(2), -> jabatan CHAR(15), -> FOREIGN KEY(nip) REFERENCES pribadi(nip)); Query OK, 0 rows affected (0.14 sec)

2. membuat relasi pada tabel lama Jika telah mempunyai tabel dalam database dan ingin direlasikan dengan tabel lain. Struktur penulisannya adalah sebagai berikut :ALTER TABLE nama_tabel ADD FOREIGN KEY (nama_field) REFERENCES tabel_master(nama_field);

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

Praktikum Basis Data D3 REKMED FMIPA UGM 20

BAB III DATA MANIPULATION LANGUAGE (DML)Materi : 3.1 3.2 3.3 3.4 3.5 3.6 Insert Update Delete Select Kondisi View

Setelah struktur database dibuat dengan tabel-tabelnya maka berikutnya adalah bagaimana melakukan pengisian, perbaikan, penghapusan, pengambilan dan pencarian kembali data.

INSERTPerintah :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)

Praktikum Basis Data D3 REKMED FMIPA UGM 21

Perintah insert dapat juga dituliskan langsung sebagai berikut :INSERT INTO nama_tabel VALUES(nilai1 [,nilai2 [,..]]);

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.

UPDATEPerintah :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. Praktikum Basis Data D3 REKMED FMIPA UGM 22

DELETEPerintah:DELETE FROM nama_tabel [WHERE kondisi];

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.

SELECTPerintah :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.

Praktikum Basis Data D3 REKMED FMIPA UGM 23

Kondisi pada perintah select digunakan untuk membatasi data yang akan ditampilkan berdasarkan kriteria yang diinginkan pemakai. Inner Join Contoh :SELECT pribadi.nip, pribadi.nama, pribadi.alamat, pribadi.kota, pribadi.kelamin, pribadi.tgl_lahir, pekerjaan.kode_bagian, pekerjaan.gol, pekerjaan.jabatan FROM pribadi INNER JOIN pekerjaan ON pribadi.nip=pekerjaan.nip; nip nama alamat Karangwaru II/3B kota Kelamin tgl_lahir kode_bagian gol Yogya W 1968-12-03 1 1964-05-12 2 1970-05-24 3 1968-12-03 4 1969-11-13 5 1972-12-23 5 1974-10-11 2 1971-04-01 1 1973-06-23 3 1971-02-24 5 1979-11-04 2 1971-08-01 2 1980-02-24 3 1977-04-04 3 1978-09-04 3 1977-04-04 3 1981-12-24 3 1975-10-04 3 1975-10-04 3 jabatan

12340 Dian Sastro 12341 12342 Hamdan Arif

5A Manajer 5A Manajer 5A Manajer 5A Manajer 5A Manajer 4B Analis Sistem

Jl. Krapyak 2 Bantul P Yogya P

Restyo Adi Garuda Nugroho IV/10B

12343 Sita Devi 12344 Soemarno 12345 12346 12347 Wahyu Budi Hasta Nugraha Riwin Mirhadi

Jl. Cakrawala Yogya W 6 Jl. Jatiwangi 1 Yogya P Jl. Paku 12 Jl. Surya 12 Jl. Jago I/3 Yogya P Yogya P Yogya P

4A Staff 4A Staff 4A Staff 3A Pemrogram 3A Staff 3A Sekretaris 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 4A Asisten

12348 Triana 12349 Iswahyudi 12350 12351 Setya Abadi Rita Setyawati

Jl. Abimanyu Sleman W 7 Jl. Semar 4 Jl. Karsa 103 Jl. Dargo 6 Jl. Selo 12A Bantul P Klaten P Yogya W Bantul P

12352 Rifan 12353 Wawan

Jl. Jogolawang Yogya P III/1B Bantul P Yogya W Yogya W Yogya P Yogya P Jl. Ratna Manikam 4 Jl. Warna Ceria 75 Jl. Hanoman 34 Jl. Hanoman

12354 Anjasmara Jl. Selo 12A 12355 Hapsari 12356 Astuti Rianawati

12357 Jaswadi 12358 Arswendo

Praktikum Basis Data D3 REKMED FMIPA UGM 24

nip

nama 34

alamat

kota Kelamin tgl_lahir kode_bagian gol

jabatan Manajer

12359 Ratna Sari

Jl. Hayam Wuruk III No. Yogya W 4 Bantul P

1979-08-01 4

4A

Asisten Manager Asisten Manager

12360

Karang Sinung Malang RT Wikantoro 04/ RW 07

1978-11-14 2 1982-06-06 5 1980-01-27 4

4A

12361 Dahlan 12362 Retno Wulandari

Jl. Bina Marga Yogya P 5 Gambiran IV/7 Yogya W

3A Pemrogram 3A Staff

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; nip nama alamat Karangwaru II/3B Jl. Krapyak 2 kota kelamin tgl_lahir kode_bagian gol Yogya W Bantul P Yogya P Yogya W 1968-12-03 1 1964-05-12 2 1970-05-24 3 1968-12-03 4 1969-11-13 5 1972-12-23 5 1974-10-11 2 1971-04-01 1 1973-06-23 3 1971-02-24 5 1979-11-04 2 1971-08-01 2 1980-02-24 3 jabatan

12340 Dian Sastro 12341 12342 Hamdan Arif

5A Manajer 5A Manajer 5A Manajer 5A Manajer 5A Manajer 4B Analis Sistem

Restyo Adi Garuda Nugroho IV/10B Jl. Cakrawala 6

12343 Sita Devi 12344 Soemarno 12345 12346 12347 Wahyu Budi Hasta Nugraha Riwin Mirhadi

Jl. Jatiwangi 1 Yogya P Jl. Paku 12 Jl. Surya 12 Jl. Jago I/3 Jl. Abimanyu 7 Jl. Semar 4 Yogya P Yogya P Yogya P Sleman W Bantul P Klaten P Yogya W Bantul P

4A Staff 4A Staff 4A Staff 3A Pemrogram 3A Staff 3A Sekretaris 2A Pemasar

12348 Triana 12349 Iswahyudi Rita Setyawati

12350 Setya Abadi Jl. Karsa 103 12351 Jl. Dargo 6 Jl. Selo 12A

12352 Rifan

Praktikum Basis Data D3 REKMED FMIPA UGM 25

nip

nama

alamat

kota kelamin tgl_lahir kode_bagian gol 1977-04-04 3 1978-09-04 3 1977-04-04 3 1981-12-24 3 1975-10-04 3 1975-10-04 3 1979-08-01 4

jabatan

12353 Wawan

Jl. Jogolawang Yogya P III/1B Bantul P Yogya W Yogya W Yogya P Yogya P Jl. Ratna Manikam 4 Jl. Warna Ceria 75 Jl. Hanoman 34 Jl. Hanoman 34

2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 4A 4A Asisten Manajer Asisten Manager Asisten Manager

12354 Anjasmara Jl. Selo 12A 12355 Hapsari 12356 Astuti Rianawati

12357 Jaswadi 12358 Arswendo 12359 Ratna Sari Sinung Wikantoro

Jl. Hayam Wuruk III No. Yogya W 4 Karang Malang RT 04/ RW 07 Bantul P

12360

1978-11-14 2 1982-06-06 5 1980-01-27 4

4A

12361 Dahlan 12362 Retno Wulandari

Jl. Bina Marga Yogya P 5 Gambiran IV/7 Yogya W

3A Pemrogram 3A Staff

Left (outer) Join Left outer join akan menampilkan tabel di sebelah kanannya dengan NULL jika tidak terdapat hubungan dengan tabel di sebelah kiri.SELECT pribadi.nip, pribadi.nama, pribadi.alamat, pribadi.kota, pribadi.kelamin, pribadi.tgl_lahir, pekerjaan.kode_bagian, pekerjaan.gol, pekerjaan.jabatan FROM pribadi LEFT JOIN pekerjaan ON pribadi.nip=pekerjaan.nip; nip nama alamat Karangwaru II/3B Jl. Krapyak 2 kota kelamin tgl_lahir kode_bagian gol Yogya W Bantul P Yogya P Yogya W 1968-12-03 1 1964-05-12 2 1970-05-24 3 1968-12-03 4 1969-11-13 5 1972-12-23 5 jabatan

12340 Dian Sastro 12341 12342 Hamdan Arif

5A Manajer 5A Manajer 5A Manajer 5A Manajer 5A Manajer 4B Analis Sistem

Restyo Adi Garuda Nugroho IV/10B Jl. Cakrawala 6

12343 Sita Devi 12344 Soemarno 12345 Wahyu Budi

Jl. Jatiwangi 1 Yogya P Jl. Paku 12 Yogya P

Praktikum Basis Data D3 REKMED FMIPA UGM 26

nip 12346 12347

nama Hasta Nugraha Riwin Mirhadi

alamat Jl. Surya 12 Jl. Jago I/3 Jl. Abimanyu 7 Jl. Semar 4

kota kelamin tgl_lahir kode_bagian gol Yogya P Yogya P Sleman W Bantul P Klaten P Yogya W Bantul P 1974-10-11 2 1971-04-01 1 1973-06-23 3 1971-02-24 5 1979-11-04 2 1971-08-01 2 1980-02-24 3 1977-04-04 3 1978-09-04 3 1977-04-04 3 1981-12-24 3 1975-10-04 3 1975-10-04 3 1979-08-01 4

jabatan

4A Staff 4A Staff 4A Staff 3A Pemrogram 3A Staff 3A Sekretaris 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 4A 4A Asisten Manajer Asisten Manager Asisten Manager

12348 Triana 12349 Iswahyudi Rita Setyawati

12350 Setya Abadi Jl. Karsa 103 12351 Jl. Dargo 6 Jl. Selo 12A

12352 Rifan 12353 Wawan

Jl. Jogolawang Yogya P III/1B Bantul P Yogya W Yogya W Yogya P Yogya P Jl. Ratna Manikam 4 Jl. Warna Ceria 75 Jl. Hanoman 34 Jl. Hanoman 34

12354 Anjasmara Jl. Selo 12A 12355 Hapsari 12356 Astuti Rianawati

12357 Jaswadi 12358 Arswendo 12359 Ratna Sari Sinung Wikantoro

Jl. Hayam Wuruk III No. Yogya W 4 Karang Malang RT 04/ RW 07 Bantul P

12360

1978-11-14 2 1982-06-06 5 1980-01-27 4

4A

12361 Dahlan 12362 Retno Wulandari

Jl. Bina Marga Yogya P 5 Gambiran IV/7 Yogya W

3A Pemrogram 3A Staff

Right (outer) Join Kebalikan dengan left outer join, jika data di sebelah kanan tabel tidak dapat menemukan hubungannya dengan tabel disebelah kiri, akan ditampilkn NULL.SELECT pribadi.nip, pribadi.nama, pribadi.alamat, pribadi.kota, pribadi.kelamin, pribadi.tgl_lahir, pekerjaan.kode_bagian, pekerjaan.gol, pekerjaan.jabatan FROM pribadi RIGHT JOIN pekerjaan ON pribadi.nip=pekerjaan.nip; nip nama alamat kota kelamin tgl_lahir kode_bagian gol jabatan 12340 Dian Sastro Karangwaru Yogya W 1968-12-03 1 5A Manajer

Praktikum Basis Data D3 REKMED FMIPA UGM 27

nip

nama Hamdan Arif

alamat II/3B

kota kelamin tgl_lahir kode_bagian gol

jabatan

12341 12342

Jl. Krapyak 2

Bantul P Yogya P Yogya W

1964-05-12 2 1970-05-24 3 1968-12-03 4 1969-11-13 5 1972-12-23 5 1974-10-11 2 1971-04-01 1 1973-06-23 3 1971-02-24 5 1979-11-04 2 1971-08-01 2 1980-02-24 3 1977-04-04 3 1978-09-04 3 1977-04-04 3 1981-12-24 3 1975-10-04 3 1975-10-04 3 1979-08-01 4

5A Manajer 5A Manajer 5A Manajer 5A Manajer 4B Analis Sistem

Restyo Adi Garuda Nugroho IV/10B Jl. Cakrawala 6

12343 Sita Devi 12344 Soemarno 12345 12346 12347 Wahyu Budi Hasta Nugraha Riwin Mirhadi

Jl. Jatiwangi 1 Yogya P Jl. Paku 12 Jl. Surya 12 Jl. Jago I/3 Jl. Abimanyu 7 Jl. Semar 4 Yogya P Yogya P Yogya P Sleman W Bantul P Klaten P Yogya W Bantul P

4A Staff 4A Staff 4A Staff 3A Pemrogram 3A Staff 3A Sekretaris 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 4A 4A Asisten Manajer Asisten Manager Asisten Manager

12348 Triana 12349 Iswahyudi Rita Setyawati

12350 Setya Abadi Jl. Karsa 103 12351 Jl. Dargo 6 Jl. Selo 12A

12352 Rifan 12353 Wawan

Jl. Jogolawang Yogya P III/1B Bantul P Yogya W Yogya W Yogya P Yogya P Jl. Ratna Manikam 4 Jl. Warna Ceria 75 Jl. Hanoman 34 Jl. Hanoman 34

12354 Anjasmara Jl. Selo 12A 12355 Hapsari 12356 Astuti Rianawati

12357 Jaswadi 12358 Arswendo 12359 Ratna Sari Sinung Wikantoro

Jl. Hayam Wuruk III No. Yogya W 4 Karang Malang RT 04/ RW 07 Bantul P

12360

1978-11-14 2 1982-06-06 5 1980-01-27 4

4A

12361 Dahlan 12362 Retno Wulandari

Jl. Bina Marga Yogya P 5 Gambiran IV/7 Yogya W

3A Pemrogram 3A Staff

Praktikum Basis Data D3 REKMED FMIPA UGM 28

Natural (Right|Left (Outer)) JoinSELECT pribadi.nip, pribadi.nama, pribadi.alamat, pribadi.kota, pribadi.kelamin, pribadi.tgl_lahir, pekerjaan.kode_bagian, pekerjaan.gol, pekerjaan.jabatan FROM pribadi NATURAL RIGHT JOIN pekerjaan nip nama alamat Karangwaru II/3B Jl. Krapyak 2 kota kelamin tgl_lahir kode_bagian gol jabatan

12340 Dian Sastro 12341 12342 Hamdan Arif

Yogya W Bantul P

1968-12-03 1 1964-05-12 2 1970-05-24 3 1968-12-03 4 1969-11-13 5 1972-12-23 5 1974-10-11 2 1971-04-01 1 1973-06-23 3 1971-02-24 5 1979-11-04 2 1971-08-01 2 1980-02-24 3 1977-04-04 3 1978-09-04 3 1977-04-04 3 1981-12-24 3 1975-10-04 3 1975-10-04 3 1979-08-01 4 1978-11-14 2

5A Manajer 5A Manajer 5A Manajer 5A Manajer 5A Manajer 4B Analis Sistem

Restyo Adi Garuda IV/10B Yogya P Nugroho Jl. Cakrawala 6 Yogya W Jl. Jatiwangi 1 Yogya P Yogya P Yogya P Yogya P

12343 Sita Devi 12344 Soemarno

12345 Wahyu Budi Jl. Paku 12 12346 12347 Hasta Nugraha Riwin Mirhadi Jl. Surya 12 Jl. Jago I/3

4A Staff 4A Staff 4A Staff 3A Pemrogram 3A Staff 3A Sekretaris 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 2A Pemasar 4A 4A 4A Asisten Manajer Asisten Manager Asisten Manager

12348 Triana 12349 Iswahyudi Rita Setyawati

Jl. Abimanyu 7 Sleman W Jl. Semar 4 Bantul P Klaten P Yogya W Bantul P

12350 Setya Abadi Jl. Karsa 103 12351 Jl. Dargo 6 Jl. Selo 12A

12352 Rifan 12353 Wawan 12354 Anjasmara 12355 Hapsari 12356 Astuti Rianawati

Jl. Jogolawang Yogya P III/1B Jl. Selo 12A Jl. Ratna Manikam 4 Bantul P Yogya W

Jl. Warna Ceria Yogya W 75 Jl. Hanoman 34 Yogya P Jl. Hanoman 34 Yogya P Jl. Hayam Wuruk III No. 4 Yogya W

12357 Jaswadi 12358 Arswendo 12359 Ratna Sari 12360 Sinung Wikantoro

Karang Malang Bantul P RT 04/ RW 07

Praktikum Basis Data D3 REKMED FMIPA UGM 29

nip

nama

alamat

kota

kelamin

tgl_lahir

kode_bagian gol

jabatan

12361 Dahlan 12362 Retno Wulandari

Jl. Bina Marga Yogya P 5 Gambiran IV/7 Yogya W

1982-06-06 5 1980-01-27 4

3A Pemrogram 3A Staff

KondisiKondisi 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 LIKESELECT * 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%';

Praktikum Basis Data D3 REKMED FMIPA UGM 30

+----------+---------------------+---------------------+----------+-------------+-----------------+ | 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 diawali deangan data_yang_dicari.

SELECT * FROM nama_tabel WHERE nama_field LIKE %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.

SELECT * FROM nama_tabel WHERE nama_field LIKE %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.

Praktikum Basis Data D3 REKMED FMIPA UGM 31

VIEWCREATE VIEW nama_view AS ekspresi_Query;

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)

Untuk menampilkan view :mysql> SELECT * FROM karyawan_bantul; +-----------+-----------------------------+ | nip | nama | +----------+------------------------------+ | 12341 | Hamdan Arif | +----------+------------------------------+ 1 row in set (0.00 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 namanama 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.

Praktikum Basis Data D3 REKMED FMIPA UGM 32

Praktikum Basis Data D3 REKMED FMIPA UGM 33

BAB IV FUNGSI MYSQLMateri : 4.1 4.2 4.3 4.4 4.5 4.6 Fungsi Sistem Fungsi Agregat Fungsi Matematika Fungsi String Fungsi Tanggal 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];

FROM namatabel tidak harus diberikan dalam MySQL. Praktikum Basis Data D3 REKMED FMIPA UGM 34

Fungsi dalam MySQL seperti halnya perintah SQL dapat dituliskan dalam huruf besar ataupun huruf kecil. Fungsi dalam MySQL dibedakan menjadi :

Fungsi sistem Fungsi agregat Fungsi aritmatika Fungsi string Fungsi tanggal Fungsi logika

Pengelompokkan fungsi di atas didasarkan pada kegunaan dari fungsi-fungsi tersebut.

Fungsi SistemKelompok 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(). Praktikum Basis Data D3 REKMED FMIPA UGM 35

VERSION() Fungsi ini digunakan untuk mengetahui versi server MySQL yang sedang digunakan saat ini. BENCHMARK(x,ekspresi) Mengerjakan perintah pada ekspresi sejumlah count kali. Nilai yang dihasilkan selalu 0. Hal penting dari fungsi ini adalah nilai waktu yang digunakan (elapsed time) yang diberikan pada bagian akhir, memungkinkan kita menilai berapa cepat server mengevaluasi query. LOAD_FILE(nama_file) Digunakan untuk membuka file dan memberikan isinya sebagai string. File harus ada dalam server dan pemakai untuk menggunakan fungsi ini memiliki privelege File. Contoh :mysql> SELECT VERSION(), DATABASE(), USER(); +--------------------------------+-----------------------+------------------------+ | VERSION() | DATABASE() | USER() | +--------------------------------+-----------------------+------------------------+ | 5.0.22-community-nt | db_karyawan | root@localhost | +--------------------------------+-----------------------+------------------------+ 1 row in set (0.00 sec)

Fungsi AgregatFungsi 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) Praktikum Basis Data D3 REKMED FMIPA UGM 36

Fungsi ini digunakan untuk mencari nilai terbesar dari suatu kolom dari suatu tabel atau ekspresi. Kolom yang dicari nilai terbesarnya memiliki tipe data numerik. Fungsi MAX() tidak melibatkan dalam perhitungannya, data yang bernilai NULL dari suatu baris yang kolomnya memiliki nilai NULL. MIN(ekspresi) Fungsi MIN() merupakan lawan dari fungsi MAX(). Fungsi ini mencari nilai terkecil dari suatu kolom dalam suatu tabel atau ekspresi. STD(ekspresi) dan STDDEV(ekspresi) Fungsi ini digunakan untuk mendapatkan standar deviasi dari data suatu kolom dalam tabel. Ekspresi umumnya menyatakan kolom suatu tabel dengan tipe datanya numerik. SUM(ekspresi) Fungsi ini digunakan untuk mendapatkan nilai total dari suatu kolom suatu tabel atau ekspresi. Contoh :mysql> SELECT COUNT(*) FROM pribadi; +------------------+ | COUNT(*) | +------------------+ | 23 | +------------------+ 1 row in set (0.00 sec) mysql> SELECT MAX(gaji_pokok) FROM gaji; +----------------------------+ | MAX(gaji_pokok) | +----------------------------+ | 1800000 | +----------------------------+ 1 row in set (0.02 sec) mysql> SELECT MIN(gaji_pokok) FROM gaji; +---------------------------+ | MIN(gaji_pokok) | +---------------------------+ | 350000 | +---------------------------+ 1 row in set (0.00 sec)

Praktikum Basis Data D3 REKMED FMIPA UGM 37

Fungsi AritmetikaMySQL memiliki fasilitas dasar untuk melakukan manipulasi data numerik, seperti penjumlahan, pengurangan, perkalian dan pembagian yang disertakan dalam suatu perintah select. Fasilitas tersebut dikenal dengan operator aritmatika.

Penjumlahan(+)

Digunakan untuk menjumlahkan dua buah data numerik, hasil dari operasi ini adalah data numerik juga.mysql> SELECT 5+23; +---------+ | 5+23 | +---------+ | 28 | +--------+ 1 row in set (0.00 sec)

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)

Praktikum Basis Data D3 REKMED FMIPA UGM 38

Pembagian(/)

Digunakan untuk melakukan operasi pembagian dua data numerik. Bilangan di sebelah kiri dibagi dengan bilangan yang ada disebelah kanan operator, hasil dari operasi ini adalah data numerik.mysql> SELECT 10/2; +--------+ | 10/2 | +--------+ | 5.0000 | +--------+ 1 row in set (0.03 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 TanggalTanggal 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 Praktikum Basis Data D3 REKMED FMIPA UGM 39

ii adalah menit dalam format 00-59 ss adalah detik dalam format 00-59 Berikut ini fungsi built-in untuk data tanggal dalam MySQL : ADDDATE(date, INTERVAL ekspresi_interval) CURDATE() dan CURRENT_DATE() CURTIME() dan CURRENT_TIME() CURRENT_TIMESTAMP() DATE_ADD(date, INTERVAL ekspresi_interval) DATE_FORMAT(date, simbolformat) DATE_SUB(date, INTERVAL ekspresi_interval) DAYNAME(date) DAYOFMONTH(date) DAYOFWEEK(date) DAYOFYEAR(date) EXTRACT(value FROM date) FROM_DAYS(days) FROM_UNIXTIME(unixtime[,simbolformat]) HOUR(time) MINUTE(time) MONTH(date) MONTHNAME(date) NOW() PERIOD_ADD(x,y) PERIOD_DIFF(x,y) QUARTER(date) SECOND(time) SEC_TO_TIME(second) SUBDATE() SYSDATE() TIME_FORMAT(time,simbolformat) TIME_TO_SEC(time)

Praktikum Basis Data D3 REKMED FMIPA UGM 40

TO_DAYS(date) UNIX_TIMESTAMP([date]) WEEK(date[,start]) WEEKDAY(date) YEAR(date) Contoh :mysql> SELECT NOW(); +-------------------------------+ | NOW() | +-------------------------------+ | 2007-08-02 06:35:43 | +-------------------------------+ 1 row in set (0.12 sec)

Fungsi StringFungsi 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)

Praktikum Basis Data D3 REKMED FMIPA UGM 41

LENGTH(x) LOAD_FILE(namafile) LOCATE(x,y,z) LOWER(x) LPAD(x,y,z) LTRIM(x) MID(x,y,z) OCTET_LENGTH() PASSWORD(password) POSITION(x,y) REPEAT(x,y) REPLACE(x,y) REVERSE(x) RIGHT(string,length) RPAD(x,y,z) RTRIM(x) SOUNDEX(x) SPACE(x) STRCMP(string1,string2) SUBSTRING_INDEX(x,y,z) TRIM([[BOTH OR LEADING or TRAILING][x] FROM] y) UCASE(x) UPPER(x)

Fungsi LogikaFungsi 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)

Praktikum Basis Data D3 REKMED FMIPA UGM 42

Fungsi if() mengevaluasi ekspresi1, jika ekspresi1 bernilai benar(true) maka ekspresi2 akana menjadi hasil, jika ekspresi1 bernilai salah (false) maka ekspresi3 akan menjadi hasilnya.mysql> SELECT IF(1,"Benar","Salah"); +--------------------------------+ | IF(1,"Benar","Salah") | +--------------------------------+ | Benar | +---------------------------------+ 1 row in set (0.00 sec)

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 hasilnyamysql> 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 salahmysql> SELECT ISNULL(gol) FROM gaji WHERE tunj_gol="1200000"; Empty set (0.00 sec)

Praktikum Basis Data D3 REKMED FMIPA UGM 43

BAB V STORE PROCEDUREMateri : 5.1 5.2 5.3 5.4 Membuat Store Prosedur Alter Procedure Call Procedure 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.

Membuat Store ProsedurPerintah :CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body 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 }

Praktikum Basis Data D3 REKMED FMIPA UGM 44

| SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string' 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

fungsi, dan fungsi harus berisi pernyataan RETURN value.routine_body terdiri dari pernyataan SQL yang valid. Dapat berupa pernyataan yang

sederhana seperti SELECT atau INSERT, atau dapat berupa pernyataan yang banyak ditulis dengan menggunakan BEGINEND. 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)

ALTER STORE PROCEDUREPerintah yang digunakan untuk mengubah karakteristik dari sebuah store prosedure adalah :ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...] characteristic: { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string'

Praktikum Basis Data D3 REKMED FMIPA UGM 45

Pernyataan CALLPernyataan CALL meminta sebuah prosedur yang telah didefinisikan sebelumnya melalui pernyataan CREATE PROCEDURE.CALL sp_name([parameter[,...]])

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) mysql> CALL p(@version, @increment);// Query OK, 0 rows affected (0.00 sec) mysql> SELECT @version, @increment;// +---------------------+------------+ | @version | @increment | +---------------------+------------+ | 5.0.22-community-nt | 11 | +---------------------+------------+ 1 row in set (0.00 sec)

DROP ProsedurPerintah yang digunakan untuk menghapus store prosedur adalah :DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name

Contoh :mysql> DROP PROCEDURE p; -> //

Praktikum Basis Data D3 REKMED FMIPA UGM 46

Query OK, 0 rows affected (0.01 sec)

BAB VI TRIGGER

Materi : 6.1 6.2 Membuat Trigger 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 TriggerSintax :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

pernyataan INSERT, LOAD DATA dan REPLACEUPDATE. Trigger aktif ketika sebuah baris data dirubah melalui pernyataan UPDATE

Praktikum Basis Data D3 REKMED FMIPA UGM 47

DELETE. Trigger aktif ketika sebuah baris dihapus dari tabel melalui pernyataan DELETE atau REPLACE. Meskipun demikian, DROP TABLE dan TRUNCATE pada sebuah

tabel tidak mengaktifkan trigger karena tidak menggunakan pernyataan DELETE.trigger_stmt

adalah pernyataan yang dieksekusi ketika trigger aktif. Jika ingin

mengeksekusi multiple pernyataan digunakan BEGIN END. Contoh :mysql> CREATE TABLE test1(a1 INT); Query OK, 0 rows affected (0.61 sec) mysql> CREATE TABLE test2(a2 INT); Query OK, 0 rows affected (0.08 sec) mysql> CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY); Query OK, 0 rows affected (0.17 sec) mysql> CREATE TABLE test4( -> a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> b4 INT DEFAULT 0 -> ); Query OK, 0 rows affected (0.11 sec) 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 ; mysql> INSERT INTO test3 (a3) VALUES -> (NULL), (NULL), (NULL), (NULL), (NULL), -> (NULL), (NULL), (NULL), (NULL), (NULL); Query OK, 10 rows affected (0.03 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> INSERT INTO test4 (a4) VALUES -> (0), (0), (0), (0), (0), (0), (0), (0), (0), (0); Query OK, 10 rows affected (0.03 sec) Records: 10 Duplicates: 0 Warnings: 0

Praktikum Basis Data D3 REKMED FMIPA UGM 48

mysql> INSERT INTO test1 VALUES -> (1), (3), (1), (7), (1), (8), (4), (4); Query OK, 8 rows affected (0.06 sec) Records: 8 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM test1; +------+ | a1 | +------+ | 1| | 3| | 1| | 7| | 1| | 8| | 4| | 4| +------+ 8 rows in set (0.03 sec) mysql> SELECT * FROM test2; +------+ | a2 | +------+ | 1| | 3| | 1| | 7| | 1| | 8| | 4| | 4| +------+ 8 rows in set (0.00 sec) mysql> SELECT * FROM test3; +----+ | a3 | +----+ | 2| | 5| | 6| | 9| | 10 | +----+ 5 rows in set (0.00 sec) mysql> SELECT * FROM test4; +----+------+ | a4 | b4 |

Praktikum Basis Data D3 REKMED FMIPA UGM 49

+----+------+ | 1| 3| | 2| 0| | 3| 1| | 4| 2| | 5| 0| | 6| 0| | 7| 1| | 8| 1| | 9| 0| | 10 | 0 | +----+------+ 10 rows in set (0.01 sec)

Menghapus TriggerPerintah :DROP TRIGGER [schema_name.]trigger_name

Contoh :mysql> DROP TRIGGER testref; Query OK, 0 rows affected (0.02 sec)

Praktikum Basis Data D3 REKMED FMIPA UGM 50

BAB VII GRANT/REVOKEMateri : 7.1 7.2 7.3 Privilege Pengelolaan User dengan DML 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).

PrivilegePrivilege 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.

MySQL menggunakan tabel-tabel khusus untuk melakukan pengeloaan pemakai dan privilege-nya, yaitu : Table db Berisi informasi database mana saja yang bisa diakses oleh setiap pemakai dan dari komputer mana Tabel user Digunakan untuk menyimpan data pemakai database dan data privilege-nya pada saat melakukan akses ke dalam database. Tabel host

Praktikum Basis Data D3 REKMED FMIPA UGM 51

Digunakan untuk menyimpan informasi komputer mana saja yang dapat mengakses database MySQL, siapa nama pemakainya. Tabel tables_priv Tabel ini menyimpan informasi privilege pemakai pada level tabel. Tabel column_priv Tabel ini digunakan untuk menyimpan informasi privilege pemakai sampai pada level kolom (field). 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.

Praktikum Basis Data D3 REKMED FMIPA UGM 52

Field lain dari tabel user ini adalah informasi privilege yang diberikan kepada host untuk mengakses database yang didefinisikan. Berikut ini adalah daftar field yang menunjukkan privilege : Nama Field Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv Index_priv Alter_priv Reload_priv Kegunaan Digunakan untuk mendefinisikan hak untuk melakukan query yang menggunakan perintah Select Mendefinisikan hak untuk dapat melakukan penambahan data Mendefinisikan hak untuk dapat melakukan perubahan data Mendefinisikan hak untuk dapat melakukan penghapusan tabel Mendefinisikan hak untuk dapat membuat tabel atau database baru Mendefinisikan hak untuk dapat menghapus tabel atau database Hak untuk dapat memberikan privilege kepada pemakai lain. Privilege ini sebaiknya diberikan kepada pemakai dengan level administrator Hak untuk dapat melakukan pembuatan, perubahan, dan penghapusan index Hak untuk mengubah struktur tabel Mendefinisikan apakah pemakai berhak mengaktifkan definisi privilege yang diacu database secara lansung atau tidak. Menentukan pemakai boleh memberikan perintah FLUSH PRIVELEGES atau tidak Menentukan apakah pemakai boleh mematikan server atau tidak Mendefinisikan agar pemakai dapat mematikan proses-proses yang dibuat oleh MySQL Mendefinisikan apakah pemakai dapat melakukan opearsi file di dalam server atau tidak, seperti perintah untuk melakukan LOAD DATA INFILE

Shutdown_priv Process_priv File_priv

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.

Praktikum Basis Data D3 REKMED FMIPA UGM 53

Tabel host Tabel ini digunakan untuk memudahkan pendefinisian akses kepada suatu database dari suatu host, sehingga entri dalam tabel db tidak perlu mendefinisikan nama host, cukup pada tabel host saja didefinisikan, field host pada tabel db dapat dikosongkan.

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.

Pengelolaan Pemakai dengan menggunakan DMLPengelolaan privilege pemakai meliputi penambahan, perubahan dan penghapusan data pemakai disertai dengan penentuan privilegenya.

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);

Praktikum Basis Data D3 REKMED FMIPA UGM 54

Contoh :mysql> INSERT INTO user(Host,User)VALUES('localhost','praktikan'); Query OK, 1 row affected, 3 warnings (0.05 sec)

Mendefinisikan privilege pemakai Pendefinisian privilege pemakai dengan SQL adalah dengan memberikan perintah update untuk suatu record dalam tabel user, dengan kriteria user sama dengan pemakai yang didefinisikan. Perintah :UPDATE user SET NamaKol1_priv=Y [,NamaKol2_priv=Y[,]] WHERE User=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 Contohmysql> 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 : Praktikum Basis Data D3 REKMED FMIPA UGM 55

mysql> UPDATE user SET Select_priv='N' WHERE User='praktikan'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0

Mendefinisikan database untuk pemakai Perintah:INSERT INTO db(Host,Db, User) VALUES(namahost,namadatabase,namapemakai);

Contoh :mysql> INSERT INTO db(host,Db,User)VALUES('localhost','db_karyawan','praktikan'); Query OK, 1 row affected (0.00 sec)

Pengelolaan privilege dengan menggunakan DCLMendefinisikan pemakai dan privilegenya Perintah :GRANT [privileges] [nama-nama kolom] ON namadatabase.namatabel TO namapemakai@hostkomputer IDENTIFIED BY password [WITH GRANT OPTION]

privileges adalah daftar privilege yang akan diberikan kepada pemakai nama-nama kolom adalah nama-nama kolom/field dalam tabel namadatabase adalah nama database yang akan diberikan namatabel adalah nama tabel yang dari database yang diberikan namapemakai adalah nama pemakai atau userid hostkomputer adalah alamat komputer dari pemakai yang diberi hak password adalah password untuk pemakai Perintah grant secara otomatis akan menambah data pemakai apabila data nama pemakai yang disertakan pada perintah grant tersebut belum ada dalam tabel user. Contoh :mysql> GRANT SELECT ON db_karyawan.* TO pemakai@localhost; Query OK, 0 rows affected (0.04 sec) mysql> SELECT * FROM user WHERE user="pemakai" \G; *************************** 1. row ************************** Host: localhost

Praktikum Basis Data D3 REKMED FMIPA UGM 56

User: pemakai Password: Select_priv: N Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N Reload_priv: N Shutdown_priv: N Process_priv: N File_priv: N Grant_priv: N References_priv: N Index_priv: N Alter_priv: N Show_db_priv: N Super_priv: N Create_tmp_table_priv: N Lock_tables_priv: N Execute_priv: N Repl_slave_priv: N Repl_client_priv: N Create_view_priv: N Show_view_priv: N Create_routine_priv: N Alter_routine_priv: N Create_user_priv: N ssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0 max_updates: 0 max_connections: 0 max_user_connections: 0 1 row in set (0.01 sec) mysql> SELECT * FROM db WHERE user="pemakai" \G; *************************** 1. row *************************** Host: localhost Db: db_karyawan User: pemakai Select_priv: Y Insert_priv: N Update_priv: N Delete_priv: N Create_priv: N Drop_priv: N Grant_priv: N References_priv: N

Praktikum Basis Data D3 REKMED FMIPA UGM 57

Index_priv: N Alter_priv: N Create_tmp_table_priv: N Lock_tables_priv: N Create_view_priv: N Show_view_priv: N Create_routine_priv: N Alter_routine_priv: N Execute_priv: N 1 row in set (0.03 sec)

Macam privilege dalam grant Nama Privilege ALL ALTER CREATE DROP FILE INDEX INSERT PROCESS RELOAD SELECT SHUTDOWN UPDATE Penjelasan Digunakan untuk memberikan semua privilege kepada pemakai Privilege yang diberikan agar pemakai dapat melakukan perubahan pada tabel dan indeks Privilege yang memungkinkan pemakai untuk membuat tabel atau database Memungkinkan pemakai untuk menghapus tabel atau database Privilege yang diberikan kepada pemakai agar dapat melakukan proses menulis dan membaca file dalam server Privilege yang diberikan kepada pemakai agar dapat menambah atau menghapus index Privilege yang memungkinkan pemakai untuk menambah record ke dalam database Privilege yang diberikan agar pemakai dapat melihat dan mematikan proses sistem MySQL Privilege yang memungkinkan pemakai untuk dapat memberikan perintah FLUSH Privilege yang diberikan agar pemakai dapat melakukan query dengan menggunakan perintah SELECT Privilege ini memungkinkan pemakai untuk mematikan server MySQL Privelege yang diberikan kepada pemakai agar dapat mengubah suati record dalam database.

Pencabutan privilege Perintah :REVOKE [privileges] [nama-nama kolom] ON namadatabase.namatabel FROM namauser@hostkomputer

Praktikum Basis Data D3 REKMED FMIPA UGM 58

privileges adalah daftar privilege yang akan diberikan kepada pemakai nama-nama kolom adalah nama-nama kolom/field dalam tabel namadatabase adalah nama database yang akan diberikan namatabel adalah nama tabel dari database yang diberikan namapemakai adalah nama pemakai atau userid hostkomputer adalah alamat komputer dari pemakai yang diberi hak Contoh :mysql> REVOKE SELECT ON db_karyawan.* FROM pemakai@localhost; Query OK, 0 rows affected (0.03 sec) mysql> SELECT * FROM db WHERE user="pemakai" \G; Empty set (0.00 sec)

Mengaktifkan pemakai dan privilege Setiap data pemakai dan privilege yang didefinisikan tidak secara otomatis akan aktif atau dikenal langsung oleh server MySQL, karena pada saat pertama kali MySQL dijalankan, MySQL akan membaca data yang telah ada dari tabel-taebl privilege dan di load ke dalam memori. Perintahmysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)

Flush privilege merupakan perintah yang memaksa MySQL untuk menggunakan daftar pemakai dan privilegenya dari data pemakai dan privilege database yang baru.

Praktikum Basis Data D3 REKMED FMIPA UGM 59