BAB6SQL

Embed Size (px)

Citation preview

  • 7/26/2019 BAB6SQL

    1/21

    BAB 6

    STRUCTURE QUERY LANGUAGE (SQL)

    Tujuan Intruksional Khusus :Mahasiswa mampu memahami dan melakukan operasi-operasi manipulasi terhadap model basis datarelasional menggunakan sintak-sintak operasi bahasaquery 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 baha SQL, memiliki

    kemampuan untuk !ata "anipulation Language #!"L$ dan !ata !efinition Language

    #!!L$. %ersi SQL yang digunakan pada modul ini, dan sekaligus yang banyak digunakan

    di pasar dunia adalah &ersi SQL '(((.

    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,

    !"M, dan #$E!E*

    SELECT berkorespondensi dengan operasi Projection pada relasional aljabar.

    SELECTdigunakan untuk menampilkan list atribut pada hasil query.

    !"Mberkorespondensi dengan operasi +artesian product pada relasional aljabar.

    !"M digunakan sebagai list suatu relasi #tabel$ yang akan di proses dan di

    e&aluasi.

    Stru%ture Query Language &SQL' -

  • 7/26/2019 BAB6SQL

    2/21

    #$E!E berkorespondensi dengan operasi Selection pada relasional aljabar.

    #$E!Eterdiri dari predikat yang meliputi atribut dalam relasi yang muncul pada

    klausa !"M.

    Secara umum tipikal query dengan menggunakan SQL memiliki bentuk sebagai berikut *

    SELECT nAAA ,...,, '

    !"M nrrr ,...,, '

    #$E!E P

    !imana *

    nAAA ,...,, ' * merepresentasikan atribut

    nrrr ,...,, ' * merepresentasikan relasi #tabel$

    P * adalah predikat, dengan P / 0123.

    Sintak query SQL adalah ekui&alen dengan ekspresi relasional aljabar sebagai berikut *

    ( )( )nPAAA

    rrrn

    ...',...,, '

    2ntuk contoh)contoh yang diberikan pada modul ini, akan menggunakan skema basis

    data supplier dan part yang diberikan pada gambar -.'.

    Tabel SUPPLIER

    Tabel PARTS

    Stru%ture Query Language &SQL' 4

  • 7/26/2019 BAB6SQL

    3/21

    Tabel SIP!ENT

    Ga"bar 6.1.Skema Basis !ata Supplier dan Part

    6.1.1. #lausa SELECT

    !iberikan suatu query sederhana dengan menggunakan skema basis data pada gambar

    -.'., yaitu menentukan nama)nama semua kota #+506$ yang terdapat pada tabel PA10S *

    SELECT C(T)

    !"M *+!TS

    7asil query perintah SQL diatas adalah suatu relasi #tabel$, yaitu *

    Stru%ture Query Language &SQL' 8

  • 7/26/2019 BAB6SQL

    4/21

    7asil query di atas akan mengambil semua tuples yang terdapat pada header #atribut$

    +506, sehingga duplikasi tuple terjadi. 2ntuk menghindari duplikasi yang terdapat pada

    tuple dapat dilakukan dengan menambahkan ,(ST(CT setelah SELECT. 9ika sintak

    query di atas di rubah menjadi *SELECT ,(ST(CT C(T)

    !"M *+!TS

    maka hasil query)nya menjadi *

    2ntuk menampilkan semua atribut yang terdapat pada relasi sebagai hasil query, dapat

    digunakan simbol asterisk :;, ), ;, dan ?.

    "isalkan diberikan sintak SQL *

    SELECT C"L"! #E(/$T 0 12

    !"M *+!TS

    Sehingga akan diperoleh relasi sebagai hasil query sebagai berikut *

    Stru%ture Query Language &SQL' (

  • 7/26/2019 BAB6SQL

    5/21

    6.1.$. #lausa %ERE

    =lausa @7313 digunakan untuk menentuka predikat atau kriteria yang harus di penuhi

    suatu relasi sebagai hasil query. =lausa ini bersifat opsional, yaitu dapat menggunakan

    klausa #$E!Eatau tidak. 9ika tidak menggunakan klausa #$E!E, maka query dilakukan

    untuk semua tuples pada tabel yang disebutkan pada klausa !"M.

    "isalkan, untuk menampilkan semua tuples S2PPL531 yang memiliki S0A02S / .

    Perintah SQL)nya adalah *

    SELECT 0

    !"M S3**L(E!

    #$E!E ST+T3S 4 52

    7asil query perintah SQL diatas adalah *

    ilai predikat yang terdapat klausa #$E!E, untuk tipe string harus diberikan tanda petik

    tunggal, sedangkan untuk tipe numerik tidak menggunakan tanda petik tunggal.

    "isalkan, untuk menampilkan semua tuples S2PPL531 yan berada di semarang *

    Perintah SQL)nya adalah *

    SELECT 0

    !"M S3**L(E!

    #$E!E C(T) 4 6Semarang7

    7asil query perintah SQL diatas adalah *

    Stru%ture Query Language &SQL' -

  • 7/26/2019 BAB6SQL

    6/21

    Predikat pada klausa #$E!E dapat dikombinasikan dengan operator relasi lainnya,

    seperti 8 84 9 94 89dan operator logika, seperti +, "! "T.

    "isalkan, untuk menampilkan semua S2PPL531 yang memiliki S0A02S / C, tetapi

    berada pada kota#+506$ 6ogyakarta *

    Perintah SQL)nya adalah *

    SELECT 0

    !"M S3**L(E!

    #$E!E ST+T3S 4 2 +, C(T) 4 6)ogyakarta7

    7asil query perintah SQL diatas adalah *

    =lausa #$E!Edapat digunakan untuk melakukan query dengan predikat yang berbentuk

    suatu range nilai tertentu, yaitu dengan menambahkan klausa ;ET#EE.

    "isalkan, untuk menampilkan S2PPL531 yang memiliki S0A02S antara ' sampai

    dengan C *

    Perintah SQL)nya adalah *

    SELECT 0

    !"M S3**L(E!

    #$E!E ST+T3S ;ET#EE 52 +, 2

    7asil query perintah SQL diatas adalah *

    Stru%ture Query Language &SQL' -'

  • 7/26/2019 BAB6SQL

    7/21

    2ntuk atribut yang bertipe string dapat dilakukan suatu pencarian dengan pola tertentu,

    yaitu dengan memanfaatkan karakter :D< atau :E< #underscore$ dan menambahkan klausa

    L(

  • 7/26/2019 BAB6SQL

    8/21

    atribut yang diharapkan sebagai hasil query tidak hanya terdapat pada satu tabel, tetapi

    berada pada beberapa tabel.

    "isalkan, untuk menampilkan semua S2PPL531 yang melakukan S75P"30 dengan

    jumlah kuantitasnya lebih besar C *

    Perintah SQL)nya adalah *

    SELECT 0

    !"M S3**L(E! S$(*MET

    #$E!E S3**L(E!.SC",E4S$(*MET.SC",E

    +, S$(*MET.QT) 9 22

    7asil query perintah SQL diatas adalah *

    !alam melakukan query untuk dua tabel atau lebih tidak dapat dilakukan sembarang.

    0abel)tabel yang digunakan harus memiliki keterhubungan. Pada contoh query di atas

    keterhubungan diakili oleh nilai yang sama pada atribut S+F!3 yang diakili oleh

    kedua tabel yang digunakan. 3kspresi S2PPL531.S+F!3 adalah menunjukan nilai

    S+F!3 yang berasal dari tabel S2PPL531, sedangkan S75P"30.S+F!3 adalah

    menunjukan nilai S+F!3 yang berasal dari tabel S75P"30.

    2ntuk menghindari ketidakjelasan atribut yang terlihat pada relasi sebagai hasil query,

    dapat dilakukan dengan cara menyebutkan nama tabel yang terdapat pada klausa !"M.

    !an untuk menyederhanakan cara penulisan, dapat digunakan nama alias untuk tabel)

    tabel yang terdapat pada klausa !"M.

    "isalkan, untuk menampilkan nama)nama S2PPL531 yang melakukan S75P"30dengan jumlah kuantitasnya lebih besar C *

    Perintah SQL)nya adalah *

    SELECT S3.S+ME

    !"M S3**L(E! S3 S$(*MET S$

    #$E!E S3.SC",E4S$.SC",E

    Stru%ture Query Language &SQL' -C

  • 7/26/2019 BAB6SQL

    9/21

    +, S$.QT) 9 22

    7asil query perintah SQL diatas adalah *

    7eader #atribut$ pada relasi sebagai hasil query dapat dilakukan perubahan, yaitu dengan

    menambahkan klausa AS setelah nama atribut yang akan dilakukan perubahan namanya.

    "isalkan, dari query sebelumnya akan dilakukan perubahan untuk atribut SA"3

    menjadi A"AES2PPL531 *

    Perintah SQL)nya adalah *SELECT S3.S+ME +S +M+>S3**L(E!

    !"M S3**L(E! S3 S$(*MET S$

    #$E!E S3.SC",E4S$.SC",E

    +, S$.QT) 9 22

    7asil query perintah SQL diatas adalah *

    6.1.. Pe*+uruta* as,l Quer-

    Pada saat menggunakan ekspresi dasar SQL #SELECT, #$E!E, dan !"M$, hasil query

    ditampilkan dengan urutan sesuai dengan urutan kronologis penyimpanan tabel yang

    dilakukan query. 9ika ingin menampilkan hasil query berdasarkan urutan atribut tertentu,

    maka dapat dilakukan dengan menambahkan klausa "!,E! ;). !efault yang diberikan

    klausa "!,E! ;)adalah urutan secara menial #AS+$, tetapi untuk merubah menjadi

    urutan secara menurun, dapat dilakukan dengan menambahkan klausa ,ESC setelah

    nama atribut yang dilakukan pengurutan.

    "isalkan, untuk melakukan pengurutan secara menurun terhadap S2PPL531

    berdasarkan S0A02S)nya *

    Stru%ture Query Language &SQL' -G

  • 7/26/2019 BAB6SQL

    10/21

    Perintah SQL)nya adalah *

    SELECT 0

    !"M S3**L(E!

    "!,E! ;) ST+T3S ,ESC

    7asil query perintah SQL diatas adalah *

    =lausa "!,E! ;)dapat juga dikombinasikan dengan klausa #$E!Euntuk melakukan

    query.

    "isalkan, untuk menampilkan semua nama)nama S2PPL531 yang S0A02S)nya sama

    dengan C dan hasil query)nya dilakukan pengurutan secara menurun *

    Perintah SQL)nya adalah *

    SELECT S+ME

    !"M S3**L(E!

    #$E!E ST+T3S 4 2

    "!,E! ;) S+ME ,ESC

    7asil query perintah SQL diatas adalah *

    6.$. 'u*+s, A+re+as,

    !alam 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.

    2ntuk memenuhi kondisi)kondisi di atas, SQL sebagai bahasa query menyediakan

    fungsi)fungsi agregasi sebagai berikut.

    Stru%ture Query Language &SQL' -

  • 7/26/2019 BAB6SQL

    11/21

    +?/

    2ntuk memperoleh nilai rata)rata suatu atribut yang bertipe numerik.

    M(

    2ntuk memperoleh nilai terkecil suatu atribut yang bertipe numerik.

    M+@

    2ntuk memperoleh nilai terbesar suatu atribut yang bertipe numerik.

    S3M

    2ntuk memperoleh nilai total suatu atribut yang bertipe numerik.

    C"3T

    2ntuk memperoleh nilai banyaknya tuples.

    2ntuk peggunaan fungsi)fungsi agregasi di atas, diberikan contoh)contoh penerapan

    fungsi agregasi pada suatu query sebagai berikut*

    "enghitung banyaknya tuples pada tabel S75P"30

    Perintah SQL)nya adalah *

    SELECT C"3T&0'

    !"M S$(*MET

    7asil query perintah SQL diatas adalah *

    "enampilkan total berat #@35H70$ untuk semua PA10S

    Perintah SQL)nya adalah *

    SELECT S3ME(/$T'

    !"M *+!TS

    7asil query perintah SQL diatas adalah *

    "enghitung rata)rata kuantitas #Q06$ untuk semua S75P"30

    Perintah SQL)nya adalah *

    SELECT +?/&QT)'

    !"M S$(*MET

    7asil query perintah SQL diatas adalah *

    Stru%ture Query Language &SQL' --

  • 7/26/2019 BAB6SQL

    12/21

    "enentukan nilai S0A02S yang terbesar untuk S2PPL531

    Perintah SQL)nya adalah *

    SELECT M+@&ST+T3S'

    !"M S3**L(E!

    7asil query perintah SQL diatas adalah *

    "enentukan nilai kuantitas #Q06$ yang terkecil untuk S75P"30

    Perintah SQL)nya adalah *

    SELECT M(&QT)'

    !"M S$(*MET

    7asil query perintah SQL diatas adalah *

    Iungsi agregasi dapat juga dikombinasikan dengan klausa /!"3* ;), untuk

    menyatakan pengelompokan tuple hasil query.

    "isalkan, untuk menampilkan banyaknya tuple dan jumlah kuantitas #Q06$ untukS75P"30 yang dikelompokan berdasarkan PA10S #P+F!3$ dengan urutan secara

    menaik*

    Perintah SQL)nya adalah *

    SELECT *C",E C"3T&0' S3M&QT)'

    !"M S$(*MET

    /!"3* ;) *C",E

    "!,E! ;) *C",E

    7asil query perintah SQL diatas adalah *

    Stru%ture Query Language &SQL' -4

  • 7/26/2019 BAB6SQL

    13/21

    6.&. N,la, 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

    3LL. ilai 3LLpada suatu query dapat diperlakukan secara khusus, yaitu dapat juga

    diperlakukan untuk query menggunakan ekspresi SQL.

    "isalkan, menampilkan atribut +506 dari tabel S2PPL531 yang masih kosong *

    Perintah SQL)nya adalah *

    SELECT ,(ST(CT SC",E

    !"M S3**L(E!

    #$E!E C(T) is 3LL

    7asil query perintah SQL diatas adalah * 0idak menampilkan hasil apapun, karena semua

    atribut +506 sudah diisi dengan data.

    !apat juga dilkakukan untuk menghitung banyaknya nama S2PPL531 yang S0A02S)

    nya sudah terisi #tidak kosong$ *

    Perintah SQL)nya adalah *

    SELECT C"3T&0'

    !"M S3**L(E!

    #$E!E ST+T3S is "T 3LL

    7asil query perintah SQL diatas adalah *

    Stru%ture Query Language &SQL' -8

  • 7/26/2019 BAB6SQL

    14/21

    3kspresi SQL di atas akan memiliki hasil yang sama dengan ekspresi SQL berikut ini *

    SELECT C"3T&S+ME'

    !"M S3**L(E!

    6.. !a*,ulas, Data (D!L)

    Fperasi)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..1. Pe*a"ba/a* Tule (Re0r2)

    Sintak SQL untuk penambahan tuple baru ke suatu tabel adalah *

    (SE!T (T" ( )[ ]nAAAt ,...,, '

    ?+L3ES ( )n

    VVV ,...,, '

    dimana *

    t * nama relasi #tabel$ yang akan dilakukan penambahan tuple

    nAAA ,...,, ' * nama)nama atribut yang akan di isi nilainya

    nVVV ,...,, ' * nilai)nilai yang akan diisikan pada atribut)atribut.

    ama 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 aal pembuatan tabel. 0etapi 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.

    "isalkan, untuk menambahkan tuple pada tabel S2PPL531 *

    Perintah SQL)nya adalah *

    (SE!T (T" S3**L(E!

    ?+L3ES &ASBAA)"S$(T+A52ASemarangA'

    7asil query perintah SQL diatas adalah *

    Stru%ture Query Language &SQL' -(

  • 7/26/2019 BAB6SQL

    15/21

    3kspresi perintah SQL di atas, dapat juga dituliskan menggunakan ekspresi SQL *

    (SE!T (T" S3**L(E! &SC",ES+MEST+T3SC(T)'

    ?+L3ES &ASBAA)"S$(T+A52ASemarangA'

    2ntuk nama atribut yang tidak disebutkan pada perintah (SE!T atribut)atributtersebut akan di isi dengan nilai 3LL.

    "isalkan, perintah SQL sebagai berikut *

    (SE!T (T" S3**L(E! &SC",ES+MEST+T3S'

    ?+L3ES &ASAAM(!+T$(A52'

    7asil query perintah SQL diatas adalah *

    6..$. Pe*+uba/a* Tule (Re0r2)Sintak SQL untuk mengubah nilai atribut pada tuple dari sebuah tabel adalah *

    3*,+TE t

    SET assignment

    D #$E!E P

    dimana *

    Stru%ture Query Language &SQL' 4

    tuple baru yang

    ditambahkan pada

    tabel S2PPL531

    nilai 2LL atribut

    +506 yangditambahkan pada

    tabel S2PPL531

  • 7/26/2019 BAB6SQL

    16/21

    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. 9ika

    klausa #$E!E tidak digunakan, maka perubahan akan dilakukan pada semua

    tuple pada tabel t .

    "isalkan, untuk mengubah nilai atribut +506 untuk S2PPL531 dengan S+F!3 / :S-< *

    Perintah SQL)nya adalah *

    3*,+TE S3**L(E!

    SET C(T) 4 A*urwodadiA

    #$E!E SC",E 4 6SB7

    7asil query perintah SQL diatas adalah *

    2ntuk melakukan perubahan semua nilai atribut +506 pada tabel S2PPL531, yang di isi

    dengan nilai :Purodadi

  • 7/26/2019 BAB6SQL

    17/21

    P adalah merupakan predikat untuk tuple yang akan dihapus. 9ika klausa #$E!E

    tidak digunakan, maka penghapusan akan dilakukan pada semua tuple pada tabel

    t .

    "isalkan, untuk menghapus S2PPL531 dengan nama 6FS750A *

    Perintah SQL)nya adalah *

    ,ELETE !"M S3**L(E!

    #$E!E S+ME 4 6)"S$(T+7

    7asil query perintah SQL diatas adalah * tuple dengan SA"3 / 6FS750A telah di

    hapus dari tabel S2PPL531.

    Sedangkan, untuk menghapus semua tuple pada S2PPL531 dapat dilakukan dengan

    perintah SQL *,ELETE !"M S3**L(E!

    6.3. Tra*saks,

    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 *

    %ommit D work Fperasi)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.

    rollba%k D work

    Fperasi)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.

    @ork pada perintah transaksi commit dan rollback bersifat opsional dan tidak

    memberikan pengaruh terhadap makna kedua perintah transaksi tersebut.

    Stru%ture Query Language &SQL' 4

  • 7/26/2019 BAB6SQL

    18/21

    6.6. Data De4,*,t,* La*+ua+e (DDL)

    !!L 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

    !omain nilai untuk setiap atribut

    5ntegritas constraints

    5ndek untuk setiap tabel

    5nformasi security dan authoriJation untuk setiap tabel

    Struktur fisik penyimpanan untuk setiap tabel pada disk.

    Sintak SQL untuk membuat tabel di dalam basis data adalah *

    C!E+TE T+;LE ( )[ ]nnDADADAt ,...,, ''

    dimana *

    t * adalah nama tabel

    nAAA ,...,, ' * adalah nama)nama atribut yang dimiliki oleh tabel t

    nDDD ,...,, ' * adalah domain nilai masing)masing atribut yang

    ditentukan berdasarkan tipe data

    2ntuk domain tipe data meliputi sebagai berikut *

    %har&n'

    0ipe string dengan panjang tetap sebesar n karakter #jika panjang karakter yang

    diisikan kurang dari n, maka sisanya di isi dengan spasi$

    Far%har&n'

    0ipe string dengan panjang fleksibel, tetapi maksimal sebanyak n karakter.

    int atau integer

    0ipe integer byte.

    smallint

    0ipe integer ' byte.

    real double pre%ision

    0ipe pecahan decimal floating point.

    Gloat&n'

    Stru%ture Query Language &SQL' 4C

  • 7/26/2019 BAB6SQL

    19/21

    0ipe pecahan decimal floating point dengan presisi n digit.

    date

    0ipe tanggal #terdiri G digit tahun, bulan, dan tanggal$.

    time

    0ipe aktu #terdiri dari jam, menit, dan detik$

    "isalkan, untuk membuat tabel S2PPL531 *

    Perintah SQL)nya adalah *

    C!E+TE T+;LE S3**L(E!

    & SC",E %har&'

    S+ME Far%har&52'

    ST+T3S int

    C(T) Far%har &1H''

    !alam melakukan pembuatan tabel dapat juga dilakukan untuk menambahkan suatu

    indek primer berdasarkan atribut tertentu, yaitu dengan cara menggunakan klausa

    *!(M+!)

  • 7/26/2019 BAB6SQL

    20/21

    C(T) Far%har &1H'

    *!(M+!) ">;"! date

    !an untuk menghapus atribut !A03EFIEBF1 pada tabel S2PPL531, dilakukan

    dengan perintah SQL *

    +LTE! T+;LE S3**L(E! ,!"* ,+TE>">;"!

    Stru%ture Query Language &SQL' 4

  • 7/26/2019 BAB6SQL

    21/21

    6.5. SALSAL LATIAN

    !ari skema yang diberikan pada gambar .(, maka lakukanlah operasi manipulasi data

    menggunakan perintah SQL untuk soal)soal latihan berikut ini *

    '. "enampilkan nama pengarang dan kategori yang identitas kategorinya adalah '

    . "enampilkan judul, pengarang dan harga buku yang dipromosikan

    C. "enampilkan judul, pengarang dan harga buku yang judul bukunya memiliki

    keyord K"L

    G. "enampilkan judul, pengarang dan harga buku yang pengarang bukunya memiliki

    keyord 93II

    . "enampilkan nama pelanggan yang melakukan order dengan pembayaran

    menggunakan +redit +ard

    -. "enampilkan nama customer yang melakukan orders satu judul buku dengan

    jumlah lebih besar sama dengan

    4. "enampilkan nama dan alamat customer yang melakukan orders dengan alamat

    semarang

    8. "enghitung banyaknya jumlah judul buku yang memiliki keyord K"L

    (. "enampilkan judul dan pengarang buku yang memiliki kategori 9SP

    '. "enampilkan judul dan pengarang buku yang memiliki kategori 9SP yang

    diurutkan secara menurun berdasarkan pengarang

    ''. "enampilkan nama customer yang tidak pernah melakukan orders

    '. "enampilkan judul dan harga buku yang memiliki keyord 9A%A dan harganya

    lebih besar sama dengan C

    ?? menampilkan pasien yang berusia LAS5A #lebih dari - tahun$

    S3L3+0 o1", mPsn, 0glLhrPsn, #63A1#+21!A03# $ $ 63A1 #0glLhrPsn$$AS

    umur

    I1F" pasien

    @7313 #63A1#+21!A03# $ $ 63A1#0glLhrPsn$M -