Selasa, 31 Januari 2012

Belajar bahasa SQL

Mengenal Query
1. Menampilkan semua kolom semua baris

    Select *
    from nama_tabel;
   
        contoh:
    select *
    from data_pegawai;
   
    atau   

    select nama_kolom1, nama_kolom2,kolom...
    from nama_tabel;
   
    contoh:
    select nip,nama,jk,kota,bagian
    from data_pegawai;

2. Menampilkan Kolom tertentu

    contoh:
    select nip,bagian
    from data_pegawai;

3. Menampilkan baris tertentu

    contoh:
    select *
    from data_pegawai
    where jk='P';

4. Operator is null: semua operator tidak dapat dibandingkan
   dengan nilai null

    select nama
    from data_pegawai
    where kota=null;

    seharusnya
    select nama
    from data_pegawai
    where kota is null;

5. literal
    'MySQL' == "MySQL"
   
    Jika ingin menuliskan Jum'at maka cara menuliskannya adalah:
    "Jum'at"     atau     'Jum\'at'    atau    "Jum\'at"

6. Ekspresi: segala sesuatu yang menggunakan operator
    matematika dan menghasilkan nilai

    contoh:
    select nip,gaji,tunjangan,gaji+tunjangan
    from data_gaji;

7. Operator relasional: digunakan untuk membAndingkan 2 nilai

    contoh:
    select nama,gaji
    from data_gaji
    where gaji>1000000;

    contoh:
    select nip,nama
    from data_gaji
    where nama<'D';

8. Operator boolean : OR, AND, XOR, NOT
   
    OR:untuk melakukan query dengan kondisi majemuk

        contoh:    
        select *
        from data_pegawai
        where jk='P' or nama='Mahessa Wicaksana';

    AND
       
        contoh:
        select *
        from data_pegawai
        where jk='P' and nama='Dinar Puspitasari';

    NOT: pembalikan nilai benar

        contoh:
        select *
        from data_pegawai
        where not jk='P';

 9. Memperoleh data yang unik
    contoh:
    select distinct jk
    from data_pegawai;

    contoh:
    select distinct kota
    from data_pegawai
    where kota is not null;

10. Operator between: untuk operator jangkauan

    contoh:
    select *
    from data_gaji
    where gaji between 1000000 and 2000000

    contoh tanpa between:
    select *
    from data_gaji
    where gaji >= 1000000 and gaji <=2000000
   
    contoh:
    select *
    from data_pegawai
    where nama not between 'D' and 'J';
    
11. Operator IN: pencocokan dengan salah satu yang ada
    pada daftar

    contoh tanpa IN:
   
    select *
    from data_pegawai
    where nip='n1000' or nip='n1009' or nip='n1013';   

    contoh dengan IN:

    select *
    from data_pegawai
    where nip IN ('n1000','n1009','n1013');   

    contoh dengan NOT IN:
   
    select *
    from data_pegawai
    where not nip IN ('n1000','n1009','n1013');   

12.Operator LIKE: untuk mencari data semacam siapa saja yang
    namanya mengandung kata ana dan sebagainya.
   
    contoh:
    select nama
    from data_pegawai;
    where nama like '%sa%';

13. Pengurutan data
    contoh:
    select jk,nama
    from data_pegawai
    order by jk;

    contoh beberapa kolom:
    select jk,nama
    from data_pegawai
    order by jk,nama;

    contoh beberapa kolom secara descending:
    select jk,nama
    from data_pegawai
    order by jk desc,nama desc;

    contoh pengurutan menurut nomor kolom:
    select jk,nama
    from data_pegawai
    order by 2 desc;

14. Pengelompokan data

    contoh:
    select kota
    from data_pegawai
    group by kota;

    contoh:
    select kota
    from data_pegawai
    where kota is not null
    group by kota;
   
15. Klausa Having : menentukan kondisi bagi group by
   
    contoh:
    select kota
    from data_pegawai
    where kota is not null
    group by kota
    having kota <> 'malang';

    contoh alternatif tanpa having:
    select kota
    from data_pegawai
    where kota is not null and kota <> 'malang'
    group by kota;

16. Fungsi Agregat (fungsi grup atau fungsi ringkasan): fungsi yang disediakan
    untuk menghasilkan sebuah nilai berdasarkan sejumlah data.

    Fungsi AVG
    contoh AVG dan distinct AVG:

        select avg(gaji)
        from data_gaji;
       
        select avg(distinct gaji)
        from data_gaji;

    contoh menghitung gaji rata-rata pegawai per bagian:
       
        select kode_bagian, gaji
        from data_gaji
        group by kode_bagian;

    contoh menghitung rata-rata gaji bagian HRD:
        select avg(gaji)
        from data_gaji
        group by kode_bagian
        having kode_bagian='1';

        alternatif lain:

        select avg(gaji)
        from data_gaji
        where kode_bagian='1';


        where
        group by
        aggregate avg
        having

     1. Tampilkan rata-rata gaji per bagian yang
    gajinya >1000000


        select bagian, avg(gaji)       
        from gaji
        where gaji>1000000
        group by bagian;

        select bagian, avg(gaji)       
        from gaji
        group by bagian
        having avg(gaji)>1000000;
   

    Tampilkan rata-rata gaji per bagian untuk bagian 1 dan 3
       
        select bagian, avg(gaji)       
        from gaji
        group by bagian
        having bagian <> 2;

        select bagian, avg(gaji)       
        from gaji
        where bagian ='1' or bagian ='3'
        group by bagian;
       
       

    Tampilkan rata-rata gaji per bagian yang rata-ratanya
    antara 1000000 dan 2000000
       
        select bagian, avg(gaji)       
        from gaji
        group by bagian
        having avg(gaji) between 1000000 and 2000000;


    Fungsi COUNT()
    contoh:
        select count(nama)   
        from data_pegawai;

    contoh menghitung jumlah pegawai per bagian

        select kode_bagian, count (kode_bagian)
        from data_pegawai
        group by kode_bagian
   
    contoh menghitung jumlah pegawai per bagian khusus untuk yang
    jumlahnya lebih dari 1:

        select kode_bagian, count (kode_bagian)
        from data_pegawai
        group by kode_bagian
        having count(kode_bagian)>1;

   Fungsi MAX()
    contoh memperoleh gaji terbesar tiap bagian:
        select kode_bagian, max(gaji)
        from data_gaji
        group by kode_bagian;

   Fungsi MIN()
    contoh memperoleh gaji terkecil tiap bagian:
        select kode_bagian, min(gaji)
        from data_gaji
        group by kode_bagian;
   
   Fungsi SUM()
    contoh menghitung jumlah gaji tiap bagian:
       
        select kode_bagian, sum(gaji)
        from data_gaji
        group by kode_bagian;


Beda Where dan having
1. having itu kondisi setelah di group
   sedangkan where itu belum di group

    contoh:
    SELECT kelas,count(*)
    FROM siswa
    GROUP BY kelas
    HAVING COUNT(*) >=3;

2. having untuk memberikan syarat pada fungsi group..
   where untuk syarat biasa..

    contoh:

    SELECT nis,nama,count(*)
    from siswa
    where wali like 'd%'
    group by wali
    having count(*)>=3


   
   
   
   
   
    

Buka MySQL dg xampp

cara menjalankan MySQL di Command Prompt  dg xapp:

install xampp
klo sudah xampp control panel klik start Apace,mySQL,Filezilla
klick start windows
ketik cmd enter -->  buka command prompt
supaya ke drive c --> ketik cd.. sampai ke drive c:\
baru
ketik C:\xampp\mysql\bin
ketik cd mysql -u root -p

klo sudah keluar tulisan password : enter aja
kemudian keluar mysql>
klo sudah keluar seperti tulisan diatas berarti anda sudah masuk ke program mysql..ok.

slamet coba....

Sabtu, 28 Januari 2012

Normalisasi


  • Untuk menghilangkan kerangkapan data
  • Untuk mengurangi kompleksitas
  • Untuk mempermudah pemodifikasian data
Anomali adalah proses pada basis data yang memberikan efek samping yang tidak diharapkan ( misalnya menyebabkan ketidakonsistenan data atau membuat suatu data menjadi hilang ketika data dihapus)
Macam Anomali terdiri dari
  • Anomali peremajaan,
  • Anomali Penghapusan, dan
  • Anomali penyisipan
Anomali peremajaan

Anomali ini terjadi bila ada perubahan pada sejumlah data yang mubazir, tetapi tidak seluruhnya diubah. Contoh : 
Tabel Pesanan
Pemasok
Kota
Barang
Jumlah
Kartika
Jakarta
Mouse
5
Citra
Bandung
Monitor
2
Yudi
Medan
CPU
2
Citra
Bandung
Printer
1

Seandainya Citra dengan kota Bandung pindah ke Bogor maka pengubahan data hanya dilakukan pada data pertama menjadi : 

Tabel Pesanan
Pemasok
Kota
Barang
Jumlah
Kartika
Jakarta
Mouse
5
Citra
Bogor
Monitor
2
Yudi
Medan
CPU
2
Citra
Bandung
Printer
1
Di sini terlihat bahwa data tentang pemasok Citra tidak sama yang menyebabkan ketidakkonsistenan data.

Anomali Penyisipan
Anomali ini terjadi pada saat penambahan data ternyata ada elemen yang kosong dan elemen tsb justru menjadi key. Contoh : Tabel Kursus
NoSiswa
Kursus
Biaya
10
Bhs.Inggris
60000
10
Bhs.Perancis
80000
10
Bhs.Jepang
70000
15
Bhs.Inggris
60000
20
Bhs.Jepang
70000

Misalnya akan dibuka kursus baru yaitu Bhs.Jerman dengan biaya 75000 akan tetapi belum ada seorangpun yang ikut kursus ini, shg data menjadi : Tabel Kursus
NoSiswa
Kursus
Biaya
10
Bhs.Inggris
60000
10
Bhs.Perancis
80000
10
Bhs.Jepang
70000
15
Bhs.Inggris
60000
20
Bhs.Jepang
70000

Bhs.Jerman
75000

Anomali penghapusan
Anomali ini terjadi apabila dalam satu baris/ tuple ada data yang akan dihapus sehingga akibatnya terdapat data lain yang hilang. Contoh pada table kursus data NoSiswa 20 akan dihapus karena sudah tidak ikut kursus lagi sehingga akibatnya data kursus bhs jepang dan biaya 70000 akan ikut terhapus.

Konsep dasar pada tahap normalisasi yang menjelaskan hubungan atribut atau secara lebih khusus menjelaskan nilai suatu atribut yang menentukan atribut lainnya.
Macam-macam dependensi, yaitu :

Dependensi fungsional
Definisi : Suatu atribut Y mempunyai dependensi fungsional terhadap atribut X jika dan hanya jika setiap nilai X berhubungan dengan sebuah nilai Y.
Notasi    :   X –> Y      (X secara fungsional menentukan Y)
Contoh   : Tabel Pesanan
Pembeli
Kota
Barang
Jumlah
P1
Yogya
B1
10
P1
Yogya
B2
5
P2
Jakarta
B1
4
P2
Jakarta
B2
7
P3
Solo
B3
6
P3
Solo
B4
6

Pembeli secara fungsional menentukan kota, sebab setiap pembeli yang sama  mempunyai kota yang sama, dengan demikian :   Pembeli –> Kota
contoh lain                      :  {Pembeli, Barang}   –> Jumlah
Keterangan:
  • Bagian yang terletak disebelah kiri tanda panah biasa disebut DETERMINAN / PENENTU dan bagian yang terletak di sebelah kanan panah disebut DEPENDENSI / YANG TERGANTUNG.
  • Tanda {} biasanya digunakan untuk menentukan lebih dari satu atribut sebagai penentu atau sebagai yang tergantung.
Dependensi fungsional sepenuhnya
Definisi : Suatu atribut Y mempunyai dependensi fungsional penuh terhadap X jika
  • Y mempunyai dependensi fungsional terhadap X dan/atau
  • Y tidak memiliki dependensi terhadap bagian dari X
Contoh :   Pembeli –> Kota
{Pembeli, Barang} –>  Jumlah
Intinya :   Kota mempunyai dependensi fungsional terhadap Pembeli atau {Pembeli, Barang} tapi kota mempunyai dependensi fungsional sepenuhnya terhadap pembeli bukan barang.

Dependensi Total
Definisi : Suatu atribut Y mempunyai dependensi total terhadap atribut X jika
  • Y memiliki dependensi fungsional terhadap X dan
  • X memiliki dependensi fungsional terhadap Y
Notasi  :   X<–> Y



Contoh : Tabel Pemasok
KodePemasok
NamaPemasok
Kota
K1
Kartika
Jakarta
C1
Citra
Bandung
C2
Candra
Jakarta






Pada kasus ini  KodePemasok <–>NamaPemasok, karena setiap kode tidak mempunyai nama yang sama.

Dependensi Transitif
Definisi : Atribut Z mempunyai dependensi transitif terhadap X bila :
  • Y memiliki dependensi fungsional terhadap X
  • Z memiliki dependensi fungsional terhadap Y
Contoh :
Kuliah
Ruang
Tempat
Waktu




Jarkom
Merbabu
Gedung Utara
Senin
Basis Data
Arjuna
Gedung Selatan
Selasa
Matematika
Merapi
Gedung Barat
Rabu
Fisika
Merbabu
Gedung Timur
Kamis









Relasi :
  • Kuliah  –> {Ruang, Waktu}
  • Ruang  –> Tempat
Terlihat bahwa :    Kuliah –> Ruang –> Tempat
Dengan demikian Tempat mempunyai dependensi transitif terhadap kuliah
Diagram Dependensi Fungsional (Diagram DF) Adalah diagram yang digunakan untuk menggabarkan dependensi fungsional. Diagram ini menunjukkan hubungan antara atribut yang menjadi penentu atribut lainnya, dengan hubungan yang dinyatakan dengan tanda panah. Seperti contoh diatas dapat digambarkan diagram DF sebagai berikut :

Dekomposisi
Pada tahap normalisasi sering kali terjadi pemecahan table kedalam bentuk dua atau lebih relasi. Proses pemecahaan ini disebut dengan dekomposisi. Syarat : Tidak ada informasi yang hilang ketika suatu relasi dipecah menjadi relasi-relasi lain. Contoh : Terdapat suatu relasi awal sebagai berikut :
Nim
Nama
Program Studi
95001
Andi
Ekonomi
95002
Vira
Teknik
95003
Andi
Fisika
Akan dibentuk kedalam dekomposisi tak hilang menjadi :
Nim
Nama

Nim
Program Studi
95001
Andi

95001
Ekonomi
95002
Vira

95002
Teknik
95003
Andi

95003
Fisika

Pada relasi awal dapat diketahui informasi sebagai berikut : 95001 adalah ANDI program studi Ekonomi. Setelah proses dekomposisi tak hilang hasilnya adalah sama 95001 adalah ANDI dan 95001 program studi Ekonomi. Contoh dekomposisi hilang adalah
Nim
Nama

Nama
Program Studi
95001
Andi

Andi
Ekonomi
95002
Vira

Vira
Teknik
95003
Andi

Andi
Fisika
95001 bernama ANDI, tetapi ANDI dengan program studi Ekonomi atau Fisika?
Bentuk normalisasi pertama (1NF)
Dikenakan pada tabel yang sama sekali belum ternomalisasi. Tabel yang belum ternomalisasi adalah tabel yang mempunyai atribut berulang. Contoh : terdapat suatu data sebagai berikut :
NIP
Nama
Jabatan
Keahlian
Lama Kerja
107
Ilham
Analis Senior
Cobol
6



Oracle
1
109
Ryan
Analis Junior
Cobol
2



C++
2
120
Fika
Programmer
Dbase
3



Sybase
1



Cobol
1

Pada contoh di atas, keahlian mempunyai atribut yang berulang. Untuk itu akan dibentuk ke normal 1NF. Syarat Normal 1NF adalah suatu relasi dikatakan dalam bentuk normal pertama jika dan hanya jika setiap atribut bernilai tunggal dalam satu baris.
NIP
Nama
Jabatan
Keahlian
Lama Kerja
107
Ilham
Analis Senior
Cobol
6
107
Ilham
Analis Senior
Oracle
1
109
Ryan
Analis Junior
Cobol
2
109
Ryan
Analis Junior
C++
2
120
Fika
Programmer
Dbase
3
120
Fika
Programmer
Sybase
1
120
Fika
Programmer
Cobol
1
Tabel di atas sudah memenuhi bentuk normal 1NF

Bentuk Normal 2NF
Bentuk ini didefinisikan berdasarkan dependensi fungsional dengan syarat adalah :
  • Berada pada bentuk normal pertama
  • Semua atribut bukan kunci memiliki dependensi sepenuhnya terhadap kunci primer
Contoh :
  • Nama  dan jabatan mempunyai dependensi fungsional terhadap NIP
  • Lama mempunyai dependensi fungsional terhadap NIP dan keahlian
  • Bentuk tabelnya adalah : NNJ (NIP, Nama, Jabatan) dan NKL (NIP, Keahlian, Lama Kerja)
NIP
Nama
Jabatan
107
Ilham
Analis Senior
109
Ryan
Analis Junior
120
Fika
Programmer

NIP
Keahlian
Lama Kerja
107
Cobol
6
107
Oracle
1
109
Cobol
2
109
C++
2
120
Dbase
3
120
Sybase
1
120
Cobol
1

Bentuk Normal 3NF
  • Berada dalam bentuk normal 2 NF
  • Setiap atribut bukan kunci tidak memiliki dependensi transitif terhadap kunci primer
Contoh di atas sudah memenuhi normal 3NF karena : Tidak memiliki dependensi transitif, yaitu
NIP –> {Nama, Jabatan}
{NIP, Keahlian} –> Lama Kerja

Bentuk Normal boyce-codd (BCNF)
Bentuk ini dilakukan jika dan hanya jika semua penentu (determinan) adalah kunci kandidat (atribut yang bersifat unik). BCNF merupakan perbaikan dari 3NF. Relasi yang memenuhi BCNF pasti memenuhi 3NF tetapi tidak sebaliknya. Contoh : Tabel SKT
Siswa
Kursus
Tutor
Anwar
Bhs. Perancis
Pierre
Anwar
Bhs. Inggris
Richard
Budi
Bhs. Perancis
Pierre
Cecep
Bhs. Inggris
Suzanne

Tabel di atas adalah suatu relasi yang memenuhi 3NF tetapi tidak memenuhi BCNF. Relasi diatas didasarkan oleh fakta :
  • Seorang siswa dapat mengambil sejumlah kursus
  • Setiap tutor hanya mengajar satu kursus bahasa
  • Setiap siswa dalam satu kursus diajar oleh satu tutor
  • Suatu kursus bisa dipegang oleh beberapa tutor
Pada keadaan tersebut di atas dapat digambarkan sebagai berikut : Siswa & Kursus  dan Siswa & Tutor.
Memenuhi bentuk 3NF karena tidak ada dependensi transitif pada relasi tersebut. Tetapi tidak memenuhi BCNF karena adanya determinan Tutor yang berdiri sebagai kunci kandidat. Realsi SKT menyebabkan anomali karena baris Cecep dihapus maka Suzane sebagai tutor jug akan terhapus. Cara konversi dari 3NF ke BCNF adalah :
  • Carilah semua penentu
  • Bila terdapat penentu yang bukan kunci kandidat, maka :
    • Pisahkan relasi tersebu
    • Buat penentu sebagai kunci primer

TUGAS BASIS DATA

TUGAS BASIS DATA SOAL PRAKTIK BASIS DATA (TENTANG MENGGUNAKAN SQL DAN KLASIFIKASINYA) Sebuah sekolah akan membuat syste...