MySQL
MySQL adalah sebuah Relational Database Management System (RDBMS) yang bersifat terbuka (open source), ini berarti MySQL bisa dan boleh di copy/ download oleh siapa saja, baik program aslinya (source code) maupun versi biner (execute version) nya.
MySQL menggunakan bahasa standar SQL (Structure Query Language) sebagai bahasa interaktif dalam mengelola data, atau yang lebih dikenal dengan query.
Ada 2 (dua) jenis perintah dasar didalam MySQL, yaitu DDL (Data Definition Language) dan DML (Data Manipulation Language).
DDL adalah perintah- perintah yang biasa digunakan untuk mendefinisikan skema ke dalam DBMS, skema adalah deskripsi lengkap tentang struktur tabel, rekaman dan hubungan data pada basis data.
Sedang DML adalah perintah- perintah yang digunakan untuk mengubah, memanipulasi dan mengambil data pada basis data. Tindakan menghapus (delete), mengubah (update) dan mengambil data adalah bagian dari DML.
Tipe Data didalam MySQL
Tipe Data | Range | Ukuran |
Integer atau int | Signed value : -2147683648 to -2147683647 Unsigned value : 0 to 4294967296 | 4 byte(s) |
Decimal atau dec(M,D) | Tergantung dari nilai besaran M dan D | M byte(s) |
Tyniint[(m)] | Signed value : -128 to 127 Unsigned value : 0 to 255 | 1 byte(s) |
Smallint[(m)] | Signed value : -32768 to 3267 Unsigned value : 0 to 65535 | 2 byte(s) |
Mediumint[(m)] | Signed value : -8388608 to 8388607 Unsigned value : 0 to 16777215 | 3 byte(s) |
Bigint[(m)] | Signed value : -922337203685477808 to 9223372036854775807 Unsigned value : 0 to 18446744073709551615 | 8 byte(s) |
Float(m,d) | Bilangan pecahan presisi tunggal | 4 byte(s) |
Double[(m,d)] | Bilangan pecahan presisi ganda | 8 byte(s) |
Tipe Data | Range |
Char atau Character | Data berupa deretan karakter (string) yang lebarnya tetap, max. 255 |
Varchar | Data berupa string dengan lebar sesuai yang dipesan, max. 255 |
Tinyblob | Jenis terkecil tipe BLOL (binary large object) |
BLOB | Binary large object |
Mediumblob | Jenis medium dari tipe BLOB |
Longblob | Jenis besar dari tipe BLOB |
Tinytext | Jenis terkecil dari tipe text string |
Text | Jenis kecil dari tipe text string |
Mediumtext | Jenis medium dari tipe text string |
Longtext | Jenis besar dari tipe text string |
Enum | Enumerasi |
Tipe Data | Range | Ukuran |
Date | Digunakan untuk tipe tanggal dengan format 'YYYY-MM-DD' range : '1000-01-01' s/d '9999-12-31' | 3 byte(s) |
Time | Digunakan untuk tipe waktu dengan format 'hh:mm:ss' range : '-838:59:59' s/d '838:59:59' | 3 byte(s) |
Datetime | Digunakan untuk tipe tanggal dan waktu dengan format 'YYYY-MM-DD hh:mm:ss' range : '1000-01-01 00:00:00' s/d '9999-12-31 23:59:59' | 8 byte(s) |
Timestamp | Digunakan untuk penulisan tanggal dan waktu dengan format 'YYYYMMDDhhmmss' | 4 byte(s) |
Year | Digunakan untuk penulisan tahun dengan format 'YYYY' range : 1901 s/d 2155 | 1 byte(s) |
Operator | Keterangan |
+ | penjumlahan |
- | pengurangan |
* | perkalian |
/ | pembagian |
% | sisa hasil bagi (modulus) |
Operator | Keterangan |
= | sama dengan |
> | lebih besar dari |
< | lebih kecil dari |
>= | lebih besar dari atau sama dengan |
<= | lebih kecil dari atau sama dengan |
<> | tidak sama dengan |
!= | tidak sama dengan |
is null | apakah sebuah nilai adalah null |
in | apakah sebuah nilai ada didalam pilihan yang ada |
not in | apakah sebuah nilai tidak ada didalam pilihan yang ada |
regexp | regular expression |
Operator | Keterangan |
Not atau ! | Negasi atau kalimat negatif, memberikan nilai sebaliknya dari kondisi awal |
Or atau || | Atau, memberikan nilai benar apabila salah satu kondisi terpenuhi |
And atau && | Dan, memberikan nilai benar hanya jika semua kondisi terpenuhi |
Aturan penamaan didalam MySQL
Karakter yang diperbolehkan untuk penamaan terdiri dari kumpulan alphanumeric (angka dan huruf) ditambah dengan karakter '_' (underscore) dan '$' .
Pajang nama yang database, tabel, field dan index max. 64 karakter.
Nama database dan tabel, statements, nama field dan index, sifatnya not case-cencitive (tidak membedakan huruf besar dan kecil)
Sedangkan nama yang digunakan untuk alias bersifat case-cencitive (membedakan huruf besar dan kecil)
Pada beberapa versi telah disediakan help sehingga kapanpun membutuhkannya kita bisa mengakses bantuan tersebut dengan perintah help [statement];
contoh : help alter table;
Memanggil MySQL
Di laboratorium komputer UDINUS, di ruang lab mana saja kita bisa mengakses MySQL dengan memanggil shortcut putty yang telah disediakan atau memanggilnya secara manual.
Jika shortcut putty tidak ditemukan di desktop atau quick launch, maka kita bisa mengaksesnya melaui START > Run... putty [ENTER]
lalu masukkan IP server tujuan, untuk serverlab masukkan 192.168.10.253 atau jika menggunakan servermw masukkan 192.168.10.250 ke dalam kolom HOST/ IP, lalu jangan lupa memilih SSH untuk jenis PROTOCOL nya, lalu tekan OPEN .
Masukkan username dan password sesuai username masing- masing yang biasanya memakai format AbbCCddddd (A:kode fakultas [A/B/C/D/E/P], bb:kode progdi [D3 - Teknik Informatika, S1 - Akuntansi, dsb...], CC: 2 (dua) digit tahun angkatan, ddddd: 5 (lima) digit nim terakhir)
Kalu berhasil maka akan muncul [username@namaserver ~]$_ , dari sini kita panggil mysql dengan mengetikkan mysql, [ENTER] sampai tampilan prompt berubah menjadi mysql>_
Maka kita sudah masuk ke dalam interface MySQL dan siap untuk memulai.....
[!] PERHATIAN !
[Karena kita me-remote server yang menggunakan sistem operasi linux, maka sebaiknya kita membiasakan mengetikkan setiap perintah dengan huruf kecil ]
mysql>_
Untuk membuat tabel kita harus memiliki database terlebih dahulu, hal ini dianalogikan seperti halnya untuk membuat bilik/ kamar baru maka harus ada rumah terlebih dahulu. Buat database baru dengan perintah create database [nama_database]; , ex : create database a110000000;
Lalu setelah membuat database baru, kita harus me-load database yang telah dibuat tersebut dengan perintah use [nama_database];, ex : use a110000000;
Buat tabel baru dengan syntax :
create table [nama_tabel] ([nama_field] [tipe_data]([lebar])[details], [nama_field] [tipe_data]([lebar])[details], ... );
ex : create table mhs (nim char(14) primary key not null, nama char(20), j_kel char(1) default 'p', agama enum('1','2','3','4','5'), kota char(30));
nama_tabel | : | penamaan tabel sebaiknya tidak terlalu panjang tetapi dengan memenuhi kaidah penamaan tabel |
nama_field | : | penamaan field sebaiknya tidak terlalu panjang tetapi dengan memenuhi kaidah penamaan tabel |
tipe_data | : | tipe data yang dinilai paling efisien untuk menyimpan data field, pemilihan tipe data mempengaruhi besar kapasitas memori yang dibutuhkan |
lebar | : | lebar/ size digunakan untuk spesifikasi pemesanan tempat penyimpanan data dengan batasan max tiap tipe data berbeda- beda |
details | : | bisa berupa penunjukan sebagai primari key, menentukan boleh tidaknya null, penempatan, isi default, pembatasan inputan, dsb. |
Merubah struktur tabel
alter table [nama_tabel] [pilihan][detail];
pilihan :
add | : | pilihan untuk menambahkan field baru dengan spesifikasi tipe data, lebar dan postfix nya. ex : alter table mhs add alamat char(30) after j_kel; |
modify | : | pilihan untuk merubah tipe data dari field, lebar dan postfix nya |
change | : | pilihan untuk merubah nama field, tipe data, lebar dan postfix nya ex : alter table mhs change alamat almt char(35) not null; |
drop | : | pilihan yang digunakan untuk menghapus field ex : alter table mhs drop alamat; |
rename | : | pilihan ini digunakan untuk mengganti nama (rename) tabel ex : alter table mhs rename mahasiwa; |
Memasukkan data kedalam tabel
insert into [nama_tabel] ([nama_field],[nama_field],[nama_field],...) values ('[isi_data]','[isi_data]','[isi_data]',...);
ex : insert into mhs (nim, nama, j_kel, agama, kota) values ('b12.2009.00700','agus ajah','l','1','semarang');
Mengkoreksi isi data pada tabel
update [nama_tabel] set [nama_field] = '[data_baru]' where [kondisi];
ex : update mhs set nama='agus sing bagus dewe' where nim='b12.2009.00700';
enghapus data pada tabel
delete from [nama_tabel] where [kondisi];
ex : delete from mhs where nim='b12.2009.00700';
-------&&&Teh End&&&-------
Query
Untuk menampilkan tabel sesuai dengan yang diinginkan programmer dituntut berkemampuan menerjemahkan permintaan verbal lalu menerjemahkan dan menyusun query yang tepat, perintah yang dipalai adalah select [field_names] from [table_name] where [filter];
Didalam pemakaian perintah select kita akan sering memakai operator relasional untuk menambahkan filter dalam setiap query-nya. Mulai dari yang paling mudah menggunakan '=' (sama dengan), '!=' (bukan sama dengan), 'like' (menyerupai), dsb...
Syntax : select [field_names] from [table_name] where [filter];
ex : select * from mhs;
contoh diatas adalah contoh penulisan perintah select termudah, setelah perintah select tanda * (wildcard) mewakili perintah untuk menampilkan semua field pada tabel yang ditunjuk (mhs). Tapi lebih jauh programmer bisa menyusun query yang menampilkan tampilan berupa tabel dengan field- field yang diinginkan.
ex : select nim, nama, kota from mhs; (menampilkan semua record dalam tabel mhs dengan format kolom nim, nama dan kota asal mahasiswa)
Lebih lanjut jumah record yang ditampilkan bisa diperkecil dengan menambahkan filter, yaitu menambahkan option where + kondisi.
ex : select nim, nama, kota from mhs where kota='jakarta'; (menampilkan mahasiswa asal jakarta dengan format kolom nim, nama dan kota asal mahasiswa)
Dalam maka kuliah Praktik Basis Data yang saya bahas menggunakan 5 tabel, 3 tabel master dan 2 tabel yaitu mhs, mtkul, dosen, jadwal dan mengajar (deskripsi dan relasi dapat dilihat dalam file diagram 5 tabel).
Penyusunan query menggunakan perintah select bisa sangat dinamis tergantung data yang diinginkan. Sebagaimana disebutkan sebelumnya tentang syntax select, maka pemakaian perintah select bisa diikuti beberapa opsi untuk mempersempit lingkup pencarian data.
GROUP BY
Opsi ini digunakan untuk mengelompokkan hasil pencarian berdasar field/ kolom yang ditunjuk. Semisal ingin menampilkan jumlah mahasiswa yang terjadwal mengikuti matakuliah, maka harus ditambahkan opsi 'GROUP BY mhs.nim'. Hal ini dikarenakan setiap mahasiswa mengambil lebih dari 1 matakuliah, sehingga jika tanpa disertai perintah GROUP BY hasil query akan menunjukkan tabel dengan nim/ nama berulang- ulang dengan kd_mtkul/ nm_mtkul yang berbeda- beda.
ex :
select jadwal.nim, mhs.nama, mtkul.nm_mtkul, mtkul.jns_mtkul, jadwal.jadwal1 from mhs, mtkul, jadwal where jadwal.nim = mhs.nim and jadwal.kd_mtkul = mtkul.kd_mtkul group by mhs.nim;
ORDER BY
Opsi ini digunakan untuk menentukan kunci pengurutan data dengan menunjuk kolom/ field tertentu. Pada contoh dibawah query menunjukkan tabel jadwal yang diurutkan berdasarkan field nim dan jadwal1. Hal ini dimungkinkan karena saat diurutkan berdasarkan nim, terdapat beberapa nim yang sama dengan nama matakuliah yang berbeda, sebagai tambahan bisa diurutkan berdasar kode mtkul, namun kali ini saya memberi contoh menunjuk jadwal1 sebagai field pengurutan tambahan setelah nim.
ex :
select nim, kd_mtkul, jadwal1 from jadwal order by nim, jadwal1;
Operator Relasional
Operator relasional digunakan untuk mempersempit lingkup pencarian dalam penulisan query, biasanya menuliskan kondisi sebagai ciri- ciri data yang diinginkan.
Operator ini digunakan dalam menuliskan kondisi dengan akurasi tinggi, yaitu harus 'sama dengan' kondisi yang sebutkan. Semisal ingin menampilkan semua mahasiswi/ mahasiswa putri, maka query seperti pada conroh.
ex :
select * from mhs where j_kel='p';
Operator ini digunakan dalam menuliskan kondisi negasi/ kalimat negatif, yaitu 'bukan/ selain dari' kondisi yang sebutkan. Semisal ingin menampilkan semua mahasiswa selain yang beragama islam, yaitu dengan perintah seperti pada contoh.
ex :
select * from mhs where agama !='1';
Operator ini digunakan dalam menuliskan kondisi dengan presisi yang kurang, yaitu hanya menyebutkan sebagian ciri- ciri dari data yang diinginkan. Semisal ingin menampilkan mahasiswa yang huruf pertama namanya 'a'.
ex:
select * from mhs where nama like 'a%';
Operator in digunakan untuk memberikan kondisi ganda dari satu kolom yang sama, semisal ingin menampilkan semua mahasiswa yang berasal dari jakarta, semarang, bogor.
ex:
select * from mhs where kota in ('jakarta','semarang','bogor');
Operator between digunakan untuk menampilkan data dalam range tertentu, yaitu dengan memberikan nilai awal dan akhir sebagai pembatas kondisi. Semisal ingin menampilkan semua mahasiswa dari nim 'b12.2005.00448' sampai dengan nim 'b12.2006.00982'.
ex:
select * from mhs where nim between 'b12.2005.00448' and 'b12.2006.00982';
Memiliki kesamaan sepertihalnya like, ada beberapa simbol khusus yang digunakan dalam menuliskan operator regexp. Jika like menambahkan tantda '%' dalam syntaxny, maka didalam regexp menggunakan '^' (yang menunjukkan posisi awal) dan '$' (yang menunjukkan posisi akhir), regexp '^a' sama dengan perintah like 'a%', dan regexp 'a$' sama dengan perintah like ' %a '.
ex:
select * from mhs where nama regexp 'a$'; -> menampilkan record dari tabel mhs dengan kondisi huruf akhir nama 'a'
select * from mhs where nama regexp '[ai]$'; -> menampilkan record dari tabel mhs dengan kondisi huruf akhir 'a' atau 'i'
select * from mhs where nama regexp '^a'; -> menampilkan record dari tabel mhs dengan kondisi huruf awal nama 'a'
select * from mhs where nama regexp '^[ai]'; -> menampilkan record dari tabel mhs dengan kondisi huruf awal 'a' atau 'i'
Tidak ada komentar:
Posting Komentar