Selasa, 22 Oktober 2013

Tugas Sql

Nim :  12390100002
Nama:Teddy Wijaya

Mata kuliah : Structure Query Language I
Dosen : Titik Lusiani, M.Kom, OCA

Apakah SQL itu? 
SQL adalah kependekan dari Structured Query Languange yang merupakan bahasa database standar industri.
SQL menyediakan Data Definiton Language (DDL) dan Data Manipulation Language (DML). Walaupun dalam beberapa bagian saling bersangkutan, perintah DDL memungkinkan kita untuk membuat dan mendefinisikan tabel (CREATE TABLE), dan index (CREATE INDEX), sedangkan perintah DML memungkinkan anda untuk membangun query untuk mengambil data (SELECT) dari beberapa tabel, menyisip (INSERT) data baru, memperbaiki (UPDATE) data, dan menghapus (DELETE).
Sebelum mempelajari perintah-perintah DDL dan DML, terlebih dahulu kita akan mempelajari struktur sebuah tabel.
Struktur Tabel
Tabel Nilai
Nama
Nilai
Agus
80
Budi
65
Berdasarkan tabel diatas maka Nama dan Nilai disebut sebagai Kolom sedangkan Agus dan Budi disebut Baris.
Selanjutnya kita beranjak memelajari perintah-perintah DDL dan DML. 

Membuat Tabel
Untuk membuat tabel kita menggunakan perintah CREATE TABLE. Berikut adalah bentuk umum dari penggunaan perintah tersebut:
create table "namatabel"
("kolom1" "tipe data" (constraint),
"kolom2" "tipe data" (constraint),
"kolom3" "tipe data" (constraint));
Keterangan: Tipe Data dapat diisi dengan text, longtext, byte, bit, counter, short, long atau datetime. Sedangkan constraint adalah panjang data yang dipesan. Untuk lebih jelasnya akan saya berikan satu contoh:
Apabila kita ingin membuat sebuah tabel Pegawai yang berisikan kolom Nama, Jabatan dan Gaji, maka perintah yang harus ditulis adalah:
create table Pegawai
(Nama text(10),
Jabatan text(8),
Gaji long(6));
Hasil dari perintah diatas adalah tabel dibawah ini:
Pegawai
Nama
Jabatan
Gaji

Memasukkan Data Ke Tabel
Untuk memasukkan data ke tabel kita menggunakan perintan INSERT. Bentuk umum dari perintah INSERT dapat anda lihat dibawah ini:
insert into "nama tabel"
(kolom pertama,...kolom ke-n)
nilai(nilai pertama,...nilai ke-n);
Keterangan: Nilai adalah data yang akan diisikan. Nilai pertama berarti nilai yang akan diisikan pada kolom pertama.
Masih menggunakan tabel Pegawai yang telah kita buat sebelumnya. Sekarang kita akan mencoba memasukkan data-datanya. 
Data-data yang akan dimasukkan adalah: Nama : Ilham, Jabatan : Manager, Gaji : 500000.
Perintah yang harus dituliskan adalah:
insert into Pegawai
(Nama,Jabatan,Gaji)
values (Ilham,Manager,500000);
Untuk melihat hasilnya anda harus menggunakan perintah SELECT. Perintah ini akan saya bahas lebih lanjut pada pertemuan kedua. Untuk melihat tabel pegawai, gunakan perintah: SELECT * from Pegawai. Dan tabel anda seharusnya akan terlihat seperti ini:
Nama
Jabatan
Gaji
Ilham
Manager
500000



JOIN
Cara kerja join ialah dengan mencari kecocokan kolom tertentu pada sebuah tabel dengan kolom tertentu pada tabel lain, kemudian menampilkan hasilnya sebagai satu set data gabungan. Secara garis besar, terdapat 3 macam join, yaitu INNER JOIN, LEFT JOIN dan RIGHT JOIN. Namun, selain dari 3 macam tersebut, terdapat tambahan beberapa varian tergantung dari RDBMS yang digunakan.

1.INNER JOIN


Dengan INNER JOIN hanya akan ditampilkan baris-baris yang satu sama lain memiliki kecocokan.


Contoh:

SELECT a.nama, b.gejala
FROM pasien a 
INNER JOIN gejala b
ON b.id = a.id;
|------ |---------- |
| nama | gejala      |
|------ |---------- |
| John  | Demam   | 
| Jane  | Pusing     | 
| Mike | Mual       | 


2.LEFT JOIN


Sebuah query dengan LEFT JOIN akan menampilkan semua baris dari tabel sebelah kiri (pertama/utama atau pasien) dengan gabungan dari tabel sebelah kanan (kedua atau symptom).


Contoh:

SELECT a.nama, b.gejala
FROM pasien a
LEFT JOIN gejala b
ON b.id = a.id;
|-------|----------|
| nama | gejala     |
|-------|----------|
| John  | Demam   | 
| Jane  | Pusing     | 
| Mike | Mual       | 
| Doel  | NULL    | 

Perbedaannya dengan INNER JOIN ialah, pada LEFT JOIN - seluruh baris dari tabel pertama akan ditampilkan meskipun tidak ada kecocokan baris pada tabel kedua. Lihat contoh diatas, pasien Doel tidak memiliki data symptom sehingga tertampil NULL (NULL disini menyatakan bahwa tidak ada data pada kolom tersebut). Selain itu, posisi tabel jadi mempunyai makna, yaitu tabel kiri atau pertama (ialah tabel sebelum 'LEFT JOIN') akan menjadi tabel utama yang diquery terlebih dahulu, baru kemudian dicarikan kecocokannya dengan tabel kanan atau kedua (ialah tabel setelah 'LEFT JOIN').


3.RIGHT JOIN


Query RIGHT JOIN hampir sama dengan LEFT JOIN, hanya saja posisinya terbalik, yaitu akan menampilkan semua baris dari tabel kanan (kedua) meskipun tidak ada kecocokan pada tabel kiri (pertama).


Contoh:

SELECT a.nama, b.gejala
FROM pasien a
RIGHT JOIN gejala b
ON b.id = a.id;
|-------|----------|
| nama | gejala      |
|-------|----------|
| John  | Demam   | 
| Jane  | Pusing     | 
| Mike | Mual       | 

SUBQUERY
Subquery (disebut juga subselect) merupakan bentuk query yang terletak dalam query lain. Dalam pemahaman yang sederhana didalam sebuah SELECT terdapat SELECT lain.  

SELECT dapat juga digunakan dalam WHERE, hal ini disebut subquery.

Kata kunci untuk Subquery:

o   IN

o   EXISTS

o   ALL/ANY/SOME

IN Subquery

-        Dengan IN, subquery  harus menghasilkan  1 (satu) kolom tapi boleh beberapa baris.

Contoh :    SELECT DISTINCT nama FROM petani

   WHERE id NOT IN

   (SELECT id FROM memasokWHERE jml_bunga = 1 )

EXIST Subquery

-        Dengan EXIST, subquery dapat menghasilkan satu atau lebih  kolom.

Contoh :

                   SELECT id, nama  FROM petani

WHERE NOT EXIST

 (SELECT stock_num,manu_code FROM items

WHERE stock.stock_num = items.stock_num

                        AND stock.manu_code = items.manu_code)

ALL/ANY/SOME Subquery

-        ANY, ALL atau SOME dipakai dalam subquery bila hasil yang dikembalikan lebih dari satu.

-        Jika ANY, ALL atau SOME diabaikan dan subquery menghasilkan lebih dari satu nilai, maka pesan kesalahan akan muncul.


Contoh  1 :      SELECT DISTINCT orders_num FROM items

   WHERE total_price > ALL ( SELECT total_price

       FROM items  WHERE orders_num = 1023)

Contoh 2 :        SELECT DISTINCT orders_num FROM items

                        WHERE total_price > SELECT        

                        MAX(total_price)FROM items

                         WHERE orders_num = 1023)

Contoh 3 : SELECT DISTINCT orders_num FROM items

                        WHERE total_price > ANY ( SELECT total_price

                         FROM items  WHERE orders_num = 1023)