Selasa, 09 Juni 2009

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 Numerik
    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 String
    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 Tanggal
    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 Aritmatika
    Operator
    Keterangan
    +
    penjumlahan
    -
    pengurangan
    *
    perkalian
    /
    pembagian
    %
    sisa hasil bagi (modulus)
  • Operator Relasional
    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 Logika
    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.
    primary key : menunjuk field dengan detail ini sebagai kunci utama.
    auto_increment : memberikan nilai yang secara otomatis bertambah seiring penambahan data/ record
    not null : memberikan ketentuan melarang pengosongan(null) data value
    default : memberikan nilai default apabila field ini tidak diisikan (null)
    enum : memberikan batasan inputan dengan menyebutkan daftar inputan yang diperbolehkan
    after : menentukan posisi untuk diletakkan di posisi setelah field yang ditunjuk

    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
    ex : alter table mhs modify alamat char(50) after nama;

    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.

  • = (sama dengan)
    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';
  • !=(tidak sama dengan)
    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';
  • Like
    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%';
  • In
    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');
  • Between
    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';

  • RegExp (Regular Expression)
    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