Saturday, December 10, 2011

How Select Statement SQL Works

Berikut adalah cara kerja SELECT statement pada Query SQL (setidaknya secara teori):
  1. Dimulai dari FROM clause dan membuat sebuah table dari semua join, union, intersection dan apapun itu pada FROM clause. Pada momen ini diijinkan untuk membuat alias pada table ( AS
    ) yang akan digunakan untuk query statement berikutnya.

  2. Menuju ke WHERE clause dan membuang semua row/record yang tidak masuk kriteria; selalu menolak suatu kondisi yang unknown dan false. WHERE clause berkaitan dengan proses kerja dari FROM clause.

  3. Menuju ke GROUP BY clause (jika ada), melakukan grouping dan mengurangi tiap group yang ada menjadi single row, me-replace working table yang ada dengan grup table yang didefinisikan. Row/record yang akan di grouping harus memenuhi karakteristik: (1) kolom table (2) Perhitungan terhadap grouping tsb (cth, aggregate functions) (3) function atau (4) suatu ekspresi yang dibuat dari no 1, 2 dan 3.

  4. Menuju ke HAVING clause (jika ada) dan menerapkannya terhadap grouping table yang sudah terbentuk. Jika tidak ada, maka dianggap keseluruhan table sebagai satu grup.

  5. Menuju ke SELECT clause dan mengkonstruksi/menggabungkan ekspresi yang terdapat di SELECT clause. Ini berarti semua scalar subqueries, function calls dan expression yang terdapat pada SELECT dijalankan ketika semua clause selesai dieksekusi. "AS" operator pada SELECT statement yang berfungsi sebagai pemberi nama/alias juga dieksekusi sebagai satu kesatuan, karena itu ia tidak dapat digunakan pada WHERE clause ataupun SELECT list yang lain.

  6. Untuk nested query atau query rangkap mengikuti aturan umum yang terdapat pada bahasa pemograman seperti C, VB, Java, dll. Yaitu cakupan/scopes pada referensi kolom atau table yang digunakan. Contohnya: table atau kolom pada nested query hanya dikenal dari nested query yang dicakupnya, namun ia bisa menggunakan reference table atau kolom diluarnya dimana nested query itu digunakan.
Ex: Select Id, name, category, (Select name from Supplier As sup Where prodid.sup = id.Prod) as SupplierName
From Products prod

    Note: SELECT tidak dapat memiliki lebih banyak kolom daripada GROUP BY, tetapi dapat memiliki lebih sedikit kolom dibanding GROUP BY.

    Jika ada salah, mohon koreksinya :) Maksud hati hanya mao sharing yang saya tau kok :D

No comments:

Post a Comment