SlideShare a Scribd company logo
1 of 24
Download to read offline
Kalkulus Relasional: Join beberapa Tabel, Fungsi
                                        Agregat
                               17 November 2011
Tabel Movie
mID   Title                              Year   Director
101   Gone with the Wind                 1939   Victor Fleming
102   Star Wars                          1977   George Lucas
103   The Sound of Music                 1965   Robert Wise
104   E.T.                               1982   Steven Spielberg
105   Titanic                            1997   James Cameron
106   Show White                         1937
107   Avatar                             2009   James Cameron
108   Raiders of the Lost Ark            1982   Steven Spielberg




                   Kalkulus Relasional                             2
Tabel Reviewer
rID   Name
201   Sarah Martinez
202   Daniel Lewis
203   Brittany Harris
204   Mike Anderson
205   Chris Jackson
206   Elizabeth Thomas
207   James Cameron
208   Ashley White




                      Kalkulus Relasional   3
rID   mID Stars RatingDate
                        201   101   2   2011-01-22
Tabel Rating            201   101   4   2011-01-27
                        202   106   4
                        203   103   2   2011-01-20
                        203   108   4   2011-01-12
                        201   108   2   2011-01-30
                        204   101   3   2011-01-09
                        205   103   3   2011-01-27
                        205   104   2   2011-01-22
                        205   108   4
                        206   107   3   2011-01-15
                        206   106   5   2011-01-19
                        207   107   5   2011-01-20
                        208   104   3   2011-01-02

        Kalkulus Relasional                          4
Kueri 1
 Semua judul film yang disutradarai oleh James
  Cameron
    judul film: Movie
    sutradara: Movie
  SELECT title
  FROM Movie
  WHERE director = 'James Cameron'




              Kalkulus Relasional                 5
Kueri 2
 Tampilkan tahun publikasi film untuk semua film
  yang mendapat rating 4 atau 5. Urutkan hasilnya dari
  besar ke kecil.
    Tahun publikasi: Movie
    Nilai rating: Rating
  SELECT m.year
  FROM Movie m, Rating r
  WHERE m.mID = r.mID
    AND r.stars IN (4, 5)
  ORDER BY m.year DESC


              Kalkulus Relasional                        6
Kueri 3
 Ada reviewer yang tidak mencantumkan tanggal
  ketika mereka memberikan rating kepada sebuah film.
  Tampilkan nama semua reviewer yang tidak
  mencantumkan tanggal dalam rating mereka
    tanggal rating: Rating
    nama reviewer: Reviewer
  SELECT rv.name
  FROM Reviewer rv, Rating rt
  WHERE rv.rID = rt.rID
    AND rt.ratingDate IS NULL


              Kalkulus Relasional                       7
Fungsi Agregat
 Fungsi agregatku ada lima,
  macam-macam ragamnya
    MAX
    MIN
    SUM
    AVG
    COUNT
 Aggregate: Mengumpulkan beberapa data



             Kalkulus Relasional          8
Fungsi Agregat
 Dicantumkan dalam klausa SELECT
 Dikombinasikan dengan klausa GROUP BY
  SELECT   MAX(stars) FROM Rating;
  SELECT   MIN(stars) FROM Rating;
  SELECT   COUNT(*) FROM Rating;
  SELECT   AVG(stars) FROM Rating;




               Kalkulus Relasional        9
Klausa GROUP BY
 Menjelaskan atribut mana yang tidak diagregatkan
   SELECT rID, MAX(stars)
   FROM Rating
   GROUP BY rID;
 Tampilkan nama reviewer dan nilai rating terkecil yang pernah
  mereka berikan. Urutkan berdasarkan nama reviewer.
    nama reviewer: Reviewer
    nilai rating: Rating
    nilai rating terkecil: MIN(stars)
    (lanjutkan)



                   Kalkulus Relasional                            10
Bonus Time!
 Tampilkan nama reviewer dan nilai rating terkecil yang pernah
  mereka berikan. Urutkan berdasarkan nama reviewer.
   SELECT rv.name, MIN(rt.stars)
   FROM Reviewer rv, Rating rt
   WHERE rv.rID = rt.rID
   GROUP BY rv.name
   ORDER BY rv.name;




                Kalkulus Relasional                               11
Latihan (Tugas Mandiri)
 Tampilkan gaji minimum, gaji maksimum, jumlah
  gaji, dan rata-rata gaji untuk setiap jenis
  pekerjaan.
 Tampilkan jumlah orang yang memiliki jenis
  pekerjaan yang sama.
 Buat kueri yang menampilkan selisih antara gaji
  maksimum dengan gaji minimum. Beri label
  “Perbedaan Gaji”.
Kombinasi dengan klausa
WHERE
 Apa beda antara
  SELECT rID, AVG(stars)
  FROM Rating
  GROUP BY rID ORDER BY rID;
 dengan
  SELECT rID, AVG(stars)
  FROM Rating
  WHERE stars > 3
  GROUP BY rID ORDER BY rID;




              Kalkulus Relasional   13
Klausa HAVING
 Tampilkan ID reviewer dan rata-rata rating yang
  pernah mereka berikan, yang nilai rata-ratanya lebih
  besar dari 3
  SELECT rID, AVG(stars)
  FROM Rating
  GROUP BY rID ORDER BY rID
  HAVING AVG(stars) > 3;




              Kalkulus Relasional                        14
Data Manipulation Language (DML)
Menambahkan Baris Baru
  Sisipkan sebuah baris baru yang berisi nilai untuk setiap field.
  Tuliskan nilai-nilai tiap field sesuai urutan field dalam
   spesifikasi tabel
  Secara opsional, tuliskan hanya field-field yang diperlukan.



 INSERT INTO departments(department_id, department_name,
                         manager_id, location_id)
 VALUES      (70, 'Public Relations', 100, 1700);
 1 row created.
  Apit data karakter dan waktu dalam sepasang single quote.
Menyisipkan Baris Baru
dengan Nilai Null kolom dari daftar kolom
  Secara implisit: Hilangkan nama
    pada pernyataan INSERT.
  INSERT INTO  departments (department_id,
                            department_name         )
  VALUES       (30, 'Purchasing');
  1 row created.

   Secara eksplisit: Tuliskan keyword NULL pada klausa
    VALUES.
  INSERT INTO departments
  VALUES       (100, 'Finance', NULL, NULL);
  1 row created.
Menyisipkan Nilai Khusus
 Fungsi SYSDATE mencatat tanggal dan waktu saat ini.

 INSERT INTO employees (employee_id,
                  first_name, last_name,
                  email, phone_number,
                  hire_date, job_id, salary,
                  commission_pct, manager_id,
                  department_id)
 VALUES          (113,
                  'Louis', 'Popp',
                  'LPOPP', '515.124.4567',
                  SYSDATE, 'AC_ACCOUNT', 6900,
                  NULL, 205, 100);
 1 row created.
Menyisipkan Nilai Tanggal
Tertentu
 INSERT INTO employees
 VALUES      (114,
              'Den', 'Raphealy',
              'DRAPHEAL', '515.127.4561',
              TO_DATE('FEB 3, 1999', 'MON DD, YYYY'),
              'AC_ACCOUNT', 11000, NULL, 100, 30);
 1 row created.
Menyalin Baris dari Tabel lain
  Tuliskan pernyataan INSERT dengan sebuah subkueri.

    INSERT INTO sales_reps(id, name, salary, commission_pct)
      SELECT employee_id, last_name, salary, commission_pct
      FROM   employees
      WHERE job_id LIKE '%REP%';

    4 rows created.


  Cocokkan jumlah kolom pada klausa INSERT dengan yang ada
   pada subkueri.
  Jangan lupa mencocokkan tipe data.
Mengubah Baris dalam Tabel
 Baris tertentu diubah jika secara eksplisit klausa WHERE
  dituliskan.
 UPDATE employees
 SET    department_id = 70
 WHERE employee_id = 113;
 1 row updated.

 Semua baris dalam tabel akan diubah jika klausa WHERE
  dihilangkan.
 UPDATE   copy_emp
 SET      department_id = 110;
 22 rows updated.
Menghapus Baris dari Tabel
  Baris tertentu dihapus menggunakan klausa WHERE.


   DELETE FROM departments
   WHERE department_name = 'Finance';
  1 row deleted.

  Semua baris akan terhapus apabila klausa WHERE tidak
   dinyatakan secara eksplisit.

  DELETE FROM copy_emp;
  22 rows deleted.

  Klausa WHERE dapat menggunakan klausa IN.
Pustaka
 http://www.sqlite.org/
 http://www.w3schools.com/sql/default.asp
 http://www.sql.org/
 http://www.sql-tutorial.net/
 http://www.sqlzoo.net/
 http://www.sqlcourse.com/
 http://tjerdastangkas.blogspot.com/search/label/ikd312




               Kalkulus Relasional                         23
Kamis, 17 November 2011

More Related Content

Viewers also liked

Vortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of ThingsVortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of ThingsAngelo Corsaro
 
Cyberpolitics2009w4
Cyberpolitics2009w4Cyberpolitics2009w4
Cyberpolitics2009w4oiwan
 
Visita granada 3er ciclo 2016
Visita granada 3er ciclo 2016Visita granada 3er ciclo 2016
Visita granada 3er ciclo 2016XXX XXX
 
Coquitlam/Burnaby Performance Network Series,Sept.2011
Coquitlam/Burnaby Performance Network Series,Sept.2011Coquitlam/Burnaby Performance Network Series,Sept.2011
Coquitlam/Burnaby Performance Network Series,Sept.2011Faye Brownlie
 
Inclusion, Quesnel district staff
Inclusion, Quesnel district staff Inclusion, Quesnel district staff
Inclusion, Quesnel district staff Faye Brownlie
 
DDS Web Programming with dscript
DDS Web Programming with dscriptDDS Web Programming with dscript
DDS Web Programming with dscriptAngelo Corsaro
 
Osservatorio sul turismo Scolastico 2012
Osservatorio sul turismo Scolastico 2012 Osservatorio sul turismo Scolastico 2012
Osservatorio sul turismo Scolastico 2012 Jacopo Zurlo
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAngelo Corsaro
 
Web Application Security For Small and Medium Businesses
Web Application Security For Small and Medium BusinessesWeb Application Security For Small and Medium Businesses
Web Application Security For Small and Medium BusinessesSasha Nunke
 
Cценарий лучшей презентации стартапа
Cценарий лучшей презентации стартапаCценарий лучшей презентации стартапа
Cценарий лучшей презентации стартапаGregory Sitnin
 
360i Social Marketing Playbook
360i Social Marketing Playbook360i Social Marketing Playbook
360i Social Marketing PlaybookKarla Camacho
 
Dia de la paz 2017
Dia de la paz 2017Dia de la paz 2017
Dia de la paz 2017XXX XXX
 
Mobile,mobile, mobile
Mobile,mobile, mobileMobile,mobile, mobile
Mobile,mobile, mobileKaKi Law
 
Cost-effective approach to full-cycle vulnerability management
Cost-effective approach to full-cycle vulnerability managementCost-effective approach to full-cycle vulnerability management
Cost-effective approach to full-cycle vulnerability managementSasha Nunke
 
Www.Gliffy.Com
Www.Gliffy.ComWww.Gliffy.Com
Www.Gliffy.ComVirus91
 
Model sentences with preposition
Model sentences with prepositionModel sentences with preposition
Model sentences with prepositionMurely Ponnusamy
 
Crosscurrents, 2011. It's All about Thinking
Crosscurrents, 2011. It's All about ThinkingCrosscurrents, 2011. It's All about Thinking
Crosscurrents, 2011. It's All about ThinkingFaye Brownlie
 

Viewers also liked (20)

Vortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of ThingsVortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of Things
 
Cyberpolitics2009w4
Cyberpolitics2009w4Cyberpolitics2009w4
Cyberpolitics2009w4
 
Visita granada 3er ciclo 2016
Visita granada 3er ciclo 2016Visita granada 3er ciclo 2016
Visita granada 3er ciclo 2016
 
Coquitlam/Burnaby Performance Network Series,Sept.2011
Coquitlam/Burnaby Performance Network Series,Sept.2011Coquitlam/Burnaby Performance Network Series,Sept.2011
Coquitlam/Burnaby Performance Network Series,Sept.2011
 
Ralph Who
Ralph WhoRalph Who
Ralph Who
 
Inclusion, Quesnel district staff
Inclusion, Quesnel district staff Inclusion, Quesnel district staff
Inclusion, Quesnel district staff
 
DDS Web Programming with dscript
DDS Web Programming with dscriptDDS Web Programming with dscript
DDS Web Programming with dscript
 
Osservatorio sul turismo Scolastico 2012
Osservatorio sul turismo Scolastico 2012 Osservatorio sul turismo Scolastico 2012
Osservatorio sul turismo Scolastico 2012
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part I
 
Camur 2016-ancash-1
Camur 2016-ancash-1Camur 2016-ancash-1
Camur 2016-ancash-1
 
Web Application Security For Small and Medium Businesses
Web Application Security For Small and Medium BusinessesWeb Application Security For Small and Medium Businesses
Web Application Security For Small and Medium Businesses
 
Cценарий лучшей презентации стартапа
Cценарий лучшей презентации стартапаCценарий лучшей презентации стартапа
Cценарий лучшей презентации стартапа
 
360i Social Marketing Playbook
360i Social Marketing Playbook360i Social Marketing Playbook
360i Social Marketing Playbook
 
Dia de la paz 2017
Dia de la paz 2017Dia de la paz 2017
Dia de la paz 2017
 
Mobile,mobile, mobile
Mobile,mobile, mobileMobile,mobile, mobile
Mobile,mobile, mobile
 
ikd312-03-design
ikd312-03-designikd312-03-design
ikd312-03-design
 
Cost-effective approach to full-cycle vulnerability management
Cost-effective approach to full-cycle vulnerability managementCost-effective approach to full-cycle vulnerability management
Cost-effective approach to full-cycle vulnerability management
 
Www.Gliffy.Com
Www.Gliffy.ComWww.Gliffy.Com
Www.Gliffy.Com
 
Model sentences with preposition
Model sentences with prepositionModel sentences with preposition
Model sentences with preposition
 
Crosscurrents, 2011. It's All about Thinking
Crosscurrents, 2011. It's All about ThinkingCrosscurrents, 2011. It's All about Thinking
Crosscurrents, 2011. It's All about Thinking
 

More from Anung Ariwibowo (20)

isd314-06-association-mining
isd314-06-association-miningisd314-06-association-mining
isd314-06-association-mining
 
ikp213-unifikasi
ikp213-unifikasiikp213-unifikasi
ikp213-unifikasi
 
ikp213-01-pendahuluan
ikp213-01-pendahuluanikp213-01-pendahuluan
ikp213-01-pendahuluan
 
ikd312-05-sqlite
ikd312-05-sqliteikd312-05-sqlite
ikd312-05-sqlite
 
ikd312-05-kalkulus-relasional
ikd312-05-kalkulus-relasionalikd312-05-kalkulus-relasional
ikd312-05-kalkulus-relasional
 
ikd312-04-aljabar-relasional
ikd312-04-aljabar-relasionalikd312-04-aljabar-relasional
ikd312-04-aljabar-relasional
 
ikd312-02-three-schema
ikd312-02-three-schemaikd312-02-three-schema
ikd312-02-three-schema
 
ikp213-02-pendahuluan
ikp213-02-pendahuluanikp213-02-pendahuluan
ikp213-02-pendahuluan
 
ikh311-08
ikh311-08ikh311-08
ikh311-08
 
ikh311-07
ikh311-07ikh311-07
ikh311-07
 
ikh311-06
ikh311-06ikh311-06
ikh311-06
 
ikh311-05
ikh311-05ikh311-05
ikh311-05
 
ikp321-svn
ikp321-svnikp321-svn
ikp321-svn
 
ikh311-04
ikh311-04ikh311-04
ikh311-04
 
ikp321-05
ikp321-05ikp321-05
ikp321-05
 
imsakiyah-jakarta-1433-09
imsakiyah-jakarta-1433-09imsakiyah-jakarta-1433-09
imsakiyah-jakarta-1433-09
 
ikh311-03
ikh311-03ikh311-03
ikh311-03
 
ikp321-04
ikp321-04ikp321-04
ikp321-04
 
ikp321-03
ikp321-03ikp321-03
ikp321-03
 
ikh311-02
ikh311-02ikh311-02
ikh311-02
 

IKD312-06-agregat-dml

  • 1. Kalkulus Relasional: Join beberapa Tabel, Fungsi Agregat 17 November 2011
  • 2. Tabel Movie mID Title Year Director 101 Gone with the Wind 1939 Victor Fleming 102 Star Wars 1977 George Lucas 103 The Sound of Music 1965 Robert Wise 104 E.T. 1982 Steven Spielberg 105 Titanic 1997 James Cameron 106 Show White 1937 107 Avatar 2009 James Cameron 108 Raiders of the Lost Ark 1982 Steven Spielberg Kalkulus Relasional 2
  • 3. Tabel Reviewer rID Name 201 Sarah Martinez 202 Daniel Lewis 203 Brittany Harris 204 Mike Anderson 205 Chris Jackson 206 Elizabeth Thomas 207 James Cameron 208 Ashley White Kalkulus Relasional 3
  • 4. rID mID Stars RatingDate 201 101 2 2011-01-22 Tabel Rating 201 101 4 2011-01-27 202 106 4 203 103 2 2011-01-20 203 108 4 2011-01-12 201 108 2 2011-01-30 204 101 3 2011-01-09 205 103 3 2011-01-27 205 104 2 2011-01-22 205 108 4 206 107 3 2011-01-15 206 106 5 2011-01-19 207 107 5 2011-01-20 208 104 3 2011-01-02 Kalkulus Relasional 4
  • 5. Kueri 1  Semua judul film yang disutradarai oleh James Cameron  judul film: Movie  sutradara: Movie SELECT title FROM Movie WHERE director = 'James Cameron' Kalkulus Relasional 5
  • 6. Kueri 2  Tampilkan tahun publikasi film untuk semua film yang mendapat rating 4 atau 5. Urutkan hasilnya dari besar ke kecil.  Tahun publikasi: Movie  Nilai rating: Rating SELECT m.year FROM Movie m, Rating r WHERE m.mID = r.mID AND r.stars IN (4, 5) ORDER BY m.year DESC Kalkulus Relasional 6
  • 7. Kueri 3  Ada reviewer yang tidak mencantumkan tanggal ketika mereka memberikan rating kepada sebuah film. Tampilkan nama semua reviewer yang tidak mencantumkan tanggal dalam rating mereka  tanggal rating: Rating  nama reviewer: Reviewer SELECT rv.name FROM Reviewer rv, Rating rt WHERE rv.rID = rt.rID AND rt.ratingDate IS NULL Kalkulus Relasional 7
  • 8. Fungsi Agregat  Fungsi agregatku ada lima, macam-macam ragamnya  MAX  MIN  SUM  AVG  COUNT  Aggregate: Mengumpulkan beberapa data Kalkulus Relasional 8
  • 9. Fungsi Agregat  Dicantumkan dalam klausa SELECT  Dikombinasikan dengan klausa GROUP BY SELECT MAX(stars) FROM Rating; SELECT MIN(stars) FROM Rating; SELECT COUNT(*) FROM Rating; SELECT AVG(stars) FROM Rating; Kalkulus Relasional 9
  • 10. Klausa GROUP BY  Menjelaskan atribut mana yang tidak diagregatkan SELECT rID, MAX(stars) FROM Rating GROUP BY rID;  Tampilkan nama reviewer dan nilai rating terkecil yang pernah mereka berikan. Urutkan berdasarkan nama reviewer.  nama reviewer: Reviewer  nilai rating: Rating  nilai rating terkecil: MIN(stars)  (lanjutkan) Kalkulus Relasional 10
  • 11. Bonus Time!  Tampilkan nama reviewer dan nilai rating terkecil yang pernah mereka berikan. Urutkan berdasarkan nama reviewer. SELECT rv.name, MIN(rt.stars) FROM Reviewer rv, Rating rt WHERE rv.rID = rt.rID GROUP BY rv.name ORDER BY rv.name; Kalkulus Relasional 11
  • 12. Latihan (Tugas Mandiri)  Tampilkan gaji minimum, gaji maksimum, jumlah gaji, dan rata-rata gaji untuk setiap jenis pekerjaan.  Tampilkan jumlah orang yang memiliki jenis pekerjaan yang sama.  Buat kueri yang menampilkan selisih antara gaji maksimum dengan gaji minimum. Beri label “Perbedaan Gaji”.
  • 13. Kombinasi dengan klausa WHERE  Apa beda antara SELECT rID, AVG(stars) FROM Rating GROUP BY rID ORDER BY rID;  dengan SELECT rID, AVG(stars) FROM Rating WHERE stars > 3 GROUP BY rID ORDER BY rID; Kalkulus Relasional 13
  • 14. Klausa HAVING  Tampilkan ID reviewer dan rata-rata rating yang pernah mereka berikan, yang nilai rata-ratanya lebih besar dari 3 SELECT rID, AVG(stars) FROM Rating GROUP BY rID ORDER BY rID HAVING AVG(stars) > 3; Kalkulus Relasional 14
  • 16. Menambahkan Baris Baru  Sisipkan sebuah baris baru yang berisi nilai untuk setiap field.  Tuliskan nilai-nilai tiap field sesuai urutan field dalam spesifikasi tabel  Secara opsional, tuliskan hanya field-field yang diperlukan. INSERT INTO departments(department_id, department_name, manager_id, location_id) VALUES (70, 'Public Relations', 100, 1700); 1 row created.  Apit data karakter dan waktu dalam sepasang single quote.
  • 17. Menyisipkan Baris Baru dengan Nilai Null kolom dari daftar kolom  Secara implisit: Hilangkan nama pada pernyataan INSERT. INSERT INTO departments (department_id, department_name ) VALUES (30, 'Purchasing'); 1 row created.  Secara eksplisit: Tuliskan keyword NULL pada klausa VALUES. INSERT INTO departments VALUES (100, 'Finance', NULL, NULL); 1 row created.
  • 18. Menyisipkan Nilai Khusus Fungsi SYSDATE mencatat tanggal dan waktu saat ini. INSERT INTO employees (employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id) VALUES (113, 'Louis', 'Popp', 'LPOPP', '515.124.4567', SYSDATE, 'AC_ACCOUNT', 6900, NULL, 205, 100); 1 row created.
  • 19. Menyisipkan Nilai Tanggal Tertentu INSERT INTO employees VALUES (114, 'Den', 'Raphealy', 'DRAPHEAL', '515.127.4561', TO_DATE('FEB 3, 1999', 'MON DD, YYYY'), 'AC_ACCOUNT', 11000, NULL, 100, 30); 1 row created.
  • 20. Menyalin Baris dari Tabel lain  Tuliskan pernyataan INSERT dengan sebuah subkueri. INSERT INTO sales_reps(id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE '%REP%'; 4 rows created.  Cocokkan jumlah kolom pada klausa INSERT dengan yang ada pada subkueri.  Jangan lupa mencocokkan tipe data.
  • 21. Mengubah Baris dalam Tabel  Baris tertentu diubah jika secara eksplisit klausa WHERE dituliskan. UPDATE employees SET department_id = 70 WHERE employee_id = 113; 1 row updated.  Semua baris dalam tabel akan diubah jika klausa WHERE dihilangkan. UPDATE copy_emp SET department_id = 110; 22 rows updated.
  • 22. Menghapus Baris dari Tabel  Baris tertentu dihapus menggunakan klausa WHERE. DELETE FROM departments WHERE department_name = 'Finance'; 1 row deleted.  Semua baris akan terhapus apabila klausa WHERE tidak dinyatakan secara eksplisit. DELETE FROM copy_emp; 22 rows deleted.  Klausa WHERE dapat menggunakan klausa IN.
  • 23. Pustaka  http://www.sqlite.org/  http://www.w3schools.com/sql/default.asp  http://www.sql.org/  http://www.sql-tutorial.net/  http://www.sqlzoo.net/  http://www.sqlcourse.com/  http://tjerdastangkas.blogspot.com/search/label/ikd312 Kalkulus Relasional 23