Anda di halaman 1dari 48

SQL canggih

Ikhtisar

• Memahami bagaimana menggunakan query SQL untuk beberapa tabel

2
tujuan

• mendefinisikan istilah-istilah

• Menulis tunggal dan beberapa query tabel SQL


• Mendefinisikan dan menggunakan tiga jenis bergabung

• Menulis subqueries noncorrelated dan berkorelasi


• Memahami dan menggunakan SQL dalam bahasa prosedural (misalnya PHP, PL / SQL)

• Memahami pemicu dan prosedur yang tersimpan


• Diskusikan SQL: standar 2011 dan tambahannya dan ekstensi

3
Isi

• Memproses beberapa tabel


• Memproses beberapa tabel menggunakan subqueries

• Bergabung vs subquery

• Berkorelasi vs subqueries noncorrelated


• UNION Query
• ekspresi kondisional menggunakan sintaks CASE
• Tips untuk mengembangkan query

• pertimbangan efisiensi query


• Pedoman untuk desain query yang lebih baik

• Memastikan integritas transaksi


• Fasilitas kamus data

4
Isi

• Perangkat tambahan SQL baru-baru ini dan Ekstensi

• Rutinitas dan pemicu


• Tertanam dan SQL dinamis
• Alasan untuk menanamkan SQL di 3GL

5
Pengolahan Beberapa Tabel

• Bergabunglah-operasi relasional yang menyebabkan dua atau lebih tabel dengan domain yang umum
untuk digabungkan menjadi satu tabel atau melihat

• Equi-join-join di mana kondisi bergabung didasarkan pada kesetaraan antara


nilai-nilai dalam kolom yang sama; kolom umum muncul berlebihan dalam tabel
hasil
• Natural bergabung-an equi-join di mana salah satu duplikat kolom dihilangkan
dalam tabel hasil
• Outer join-join di mana baris yang tidak memiliki nilai-nilai yang cocok di kolom
umum tetap dimasukkan dalam tabel hasil (sebagai lawan bergabung batin, di
mana baris harus memiliki pencocokan nilai-nilai agar tampil dalam tabel hasil)

• Uni bergabung-mencakup semua kolom dari setiap tabel dalam bergabung, dan sebuah contoh untuk
setiap baris dari setiap tabel
Kolom umum dalam tabel bergabung biasanya kunci utama yang dominan
meja dan kunci asing dari tabel tergantung di 1: hubungan M. 6
Berbeda Bergabung Jenis dengan Hasil
Kembali di Shaded Lokasi

7
Equi-Gabung Contoh

• Untuk setiap pelanggan yang memesan, siapa nama dan nomor urut
pelanggan?

ID Pelanggan muncul dua


kali dalam hasil

8
Equi-Gabung Contoh - Alternatif Sintaks

INNER JOIN klausa adalah sebuah alternatif untuk klausa WHERE, dan digunakan untuk
mencocokkan kunci primer dan asing.

Sebuah INNER bergabung hanya akan kembali baris dari setiap tabel yang memiliki baris yang
cocok di lain.

query ini menghasilkan hasil yang sama seperti equi-join sebelumnya misalnya. 9
Natural Bergabung Contoh

• Untuk setiap pelanggan yang memesan, siapa nama dan nomor urut
pelanggan?
Bergabunglah dengan melibatkan beberapa tabel di klausa FROM

ON klausul melakukan cek kesetaraan Catatan:. Dari Gambar 7-1, Anda melihat bahwa hanya 10

untuk kolom umum dari dua tabel Pelanggan memiliki hubungan dengan perintah.

• Hanya 10 baris akan kembali dari INNER ini


bergabung 10
Outer Join Contoh

• Daftar nama pelanggan, nomor ID, dan nomor pesanan untuk semua pelanggan.
Sertakan informasi pelanggan bahkan untuk pelanggan yang memiliki perintah.

KIRI Outer JOIN klausa Tidak seperti INNER bergabung, ini


menyebabkan data pelanggan akan mencakup baris pelanggan

muncul bahkan jika tidak ada data dengan urutan yang cocok baris

pesanan sesuai

11
Outer Join
Hasil

Tidak seperti INNER

bergabung, ini akan

mencakup pelanggan

baris dengan
urutan yang cocok
baris

12
Beberapa Tabel Bergabung Contoh

• Merakit semua informasi yang diperlukan untuk membuat faktur untuk pesanan nomor 1006

Empat meja yang

terlibat dalam ini

bergabung

Setiap pasang tabel membutuhkan kondisi kesetaraan-cek di klausa WHERE, pencocokan kunci
primer terhadap kunci asing. 13
Hasil Dari Empat-Table Bergabung

Dari tabel CUSTOMER_T

Dari tabel ORDER_T Dari tabel PRODUCT_T

14
Self-Join Contoh

Meja yang sama digunakan


pada kedua sisi bergabung;
dibedakan menggunakan
alias tabel

Self-bergabung biasanya digunakan pada tabel dengan hubungan unary. 15


Contoh A Self-Bergabung

16
Pengolahan Beberapa Tabel Menggunakan
Subqueries

• Subquery-menempatkan inner query (SELECT) di dalam permintaan luar

• Pilihan:
• Dalam kondisi klausa WHERE
• Sebagai “meja” dari klausa FROM
• Dalam klausa HAVING

• Subqueries dapat:
• Noncorrelated-dieksekusi sekali untuk permintaan luar seluruh
• Berkorelasi-dieksekusi sekali untuk setiap baris yang dikembalikan oleh permintaan luar

17
Contoh subquery
• Tampilkan semua pelanggan yang telah menempatkan pesanan

Operator IN akan menguji untuk melihat


apakah nilai CUSTOMER_ID dari
berturut-turut termasuk dalam daftar
kembali dari subquery

Subquery tertanam dalam tanda kurung. Dalam hal ini


mengembalikan daftar yang akan digunakan dalam klausa
WHERE dari permintaan luar 18
Bergabung VS. subquery

• Beberapa pertanyaan dapat dicapai dengan baik bergabung atau subquery

bergabung versi

versi subquery

19
Cont ...

20
Cont ...

21
Berkorelasi VS. Subqueries
Noncorrelated
• subqueries Noncorrelated:
• Jangan tergantung pada data dari permintaan luar
• Mengeksekusi sekali untuk permintaan luar seluruh

• subquery yang berhubungan:


• Memanfaatkan data dari permintaan luar
• Mengeksekusi sekali untuk setiap baris dari permintaan luar

• Dapat menggunakan EXISTS Operator

22
Pengolahan A Noncorrelated Subquery

23
Berkorelasi Subquery Contoh

• Tampilkan semua perintah yang mencakup furnitur selesai dalam abu alami.
The ADA Operator akan mengembalikan nilai TRUE
jika subquery mengakibatkan satu set non-kosong,
jika tidak ia mengembalikan SALAH

• Sebuah subquery berkorelasi selalu mengacu subquery adalah pengujian


pada atribut dari tabel referensi di untuk nilai yang berasal dari
permintaan luar permintaan luar
24
pengolahan A

Subquery mengacu pada data outerquery,


berkorelasi jadi mengeksekusi sekali untuk setiap

Subquery
baris dari outer query

Catatan: Hanya
perintah yang
melibatkan produk
dengan Alam Ash
akan disertakan
dalam hasil akhir.

25
Lain Subquery Contoh

• Tampilkan semua produk yang harganya standar lebih tinggi dari harga rata-rata

Satu kolom dari subquery adalah fungsi


bentuk subquery meja berasal digunakan agregat yang memiliki nama alias. alias yang
dalam klausa FROM dari permintaan luar
kemudian dapat disebut dalam permintaan
luar.

Klausa WHERE biasanya tidak dapat mencakup fungsi agregat, tetapi karena agregat dilakukan di
subquery hasilnya dapat digunakan dalam klausa WHERE permintaan luar itu.
26
UNION Query
• Menggabungkan output (penyatuan beberapa query) bersama-sama ke meja hasil
tunggal

pertanyaan pertama

Menggabungkan

kedua permintaan

27
Menggabungkan Query Menggunakan UNION

Catatan: Dengan
query UNION,
kuantitas dan data
jenis atribut dalam
klausa SELECT dari
kedua query harus
identik.

28
Ekspresi kondisional Menggunakan CASE
Sintaks

Ini tersedia dengan versi yang lebih


baru dari SQL, yang sebelumnya
bukan bagian dari standar

29
Tips Untuk Mengembangkan Proses

• Akrab dengan model data (entitas dan hubungan)


• Memahami hasil yang diinginkan
• Mengetahui atribut yang diinginkan dalam hasil

• Mengidentifikasi entitas yang mengandung atribut yang diinginkan

• Ulasan ERD
• Membangun kesetaraan MANA untuk setiap link
• Fine tune dengan GROUP BY dan HAVING klausa jika diperlukan
• Mempertimbangkan efek pada data yang tidak biasa

30
Pertimbangan permintaan Efisiensi

• Alih-alih SELECT *, mengidentifikasi atribut tertentu dalam klausa SELECT; ini membantu
mengurangi lalu lintas jaringan dari hasil set

• Batasi jumlah subqueries; mencoba untuk membuat segala sesuatu yang dilakukan dalam satu query jika
mungkin

• Jika data yang akan digunakan berkali-kali, membuat query yang terpisah dan menyimpannya sebagai
tampilan

31
Pedoman Untuk Query Desain Lebih Baik

• Memahami bagaimana indeks yang digunakan dalam pemrosesan query

• Jauhkan statistik optimizer up-to-date


• Gunakan tipe data yang kompatibel untuk bidang dan literal

• Menulis pertanyaan sederhana

• Memecah query yang kompleks menjadi beberapa bagian sederhana

• Tidak bersarang satu query dalam query yang lain


• Jangan menggabungkan query dengan dirinya sendiri (jika mungkin hindari diri bergabung)

• Membuat tabel sementara untuk kelompok query


• Menggabungkan operasi update
• Mengambil hanya data yang Anda butuhkan

• Tidak memiliki semacam DBMS tanpa indeks


• Belajar!
• Mempertimbangkan waktu pemrosesan query total untuk ad hoc query
32
Memastikan Integritas Transaksi

• Transaksi = Sebuah unit diskrit pekerjaan yang harus benar-benar diproses atau tidak
diproses sama sekali
• Mungkin melibatkan beberapa pembaruan

• Jika pembaruan setiap gagal, maka semua pembaruan lainnya harus dibatalkan

• Perintah SQL untuk transaksi


• BEGIN TRANSAKSI / END TRANSAKSI
• Menandai batas-batas transaksi
• MELAKUKAN
• Membuat semua pembaruan permanen

• ROLLBACK
• Membatalkan update sejak terakhir COMMIT

33
34
Data Fasilitas Kamus

• tabel sistem yang menyimpan metadata


• Pengguna biasanya dapat melihat beberapa tabel ini

• Pengguna dibatasi dari memperbarui mereka


• Beberapa contoh di Oracle 12c
• DBA_TABLES - deskripsi dari tabel
• DBA_TAB_COMMENTS - komentar pada semua tabel
• DBA_CLUSTERS - deskripsi cluster
• DBA_TAB_COLUMNS - menggambarkan kolom dari semua tabel, pandangan, dan cluster

• DBA_COL_PRIVS - mencakup semua hibah pada kolom


• DBA_COL_COMMENTS - komentar pada semua kolom dalam tabel dan tampilan
• DBA_CONSTRAINTS - deskripsi kendala
• Dba_users - informasi tentang pengguna sistem

35
Cont ...

• Contoh di Microsoft SQL Server 2014 Views katalog:

36
Perangkat tambahan SQL baru-baru ini dan
Ekstensi
• jenis pengguna-didefinisikan data (UDT) - SQL: 1999
• Subclass dari jenis standar atau jenis objek

• fungsi analitis (untuk OLAP) - SQL: 2008


• CEILING, LANTAI, SQRT, PERINGKAT, DENSE_RANK, ROLLUP, CUBE, CONTOH,

• kemampuan analisis numerik WINDOW-ditingkatkan

• Jenis Data baru


• BIGINT, MULTISET (koleksi), XML

• CREATE TABLE SEPERTI-membuat tabel baru yang mirip dengan yang sudah ada

• MENGGABUNGKAN

• ekstensi pemrograman

37
Cont ...

• Persistent Modul Tersimpan (SQL / PSM)


• Kemampuan untuk membuat dan drop modul kode
• pernyataan baru:
• KASUS, IF, LOOP, FOR, WHILE, dll
• Membuat SQL menjadi bahasa prosedural

• Oracle memiliki versi kepatutan disebut PL / SQL, dan Microsoft SQL Server memiliki
Transact / SQL

• New Temporal Fitur - SQL: 2011


• Waktu berhubungan (PERIODE, BERISI, tumpang tindih, SAMA DENGAN, PRECEDES
berhasil, segera mendahului, dan SEGERA berhasil)

38
Rutinitas dan Pemicu

• rutinitas
• Programmodules yang mengeksekusi permintaan

• Fungsi-rutinitas yang kembali nilai-nilai dan mengambil parameter input


• Prosedur-rutinitas yang tidak mengembalikan nilai-nilai dan dapat mengambil parameter input atau
output

• Pemicu-rutinitas yang mengeksekusi dalam menanggapi peristiwa basis data (INSERT,


UPDATE, atau DELETE)

39
Pemicu Constrasted dengan Stored
Prosedur

40
Sederhana Pemicu Sintaks, SQL:
2008

41
Sintaks Untuk Membuat Rutin, SQL:
2011

42
43
Tertanam Dan SQL Dinamis

• embedded SQL
• Termasuk pernyataan SQL keras-kode dalam sebuah program yang ditulis dalam bahasa lain seperti C
atau Java

• SQL dinamis
• Kemampuan untuk sebuah program aplikasi untuk menghasilkan kode SQL on the fly, seperti aplikasi
berjalan

44
Alasan Untuk Embed SQL Dalam 3GL

• Dapat membuat lebih fleksibel, antarmuka diakses untuk pengguna


• peningkatan kinerja mungkin
• peningkatan keamanan database; memberikan akses hanya untuk aplikasi bukan
pengguna

45
Ikhtisar pelajaran

Kamu harus bisa:


• Gunakan query SQL untuk beberapa tabel

46
Ringkasan

Kamu harus bisa:


• mendefinisikan istilah-istilah

• Menulis tunggal dan beberapa query tabel SQL


• Mendefinisikan dan menggunakan tiga jenis bergabung

• Menulis subqueries noncorrelated dan berkorelasi


• Memahami dan menggunakan SQL dalam bahasa prosedural (misalnya PHP, PL / SQL)

• Memahami pemicu dan prosedur yang tersimpan


• Diskusikan SQL: standar 2011 dan tambahannya dan ekstensi

47
Pertanyaan & Jawaban

Anda mungkin juga menyukai