Jumat, 20 Mei 2011

Instalasi FCKeditor

Kita sebagai programer PHP tentunya tidak asing dengan folder htdocs, kalau kita ingin menghostingkan website kita juga membutuhkan domain name. Domain adalah nama dari alamat website seperti www.google.com. Domain seperti ini disebut TLD (Top Level Domain). kita bisa menilai antara htdocs dan domain intinya sih sama untuk membuka halaman website atau aplikasi yang berjenis php.
Contoh :
isi websiter : index.php
diletakkan di dalam folder
1. htdocs, dalam pemanggilan alamatnya : http://localhost
2. domain (misal : www.namadomain.com) : http://www.namadomain.com

Membuat subdomain
Contoh : ingin membuat subdomain yang bernama subdomain, nantinya folder subdomain di letakkan di dalam htdocs untuk local dan domain(ditempat hosting)
1. htdocs, dalam pemanggilan alamatnya : http://localhost/subdomain
2. domain (misal : www.namadomain.com) : http://www.namadomain.com/subdomain

Informasi diatas untuk gambaran letak folder-folder yang ada didalam htdocs/domain, karena fckeditor untuk filemanager perlu pengaturan FilesPath yang ada di dalam folder : fckeditor\editor\filemanager\browser\default\connectors\php\config.php. nanti kita akan mencoba mengatur config.php

Instalasi FCKEDITOR
1. Download fckeditor
2. extract fckeditor
3. setelah di extract buat folder fckeditor di dalam folder htdocs/domain
4. copy dan paste hasil extractkan di dalam folder fckeditor

Setelah selesai melakukan instalasi kita bisa mengaksesnya melalui alamat :
1. http://localhost/fckeditor (untuk local)
2. http://www.namadomain.com/fckeditor
kita bisa melihat contoh-contohnya di folder _samples

Sebelum adanya pengaturan di config.php kita tidak bisa upload image lewat filemanager dan peletakkan image mungkin kita kurang tahu pasti berada dimana

Cara mengatur UserFilesPath
1. Buka config.php berada di folder : fckeditor\editor\filemanager\browser\default\connectors\php\config.php
2. Cari barisan : $Config['UserFilesPath'] = '/userfiles/' ; dan ganti filepath sesuai kebutuhan kita
misal : $Config['UserFilesPath'] = '/fckeditor/tempatgambar' ; gambar diletakkan di folder tempatgambar yang berada didalam folder fckeditor
Mungkin kita bingung dengan alamat path tersebut untuk lebih jelasnya bisa dilihat contoh berikut :
1. http://localhost/fckeditor
pengaturan : $Config['UserFilesPath'] = '/fckeditor/tempatgambar' ;
2. http://www.namadomain.com/fckeditor
pengaturan : $Config['UserFilesPath'] = '/fckeditor/tempatgambar' ;

Apabila kita menempatkan langsung file fckeditor didalam htdocs/domain tanpa folder penampungnya, maka pengaturannya bisa dilihat kira-kira seperti ini :
1. http://localhost
pengaturan : $Config['UserFilesPath'] = '/tempatgambar' ;
2. http://www.namadomain.com
pengaturan : $Config['UserFilesPath'] = '/tempatgambar' ;

Cara menggunakan FCKEDITOR
yang perlu diperhatikan adalah :
include_once("fckeditor/fckeditor.php") ;
dan
$oFCKeditor->BasePath = '/fckeditor/' ; kalau file fckeditor didalam folder DEMO maka $oFCKeditor->BasePath = '/DEMO/fckeditor/' ;

Contoh :
<php
include_once("fckeditor/fckeditor.php") ; //letak class fckeditor.php
?>
<html>
<head>
<title>FCKeditor - Sample</title>
</head>
<body>
<form action="sampleposteddata.php" method="post" target="_blank">
<php?
$oFCKeditor = new FCKeditor('FCKeditor1') ;
$oFCKeditor->BasePath = '/DEMO/fckeditor/' ; // letak path dimana file-file fckeditor di letakkan (diawalai dari htdocs/domain, ingat htdocs/domain tidak dituliskan juga)
$oFCKeditor->Value = '<p>This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.</p>' ;
$oFCKeditor->Create() ;
?>
<br>
<input type="submit" value="Submit">
</form>
</body>
</html>  

Kamis, 19 Mei 2011

Baca Juga


Print Web Page tanpa header dan footer

Masalah muncul ketika kita memprinting artikel di website, bagaimana cara menonaktifkan header dan footer dari setiap page pada saat memprinting ? masalah ini sangat mengganggu, disamping menghabiskan banyak tinta dengan adanya header dan footer juga menghabiskan ruang dalam memprinting page.

Masalah diatas bisa diatasi dengan melakukan setting pada browser kita,kebetulan saya menggunakan browser Firefox. langsung saja kita praktekkan.
1. Buka browser firefox
2. Pilih menu File >> Print >> Page Setup >> Margins & Header/Footer
Pengaturan dijadikan blank semuanya.
Untuk melihat ukuran penuh, klik saja pada gambar dan download.

Rabu, 18 Mei 2011

Membuat Link Menu

Apabila kita ingin membuat desain seperti pada word 2007, kita bisa menggunakan image untuk membuat tampilannya, dari word 2007 di print screen terus diedit di photoshop. Kira-kira seperti di bawah ini gambarnya, gambar dibawah ini adalah gabungan dari beberapa class objek.





Ketika kursor di sorotkan ke objek maka image akan berganti dengan image yang berkilau, kita bisa menambahkan script di mousemove dan mouseleave.
Contoh :
Ketikkan script dibawah ini di bagian mousemove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
thisform.menu_utama.isi_menu_file.Picture='C:\FOXPRO\MONOGRAFI2\IMAGES\BINGKAI_ISI_FILE_AURA.JPG'
dan ketikkan code berikut di mouseleave
LPARAMETERS nButton, nShift, nXCoord, nYCoord
thisform.menu_utama.isi_menu_file.Picture='C:\FOXPRO\MONOGRAFI2\IMAGES\BINGKAI_ISI_FILE.JPG'
untuk link pada label bisa menggunakan script berikut :
Ketikkan script dibawah ini di bagian mousemove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.FontUnderline= .t.
this.FontBold= .T.
*this.BackColor=RGB(192,192,192)
this.BorderStyle= 0
dan ketikkan code berikut di mouseleave
LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.FontUnderline= .f.
this.FontBold= .f.
*this.BackColor=RGB(192,192,192)
this.BorderStyle= 0
dan apabila label diklik image background akan berubah, bisa menggunakan script berikut
contoh :
taruh di prosedur click
thisform.menu_utama.Picture='C:\FOXPRO\MONOGRAFI2\IMAGES\MENU_FILE.JPG'
thisform.menu_utama.isi_menu_file.Visible= .T.

Cara Membuat Class Objek Pada Foxpro

Berikut adalah langkah-langkah untuk membuat objek di foxpro
1. Cara Membuat Class

2. Cara Menambahkan Class di Project Manager

3. Hasil dari penambahan

4. Membuat Class Objek



Memberikan Judul Pada Grid Foxpro

Dibawah ini adalah contoh script untuk mengatur judul pada grid foxpro.
SQLEXEC(ConnHandle,"SELECT * FROM tabel_kelembagaan_kelurahan1","b")
thisform.Grid1.RecordSource="b"

with thisform.grid1
  .column1.header1.caption = 'Kode Monografi Kecamatan'
  .column1.width = 190
  .column2.header1.caption = 'Status Kepemilikan'
  .column2.width = 100
  .column3.header1.caption = 'Luas Tanah'
  .column3.width = 100
  .column4.header1.caption = 'Luas Bangunan'
  .column4.width = 100
  .column5.header1.caption = 'dibangun tahun'
  .column5.width = 100
  .column6.header1.caption = 'APBN'
  .column6.width = 100
  .column7.header1.caption = 'INPRES'
  .column7.width = 100
  .column8.header1.caption = 'APBD Provinsi'
  .column8.width = 100
  .column9.header1.caption = 'APBD Kota'
  .column9.width = 100
  .column10.header1.caption = 'Lain2 yang sah'
  .column10.width = 100
  .column11.header1.caption = 'jumlah'
  .column11.width = 100
  .column12.header1.caption = 'Bangunan Bertingkat'
  .column12.width = 100
  .column13.header1.caption = 'Kondisi Bangunan'
  .column13.width = 100
endwith

Rabu, 04 Mei 2011

Sistem Administrasi MYSQL

Backup Database dengan mysqldump
Mysqldump adalah suatu program bantu yang digunakan untuk membuat backup sebuah database, beberapa database, beberapa table sekaligus bahkan dapat juga untuk memindahkan data ke server yang lain. Cara kerja mysqldump adalah menuliskan kembali isi dari satu database tertentu dalam bentuk perintah-perintah MySQL kedalam sebuah file teks. Sehingga dapat digunakan juga pada server database lain yang tidak sama system opersinya dan bahkan tidak sama program databasesnya.
Bentuk umum perintah mysqldump adalah :

[system prompt] mysqldump [pilihan] nama_ss [nama_table]
atau
[system prompt] mysqldump [pilihan] --nama_database [pilihan] DB1 [DB2 DB3]
atau
[system prompt] mysqldump [pilihan] --all -databases [pilihan]

Pilihan yang dapat disertakan banya, di bawah ini dijelaskan beberapa pilihan yang serig digunakan :
  • -?, --help
    Untuk menampilkan layar bantuan yang berisi pilihan yang tersedia pada mysqldump
  • -A, --all-databaes
    Akan membackup seluruh databases yang ada didalam server tersebut.
  • -B, --databases
    Akan membackup beberaoa databases tertentu.
  • -d, --no-data
    Tidak menyertakan data-data yang ada didalam table. Hanya struktur tablenya saja yang dibackup.
  • -l, --lock -nama_table
    melakukan penguncian pada seluruh table sebelun melakukan prises pem-backupan
  • dan lain2

Backup Database dengan mysqlhotcopy
adalah sebuah program bantu yang dibuat dengan script PERL untuk melakukan penyalinan seluruh file-file data. Program mysqlhotcopy ini tidak tersedia pada MySQL versi windows. Untuk dapat menjalankan perintah ini kita harus login sebagai root atau setidaknya meiliki izin akses (privileges).
Bentuk umum perintah ini adalah :

Mysqlhotcopy [pilihan] nama_databases / nama_direk_tuj;

Contoh :
Untuk membackup databases latihan kemudian di simpan di direktori /home/hary/.

[system prompt] mysqlhotcopy latihan /home/hary/ -user='Joni' password='xxxxxx';

Pemerikasaan dan perbaikan struktur database
Beban kerja yang berat, sibuknya permintaan query maupun ketidakstabilan kinerja listrik dan perangkat dapat mengakibatkan kerusakan pada database. Untungnya kita dapat memriksa kondisi fisik database tersebut dengan menggunakan beberapa alat bantu yang disediakan oleh mysql.

Pemerikasaan dengan MYSQLCHECK
mysqlcheck adalah sebuah program bantu (utility) yang disediakan oleh MysSQL sejak versi 3.23.38. Fungsi mysqlcheck meluputi memeriksa (check), memperbaiki (repair), menganalisis (Analyze), dan mengoptimasi (optimize) kondisi fisik suatu database dari table.

Perintah dengan MYISAMCHK dan ISAMCHK
Adalah sebuah program bantu untuk mengetahui kondisi table, memeriksa dan memperbaiki table yang rusak, maupun mengoptimasi table dalam format MYISAM. Sedangkan untuk formattabel ISAM program bantunya adalah isamchk. Format MyISAM merupakan perkembangan dari format ISAM dan format MySQL menjadi standart format table pada MySQL.

Mengatur Hak Akses

Untuk Apa Hak Akses Perlu Diatur
Mengontrol basis data merupakan hal yang sangat perlu diperhatikandalam rangka menjaga keamanan dari orang-orang yang tidak berhak. Data yang bersifat rahasia tidak dapat disemunyikan dan bahkan kemungkinan data menjadi sampah karena setiap orang bisa melakukan apa saja sesuka hati.

Cara Mengatur Hak Akses
SQL menyediakan perintah GRANT untuk mengatur hak akses seseorang terhadap suatu tabel. Bentuk petintahnya adalah :

Grant hak_akses on nama_tabel_atau_view to pemakai;

Keterangan

  • Hak akses merupakan hal akses yang akan diberikan (misalnya select atau insert atau gabungannya). Jika hak akses lebih dari satu, antar hak akes perlu dipisahkan dengan koma.
  • Nama_tabel_atau_view menyatakan tabel atau pandangan (view) yang hak aksesnya akan diatur.
  • Pemakai adalah nama pemakai yang telah didargarkan pada sistem bases data sejumlah pemakai dapat disebutkan dengan antar pemakai dipisah daengan koma

Macam-macam hak akses :

Hak Akses
Keterangan
Select
Hak akses yang memungkinkan operasi Select
Insert
Hak akses yang memungkinkan operasi Insert
Update
Hak akses yang memungkinkan operasi update
Delete
Hak akses yang memungkinkan operasi Delete
Index
Hak akses yang memungkinkan operasi membuat Index
Drop
Hak akses yang memungkinkan operasi Drop
Create
Hak akses yang memungkinkan operasi create database maupun table
Insert
Hak akses yang memungkinkan operasi penyisipan record baru ke table
File
Hak akses yang memungkinkan operasi  baca dan tulis file

Contoh 1 :
grant select on pegawai to terra;
Contoh 2 :
grant select, insert on pegawai to terra;
Mambatasi Hak Akses pada Field tertentu
SQL memungkinkan pemberian hak akses hanya terbatas pada kolom tertentu.
Contoh :
grant select, Update (no_pegawai, nama, pekerjaan) on pegawai to dewi;

Memberikan Segala Hak
Jka semua hak akan di berikan kepada seorang pemakai, maka dapat dituliskan ALL PRIVILEGES pada bagian hak akses.
Contoh :
grant all privileges on pegawai to dewi;

Mengaktifkan Keamanan Standart

Saat pertama kali kita menggunakan MySQL setelah proses instalasi selesai, MySQL dapat digunaka oleh soapa saja tanpa harus menggunakan password dan nama user. Hal ini akan sangat berbahaya karena pintu menjadi terbuka dan sangat mudah untuk dimasuki oleh orang-orang yang tidak bertanggung jawab. Maka hal pertama yang harus dilakukan setelah berhasil menginstal MySQL adalah mengaktifkan password untuk root adan menghpus anonym user. Anonym user adalah user tanpa identitas dan tanpa password. Masuklah ke dalam system sebagai root dan jalankan MySQL :
Kemudian masuklah ke database mysql (database default yang sudah otomatis tersedia adalah mysql dan test)
Daftar Table di Database Mysql
  • columns_priv
  • db
  • host
  • tables_priv
  • user
Tabel - tabel diatas merupakan table satandar yang terdapat pada database mysql yang dugunakan untuk mengatur user dan izin akses masing-masing user (user privileges). Oleh karena itu, tabel - tabel tersebut disebut juga grant tables. Sedangan fungsi masing-masing table adalah :

Nama Table
Fungsi
Tingkatan Akses
User
Berisi daftar user yang mendapatkan izin akses MySQL, asal koneksi dari mana saja, izin akes apa yang diberikan ke user tersebut.
Blobal
Db
Mengatur database apa saja yang dapat diakses oleh seorang user, berikut jenis izin aksesnya.
Database
Host
Mengatur asal host yang diperkenalkan bagi seorang user untuk mengakses MySQL
Database
Tables_priv
Mengatur table apa saja yang dapat diakses oleh seorang user, berikut jenis izin aksesnya
Table
Columns_priv
Mengatur field apa saja yang dapat diakses oleh seorang user, brikut izin aksesnya
Field

Memberi Password untuk root
Pemberian password untuk root dilakukan dengan perintah Update sebagai berikut :
update user set password = password('xxxxxxxxxxx') where user ='root';
Kemudian dilanjutkan dengan perintah FLUSH sebagai berikut :
Flush Privileges;
Beberapa option yang dapat dituliskan pada perintah FLUSH :

Option Flush
Keterangan
Host
Flushes the host cache
Logs
Flushes the log files by closing and reopening them
Privileges
Reloads then grant tables
Status
Reinitializes the status variables
Tables
Closi any open tables in the table cache

Membuat User Baru
Sekarang kita coba untuk membuat user baru. Untuk melakukan perintah ini kita harus login sebagai root.
Contoh :
Kita akan membuat user baru dengan nama latihan yang dapat mengakses semua database yang ada didalam server. Dan user baru ini dapat memberikan izin akses (grant) kepada user-user lainnya :
grant all privileges on *.* to latihan identified by 'nama_password' with grant option;

Mengenal Indeks

Indeks dapat dibentuk secara manula maupun secara otomatis. secara manual index terbentuk melalui printah Create Index dan secara otomatis, Index terbentuk saat menentukan primary key dan unique terhadap field tententu.

Pengertian Indeks
Indeks dapat dibayangkan sebagai indeks buku, sehingga lelalui indeks buku tersebut dapat dicari letak item tertentu dalam buku dengan mudah. Keberadaan indkes dalam basis data antara lain adalah untuk mempercepat pencarian data berdasarkan kolom tertentu, misalnya diberikan perintah :
select * from pegawai where no_pegawai = '7902';
Jika tidak dijadikan indeks, pencarian data akan dilakukan terhadap seluruh tabel, sama seperti kalu akan mencari sesuatu dalam buku tetapi buku tersebut tidak dilengkapi dengan indeks. namun sekirannya indeks yang berkaitan dengan nip ada, maka sistem akan menemukanya dengan cepat.
Beberapa ha yang sangat terbantu dnegan adanya indeks adalah :
  1. Proses penggabungan sejumlah tabel
  2. Proses dengan ORDER BY
  3. Proses fungsi agregat seperti MIN dan MAX
  4. Proses pencarian data

Menciptakan indeks
Untuk membuat file indeks digunakan perintah CREATE INDEX, dengan bentuk umum parintahnya adalah :
create index nama_index on nama_tabel (nama_field_index);
Keterangan :
nama_index adalah nama indeks yang dibuat
nama_tabel : adala nama tabel yang diindeks
nama_field_index yang berada di dalam tanda kurung menyatakan kolom / field / atribut yang diunakan untuk mengindeks.

Contoh 1 :
Apabila kita ingi mengindecx tabel pegawai berdasarkan field nama dengan nama index-nya adalah nama_idx, maka perintah index-nya adalah :
create index nama_idx on pegawai (nama);
Contoh 2 :
Disini akan ditunjukan beberapa manfaat dari proses index.
  1. membantu mempercepat proses pencarian data
    apabila kita ingin menampilkan data pegawai yang namanya adalah 'James', maka perintah yang dituliskan adalah :
    select*from pegawai where nama='James';
    
    Kemudian bandingkan dengan proses pencarian pada data yang telah diindex :
    create index nm_idx on pegawai (nama);
    select*from pegawai from pegawai where nama = 'James';
    
    Dari kedua proses pencarian di atas, dapat disumpulkan bahwa pencarian pada table yang sudah diindeks akan lebih cepat (perhatian lama waktu pencarian).
  2. Membantu mempercepat proses pengitungan data denga fungsi agregasi.
    Akan dihitung gaji terbesar untuk pegawai yang perkerjannya adalah 'SALESMAN', maka perintah yang dituliskan :
    select max(gaji) from pegawai where pekerjaan = 'SALESMAN';
    
    kemudian bandingkan dengan proses pencarian pada data yang telah diindex :
    create index gaji_idx on pegawai (gaji);
    select max(gaji) from pegawai where pekerjaan='SALESMAN';
    
    Kesimpulannya sama dengan proses pencarian data di atas.

Menciptakan Indeks yang unik
Untuk menciptakan indeks yang unik maka harus ditambahkan kata UNIQUE diantara create dan index. Maksud Indeks yang unik adalah bahwa field yang dijadikan sebagai kunci index haruslah field yang berisi data yang unik.
Contoh1 :
create index pekerjaan_idx on pegawai (pekerjaan);
hasil query ok
Contoh2 :
create unique index pekerjaan_idx on pegawai (pekerjaan);
hasil ERROR
Keterangan :
Pada contoh kedua perintah index dianggap salah (error) yang disebabkan karena data yang tersimpan di field pekerjaan tidak unik.

Menciptakan Indeks Untuk Beberapa Field
Untuk menciptakan indeks dengan beberapa field sebagai kunci indeksnya, maka perlu penyebutan nama-nama field yang dimaksud sebagai berikut :
create unique index no_nama_idx on pegawai (no_pegawai, nama);

Mengenal Pandangan (VIEW)

Pengertian Pandangan
Pandangan (view) adalah tabel semu karena secara fisik tidak ada.
Keuntungan view adalah :
  • Query yang kompleks dapat disembunyikan sehingga informasi dapat di akses dengan cepat.
  • Untuk mengatur data tertentu menjadi tersembunyi bagi pemakai
  • Untuk melindungi data yang besifat rahasia

Cara Menciptakan Pandangan
Untuk membuat pandangan / view digunakan perintah CREATE VIEW.
Contoh :
create view mhs_view as select nim, nama, alamat from mahasiswa;
Keterangan : mhs_view : nama view(pandangan)

Memperoleh Informasi Pada View
Setelah suatu view dibuat, maka view tersebut dapat diakses sebagaimana tabel.
Contoh :
select * from mhs_view;
Membuat View dari beberapa Tabel
create view hasil_view as select a.nim, a.nama, a.alamat from mahasiswa a, mkuliah b, krs c where a.nim = c.nim and b.kode_kul = c.kode_kul and b.nama_kul = 'PANCASILA';
Membuat View Pengelompokan
View yang di dasarkan pada pengelompokan juga dapat dibuat.
Contoh :
create view klp_view as select departemen, count(*) from pegawai group by departemen;
Memberi nama lain terhadap kolom
Judul kolom / field yang akan ditampilkan dapat diubah namanya dengan cara meletakkan nama - nama judul kolom diantara nama view dan as.
Contoh :
create view klp_view (nama_departemen, jumlah) as select departemen, count(*) from Pegawai group by departemen;

Sub Query (SUBSELECT)

Pengertian Sub Query
Merupakan query yang terletak dalam query yang lain.
Contoh :
Akan ditampilkan nama pegawai yang mempunyai gaji paling besar :
select nama from pegawai where sal = (select max(gaji) from pegawai);

Operator Exists
Merupakan jenis operator boolean, yang mengahasilkan nilai benar (true) atau salah (false). Operator exists akan memberikan nilai benar (true) kalau sub query menghasilkan paling tidak sebuah baris / record.
Contoh :
Akan ditampilkan daftar nama pegawai yang sudah mempunyai departemen.
select nama from pegawai where exists (select*from departemen where id_departemen = pegawai.id_departemen);
Keterangan :Perintah pada sub query diatas berisi pengecekan id_departemen pada tabel pegawai apakah ada?.

Contoh 2 :
Akan ditampilkan daftar nama pegawai yang tidak mempunyai departemen :
select nama from pegawai where not exists (select*from departemen where id_departemen = pegawai.id_departemen);
Keterangan :Perintah pada sub query diatas sama dengan contoh 1, hanya ditambahkan dengan not sebelum exists untuk pengecekan id_departemen di tabel pegawai apakah tidak ada?.

Operator Any(Some)
Operator Any (some) hampir sama penggunaannya seperti Exists. Tetapi operator relasi yang digunakan biasanya selain = (sama dengan). hal tersebut disebabkan apabila operator relasi = yang digunakan, maka sebetulnya fungsi operator Any (some) sama seperti operator IN, sehingga kondisi seperti itu tidak dianjurkan karena lebih mudah pemahamannya apabila menggunakan operator IN.
Contoh :
Akan menampilkan daftar nama pegawai dan gaji yang gajinya tidak paling sedikit :
select nama, gaji from pegawai where gaji > any (select gaji from pegawai);

Operator All
Operator all digunakan untuk melakukan pembandingan dengan sub query. Kondisi dengan all menghasilkan nilai benar jika pembandingan menghasilkan benar untuk setiap nilai dalam sub query.
Contoh :
Akan menampilkan nama dan gaji pegawai yang gajinya lebih rendah daripada semua pegawai yang pekerjaannya 'SALESMAN' :
select nama where gaji < all (select gaji from pegawai where pekerjaan = 'SALESMAN');
Sub query (seubselect) hanya dapat digunakan untuk MySQL versi 3.24, Sehingga parintah-perintah diatas tidak dapat dijalankan di MySQL ini(versi 3.23). Tetapi, dengan menggunakan option LEFT JOIN, masalah-masalah diatas dapat diselesaikan. Contoh :
select * from score where event_id in (select even_id from even where type = 'T');
Apabila dituliskan dengan cara lain menjadi :
select score.* from score, event where score.even_id = even.even_id and type = 'T';
Contoh 2 :
select nama from pegawai where gaji = (select max(gaji) from pegawai);
Apabila dituliskan dengan cara lain menjadi :
select max(gaji) from pegawai;
select nama from pegawai where gaji = 5000;
Contoh 3 :
select*from student where student_id not in (select student_id from absence);
Apabila dituliskan dengan cara LEFT JOIN menjadi :
select student.* from student left join absence on student.student_id = absence.student_id where absence.student_id is null;

Selasa, 03 Mei 2011

Query Antar Tabel (Lanjutan)

Menggabungkan dua atau lebih tabel disebut dengan join, sehingga kita telah menggunakan join pada beberapa contoh-contoh sebelumnya, misalnya :
select nama from pegawai, departemen where pegawai.id_departemen = departemen.id_departemen;
Pada contoh tersebut, kita dapat menampilkan nama pegawai dan nama departemennya. Tetapi tidak semua pegawai tersebut memiliki (berelasi) dengan departemennya. jadi konsep join sebenarnya adalah menampilkan data tepat memiliki pasangan dikedua table yang saling berkait. Tetapi bila tidak ada pasangannya, data tersebut tidak ditampilkan. jenis join seperti ini disebut seperti equajoin. Bagaimana kalau kita ingin menampilkan data-data yang tidak memiliki pasangan data ? Agar hal ini dapat dilakukan, maka kita dapat menggunakan LEFT JOIN atau RIGHT JOIN.

Left Join
Perintah ini digunakan utnuk menampilkan data-data seolah-olah dari sudut pandang table pertama.
select tabel1.* from tabel1 left join tabel2 on tabel1.id1 = tabel2.id2 where tabel2.id2 is null;

Right Join
Perintah ini akan mengahasilkan tampilan yang sama seperti left join, hanya saja posisi oeletakan tabelnya sedikit berbeda.
Contoh :
select tabel2.* from tabel1 right join tabel2 on tabel1.id1 = tabel2.id2 where tabel1.id1 is null;

Query Antar Tabel

Jenis-jenis tabel berdasarkan fungsinya
Tabel Data
Adalah sebuah tabel yang menampung data-data yang digunakan sebagai informasi. Table data merupakan table yang sangat umum digunakan dalam database relasi. Biasanya sifat data pada table ini adalah dinamis karena sering diubah, dihapus dan diperbaharui.

Tabel Validasi
Adalah sebuah table yang menampung data-data yang memiliki criteria tertentu dan biasanya digunakan oleh data pada table lainnya sebagai validasi. Table validasi tersebut juga table referensi (reference table) dan table pencarian (look-up table). Oleh karena itu biasanya table validasi harus lebih dulu ada struktur data dan isinya, sebelum table-table lainnya.

Tabel Penghubung
Adalah sebuah table yang berfungsi sebagai ‘jembatan’ antara dua table yang mengalami relasi many-to-many. Dengan adanya table penghubung, maka hubungan relasi yang terjadi akan berubah dari many-to -many. Menjadi one-to-many.

Menggabungkan Tabel
Contoh :
Akan menampilkan nama pegawai yang lokasi departemennya di KENDAL.
Select nama from pegawai,departemen where pegawai.id_departemen=departemen.id_departemen and departemen.lokasi=’KENDAL’;

Menggunakan Alias
Nama tabel yang digunakan dalam query antartabel dapat diganti dengan manyebutkan nama aliasnya :
Select nama from pegawai x,departemen y where x.id_departemen=y.id_departemen and y.lokasi=’KENDAL’;

Operator Cross Join / Perkalian Kartesian
Operator Cross Join digunakan untuk melakukan operasi perkalian kartesian.
Contoh :
Akan dilakukan operasi cross join untuk dua buah table :
Dengan Perintah :
select*from sales, pelanggan;
atau dapat ditulis
select*from sales cross join pelanggan;
Operasi cross join di atas diperbaiki menjadi :
select*from sales, pelanggan where sales.id_sales = pelanggan.id_sales;

Equajoin
Adalah penggabungan antar table yang menggunakan operator = pada kondisi where. (sebagai contoh perhatian penggabungan antar tabel seperti diatas)

Selfjoin
Adalah penggabungan antar tabel yang sama :
Contoh :
Akan ditampilkan nama pegawai yang pekerjaannya 'salesman' dan pegawai yang pekerjaannya 'manages' :
select x.nama, y.nama from pegawai x, pegawai y where x.pekerjaan='salesman' and y.pekerjaan='manager';

Operator Union
Digunakan untuk menggabungkan hasil dari dua buah query.
Contoh :
(select nama from pinjam) union (select nama from tabungan);

Operator Intersect
Digunakan untuk memperoleh baris-baris yang terdapat pada keuda tabel.
Contoh :
(select nama from pinjam) intersect (select nama from tabungan);

Operator Except / Minus
Jika terdapat tabel A dan B, operasi except akan menghasilkan semua yang ada pada tabel A tetapi tidak terdapat pada tabel B :
Contoh :
Akan menampilkan semua nama nasabah yang mempunyai simpanan tetapi tidak mempunyai pinjaman.
(select nama from pinjam) except (select nama from tabungan);
Keterangan : Perintah-perintah seperti UNIO, INTERSECT dan EXCEPT / MINUS hanya dapat dioperasikan pada MySQL mulai versi 3.24. sehingga apabila MySQL yang kita gunakan dibawah versi tersebut, maka perintah-perintah tersebut tidak dapat berfungsi.

Operator Natural Join
Operator natural join akan melakukan operasi equijoin dengan memperlakukan nama-nama field yang sama sebagai field penghubung antar tabel.
Contoh :
Akan direlasikan dua buah table yaitu tabel pegawai dengan tabel departemen dengan kata kunci relasinya adalah id_departemen.
select nama,ndepartemen, lokasi from pegawai, departemen where pegawai.id_departemen = departemen.id_departemen order by nama;
atau dapat ditulis :
select nama,ndepartemen, lokasi from pegawai natural join departemen order by nama;

Minggu, 01 Mei 2011

Lebih Lanjut dengan SELECT

Menggunakan perintah LIMIT
menampilkan 10 record pertama dari table mhs, maka perintahnya :
select nim,nama,alamat,tgl_lhr from mhs limit 10;
sedangkan untuk menampilkan data 5 record table mhs dihitung dari [osisi record ke 15 adalah :
select nim,nama,alamat,tgl_lhr from mhs limit 15,5;
Menggunakan option BINARY agar data Case-Sensitive
dengan menambahkan option binary maka data yang ditulis untuk pencarian harus sama dengan data yang tersimpan ditabel (case-sensitive).
contoh :
select nim,nama,alamat from mhs where kota='solo';
select nim,nama,alamat from mhs where binary kota = 'solo';
select nim,nama,alamat from mhs where kota = binary 'solo';
Menulis Expresi pada kolom
akan menampilkan nama dan gaji pegawai setelah gaji dinaikkan 5% dari gaji semula :
select nama,gaji+(0.05*sal) from pegawai;
Memberi nama lain terhadap kolom
contoh :
akan menampilkan seluruh nama dan gaji pegawai setelah gaji dinaikkan 5% dari gaji semula dengan perubahan nama kolom :
select nama,gaji+(0.05) as gajibaru from pegawai;
atau 
select nama,gaji+(0.05) as'Gaji Baru' from pegawai;
Menambahkan Teks dalam baris keluaran
Pernyataan select memungkinkan pemakai menambahkan suatu teks.
contoh :
akan menampilkan nama dan gaji seluruh pegawai dengan menambahkan teks rupiah setelah angka gaji :
select nama,gaji,'Rupiah' from pegawai;
Pemakain SELECT tanpa klausa FORM
cara ini digunakan untuk mengevaluasi ekspresi tententu yang tidak ada kaitannya dengan tabel.
select 2*1;
select 2>1, 2<1, 2=1;
Ekspresi Berkondisi Ekspresi dimanfaatkan untuk mengubah keluaran yang berbeda dengan data asalnya. syntax : Case nilai_ekspresi when nilai_ekspresi Then nilai_ekspresi [Else nilai_ekspresi]0 End Contoh 1 : Akan ditampilkan kota 'Yogya' menjadi 'Jogjakarta' :
select nama, Case kota when 'Yogya' then 'Jogjakarta' End From Pegawai;
contoh 2 : Akan ditampilkan nama,nilai dan skor mahasiswa :
select nama,nilai,
   Case
     When nilai >= 80 Then 'A'
     When nilai >= 70 Then 'B'
     When nilai >= 60 Then 'C'
     When nilai >= 50 Then 'D'
     Else 'E'
   End as Skor
   From Ujian;

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Justin Bieber, Gold Price in India