SlideShare ist ein Scribd-Unternehmen logo
1 von 21
BAB 6
                   STRUCTURE QUERY LANGUAGE (SQL)


       Tujuan Intruksional Khusus :
       Mahasiswa mampu memahami dan melakukan operasi-
       operasi manipulasi terhadap model basis data
       relasional menggunakan sintak-sintak operasi bahasa
       query SQL.


Bahasa formal yang diberikan pada bagian sebelumnya adalah merepresentasikan notasi
sederhana untuk melakukan query, sehingga untuk sistem basis data komersil
membutuhkan bahasa query yang lebih bersifat user friendly. Pada bagian ini akan
diberikan bahasa query yang banyak digunakan di pasar dunia, yaitu bahasa SQL. SQL
untuk mengkombinasikan konstruksi relasional aljabar dan relasional kalkulus. SQL
adalah sebagai bahasa query yang tidak hanya terbatas digunakan untuk query ke dalam
basis data, tetapi dapat digunakan untuk mendefinisikan struktur data, memodifikasi data,
dan menspesifikasikan security constraint. Atau dengan kata lain bahwa SQL, memiliki
kemampuan untuk Data Manipulation Language (DML) dan Data Definition Language
(DDL). Versi SQL yang digunakan pada modul ini, dan sekaligus yang banyak
digunakan di pasar dunia adalah versi SQL 1999.

6.1. Struktur Dasar
SQL adalah didasarkan pada himpunan operasi-operasi relasional yang telah dilakukan
modifikasi dan perbaikan. Struktur dasar SQL terdiri dari tiga klausa, yaitu SELECT,
FROM, dan WHERE :
      SELECT berkorespondensi dengan operasi Projection pada relasional aljabar.
       SELECT digunakan untuk menampilkan list atribut pada hasil query.
      FROM berkorespondensi dengan operasi Cartesian product pada relasional aljabar.
       FROM digunakan sebagai list suatu relasi (tabel) yang akan di proses dan di
       evaluasi.




Structure Query Language (SQL)                                                        56
      WHERE berkorespondensi dengan operasi Selection pada relasional aljabar.
            WHERE terdiri dari predikat yang meliputi atribut dalam relasi yang muncul pada
            klausa FROM.


Secara umum tipikal query dengan menggunakan SQL memiliki bentuk sebagai berikut :
            SELECT A1 , A2 ,..., An

            FROM r1 , r2 ,..., rn
            WHERE P
Dimana :
A1 , A2 ,..., An     : merepresentasikan atribut
r1 , r2 ,..., rn     : merepresentasikan relasi (tabel)
P                    : adalah predikat, dengan P = TRUE.

Sintak query SQL adalah ekuivalen dengan ekspresi relasional aljabar sebagai berikut :
                                      π A1 , A2 ,..., An ( σ P ( r1 × r2 × ... × rn ) )

Untuk contoh-contoh yang diberikan pada modul ini, akan menggunakan skema basis
data supplier dan part yang diberikan pada gambar 6.1.

                                              Tabel SUPPLIER




Structure Query Language (SQL)                                                            57
Tabel PARTS




                                    Tabel SHIPMENT




                    Gambar 6.1. Skema Basis Data Supplier dan Part

6.1.1. Klausa SELECT
Diberikan suatu query sederhana dengan menggunakan skema basis data pada gambar
6.1., yaitu menentukan nama-nama semua kota (CITY) yang terdapat pada tabel PARTS :
               SELECT CITY
               FROM PARTS
Hasil query perintah SQL diatas adalah suatu relasi (tabel), yaitu :




Structure Query Language (SQL)                                                  58
Hasil query di atas akan mengambil semua tuples yang terdapat pada header (atribut)
CITY, sehingga duplikasi tuple terjadi. Untuk menghindari duplikasi yang terdapat pada
tuple dapat dilakukan dengan menambahkan DISTINCT setelah SELECT. Jika sintak
query di atas di rubah menjadi :
               SELECT DISTINCT CITY
               FROM PARTS
maka hasil query-nya menjadi :




Untuk menampilkan semua atribut yang terdapat pada relasi sebagai hasil query, dapat
digunakan simbol asterisk ‘*’. Klausa SELECT dapat juga berisi ekspresi aritmatika,
yang meliputi operasi +, -, *, dan /.
Misalkan diberikan sintak SQL :
               SELECT COLOR, WEIGHT * 10
               FROM PARTS
Sehingga akan diperoleh relasi sebagai hasil query sebagai berikut :




Structure Query Language (SQL)                                                     59
6.1.2. Klausa WHERE
Klausa WHERE digunakan untuk menentukan predikat atau kriteria yang harus di penuhi
suatu relasi sebagai hasil query. Klausa ini bersifat opsional, yaitu dapat menggunakan
klausa WHERE atau tidak. Jika tidak menggunakan klausa WHERE, maka query dilakukan
untuk semua tuples pada tabel yang disebutkan pada klausa FROM.
Misalkan, untuk menampilkan semua tuples SUPPLIER yang memiliki STATUS = 20.
Perintah SQL-nya adalah :
              SELECT *
              FROM SUPPLIER
              WHERE STATUS = 20
Hasil query perintah SQL diatas adalah :




Nilai predikat yang terdapat klausa WHERE, untuk tipe string harus diberikan tanda petik
tunggal, sedangkan untuk tipe numerik tidak menggunakan tanda petik tunggal.
Misalkan, untuk menampilkan semua tuples SUPPLIER yan berada di semarang :
Perintah SQL-nya adalah :
              SELECT *
              FROM SUPPLIER
              WHERE CITY = ‘Semarang’
Hasil query perintah SQL diatas adalah :




Structure Query Language (SQL)                                                       60
Predikat pada klausa WHERE dapat dikombinasikan dengan operator relasi lainnya,
seperti <, <=, >, >=, <>, dan operator logika, seperti AND, OR, NOT.
Misalkan, untuk menampilkan semua SUPPLIER yang memiliki STATUS = 30, tetapi
berada pada kota(CITY) Yogyakarta :
Perintah SQL-nya adalah :
              SELECT *
              FROM SUPPLIER
              WHERE STATUS = 30 AND CITY = ‘Yogyakarta’
Hasil query perintah SQL diatas adalah :




Klausa WHERE dapat digunakan untuk melakukan query dengan predikat yang berbentuk
suatu range nilai tertentu, yaitu dengan menambahkan klausa BETWEEN.
Misalkan, untuk menampilkan SUPPLIER yang memiliki STATUS antara 10 sampai
dengan 30 :
Perintah SQL-nya adalah :
              SELECT *
              FROM SUPPLIER
              WHERE STATUS BETWEEN 20 AND 30
Hasil query perintah SQL diatas adalah :




Structure Query Language (SQL)                                                61
Untuk atribut yang bertipe string dapat dilakukan suatu pencarian dengan pola tertentu,
yaitu dengan memanfaatkan karakter ‘%’ atau ‘_’ (underscore) dan menambahkan klausa
LIKE pada klausa WHERE :
      ‘%’ untuk semua substring
      ‘_’ untuk semua karakter pada posisi yang sesuai.
Misalkan, untuk menampilkan semua tuples SUPPLIER yang kotanya (CITY) di awali
dengan huruf ‘S’ :
Perintah SQL-nya adalah :
               SELECT *
               FROM SUPPLIER
               WHERE STATUS LIKE ‘S%’
Hasil query perintah SQL diatas adalah :




Sedangkan untuk menampilkan semua SUPPLIER yang karakter kedua dari kota (CITY)
adalah karakter ‘o’ :
Perintah SQL-nya adalah :
               SELECT *
               FROM SUPPLIER
               WHERE STATUS LIKE ‘_o%’
Hasil query perintah SQL diatas adalah :




6.1.3. Klausa FROM
Klausa FROM digunakan untuk menentukan tabel yang akan dijadikan sebagai sumber
untuk pencarian data.
Dalam melakukan query tidak hanya terbatas pada satu tabel, tetapi sering kali
dibutuhkan untuk merelasikan beberapa tabel sekaligus. Hal ini dilakukan, karena atribut-




Structure Query Language (SQL)                                                        62
atribut yang diharapkan sebagai hasil query tidak hanya terdapat pada satu tabel, tetapi
berada pada beberapa tabel.
Misalkan, untuk menampilkan semua SUPPLIER yang melakukan SHIPMENT dengan
jumlah kuantitasnya lebih besar 300 :
Perintah SQL-nya adalah :
              SELECT *
              FROM SUPPLIER, SHIPMENT
              WHERE SUPPLIER.SCODE=SHIPMENT.SCODE
                       AND SHIPMENT.QTY > 300
Hasil query perintah SQL diatas adalah :




Dalam melakukan query untuk dua tabel atau lebih tidak dapat dilakukan sembarang.
Tabel-tabel yang digunakan harus memiliki keterhubungan. Pada contoh query di atas
keterhubungan diwakili oleh nilai yang sama pada atribut SCODE yang diwakili oleh
kedua tabel yang digunakan. Ekspresi SUPPLIER.SCODE adalah menunjukan nilai
SCODE yang berasal dari tabel SUPPLIER, sedangkan SHIPMENT.SCODE adalah
menunjukan nilai SCODE yang berasal dari tabel SHIPMENT.

Untuk menghindari ketidakjelasan atribut yang terlihat pada relasi sebagai hasil query,
dapat dilakukan dengan cara menyebutkan nama tabel yang terdapat pada klausa FROM.
Dan untuk menyederhanakan cara penulisan, dapat digunakan nama alias untuk tabel-
tabel yang terdapat pada klausa FROM.
Misalkan, untuk menampilkan nama-nama SUPPLIER yang melakukan SHIPMENT
dengan jumlah kuantitasnya lebih besar 300 :
Perintah SQL-nya adalah :
              SELECT SU.SNAME
              FROM SUPPLIER SU, SHIPMENT SH
              WHERE SU.SCODE=SH.SCODE


Structure Query Language (SQL)                                                       63
AND SH.QTY > 300
Hasil query perintah SQL diatas adalah :




Header (atribut) pada relasi sebagai hasil query dapat dilakukan perubahan, yaitu dengan
menambahkan klausa AS setelah nama atribut yang akan dilakukan perubahan namanya.
Misalkan, dari query sebelumnya akan dilakukan perubahan untuk atribut SNAME
menjadi NAMA_SUPPLIER :
Perintah SQL-nya adalah :
              SELECT SU.SNAME AS NAMA_SUPPLIER
              FROM SUPPLIER SU, SHIPMENT SH
              WHERE SU.SCODE=SH.SCODE
                       AND SH.QTY > 300
Hasil query perintah SQL diatas adalah :




6.1.4. Pengurutan Hasil Query
Pada saat menggunakan ekspresi dasar SQL (SELECT, WHERE, dan FROM), hasil query
ditampilkan dengan urutan sesuai dengan urutan kronologis penyimpanan tabel yang
dilakukan query. Jika ingin menampilkan hasil query berdasarkan urutan atribut tertentu,
maka dapat dilakukan dengan menambahkan klausa ORDER BY. Default yang diberikan
klausa ORDER BY adalah urutan secara menial (ASC), tetapi untuk merubah menjadi
urutan secara menurun, dapat dilakukan dengan menambahkan klausa DESC setelah
nama atribut yang dilakukan pengurutan.
Misalkan, untuk melakukan pengurutan secara menurun terhadap SUPPLIER
berdasarkan STATUS-nya :


Structure Query Language (SQL)                                                       64
Perintah SQL-nya adalah :
                SELECT *
                FROM SUPPLIER
                ORDER BY STATUS DESC
Hasil query perintah SQL diatas adalah :




Klausa ORDER BY dapat juga dikombinasikan dengan klausa WHERE untuk melakukan
query.
Misalkan, untuk menampilkan semua nama-nama SUPPLIER yang STATUS-nya sama
dengan 30 dan hasil query-nya dilakukan pengurutan secara menurun :
Perintah SQL-nya adalah :
                SELECT SNAME
                FROM SUPPLIER
                WHERE STATUS = 30
                ORDER BY SNAME DESC
Hasil query perintah SQL diatas adalah :




6.2. Fungsi Agregasi
Dalam melakukan suatu query, terkadang dibutuhkan untuk melakukan perhitungan
jumlah tuples, total nilai suatu atribut, nilai atribut terbesar atau terkecil, dan menentukan
nilai rata-rata suatu atribut.
Untuk memenuhi kondisi-kondisi di atas, SQL sebagai bahasa query menyediakan
fungsi-fungsi agregasi sebagai berikut.


Structure Query Language (SQL)                                                             65
   AVG
       Untuk memperoleh nilai rata-rata suatu atribut yang bertipe numerik.
      MIN
       Untuk memperoleh nilai terkecil suatu atribut yang bertipe numerik.
      MAX
       Untuk memperoleh nilai terbesar suatu atribut yang bertipe numerik.
      SUM
       Untuk memperoleh nilai total suatu atribut yang bertipe numerik.
      COUNT
       Untuk memperoleh nilai banyaknya tuples.
Untuk peggunaan fungsi-fungsi agregasi di atas, diberikan contoh-contoh penerapan
fungsi agregasi pada suatu query sebagai berikut:
      Menghitung banyaknya tuples pada tabel SHIPMENT
       Perintah SQL-nya adalah :
               SELECT COUNT(*)
               FROM SHIPMENT
       Hasil query perintah SQL diatas adalah :




      Menampilkan total berat (WEIGHT) untuk semua PARTS
       Perintah SQL-nya adalah :
               SELECT SUM(WEIGHT)
               FROM PARTS
       Hasil query perintah SQL diatas adalah :




      Menghitung rata-rata kuantitas (QTY) untuk semua SHIPMENT
       Perintah SQL-nya adalah :
               SELECT AVG(QTY)
               FROM SHIPMENT
       Hasil query perintah SQL diatas adalah :


Structure Query Language (SQL)                                                66
   Menentukan nilai STATUS yang terbesar untuk SUPPLIER
       Perintah SQL-nya adalah :
              SELECT MAX(STATUS)
              FROM SUPPLIER
       Hasil query perintah SQL diatas adalah :




      Menentukan nilai kuantitas (QTY) yang terkecil untuk SHIPMENT
       Perintah SQL-nya adalah :
              SELECT MIN(QTY)
              FROM SHIPMENT
       Hasil query perintah SQL diatas adalah :




Fungsi agregasi dapat juga dikombinasikan dengan klausa GROUP          BY, untuk
menyatakan pengelompokan tuple hasil query.
Misalkan, untuk menampilkan banyaknya tuple dan jumlah kuantitas (QTY) untuk
SHIPMENT yang dikelompokan berdasarkan PARTS (PCODE) dengan urutan secara
menaik:
Perintah SQL-nya adalah :
              SELECT PCODE, COUNT(*), SUM(QTY)
              FROM SHIPMENT
              GROUP BY PCODE
              ORDER BY PCODE
Hasil query perintah SQL diatas adalah :




Structure Query Language (SQL)                                                67
6.3. Nilai NULL
Atribut-atribut yang terdapat pada suatu tabel belum tentu sudah memiliki nilai (data).
Atribut yang belum memiliki nilai, biasanya diisi dengan nilai khusus, yang disebut
NULL. Nilai NULL pada suatu query dapat diperlakukan secara khusus, yaitu dapat juga
diperlakukan untuk query menggunakan ekspresi SQL.
Misalkan, menampilkan atribut CITY dari tabel SUPPLIER yang masih kosong :
Perintah SQL-nya adalah :
               SELECT DISTINCT SCODE
               FROM SUPPLIER
               WHERE CITY is NULL
Hasil query perintah SQL diatas adalah : Tidak menampilkan hasil apapun, karena semua
atribut CITY sudah diisi dengan data.
Dapat juga dilkakukan untuk menghitung banyaknya nama SUPPLIER yang STATUS-
nya sudah terisi (tidak kosong) :
Perintah SQL-nya adalah :
               SELECT COUNT(*)
               FROM SUPPLIER
               WHERE STATUS is NOT NULL
Hasil query perintah SQL diatas adalah :




Structure Query Language (SQL)                                                      68
Ekspresi SQL di atas akan memiliki hasil yang sama dengan ekspresi SQL berikut ini :
                 SELECT COUNT(SNAME)
                 FROM SUPPLIER
6.4. Manipulasi Data (DML)
Operasi-operasi manipulasi data terdiri dari penambahan tuple baru, pengubahan nilai
atribut, dan penghapusan tuple pada suatu tabel. SQL juga dilengkapi dengan sejumlah
ekspresi dan perintah untuk melakukan manipulasi data.

6.4.1. Penambahan Tuple (Record)
Sintak SQL untuk penambahan tuple baru ke suatu tabel adalah :
                 INSERT INTO t [ ( A1 , A2 ,..., An ) ]

                 VALUES (V1 , V2 ,..., Vn )
dimana :
       t                  : nama relasi (tabel) yang akan dilakukan penambahan tuple
       A1 , A2 ,..., An   : nama-nama atribut yang akan di isi nilainya

      V1 , V2 ,..., Vn    : nilai-nilai yang akan diisikan pada atribut-atribut.
Nama atribut-atribut pada tabel dapat tidak dituliskan, jika akan mengisikan nilai ke
semua atribut dengan urutan atribut sesuai dengan pendefinisian struktur yang dilakukan
pada saat awal pembuatan tabel. Tetapi jika urutan atribut berbeda atau atribut yang akan
diisikan nilainya tidak pada semua atribut, maka nama-nama atribut yang akan di isi
nilainya harus dituliskan.
Misalkan, untuk menambahkan tuple pada tabel SUPPLIER :
Perintah SQL-nya adalah :
                 INSERT INTO SUPPLIER
                 VALUES ('S6','YOSHINTA',20,'Semarang')
Hasil query perintah SQL diatas adalah :




Structure Query Language (SQL)                                                          69
tuple baru yang
                                                            ditambahkan pada
                                                            tabel SUPPLIER




Ekspresi perintah SQL di atas, dapat juga dituliskan menggunakan ekspresi SQL :
               INSERT INTO SUPPLIER (SCODE,SNAME,STATUS,CITY)
               VALUES ('S6','YOSHINTA',20,'Semarang')
Untuk nama atribut yang tidak disebutkan pada perintah INSERT, atribut-atribut
tersebut akan di isi dengan nilai NULL.
Misalkan, perintah SQL sebagai berikut :
               INSERT INTO SUPPLIER (SCODE,SNAME,STATUS)
               VALUES ('S7','MIRANTHI',20)
Hasil query perintah SQL diatas adalah :




                                                              nilai NULL atribut
                                                              CITY         yang
                                                              ditambahkan pada
                                                              tabel SUPPLIER




6.4.2. Pengubahan Tuple (Record)
Sintak SQL untuk mengubah nilai atribut pada tuple dari sebuah tabel adalah :
               UPDATE t
               SET assignment
               [ WHERE P ]
dimana :


Structure Query Language (SQL)                                                     70
   t adalah nama tabel yang akan dilakukan perubahan atribut pada suatu tuple
      assignment adalah ekspresi nilai baru untuk suatu atribut yang akan dilakukan
       perubahan
      P adalah merupakan predikat untuk tuple yang akan dilakukan perubahan. Jika
       klausa WHERE tidak digunakan, maka perubahan akan dilakukan pada semua
       tuple pada tabel t .
Misalkan, untuk mengubah nilai atribut CITY untuk SUPPLIER dengan SCODE = ‘S6’ :
Perintah SQL-nya adalah :
               UPDATE SUPPLIER
               SET CITY = 'Purwodadi'
               WHERE SCODE = ‘S6’
Hasil query perintah SQL diatas adalah :



                                                             nilai atribut CITY
                                                             yang di rubah
                                                             menjadi
                                                             ‘Purwodadi’ pada
                                                             tabel SUPPLIER




Untuk melakukan perubahan semua nilai atribut CITY pada tabel SUPPLIER, yang di isi
dengan nilai ‘Purwodadi’, dilakukan dengan perintah SQL :
               UPDATE SUPPLIER
               SET CITY = 'Purwodadi'

6.4.3. Penghapusan Tuple (Record)
Sintak SQL untuk menghapus tuple pada suatu tabel adalah :
               DELETE FROM t
               [ WHERE P ]
dimana :
      t adalah nama tabel yang akan dilakukan penghapusan tuple




Structure Query Language (SQL)                                                      71
    P adalah merupakan predikat untuk tuple yang akan dihapus. Jika klausa WHERE
       tidak digunakan, maka penghapusan akan dilakukan pada semua tuple pada tabel
       t.
Misalkan, untuk menghapus SUPPLIER dengan nama YOSHINTA :
Perintah SQL-nya adalah :
                 DELETE FROM SUPPLIER
                 WHERE SNAME = ‘YOSHINTA’
Hasil query perintah SQL diatas adalah : tuple dengan SNAME = YOSHINTA telah di
hapus dari tabel SUPPLIER.

Sedangkan, untuk menghapus semua tuple pada SUPPLIER dapat dilakukan dengan
perintah SQL :
                 DELETE FROM SUPPLIER


6.5. Transaksi
Suatu transaksi terdiri dari sekumpulan perintah-perintah query dan/atau operasi
manipulasi data. Perintah-perintah manipulasi data belum di simpan / di tulis pada disk,
jika belum diberikan perintah transaksi.
Perintah transaksi yang harus digunakan sebagai akhir transaksi adalah :
      commit [ work ]
       Operasi-operasi manipulasi data yang telah dilakukan, akan di simpan secara
       permanen ke dalam disk dan transaksi dinyatakan selesai. Setelah transaksi
       commit, secara otomatis transaksi baru di mulai.
      rollback [ work ]
       Operasi-operasi manipulasi data yang belum dilakukan commit akan dibatalkan
       (tidak disimpan secara permanen ke dalam disk). Sehingga kondisi basis data
       yang di simpan pada disk tidak akan mengalami perubahan, seperti sebelum
       transaksi rollback di eksekusi.
Work pada perintah transaksi commit dan rollback bersifat opsional dan tidak
memberikan pengaruh terhadap makna kedua perintah transaksi tersebut.




Structure Query Language (SQL)                                                       72
6.6. Data Definition Language (DDL)
DDL adalah perintah-perintah untuk mendefinisikan objek-objek basis data, dimana tidak
hanya sekumpulan relasi (tabel), tetapi juga tentang informasi setiap tabel, yaitu meliputi
sebagai berikut :
      Skema untuk setiap tabel
      Domain nilai untuk setiap atribut
      Integritas constraints
      Indek untuk setiap tabel
      Informasi security dan authorization untuk setiap tabel
      Struktur fisik penyimpanan untuk setiap tabel pada disk.
Sintak SQL untuk membuat tabel di dalam basis data adalah :
                 CREATE TABLE t [ ( A1 D1 , A2 D2 ,..., An Dn ) ]
dimana :
      t                   : adalah nama tabel
       A1 , A2 ,..., An   : adalah nama-nama atribut yang dimiliki oleh tabel t

       D1 , D2 ,..., Dn : adalah domain nilai masing-masing atribut yang ditentukan

       berdasarkan tipe data
Untuk domain tipe data meliputi sebagai berikut :
      char(n)
       Tipe string dengan panjang tetap sebesar n karakter (jika panjang karakter yang
       diisikan kurang dari n, maka sisanya di isi dengan spasi)
      varchar(n)
       Tipe string dengan panjang fleksibel, tetapi maksimal sebanyak n karakter.
      int atau integer
       Tipe integer 2 byte.
      smallint
       Tipe integer 1 byte.
      real, double, precision
       Tipe pecahan decimal floating point.
      float(n)
       Tipe pecahan decimal floating point dengan presisi n digit.


Structure Query Language (SQL)                                                          73
   date
       Tipe tanggal (terdiri 4 digit tahun, bulan, dan tanggal).
      time
       Tipe waktu (terdiri dari jam, menit, dan detik)
Misalkan, untuk membuat tabel SUPPLIER :
Perintah SQL-nya adalah :
              CREATE TABLE SUPPLIER
              ( SCODE char(3),
                 SNAME varchar(20),
                 STATUS int,
                 CITY varchar (15))
Dalam melakukan pembuatan tabel dapat juga dilakukan untuk menambahkan suatu
indek primer berdasarkan atribut tertentu, yaitu dengan cara menggunakan klausa
PRIMARY KEY.
Misalkan, pada tabel SUPPLIER di atas memiliki indek berdasarakan atribut SCODE :
Perintah SQL-nya adalah :
              CREATE TABLE SUPPLIER
              ( SCODE char(3) NOT NULL,
                 SNAME varchar(20),
                 STATUS int,
                 CITY varchar (15),
                 PRIMARY KEY (SCODE))
Jika suatu tabel memiliki indek secara komposit (gabungan), maka dilakukan dengan cara
menuliskan semua atribut pada kalusa PRIMARY KEY.
Misalkan pada tabel SUPPLIER memiliki indek SCODE dan SNAME :
Perintah SQL-nya adalah :
              CREATE TABLE SUPPLIER
              ( SCODE char(3) NOT NULL,
                 SNAME varchar(20) NOT NULL,
                 STATUS int,
                 CITY varchar (15),



Structure Query Language (SQL)                                                      74
PRIMARY KEY (SCODE,SNAME))
Keberadaan tabel yang telah dibuat dapat dibatalkan atau di hapus dengan menggunakan
perintah SQL :
                 DROP TABLE t
t adalah nama tabel yang di hapus. Misalkan tabel SUPPLIER akan dihapus :
Perintah SQL-nya adalah :
                 DROP TABLE SUPPLIER
Struktur tabel yang telah dibut dapat dilakukan perubahan, tanpa harus menghapus tabel
dan kemudian membangunnya kembali dengan definisi struktur yang baru. Perubahan
struktur menjadi lebih praktis, dan juga tidak mengakibatkan hilangnya data yang sudah
ada pada tabel (jika data sudah ada).
Perubahan struktur terdiri dari :
Penambahan atribut
Sintak SQL :
                 ALTER TABLE t ADD A D
t adalah nama tabel yang dilakukan perubahan, A adalah nama atribut, dan D adalah
tipe data untuk atribut A .
Penghapusan atribut
Sintak SQL :
                 ALTER TABLE t DROP A
t adalah nama tabel yang dilakukan perubahan, dan A adalah nama atribut.
Misalkan, untuk menambahkan atribut DATE_OF_BORN pada tabel SUPPLIER :
Perintah SQL-nya adalah :
                 ALTER TABLE SUPPLIER ADD DATE_OF_BORN date
Dan untuk menghapus atribut DATE_OF_BORN pada tabel SUPPLIER, dilakukan
dengan perintah SQL :
                 ALTER TABLE SUPPLIER DROP DATE_OF_BORN




Structure Query Language (SQL)                                                     75
6.7. SOAL-SOAL LATIHAN
Dari skema yang diberikan pada gambar 5.9, maka lakukanlah operasi manipulasi data
menggunakan perintah SQL untuk soal-soal latihan berikut ini :
1. Menampilkan nama pengarang dan kategori yang identitas kategorinya adalah 1
2. Menampilkan judul, pengarang dan harga buku yang dipromosikan
3. Menampilkan judul, pengarang dan harga buku yang judul bukunya memiliki
   keyword XML
4. Menampilkan judul, pengarang dan harga buku yang pengarang bukunya memiliki
   keyword JEFF
5. Menampilkan nama pelanggan yang melakukan order dengan pembayaran
   menggunakan Credit Card
6. Menampilkan nama customer yang melakukan orders satu judul buku dengan jumlah
   lebih besar sama dengan 2
7. Menampilkan nama dan alamat customer yang melakukan orders dengan alamat
   semarang
8. Menghitung banyaknya jumlah judul buku yang memiliki keyword XML
9. Menampilkan judul dan pengarang buku yang memiliki kategori JSP
10. Menampilkan judul dan pengarang buku yang memiliki kategori JSP yang diurutkan
   secara menurun berdasarkan pengarang
11. Menampilkan nama customer yang tidak pernah melakukan orders
12. Menampilkan judul dan harga buku yang memiliki keyword JAVA dan harganya
   lebih besar sama dengan 30




Structure Query Language (SQL)                                                   76

Weitere ähnliche Inhalte

Was ist angesagt?

Teori bahasa dan automata1
Teori bahasa dan automata1Teori bahasa dan automata1
Teori bahasa dan automata1Nurdin Al-Azies
 
Laporan Basis Data (DDL)
Laporan Basis Data (DDL)Laporan Basis Data (DDL)
Laporan Basis Data (DDL)dhini eka
 
Tugas IMK : Ragam Dialog
Tugas IMK : Ragam DialogTugas IMK : Ragam Dialog
Tugas IMK : Ragam DialogPio
 
Kd1 Struktur Hirarki Database
Kd1 Struktur Hirarki DatabaseKd1 Struktur Hirarki Database
Kd1 Struktur Hirarki DatabaseDesty Yani
 
4 diagram relasi antar entitas (ERD)
4 diagram relasi antar entitas (ERD)4 diagram relasi antar entitas (ERD)
4 diagram relasi antar entitas (ERD)Simon Patabang
 
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman TerstrukturKelinci Coklat
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Debby Ummul
 
Struktur Pemrograman Java
Struktur Pemrograman JavaStruktur Pemrograman Java
Struktur Pemrograman Javaroji muhidin
 
MATERI SISTEM KOMPUTER KELAS X
MATERI SISTEM KOMPUTER KELAS XMATERI SISTEM KOMPUTER KELAS X
MATERI SISTEM KOMPUTER KELAS Xndriehs
 
Cara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada javaCara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada javaDevandy Enda
 
Stored Procedure
Stored ProcedureStored Procedure
Stored ProcedurePutra Andry
 
Cara install apache, mysql, php, dan phpmyadmin pada freebsd 10
Cara install apache, mysql, php, dan phpmyadmin pada freebsd 10Cara install apache, mysql, php, dan phpmyadmin pada freebsd 10
Cara install apache, mysql, php, dan phpmyadmin pada freebsd 10manafhsb
 

Was ist angesagt? (20)

Pbo
PboPbo
Pbo
 
Teori bahasa dan automata1
Teori bahasa dan automata1Teori bahasa dan automata1
Teori bahasa dan automata1
 
Contoh soal uts perancangan basis data
Contoh soal uts perancangan basis dataContoh soal uts perancangan basis data
Contoh soal uts perancangan basis data
 
Laporan Basis Data (DDL)
Laporan Basis Data (DDL)Laporan Basis Data (DDL)
Laporan Basis Data (DDL)
 
Tugas IMK : Ragam Dialog
Tugas IMK : Ragam DialogTugas IMK : Ragam Dialog
Tugas IMK : Ragam Dialog
 
Algoritma Pemrograman - Perintah Input/Output
Algoritma Pemrograman - Perintah Input/OutputAlgoritma Pemrograman - Perintah Input/Output
Algoritma Pemrograman - Perintah Input/Output
 
Kd1 Struktur Hirarki Database
Kd1 Struktur Hirarki DatabaseKd1 Struktur Hirarki Database
Kd1 Struktur Hirarki Database
 
4 diagram relasi antar entitas (ERD)
4 diagram relasi antar entitas (ERD)4 diagram relasi antar entitas (ERD)
4 diagram relasi antar entitas (ERD)
 
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
 
SQL : introduction
SQL : introductionSQL : introduction
SQL : introduction
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
 
Struktur Pemrograman Java
Struktur Pemrograman JavaStruktur Pemrograman Java
Struktur Pemrograman Java
 
MATERI SISTEM KOMPUTER KELAS X
MATERI SISTEM KOMPUTER KELAS XMATERI SISTEM KOMPUTER KELAS X
MATERI SISTEM KOMPUTER KELAS X
 
07. menggunakan fungsi
07. menggunakan fungsi07. menggunakan fungsi
07. menggunakan fungsi
 
Oracle: Functions
Oracle: FunctionsOracle: Functions
Oracle: Functions
 
Cara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada javaCara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada java
 
Daya guna
Daya gunaDaya guna
Daya guna
 
Stored Procedure
Stored ProcedureStored Procedure
Stored Procedure
 
Cara install apache, mysql, php, dan phpmyadmin pada freebsd 10
Cara install apache, mysql, php, dan phpmyadmin pada freebsd 10Cara install apache, mysql, php, dan phpmyadmin pada freebsd 10
Cara install apache, mysql, php, dan phpmyadmin pada freebsd 10
 
Laporan tugas struktur data
Laporan tugas struktur dataLaporan tugas struktur data
Laporan tugas struktur data
 

Andere mochten auch

Bab 4. Model Entity Relationship
Bab 4. Model Entity RelationshipBab 4. Model Entity Relationship
Bab 4. Model Entity RelationshipZaenal Abidin
 
Bab 7. Normalisasi Data
Bab 7. Normalisasi DataBab 7. Normalisasi Data
Bab 7. Normalisasi DataZaenal Abidin
 
Bab 1 Konsep Dasar Basis Data
Bab 1 Konsep Dasar Basis DataBab 1 Konsep Dasar Basis Data
Bab 1 Konsep Dasar Basis DataZaenal Abidin
 
Bab 2. Aplikasi Basis Data
Bab 2. Aplikasi Basis DataBab 2. Aplikasi Basis Data
Bab 2. Aplikasi Basis DataZaenal Abidin
 
iOS 7 Concept: Welcome to the future of the iPhone
iOS 7 Concept: Welcome to the future of the iPhoneiOS 7 Concept: Welcome to the future of the iPhone
iOS 7 Concept: Welcome to the future of the iPhoneSimply Zesty Ltd
 

Andere mochten auch (6)

Bab 4. Model Entity Relationship
Bab 4. Model Entity RelationshipBab 4. Model Entity Relationship
Bab 4. Model Entity Relationship
 
Bab 7. Normalisasi Data
Bab 7. Normalisasi DataBab 7. Normalisasi Data
Bab 7. Normalisasi Data
 
Bab 1 Konsep Dasar Basis Data
Bab 1 Konsep Dasar Basis DataBab 1 Konsep Dasar Basis Data
Bab 1 Konsep Dasar Basis Data
 
Bab 5
Bab 5Bab 5
Bab 5
 
Bab 2. Aplikasi Basis Data
Bab 2. Aplikasi Basis DataBab 2. Aplikasi Basis Data
Bab 2. Aplikasi Basis Data
 
iOS 7 Concept: Welcome to the future of the iPhone
iOS 7 Concept: Welcome to the future of the iPhoneiOS 7 Concept: Welcome to the future of the iPhone
iOS 7 Concept: Welcome to the future of the iPhone
 

Ähnlich wie Bab 6. SQL

file_2013-09-24_11_21_37_WIBOWO_WICAKSONO,_ST.,M.Kom__5._SQL2.ppt
file_2013-09-24_11_21_37_WIBOWO_WICAKSONO,_ST.,M.Kom__5._SQL2.pptfile_2013-09-24_11_21_37_WIBOWO_WICAKSONO,_ST.,M.Kom__5._SQL2.ppt
file_2013-09-24_11_21_37_WIBOWO_WICAKSONO,_ST.,M.Kom__5._SQL2.pptlumaeducation
 
Modul my sql tutorial part 5
Modul my sql tutorial part 5Modul my sql tutorial part 5
Modul my sql tutorial part 5Ratzman III
 
Jeni Web Programming Bab 5 Sql Dan Jdbc
Jeni Web Programming Bab 5 Sql Dan JdbcJeni Web Programming Bab 5 Sql Dan Jdbc
Jeni Web Programming Bab 5 Sql Dan JdbcIndividual Consultants
 
T modul 5 mysql
T modul 5 mysqlT modul 5 mysql
T modul 5 mysqljafra
 
Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)Devi Apriansyah
 
Di2k sq lite-command-line
Di2k sq lite-command-lineDi2k sq lite-command-line
Di2k sq lite-command-linefajarnugroho_id
 
Materi 3 Penjelasan tentang SQL DDL dan DML
Materi 3 Penjelasan tentang SQL DDL dan DMLMateri 3 Penjelasan tentang SQL DDL dan DML
Materi 3 Penjelasan tentang SQL DDL dan DMLilma207681
 
Praktikum Pertama SQL Structure Query Language
Praktikum Pertama SQL Structure Query LanguagePraktikum Pertama SQL Structure Query Language
Praktikum Pertama SQL Structure Query LanguageErwan Usmawan
 
SQL (Structured query language).pptx
SQL (Structured query language).pptxSQL (Structured query language).pptx
SQL (Structured query language).pptxBagusSantoso44
 
matrei perkuliahana tentang SQL Overview.ppt
matrei perkuliahana tentang SQL Overview.pptmatrei perkuliahana tentang SQL Overview.ppt
matrei perkuliahana tentang SQL Overview.ppterlandarmawan2
 
T3 – Query Lanjutan [1]
T3 – Query Lanjutan [1]T3 – Query Lanjutan [1]
T3 – Query Lanjutan [1]Siska Amelia
 
_03.Relational Algebra and Calculus_ok.pptx
_03.Relational Algebra and Calculus_ok.pptx_03.Relational Algebra and Calculus_ok.pptx
_03.Relational Algebra and Calculus_ok.pptxBelboisCluster
 

Ähnlich wie Bab 6. SQL (20)

file_2013-09-24_11_21_37_WIBOWO_WICAKSONO,_ST.,M.Kom__5._SQL2.ppt
file_2013-09-24_11_21_37_WIBOWO_WICAKSONO,_ST.,M.Kom__5._SQL2.pptfile_2013-09-24_11_21_37_WIBOWO_WICAKSONO,_ST.,M.Kom__5._SQL2.ppt
file_2013-09-24_11_21_37_WIBOWO_WICAKSONO,_ST.,M.Kom__5._SQL2.ppt
 
Pengantar SQL
Pengantar SQLPengantar SQL
Pengantar SQL
 
Modul my sql tutorial part 5
Modul my sql tutorial part 5Modul my sql tutorial part 5
Modul my sql tutorial part 5
 
Oracle sql
Oracle sqlOracle sql
Oracle sql
 
Jeni Web Programming Bab 5 Sql Dan Jdbc
Jeni Web Programming Bab 5 Sql Dan JdbcJeni Web Programming Bab 5 Sql Dan Jdbc
Jeni Web Programming Bab 5 Sql Dan Jdbc
 
T modul 5 mysql
T modul 5 mysqlT modul 5 mysql
T modul 5 mysql
 
Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)
 
Di2k sq lite-command-line
Di2k sq lite-command-lineDi2k sq lite-command-line
Di2k sq lite-command-line
 
Bab. 8
Bab. 8Bab. 8
Bab. 8
 
SQL Data Definition
SQL Data DefinitionSQL Data Definition
SQL Data Definition
 
Materi 3 Penjelasan tentang SQL DDL dan DML
Materi 3 Penjelasan tentang SQL DDL dan DMLMateri 3 Penjelasan tentang SQL DDL dan DML
Materi 3 Penjelasan tentang SQL DDL dan DML
 
Basisdata sql
Basisdata   sqlBasisdata   sql
Basisdata sql
 
Praktikum Pertama SQL Structure Query Language
Praktikum Pertama SQL Structure Query LanguagePraktikum Pertama SQL Structure Query Language
Praktikum Pertama SQL Structure Query Language
 
Materi sql server 3 eresha
Materi sql server 3 ereshaMateri sql server 3 eresha
Materi sql server 3 eresha
 
SQL (Structured query language).pptx
SQL (Structured query language).pptxSQL (Structured query language).pptx
SQL (Structured query language).pptx
 
matrei perkuliahana tentang SQL Overview.ppt
matrei perkuliahana tentang SQL Overview.pptmatrei perkuliahana tentang SQL Overview.ppt
matrei perkuliahana tentang SQL Overview.ppt
 
T3 – Query Lanjutan [1]
T3 – Query Lanjutan [1]T3 – Query Lanjutan [1]
T3 – Query Lanjutan [1]
 
_03.Relational Algebra and Calculus_ok.pptx
_03.Relational Algebra and Calculus_ok.pptx_03.Relational Algebra and Calculus_ok.pptx
_03.Relational Algebra and Calculus_ok.pptx
 
Pert 3 -_function
Pert 3 -_functionPert 3 -_function
Pert 3 -_function
 
SELECT
SELECTSELECT
SELECT
 

Mehr von Zaenal Abidin (20)

Bab 4
Bab 4Bab 4
Bab 4
 
Normalisasi oht
Normalisasi ohtNormalisasi oht
Normalisasi oht
 
Bab 6 pendukung
Bab 6 pendukungBab 6 pendukung
Bab 6 pendukung
 
Bab 6
Bab 6Bab 6
Bab 6
 
Bab 4 latihan erd ke skema relasional
Bab 4 latihan erd ke skema relasionalBab 4 latihan erd ke skema relasional
Bab 4 latihan erd ke skema relasional
 
Bab 3
Bab 3Bab 3
Bab 3
 
Bab 2
Bab 2Bab 2
Bab 2
 
Modul praktikum database rdbms
Modul praktikum database rdbmsModul praktikum database rdbms
Modul praktikum database rdbms
 
Modul praktikum database programing
Modul praktikum database programingModul praktikum database programing
Modul praktikum database programing
 
Bab. 9
Bab. 9Bab. 9
Bab. 9
 
Bab. 5
Bab. 5Bab. 5
Bab. 5
 
Bab. 4
Bab. 4Bab. 4
Bab. 4
 
Bab. 13
Bab. 13Bab. 13
Bab. 13
 
Bab. 12
Bab. 12Bab. 12
Bab. 12
 
Bab. 11
Bab. 11Bab. 11
Bab. 11
 
Bab. 10
Bab. 10Bab. 10
Bab. 10
 
Bab. 7
Bab. 7Bab. 7
Bab. 7
 
Bab. 6
Bab. 6Bab. 6
Bab. 6
 
Bab. 3
Bab. 3Bab. 3
Bab. 3
 
Bab. 1
Bab. 1Bab. 1
Bab. 1
 

Bab 6. SQL

  • 1. BAB 6 STRUCTURE QUERY LANGUAGE (SQL) Tujuan Intruksional Khusus : Mahasiswa mampu memahami dan melakukan operasi- operasi manipulasi terhadap model basis data relasional menggunakan sintak-sintak operasi bahasa query SQL. Bahasa formal yang diberikan pada bagian sebelumnya adalah merepresentasikan notasi sederhana untuk melakukan query, sehingga untuk sistem basis data komersil membutuhkan bahasa query yang lebih bersifat user friendly. Pada bagian ini akan diberikan bahasa query yang banyak digunakan di pasar dunia, yaitu bahasa SQL. SQL untuk mengkombinasikan konstruksi relasional aljabar dan relasional kalkulus. SQL adalah sebagai bahasa query yang tidak hanya terbatas digunakan untuk query ke dalam basis data, tetapi dapat digunakan untuk mendefinisikan struktur data, memodifikasi data, dan menspesifikasikan security constraint. Atau dengan kata lain bahwa SQL, memiliki kemampuan untuk Data Manipulation Language (DML) dan Data Definition Language (DDL). Versi SQL yang digunakan pada modul ini, dan sekaligus yang banyak digunakan di pasar dunia adalah versi SQL 1999. 6.1. Struktur Dasar SQL adalah didasarkan pada himpunan operasi-operasi relasional yang telah dilakukan modifikasi dan perbaikan. Struktur dasar SQL terdiri dari tiga klausa, yaitu SELECT, FROM, dan WHERE :  SELECT berkorespondensi dengan operasi Projection pada relasional aljabar. SELECT digunakan untuk menampilkan list atribut pada hasil query.  FROM berkorespondensi dengan operasi Cartesian product pada relasional aljabar. FROM digunakan sebagai list suatu relasi (tabel) yang akan di proses dan di evaluasi. Structure Query Language (SQL) 56
  • 2. WHERE berkorespondensi dengan operasi Selection pada relasional aljabar. WHERE terdiri dari predikat yang meliputi atribut dalam relasi yang muncul pada klausa FROM. Secara umum tipikal query dengan menggunakan SQL memiliki bentuk sebagai berikut : SELECT A1 , A2 ,..., An FROM r1 , r2 ,..., rn WHERE P Dimana : A1 , A2 ,..., An : merepresentasikan atribut r1 , r2 ,..., rn : merepresentasikan relasi (tabel) P : adalah predikat, dengan P = TRUE. Sintak query SQL adalah ekuivalen dengan ekspresi relasional aljabar sebagai berikut : π A1 , A2 ,..., An ( σ P ( r1 × r2 × ... × rn ) ) Untuk contoh-contoh yang diberikan pada modul ini, akan menggunakan skema basis data supplier dan part yang diberikan pada gambar 6.1. Tabel SUPPLIER Structure Query Language (SQL) 57
  • 3. Tabel PARTS Tabel SHIPMENT Gambar 6.1. Skema Basis Data Supplier dan Part 6.1.1. Klausa SELECT Diberikan suatu query sederhana dengan menggunakan skema basis data pada gambar 6.1., yaitu menentukan nama-nama semua kota (CITY) yang terdapat pada tabel PARTS : SELECT CITY FROM PARTS Hasil query perintah SQL diatas adalah suatu relasi (tabel), yaitu : Structure Query Language (SQL) 58
  • 4. Hasil query di atas akan mengambil semua tuples yang terdapat pada header (atribut) CITY, sehingga duplikasi tuple terjadi. Untuk menghindari duplikasi yang terdapat pada tuple dapat dilakukan dengan menambahkan DISTINCT setelah SELECT. Jika sintak query di atas di rubah menjadi : SELECT DISTINCT CITY FROM PARTS maka hasil query-nya menjadi : Untuk menampilkan semua atribut yang terdapat pada relasi sebagai hasil query, dapat digunakan simbol asterisk ‘*’. Klausa SELECT dapat juga berisi ekspresi aritmatika, yang meliputi operasi +, -, *, dan /. Misalkan diberikan sintak SQL : SELECT COLOR, WEIGHT * 10 FROM PARTS Sehingga akan diperoleh relasi sebagai hasil query sebagai berikut : Structure Query Language (SQL) 59
  • 5. 6.1.2. Klausa WHERE Klausa WHERE digunakan untuk menentukan predikat atau kriteria yang harus di penuhi suatu relasi sebagai hasil query. Klausa ini bersifat opsional, yaitu dapat menggunakan klausa WHERE atau tidak. Jika tidak menggunakan klausa WHERE, maka query dilakukan untuk semua tuples pada tabel yang disebutkan pada klausa FROM. Misalkan, untuk menampilkan semua tuples SUPPLIER yang memiliki STATUS = 20. Perintah SQL-nya adalah : SELECT * FROM SUPPLIER WHERE STATUS = 20 Hasil query perintah SQL diatas adalah : Nilai predikat yang terdapat klausa WHERE, untuk tipe string harus diberikan tanda petik tunggal, sedangkan untuk tipe numerik tidak menggunakan tanda petik tunggal. Misalkan, untuk menampilkan semua tuples SUPPLIER yan berada di semarang : Perintah SQL-nya adalah : SELECT * FROM SUPPLIER WHERE CITY = ‘Semarang’ Hasil query perintah SQL diatas adalah : Structure Query Language (SQL) 60
  • 6. Predikat pada klausa WHERE dapat dikombinasikan dengan operator relasi lainnya, seperti <, <=, >, >=, <>, dan operator logika, seperti AND, OR, NOT. Misalkan, untuk menampilkan semua SUPPLIER yang memiliki STATUS = 30, tetapi berada pada kota(CITY) Yogyakarta : Perintah SQL-nya adalah : SELECT * FROM SUPPLIER WHERE STATUS = 30 AND CITY = ‘Yogyakarta’ Hasil query perintah SQL diatas adalah : Klausa WHERE dapat digunakan untuk melakukan query dengan predikat yang berbentuk suatu range nilai tertentu, yaitu dengan menambahkan klausa BETWEEN. Misalkan, untuk menampilkan SUPPLIER yang memiliki STATUS antara 10 sampai dengan 30 : Perintah SQL-nya adalah : SELECT * FROM SUPPLIER WHERE STATUS BETWEEN 20 AND 30 Hasil query perintah SQL diatas adalah : Structure Query Language (SQL) 61
  • 7. Untuk atribut yang bertipe string dapat dilakukan suatu pencarian dengan pola tertentu, yaitu dengan memanfaatkan karakter ‘%’ atau ‘_’ (underscore) dan menambahkan klausa LIKE pada klausa WHERE :  ‘%’ untuk semua substring  ‘_’ untuk semua karakter pada posisi yang sesuai. Misalkan, untuk menampilkan semua tuples SUPPLIER yang kotanya (CITY) di awali dengan huruf ‘S’ : Perintah SQL-nya adalah : SELECT * FROM SUPPLIER WHERE STATUS LIKE ‘S%’ Hasil query perintah SQL diatas adalah : Sedangkan untuk menampilkan semua SUPPLIER yang karakter kedua dari kota (CITY) adalah karakter ‘o’ : Perintah SQL-nya adalah : SELECT * FROM SUPPLIER WHERE STATUS LIKE ‘_o%’ Hasil query perintah SQL diatas adalah : 6.1.3. Klausa FROM Klausa FROM digunakan untuk menentukan tabel yang akan dijadikan sebagai sumber untuk pencarian data. Dalam melakukan query tidak hanya terbatas pada satu tabel, tetapi sering kali dibutuhkan untuk merelasikan beberapa tabel sekaligus. Hal ini dilakukan, karena atribut- Structure Query Language (SQL) 62
  • 8. atribut yang diharapkan sebagai hasil query tidak hanya terdapat pada satu tabel, tetapi berada pada beberapa tabel. Misalkan, untuk menampilkan semua SUPPLIER yang melakukan SHIPMENT dengan jumlah kuantitasnya lebih besar 300 : Perintah SQL-nya adalah : SELECT * FROM SUPPLIER, SHIPMENT WHERE SUPPLIER.SCODE=SHIPMENT.SCODE AND SHIPMENT.QTY > 300 Hasil query perintah SQL diatas adalah : Dalam melakukan query untuk dua tabel atau lebih tidak dapat dilakukan sembarang. Tabel-tabel yang digunakan harus memiliki keterhubungan. Pada contoh query di atas keterhubungan diwakili oleh nilai yang sama pada atribut SCODE yang diwakili oleh kedua tabel yang digunakan. Ekspresi SUPPLIER.SCODE adalah menunjukan nilai SCODE yang berasal dari tabel SUPPLIER, sedangkan SHIPMENT.SCODE adalah menunjukan nilai SCODE yang berasal dari tabel SHIPMENT. Untuk menghindari ketidakjelasan atribut yang terlihat pada relasi sebagai hasil query, dapat dilakukan dengan cara menyebutkan nama tabel yang terdapat pada klausa FROM. Dan untuk menyederhanakan cara penulisan, dapat digunakan nama alias untuk tabel- tabel yang terdapat pada klausa FROM. Misalkan, untuk menampilkan nama-nama SUPPLIER yang melakukan SHIPMENT dengan jumlah kuantitasnya lebih besar 300 : Perintah SQL-nya adalah : SELECT SU.SNAME FROM SUPPLIER SU, SHIPMENT SH WHERE SU.SCODE=SH.SCODE Structure Query Language (SQL) 63
  • 9. AND SH.QTY > 300 Hasil query perintah SQL diatas adalah : Header (atribut) pada relasi sebagai hasil query dapat dilakukan perubahan, yaitu dengan menambahkan klausa AS setelah nama atribut yang akan dilakukan perubahan namanya. Misalkan, dari query sebelumnya akan dilakukan perubahan untuk atribut SNAME menjadi NAMA_SUPPLIER : Perintah SQL-nya adalah : SELECT SU.SNAME AS NAMA_SUPPLIER FROM SUPPLIER SU, SHIPMENT SH WHERE SU.SCODE=SH.SCODE AND SH.QTY > 300 Hasil query perintah SQL diatas adalah : 6.1.4. Pengurutan Hasil Query Pada saat menggunakan ekspresi dasar SQL (SELECT, WHERE, dan FROM), hasil query ditampilkan dengan urutan sesuai dengan urutan kronologis penyimpanan tabel yang dilakukan query. Jika ingin menampilkan hasil query berdasarkan urutan atribut tertentu, maka dapat dilakukan dengan menambahkan klausa ORDER BY. Default yang diberikan klausa ORDER BY adalah urutan secara menial (ASC), tetapi untuk merubah menjadi urutan secara menurun, dapat dilakukan dengan menambahkan klausa DESC setelah nama atribut yang dilakukan pengurutan. Misalkan, untuk melakukan pengurutan secara menurun terhadap SUPPLIER berdasarkan STATUS-nya : Structure Query Language (SQL) 64
  • 10. Perintah SQL-nya adalah : SELECT * FROM SUPPLIER ORDER BY STATUS DESC Hasil query perintah SQL diatas adalah : Klausa ORDER BY dapat juga dikombinasikan dengan klausa WHERE untuk melakukan query. Misalkan, untuk menampilkan semua nama-nama SUPPLIER yang STATUS-nya sama dengan 30 dan hasil query-nya dilakukan pengurutan secara menurun : Perintah SQL-nya adalah : SELECT SNAME FROM SUPPLIER WHERE STATUS = 30 ORDER BY SNAME DESC Hasil query perintah SQL diatas adalah : 6.2. Fungsi Agregasi Dalam melakukan suatu query, terkadang dibutuhkan untuk melakukan perhitungan jumlah tuples, total nilai suatu atribut, nilai atribut terbesar atau terkecil, dan menentukan nilai rata-rata suatu atribut. Untuk memenuhi kondisi-kondisi di atas, SQL sebagai bahasa query menyediakan fungsi-fungsi agregasi sebagai berikut. Structure Query Language (SQL) 65
  • 11. AVG Untuk memperoleh nilai rata-rata suatu atribut yang bertipe numerik.  MIN Untuk memperoleh nilai terkecil suatu atribut yang bertipe numerik.  MAX Untuk memperoleh nilai terbesar suatu atribut yang bertipe numerik.  SUM Untuk memperoleh nilai total suatu atribut yang bertipe numerik.  COUNT Untuk memperoleh nilai banyaknya tuples. Untuk peggunaan fungsi-fungsi agregasi di atas, diberikan contoh-contoh penerapan fungsi agregasi pada suatu query sebagai berikut:  Menghitung banyaknya tuples pada tabel SHIPMENT Perintah SQL-nya adalah : SELECT COUNT(*) FROM SHIPMENT Hasil query perintah SQL diatas adalah :  Menampilkan total berat (WEIGHT) untuk semua PARTS Perintah SQL-nya adalah : SELECT SUM(WEIGHT) FROM PARTS Hasil query perintah SQL diatas adalah :  Menghitung rata-rata kuantitas (QTY) untuk semua SHIPMENT Perintah SQL-nya adalah : SELECT AVG(QTY) FROM SHIPMENT Hasil query perintah SQL diatas adalah : Structure Query Language (SQL) 66
  • 12. Menentukan nilai STATUS yang terbesar untuk SUPPLIER Perintah SQL-nya adalah : SELECT MAX(STATUS) FROM SUPPLIER Hasil query perintah SQL diatas adalah :  Menentukan nilai kuantitas (QTY) yang terkecil untuk SHIPMENT Perintah SQL-nya adalah : SELECT MIN(QTY) FROM SHIPMENT Hasil query perintah SQL diatas adalah : Fungsi agregasi dapat juga dikombinasikan dengan klausa GROUP BY, untuk menyatakan pengelompokan tuple hasil query. Misalkan, untuk menampilkan banyaknya tuple dan jumlah kuantitas (QTY) untuk SHIPMENT yang dikelompokan berdasarkan PARTS (PCODE) dengan urutan secara menaik: Perintah SQL-nya adalah : SELECT PCODE, COUNT(*), SUM(QTY) FROM SHIPMENT GROUP BY PCODE ORDER BY PCODE Hasil query perintah SQL diatas adalah : Structure Query Language (SQL) 67
  • 13. 6.3. Nilai NULL Atribut-atribut yang terdapat pada suatu tabel belum tentu sudah memiliki nilai (data). Atribut yang belum memiliki nilai, biasanya diisi dengan nilai khusus, yang disebut NULL. Nilai NULL pada suatu query dapat diperlakukan secara khusus, yaitu dapat juga diperlakukan untuk query menggunakan ekspresi SQL. Misalkan, menampilkan atribut CITY dari tabel SUPPLIER yang masih kosong : Perintah SQL-nya adalah : SELECT DISTINCT SCODE FROM SUPPLIER WHERE CITY is NULL Hasil query perintah SQL diatas adalah : Tidak menampilkan hasil apapun, karena semua atribut CITY sudah diisi dengan data. Dapat juga dilkakukan untuk menghitung banyaknya nama SUPPLIER yang STATUS- nya sudah terisi (tidak kosong) : Perintah SQL-nya adalah : SELECT COUNT(*) FROM SUPPLIER WHERE STATUS is NOT NULL Hasil query perintah SQL diatas adalah : Structure Query Language (SQL) 68
  • 14. Ekspresi SQL di atas akan memiliki hasil yang sama dengan ekspresi SQL berikut ini : SELECT COUNT(SNAME) FROM SUPPLIER 6.4. Manipulasi Data (DML) Operasi-operasi manipulasi data terdiri dari penambahan tuple baru, pengubahan nilai atribut, dan penghapusan tuple pada suatu tabel. SQL juga dilengkapi dengan sejumlah ekspresi dan perintah untuk melakukan manipulasi data. 6.4.1. Penambahan Tuple (Record) Sintak SQL untuk penambahan tuple baru ke suatu tabel adalah : INSERT INTO t [ ( A1 , A2 ,..., An ) ] VALUES (V1 , V2 ,..., Vn ) dimana :  t : nama relasi (tabel) yang akan dilakukan penambahan tuple  A1 , A2 ,..., An : nama-nama atribut yang akan di isi nilainya  V1 , V2 ,..., Vn : nilai-nilai yang akan diisikan pada atribut-atribut. Nama atribut-atribut pada tabel dapat tidak dituliskan, jika akan mengisikan nilai ke semua atribut dengan urutan atribut sesuai dengan pendefinisian struktur yang dilakukan pada saat awal pembuatan tabel. Tetapi jika urutan atribut berbeda atau atribut yang akan diisikan nilainya tidak pada semua atribut, maka nama-nama atribut yang akan di isi nilainya harus dituliskan. Misalkan, untuk menambahkan tuple pada tabel SUPPLIER : Perintah SQL-nya adalah : INSERT INTO SUPPLIER VALUES ('S6','YOSHINTA',20,'Semarang') Hasil query perintah SQL diatas adalah : Structure Query Language (SQL) 69
  • 15. tuple baru yang ditambahkan pada tabel SUPPLIER Ekspresi perintah SQL di atas, dapat juga dituliskan menggunakan ekspresi SQL : INSERT INTO SUPPLIER (SCODE,SNAME,STATUS,CITY) VALUES ('S6','YOSHINTA',20,'Semarang') Untuk nama atribut yang tidak disebutkan pada perintah INSERT, atribut-atribut tersebut akan di isi dengan nilai NULL. Misalkan, perintah SQL sebagai berikut : INSERT INTO SUPPLIER (SCODE,SNAME,STATUS) VALUES ('S7','MIRANTHI',20) Hasil query perintah SQL diatas adalah : nilai NULL atribut CITY yang ditambahkan pada tabel SUPPLIER 6.4.2. Pengubahan Tuple (Record) Sintak SQL untuk mengubah nilai atribut pada tuple dari sebuah tabel adalah : UPDATE t SET assignment [ WHERE P ] dimana : Structure Query Language (SQL) 70
  • 16. t adalah nama tabel yang akan dilakukan perubahan atribut pada suatu tuple  assignment adalah ekspresi nilai baru untuk suatu atribut yang akan dilakukan perubahan  P adalah merupakan predikat untuk tuple yang akan dilakukan perubahan. Jika klausa WHERE tidak digunakan, maka perubahan akan dilakukan pada semua tuple pada tabel t . Misalkan, untuk mengubah nilai atribut CITY untuk SUPPLIER dengan SCODE = ‘S6’ : Perintah SQL-nya adalah : UPDATE SUPPLIER SET CITY = 'Purwodadi' WHERE SCODE = ‘S6’ Hasil query perintah SQL diatas adalah : nilai atribut CITY yang di rubah menjadi ‘Purwodadi’ pada tabel SUPPLIER Untuk melakukan perubahan semua nilai atribut CITY pada tabel SUPPLIER, yang di isi dengan nilai ‘Purwodadi’, dilakukan dengan perintah SQL : UPDATE SUPPLIER SET CITY = 'Purwodadi' 6.4.3. Penghapusan Tuple (Record) Sintak SQL untuk menghapus tuple pada suatu tabel adalah : DELETE FROM t [ WHERE P ] dimana :  t adalah nama tabel yang akan dilakukan penghapusan tuple Structure Query Language (SQL) 71
  • 17. P adalah merupakan predikat untuk tuple yang akan dihapus. Jika klausa WHERE tidak digunakan, maka penghapusan akan dilakukan pada semua tuple pada tabel t. Misalkan, untuk menghapus SUPPLIER dengan nama YOSHINTA : Perintah SQL-nya adalah : DELETE FROM SUPPLIER WHERE SNAME = ‘YOSHINTA’ Hasil query perintah SQL diatas adalah : tuple dengan SNAME = YOSHINTA telah di hapus dari tabel SUPPLIER. Sedangkan, untuk menghapus semua tuple pada SUPPLIER dapat dilakukan dengan perintah SQL : DELETE FROM SUPPLIER 6.5. Transaksi Suatu transaksi terdiri dari sekumpulan perintah-perintah query dan/atau operasi manipulasi data. Perintah-perintah manipulasi data belum di simpan / di tulis pada disk, jika belum diberikan perintah transaksi. Perintah transaksi yang harus digunakan sebagai akhir transaksi adalah :  commit [ work ] Operasi-operasi manipulasi data yang telah dilakukan, akan di simpan secara permanen ke dalam disk dan transaksi dinyatakan selesai. Setelah transaksi commit, secara otomatis transaksi baru di mulai.  rollback [ work ] Operasi-operasi manipulasi data yang belum dilakukan commit akan dibatalkan (tidak disimpan secara permanen ke dalam disk). Sehingga kondisi basis data yang di simpan pada disk tidak akan mengalami perubahan, seperti sebelum transaksi rollback di eksekusi. Work pada perintah transaksi commit dan rollback bersifat opsional dan tidak memberikan pengaruh terhadap makna kedua perintah transaksi tersebut. Structure Query Language (SQL) 72
  • 18. 6.6. Data Definition Language (DDL) DDL adalah perintah-perintah untuk mendefinisikan objek-objek basis data, dimana tidak hanya sekumpulan relasi (tabel), tetapi juga tentang informasi setiap tabel, yaitu meliputi sebagai berikut :  Skema untuk setiap tabel  Domain nilai untuk setiap atribut  Integritas constraints  Indek untuk setiap tabel  Informasi security dan authorization untuk setiap tabel  Struktur fisik penyimpanan untuk setiap tabel pada disk. Sintak SQL untuk membuat tabel di dalam basis data adalah : CREATE TABLE t [ ( A1 D1 , A2 D2 ,..., An Dn ) ] dimana :  t : adalah nama tabel  A1 , A2 ,..., An : adalah nama-nama atribut yang dimiliki oleh tabel t  D1 , D2 ,..., Dn : adalah domain nilai masing-masing atribut yang ditentukan berdasarkan tipe data Untuk domain tipe data meliputi sebagai berikut :  char(n) Tipe string dengan panjang tetap sebesar n karakter (jika panjang karakter yang diisikan kurang dari n, maka sisanya di isi dengan spasi)  varchar(n) Tipe string dengan panjang fleksibel, tetapi maksimal sebanyak n karakter.  int atau integer Tipe integer 2 byte.  smallint Tipe integer 1 byte.  real, double, precision Tipe pecahan decimal floating point.  float(n) Tipe pecahan decimal floating point dengan presisi n digit. Structure Query Language (SQL) 73
  • 19. date Tipe tanggal (terdiri 4 digit tahun, bulan, dan tanggal).  time Tipe waktu (terdiri dari jam, menit, dan detik) Misalkan, untuk membuat tabel SUPPLIER : Perintah SQL-nya adalah : CREATE TABLE SUPPLIER ( SCODE char(3), SNAME varchar(20), STATUS int, CITY varchar (15)) Dalam melakukan pembuatan tabel dapat juga dilakukan untuk menambahkan suatu indek primer berdasarkan atribut tertentu, yaitu dengan cara menggunakan klausa PRIMARY KEY. Misalkan, pada tabel SUPPLIER di atas memiliki indek berdasarakan atribut SCODE : Perintah SQL-nya adalah : CREATE TABLE SUPPLIER ( SCODE char(3) NOT NULL, SNAME varchar(20), STATUS int, CITY varchar (15), PRIMARY KEY (SCODE)) Jika suatu tabel memiliki indek secara komposit (gabungan), maka dilakukan dengan cara menuliskan semua atribut pada kalusa PRIMARY KEY. Misalkan pada tabel SUPPLIER memiliki indek SCODE dan SNAME : Perintah SQL-nya adalah : CREATE TABLE SUPPLIER ( SCODE char(3) NOT NULL, SNAME varchar(20) NOT NULL, STATUS int, CITY varchar (15), Structure Query Language (SQL) 74
  • 20. PRIMARY KEY (SCODE,SNAME)) Keberadaan tabel yang telah dibuat dapat dibatalkan atau di hapus dengan menggunakan perintah SQL : DROP TABLE t t adalah nama tabel yang di hapus. Misalkan tabel SUPPLIER akan dihapus : Perintah SQL-nya adalah : DROP TABLE SUPPLIER Struktur tabel yang telah dibut dapat dilakukan perubahan, tanpa harus menghapus tabel dan kemudian membangunnya kembali dengan definisi struktur yang baru. Perubahan struktur menjadi lebih praktis, dan juga tidak mengakibatkan hilangnya data yang sudah ada pada tabel (jika data sudah ada). Perubahan struktur terdiri dari : Penambahan atribut Sintak SQL : ALTER TABLE t ADD A D t adalah nama tabel yang dilakukan perubahan, A adalah nama atribut, dan D adalah tipe data untuk atribut A . Penghapusan atribut Sintak SQL : ALTER TABLE t DROP A t adalah nama tabel yang dilakukan perubahan, dan A adalah nama atribut. Misalkan, untuk menambahkan atribut DATE_OF_BORN pada tabel SUPPLIER : Perintah SQL-nya adalah : ALTER TABLE SUPPLIER ADD DATE_OF_BORN date Dan untuk menghapus atribut DATE_OF_BORN pada tabel SUPPLIER, dilakukan dengan perintah SQL : ALTER TABLE SUPPLIER DROP DATE_OF_BORN Structure Query Language (SQL) 75
  • 21. 6.7. SOAL-SOAL LATIHAN Dari skema yang diberikan pada gambar 5.9, maka lakukanlah operasi manipulasi data menggunakan perintah SQL untuk soal-soal latihan berikut ini : 1. Menampilkan nama pengarang dan kategori yang identitas kategorinya adalah 1 2. Menampilkan judul, pengarang dan harga buku yang dipromosikan 3. Menampilkan judul, pengarang dan harga buku yang judul bukunya memiliki keyword XML 4. Menampilkan judul, pengarang dan harga buku yang pengarang bukunya memiliki keyword JEFF 5. Menampilkan nama pelanggan yang melakukan order dengan pembayaran menggunakan Credit Card 6. Menampilkan nama customer yang melakukan orders satu judul buku dengan jumlah lebih besar sama dengan 2 7. Menampilkan nama dan alamat customer yang melakukan orders dengan alamat semarang 8. Menghitung banyaknya jumlah judul buku yang memiliki keyword XML 9. Menampilkan judul dan pengarang buku yang memiliki kategori JSP 10. Menampilkan judul dan pengarang buku yang memiliki kategori JSP yang diurutkan secara menurun berdasarkan pengarang 11. Menampilkan nama customer yang tidak pernah melakukan orders 12. Menampilkan judul dan harga buku yang memiliki keyword JAVA dan harganya lebih besar sama dengan 30 Structure Query Language (SQL) 76