Pengenalan Pemrograman Berorientasi Objek
Pengenalan Pemrograman Berorientasi Objek
Pemrograman Berorientasi Objek atau OOP mengacu pada bahasa yang menggunakan objek dalam pemrograman. Berorientasi objek
pemrograman bertujuan untuk mengimplementasikan entitas dunia nyata seperti pewarisan, penyembunyian, polimorfisme, dll dalam pemrograman.
Tujuan utama OOP adalah untuk mengikat bersama data dan fungsi yang beroperasi pada mereka sehingga tidak ada bagian lain dari yang lain.
kode dapat mengakses data ini kecuali fungsi itu.
Konsep OOP
Kelas
Objek
Abstraksi Data
Enkapsulasi
Warisan
Polimorfisme
Pengikatan Dinamis
1. Kelas:
Kelas adalah tipe data yang ditentukan oleh pengguna. Ini terdiri dari anggota data dan fungsi anggota, yang dapat diakses dan
digunakan dengan membuat instansi dari kelas tersebut. Ia mewakili kumpulan properti atau metode yang umum bagi semua
objek dari satu tipe. Sebuah kelas seperti cetak biru untuk sebuah objek.
Sebagai Contoh: Pertimbangkan Kelas Mobil. Mungkin ada banyak mobil dengan nama dan merek yang berbeda tetapi semua dari mereka
akan membagikan beberapa sifat umum seperti semuanya akan memiliki 4 roda, Batas Kecepatan, Jarak Tempuh, dll. Jadi di sini,
Mobil adalah kelasnya, dan roda, batas kecepatan, jarak tempuh adalah properti mereka.
2. Objek:
Ini adalah unit dasar dari Pemrograman Berorientasi Objek dan mewakili entitas kehidupan nyata. Sebuah Objek adalah contoh dari sebuah
Kelas. Ketika sebuah kelas didefinisikan, tidak ada memori yang dialokasikan tetapi ketika diinstansiasi (misalnya, sebuah objek dibuat) memori
is allocated. An object has an identity, state, and behavior. Each object contains data and code to manipulate the
data. Objek dapat berinteraksi tanpa harus mengetahui rincian data atau kode satu sama lain, cukup mengetahui
tipe pesan yang diterima dan tipe respons yang dikembalikan oleh objek.
Misalnya, "Anjing" adalah objek dunia nyata, yang memiliki beberapa karakteristik seperti warna, ras, gonggongan, tidur, dan makan.
Objek
3. Abstraksi Data:
Abstraksi data adalah salah satu fitur yang paling penting dan esensial dari pemrograman berbasis objek.
abstraksi mengacu pada penyediaan hanya informasi penting tentang data kepada dunia luar, menyembunyikan latar belakang
detail atau implementasi. Pertimbangkan contoh kehidupan nyata seorang pria yang mengemudikan mobil. Pria tersebut hanya tahu bahwa menekan
pengaktifan akselerator akan meningkatkan kecepatan mobil atau menerapkan rem akan menghentikan mobil, tetapi dia tidak tahu tentang
bagaimana ketika menekan akselerator kecepatan meningkat, dia tidak mengetahui tentang mekanisme dalam mobil atau
implementasi akselerator, rem, dll di mobil. Inilah yang dimaksud dengan abstraksi.
4. Encapsulation:
Enkapsulasi didefinisikan sebagai pembungkusan data di bawah satu unit. Ini adalah mekanisme yang mengikat bersama kode.
dan data yang dimanipulasinya. Dalam Enkapsulasi, variabel atau data dari sebuah kelas disembunyikan dari kelas lain mana pun dan
hanya dapat diakses melalui fungsi anggota mana pun dari kelas mereka di mana mereka dideklarasikan. Seperti dalam enkapsulasi,
data dalam sebuah kelas disembunyikan dari kelas lain, sehingga juga dikenal sebagai penyembunyian data.
Pertimbangkan contoh nyata dari enkapsulasi, di sebuah perusahaan, ada berbagai bagian seperti bagian akuntansi,
finance section, sales section, etc. The finance section handles all the financial transactions and keeps records of all
data yang terkait dengan keuangan. Demikian pula, bagian penjualan mengelola semua aktivitas terkait penjualan dan menyimpan catatan
semua penjualan. Sekarang mungkin muncul situasi ketika karena suatu alasan seorang pejabat dari bagian keuangan membutuhkan semua
data tentang penjualan pada bulan tertentu. Dalam hal ini, dia tidak diizinkan untuk mengakses data penjualan secara langsung
bagian. Dia pertama-tama harus menghubungi beberapa petugas lain di bagian penjualan dan kemudian memintanya untuk memberikan yang tertentu
data. Inilah yang disebut enkapsulasi. Di sini adalah data bagian penjualan dan karyawan yang dapat memanipulasinya
dibungkus di bawah satu nama "bagian penjualan".
5. Warisan:
Pewarisan adalah pilar penting dalam OOP (Pemrograman Berorientasi Objek). Kemampuan suatu kelas untuk diturunkan
Sifat dan karakteristik dari kelas lain disebut Pewarisan. Ketika kita menulis sebuah kelas, kita mewarisi sifat-sifat tersebut.
dari kelas lain. Jadi ketika kita membuat sebuah kelas, kita tidak perlu menulis semua properti dan fungsi lagi dan
sekali lagi, karena ini dapat diwarisi dari kelas lain yang memilikinya. Pewarisan memungkinkan pengguna untuk menggunakan kembali kode tersebut
setiap kali memungkinkan dan mengurangi redundansinya.
6. Polimorfisme:
Kata polymorphism berarti memiliki banyak bentuk. Dengan kata sederhana, kita dapat mendefinisikan polymorphism sebagai kemampuan
pesan yang ditampilkan dalam lebih dari satu bentuk. Misalnya, seorang individu pada saat yang sama dapat memiliki yang berbeda.
karakteristik. Seperti seorang pria yang pada saat yang sama adalah seorang ayah, seorang suami, seorang karyawan. Jadi orang yang sama memiliki berbagai
perilaku dalam situasi yang berbeda. Ini disebut polimorfisme.
7. Pengikatan Dinamis:
Dalam pengikatan dinamis, kode yang akan dijalankan sebagai respons terhadap panggilan fungsi ditentukan saat waktu berjalan. Pengikatan dinamis
berarti bahwa kode yang terkait dengan panggilan prosedur tertentu tidak diketahui hingga saat panggilan dilakukan saat dijalankan
waktu. Pengikatan Metode Dinamis Salah satu keuntungan utama dari warisan adalah bahwa beberapa kelas turunan D memiliki semua
anggota dari kelas dasar B. Begitu D tidak menyembunyikan anggota publik B, maka objek D dapat mewakili
B dalam konteks apa pun di mana B dapat digunakan. Fitur ini dikenal sebagai polimorfisme subtipe.
Menambahkan data dan fungsi baru adalah Menambahkan data dan fungsi baru adalah
tidak mudah. mudah.
Basis data
DBase adalah sistem manajemen basis data mikrokomputer (DBMS) yang berjalan di platform Windows. DBase adalah
unik karena memungkinkan produksi aplikasi yang beragam tanpa repot, termasuk middleware
aplikasi, aplikasi Web yang dihosting di server Windows dan aplikasi klien kaya Windows.
dBase adalah produk perangkat lunak khusus yang digunakan untuk membuat dan memanipulasi basis data relasional. Istilah ini juga dapat merujuk
ke dBasebasis databahasa pemrograman yang pertama kali muncul dalam produk dBase, tetapi sekarang tersedia di
banyak lainnyabasis dataformulir.
As a software product, dBase was the first commercially successful database system for personal computers, and it
tetap menjadi salah satu yang paling banyak digunakan. Versi sebelumnya termasuk dBase II, III, III Plus, dan beberapa versi dBase IV.
Dalam versi awal dBase, untuk membuat basis data atau mencari data atau melakukan hal lainnya, Anda harus mengetikkan
perintah di command line, sama seperti yang Anda lakukan di DOS. Saat ini, Anda dapat melakukan sebagian besar pekerjaan menggunakan suatu sistem dari
menu, tetapi Anda masih perlu cukup paham tentang basis data untuk bisa maju lebih jauh. Lebih mudah untuk menjalankan program yang
orang lain telah menulis menggunakan bahasa pemrograman dBase. Orang-orang yang tahu dBase dapat menulis secara lengkap
program untuk menyelesaikan tugas yang disesuaikan - seperti mengelola inventaris perusahaan Anda, sistem penagihan, dan pelanggan
daftar. Setelah program berfungsi dengan baik, siapa pun dapat menjalankannya tanpa harus mengetahui apa pun tentang dBase
perintah.
Meskipun bahasa pemrograman dBase berasal dari produk perangkat lunak dBase, bahasa ini telah mengambil alih
kehidupan sendiri. Berbagai produsen perangkat lunak lainnya telah menciptakan versi mereka sendiri. Sejak nama dBase adalah
terkait dengan produk tertentu, versi abstrak dari bahasa pemrograman dBase sering disebut sebagai
xBase sebagai gantinya.
DBase dirancang untuk memanipulasi basis data relasional. Ini adalah bahasa generasi ketiga yang serbaguna dengan non-prosedural.
kemampuan dan merupakan pemecah masalah yang sangat baik. Di antara sistem manajemen basis data dan alat, seperti:
Komponen penerjemah tepat waktu (JIT), yang mengubah bahasa sumber menjadi bahasa mesin
Sebuah linker untuk membuat aplikasi DBase (.exe files)
Installer mesin runtime untuk server Web dan mesin yang perlu menjalankan aplikasi runtime DBase
Pra-pemroses untuk membaca file sumber program dan menghasilkan file yang sudah diproses sebagai output, yang kemudian digunakan
ke dalam kompiler
Lingkungan pengembangan terintegrasi dengan jendela perintah dan penjelajah
Alat desain antarmuka pengguna grafis (GUI) dua arah, yang memiliki kemampuan untuk beralih bolak-balik
antara menggunakan alat desain GUI dan editor kode
Editor kode sumber, yang memungkinkan pengeditan dan pemasukan kode secara manual
DBase juga memiliki banyak kelas visual dan kelas basis data. Kelas visual termasuk:
TombolTekan
Gambar
Jaring
Gulir Bilah
ActiveX
Report
PemirsaLaporan
Kotak Putar
ComboBox
Daftar Kotak
Teks
LabelTeks
Formulir
SubForm
Buku catatan
Wadah
Kolom entri
Tombol Radio
RowSet
Lapangan
StoredProc
Modul Data
Sesi
Basis data
Kuery
UNIT-1
Data:
Ini adalah kumpulan informasi.
Fakta-fakta yang dapat direkam dan memiliki makna implisit dikenal sebagai 'data'.
Contoh:
Customer ----- [Link].
[Link].
[Link].
Database:
Ini adalah kumpulan data yang saling terkait.
Ini dapat disimpan dalam bentuk tabel.
Sebuah basis data dapat memiliki ukuran dan kompleksitas yang bervariasi.
Basis data dapat dibuat dan dimanipulasi secara manual atau dapat juga di komputerisasi.
Contoh:
Basis data pelanggan terdiri dari bidang-bidang seperti cname, cno, dan ccity
Keuntungan:
[Link] dapat dikurangi.
[Link] dapat dihindari.
Data dapat dibagikan.
4. Standar dapat ditegakkan.
5. Pembatasan keamanan dapat diterapkan.
Integritas dapat dipertahankan.
[Link] data dapat dilakukan.
[Link] dapat disesuaikan.
Banyak orang terlibat dalam desain, penggunaan, dan pemeliharaan basis data. Orang-orang ini dapat berupa
diklasifikasikan menjadi 2 jenis seperti di bawah ini.
e. Penyesuaian Database:
DBA bertanggung jawab untuk memodifikasi basis data untuk memastikan kecukupan
Kinerja saat persyaratan berubah.
[Link] Sistem:
Orang-orang ini menentukan kebutuhan pengguna akhir dan mengembangkan spesifikasi untuk transaksi.
[Link] Alat:
Sertakan orang-orang yang merancang dan mengimplementasikan alat yang terdiri dari paket untuk desain, pemantauan kinerja.
and prototyping and test data generation.
[Link] Level:
Ini adalah tingkat terendah, yang menjelaskan bagaimana data sebenarnya disimpan.
Example:
Basis data akun pelanggan dapat dijelaskan.
[Link] Level:
Ini adalah tingkat yang lebih tinggi berikutnya yang menjelaskan data apa dan hubungan apa dalam basis data.
Contoh:
Setiap catatan
tipe pelanggan = catatan
cust_name: sting;
cust_city: string;
cust_street: string;
akhir;
3.
[Link] Konseptual (pandangan):
Ini adalah level terendah, yang menggambarkan seluruh basis data.
Example:
Semua program aplikasi.
[Link] DATA
3. Model Fisik:
Model-model ini dapat digunakan untuk menggambarkan data pada tingkat terendah, yaitu tingkat fisik.
Model-model ini dapat diklasifikasikan menjadi
1. Model yang menyatukan
2. Model memori bingkai.
UNIT-2
1950-an dan awal 1960-an:
Sejarah Sistem Basis Data
Pemrosesan data menggunakan pita magnetik untuk penyimpanan
Pita hanya menyediakan akses sekuensial
Kartu punch untuk input
Akhir 1960-an dan 1970-an:
Hard disk memungkinkan akses langsung ke data
Model data jaringan dan hierarkis yang banyak digunakan
Ted Codd mendefinisikan model data relasional
Akan memenangkan ACM Turing Award untuk karya ini
Penelitian IBM memulai prototipe Sistem R
UC Berkeley memulai prototipe Ingres
Pemrosesan transaksi berkinerja tinggi (untuk era tersebut)
1980-an:
Prototipe relasional penelitian berkembang menjadi sistem komersial
SQL menjadi standar industri
Sistem basis data paralel dan terdistribusi
Sistem basis data berorientasi objek
1990s:
Aplikasi dukungan keputusan dan penambangan data besar
Gudang data multi-terabyte besar
Munculnya perdagangan Web
2000-an
XML and XQuery standards
Administrasi basis data otomatis
Ini sangat berguna dalam memetakan makna dan interaksi perusahaan dunia nyata ke dalam konsep.
skema.
Model-model ini dapat digunakan untuk desain konseptual basis data
aplikasi.
[Link]:
Model data harus ekspresif untuk membedakan berbagai jenis data, hubungan dan
kendala.
[Link] Minimal:
Model tersebut harus memiliki jumlah konsep dasar yang sedikit.
[Link] Diagramatik:
Model harus memiliki notasi diagramatik untuk menampilkan skema konseptual.
[Link]:
Skema konseptual yang diungkapkan dalam model data harus mewakili spesifikasi formal dari data.
Contoh:
Cust_name : string;
Cust_no : integer;
Cust_city : string;
Di bawah ini, kita harus memilih DBMS untuk menerapkan desain basis data kita dan mengubah basis data konseptual
merancang menjadi skema basis data.
Pemilihan DBMS diatur oleh sejumlah faktor sebagai berikut.
1. Faktor Ekonomi.
[Link] Organisasi.
Penjelasan adalah sebagai berikut.
[Link] Factors:
b. Biaya Pemeliharaan:
Ini adalah biaya untuk menerima layanan pemeliharaan standar dari vendor dan untuk menjaga DBMS
versi terbaru.
g. Operating Cost:
Biaya untuk melanjutkan operasi sistem basis data.
[Link] Organisasi:
Faktor-faktor ini mendukung organisasi vendor, dapat dicantumkan sebagai berikut.
a. Kompleksitas Data:
Kebutuhan akan DBMS.
b. Berbagi antar aplikasi:
Semakin besar berbagi di antara aplikasi, semakin banyak redundansi di antara file dan oleh karena itu semakin besar
kebutuhan untuk DBMS.
c. Data yang berkembang atau tumbuh secara dinamis:
Jika data berubah secara konstan, lebih mudah untuk mengatasi perubahan ini menggunakan DBMS daripada menggunakan file
sistem.
d. Frekuensi permintaan data ad hoc:
Sistem file tidak cocok untuk pengambilan data ad hoc.
e. Volume Data dan Kebutuhan untuk Kontrol:
Dua faktor ini diperlukan untuk DBMS.
Contoh:
Basis data pelanggan dapat direpresentasikan dalam bentuk tabel atau diagram.
[Link] Skema:
Di bawah ini, kita harus menganalisis kumpulan relasi dalam skema basis data relasional kita untuk mengidentifikasi
masalah potensial.
[Link]
3. ATTRIBUTES
Karakteristik suatu entitas disebut sebagai atribut.
Sifat-sifat dari suatu entitas tertentu disebut sebagai atribut dari entitas yang ditentukan tersebut.
Contoh:
Name, street_address, city --- customer database.
Acc-no, balance --- account database.
Tipe:
Ini dapat diklasifikasikan ke dalam tipe berikut.
[Link] Sederhana.
[Link] Komposit.
[Link] Bernilai Tunggal.
[Link] Multivalued.
5. Atribut yang Disimpan.
[Link] Turunan.
Penjelasan adalah sebagai berikut.
[Link] Attributes:
Atribut yang tidak dapat dibagi disebut sebagai 'atribut sederhana atau atom'.
Contoh:
cust_name, acc_no etc..
[Link] Komposit:
Atribut-atribut yang dapat dibagi menjadi bagian-bagian yang lebih kecil, yang mewakili atribut yang lebih dasar dengan
arti mandiri.
Ini berguna untuk memodelkan situasi di mana pengguna kadang-kadang merujuk pada atribut komposit sebagai unit tetapi pada
waktu lain merujuk secara khusus pada komponen-komponennya.
Contoh:
Street_address can be divided into 3 simple attributes as Number, Street and Apartment_no.
Street_address
[Link] Turunan:
An attribute which is derived from another attribute is called as a ‘derived attribute.
Contoh:
'Atribut 'Usia' diturunkan dari atribut lain 'Tanggal'.
[Link] Tersimpan:
Sebuah atribut yang tidak diturunkan dari atribut lain disebut sebagai 'atribut yang disimpan'.
Contoh:
Dalam contoh di atas, 'Tanggal' adalah atribut yang disimpan.
4. SET ENTITAS
Jenis Entitas:
Sekumpulan entitas yang memiliki atribut yang sama disebut sebagai 'jenis entitas'.
Setiap jenis entitas dijelaskan oleh namanya dan atributnya.
Kumpulan Entitas:
Kumpulan semua entitas dari jenis entitas tertentu dalam basis data pada titik waktu mana pun disebut sebagai entitas.
set.
Sekumpulan entitas biasanya disebut dengan nama yang sama seperti jenis entitas.
Tipe entitas direpresentasikan dalam diagram ER sebagai kotak persegi panjang yang mengelilingi nama tipe entitas.
Contoh:
Kumpulan pelanggan.
5. Hubungan
6. Kumpulan Hubungan
Entitas Lemah
Entitas lemah dapat diidentifikasi secara unik dengan mempertimbangkan beberapa atributnya bersamaan dengan kunci utama dari
entitas lain.
Simbol-simbol yang dapat digunakan dalam model ini adalah sebagai berikut.
2. Elips Atribut.
[Link] Tautan.
10. Kumpulan Entitas yang memiliki Kunci Utama ---- StEntitas salah
Set.
CONTOH:
Akun_pelanggan
Customer Akun
Atribut Deskriptif:
Sebuah hubungan juga dapat memiliki beberapa atribut, yang disebut sebagai 'atribut deskriptif'.
Ini digunakan untuk mencatat informasi tentang hubungan.
Contoh:
James dari set entitas 'Karyawan' telah bekerja di sebuah departemen sejak 1991.
Dno
Name Jalan Sejak Dname
Kota
Anggaran
Sebuah himpunan hubungan, yang memiliki 3 himpunan entitas, disebut sebagai hubungan terner.
[Link] Constraints:
Ini dapat diklasifikasikan menjadi 4 tipe sebagai berikut.
[Link] ke Banyak:
Seorang karyawan diperbolehkan untuk bekerja di departemen yang berbeda dan sebuah departemen diperbolehkan memiliki beberapa
karyawan.
Dno
Name Jalan Sejak Nama
Kota
Budget
Dno
Nama Jalan Sejak Dname
Kota
Budget
[Link] ke Satu:
Setiap karyawan bekerja di paling banyak 1 departemen. Artinya, banyak karyawan dapat bekerja di departemen yang sama.
Dno
Nama Jalan Sejak Dname
Kota
Anggaran
Dno
Name Jalan Sejak Dname
Kota
Anggaran
[Link] Partisipasi:
11
Keterbatasan partisipasi menentukan apakah keberadaan suatu entitas bergantung pada hubungannya dengan
entitas lain melalui jenis hubungan.
Sebuah departemen memiliki paling banyak satu manajer. Persyaratan ini adalah contoh dari batasan partisipasi.
Ada 2 jenis batasan partisipasi, yaitu sebagai berikut.
[Link].
2. Parsial.
Penjelasan ada di bawah.
[Link]:
Sebuah kumpulan entitas yang bergantung pada kumpulan hubungan dan memiliki
one to many relationships is said to be ‘total’.
Partisipasi dari kumpulan entitas 'departemen' dalam hubungan
set 'mengelola' dikatakan total.
[Link]:
Partisipasi yang tidak total disebut sebagai parsial.
Contoh:
Partisipasi set entitas 'pegawai' dalam 'mengelola' adalah parsial, karena tidak setiap pegawai berkesempatan untuk
mengelola sebuah departemen.
Dalam diagram E-R, partisipasi total ditampilkan sebagai 'garis ganda' yang menghubungkan tipe entitas yang berpartisipasi ke
hubungan, di mana partisipasi parsial diwakili oleh satu garis.
Jika partisipasi himpunan entitas dalam himpunan relasi adalah total, maka garis tebal menghubungkan keduanya.
Kehadiran panah menunjukkan batasan kunci.
Partisipasi Parsial
Partisipasi Total
Bekerja_di
3. Set Entitas Lemah:
12
[Link] 'Entitas Lemah'? (3Poin)(Jan-2005)
(4 Poin)(September-2005) (4 Poin)(Feb-2002)
Sebuah set entitas lemah hanya dapat diidentifikasi secara unik dengan mempertimbangkan beberapa atributnya bersamaan dengan
kunci utama dari entitas lain (Pemilik yang mengidentifikasi).
Untuk setiap kumpulan entitas lemah, pembatasan berikut harus dipatuhi.
a. Kumpulan entitas pemilik dan kumpulan entitas lemah harus berpartisipasi dalam a
Set hubungan satu-ke-banyak, yang disebut sebagai 'Mengidentifikasi
Kumpulan Relasi dari kumpulan entitas lemah.
b. Kumpulan entitas lemah harus memiliki partisipasi penuh dalam kumpulan hubungan identifikasi.
Contoh:
Himpunan atribut dari sekumpulan entitas lemah yang secara unik mengidentifikasi entitas lemah untuk suatu entitas pemilik yang diberikan adalah
disebut sebagai 'partial key dari weak entityset'.
Example:
Kumpulan entitas lemah tergantung dan hubungannya dengan karyawan ditunjukkan dalam diagram berikut.
Menghubungkan mereka dengan garis gelap menunjukkan total partisipasi tanggungan dalam kebijakan.
Untuk memahami fakta bahwa tanggungan adalah entitas lemah dan kebijakan adalah hubungan identifikasinya, kita menggambar
keduanya dengan garis gelap.
Untuk menunjukkan bahwa 'pname' adalah kunci parsial untuk tanggungan, kami menggarisbawahi nya menggunakan garis putus-putus.
[Link]:
13
Agregasi adalah suatu abstraksi untuk membangun objek komposit dari objek-objek komponennya.
Agregasi digunakan untuk mewakili hubungan antara suatu objek utuh dan bagian-bagian komponennya.
Agregasi memungkinkan kita untuk menunjukkan bahwa sekumpulan hubungan (yang diidentifikasi melalui kotak putus-putus) berpartisipasi dalam
set hubungan lainnya.
Ini diilustrasikan dengan kotak putus-putus di sekeliling sponsor.
Jika kita perlu mengekspresikan hubungan antar hubungan, maka kita harus menggunakan agregasi.
Agregasi versus Hubungan Ternary:
Kita dapat menggunakan agregasi atau hubungan ternary untuk 3 set entitas atau lebih.
Pilihan terutama ditentukan oleh
a. Keberadaan hubungan yang menghubungkan sekumpulan hubungan dengan sebuah
kumpulan entitas atau kumpulan relasi kedua.
b. Pilihan juga dapat dipandu oleh batasan integritas tertentu yang kita
ingin mengekspresikan.
Monitor Hingga
14
Departemen
Sponsor
Proyek
Pertimbangkan batasan bahwa setiap hubungan dipantau oleh paling banyak 1 karyawan.
Kami tidak dapat menyatakan batasan ini dalam istilah hubungan ternary dalam diagram berikut. Dalam hal itu
kami menggunakan hubungan ternary alih-alih agregasi.
Agregasi mengelompokkan bagian dari diagram E-Are menjadi satu kumpulan entitas yang memungkinkan kita untuk memperlakukan agregat tersebut.
entitas dianggap sebagai satu kesatuan tanpa memikirkan detail struktur internalnya.
Dengan demikian, adanya batasan seperti itu menjadi alasan lain untuk menggunakan agregasi daripada sebuah
himpunan hubungan ternary.
Informasi yang dikumpulkan dalam langkah analisis kebutuhan digunakan untuk mengembangkan deskripsi tingkat yang lebih tinggi dari
data itu.
Tujuan dari desain basis data konseptual adalah pemahaman yang lengkap tentang struktur basis data, yang berarti
(semantik), hubungan antar dan batasan.
Karakteristik fase ini adalah sebagai berikut.
[Link] Ungkapan:
3. Minimalitas:
[Link] Diagram:
Model tersebut harus memiliki notasi diagram untuk
menampilkan skema konseptual.
[Link]:
Contoh:
Cust_name: string;
Cust_no: integer;
Cust_city: string;
15
a. Entitas Versus Hubungan:
Misalkan setiap manajer departemen diberikan 'Dbudget' seperti yang ditunjukkan pada gambar.
Dno
Name Jalan Sejak Dname
Kota
Budget
Maksimal ada 1 karyawan yang mengelola sebuah departemen, tetapi seorang karyawan dapat mengelola beberapa.
departemen (1 ke banyak hubungan).
Kita dapat menyimpan tanggal mulai dan 'Dbudget' untuk setiap pasangan manajer-departemen.
Pendekatan ini adalah wajar, jika kita mengasumsikan bahwa seorang manajer menerima satu 'Dbudget' untuk setiap departemen yang
dia mengelola. Tapi jika 'Dbudget' adalah jumlah dari semua departemen, maka 'mengelola' adalah hubungan yang melibatkan
setiap karyawan akan memiliki nilai yang sama (nilai total).
Jadi ini mengarah pada redundansi.
Ini dapat diselesaikan dengan penunjukan karyawan sebagai manajer dari sekelompok departemen.
Kita dapat memodelkan ‘mgr_appt’ sebagai himpunan entitas untuk penunjukan manajer, menggunakan hubungan ternary dan kita bisa
memiliki paling banyak 1 manajer untuk setiap departemen karena hubungan 1 ke banyak.
16
Dno
Nama Jalan Sejak Nama
Kota
Anggaran
Mgr_appt
Sejak
Anggaran
Proses desain basis data konseptual terdiri dari mendeskripsikan potongan kecil dari aplikasi dalam hal
Diagram E-R.
Untuk sebuah Perusahaan besar, desain mungkin memerlukan,
[Link] dari 1 desainer.
[Link] data dan aplikasi oleh sejumlah kelompok pengguna.
Menggunakan model data semantik tingkat tinggi seperti diagram ER untuk desain konseptual menawarkan tambahan
keuntungan yang,
[Link] tingkat tinggi dapat direpresentasikan secara diagram.
[Link] orang, yang memberikan masukan pada proses desain, dengan mudah memahaminya.
Pendekatan alternatif adalah mengembangkan skema konseptual terpisah untuk kelompok pengguna yang berbeda dan kemudian
integrasikan semua itu.
Untuk mengintegrasikan, kita harus menetapkan kesesuaian antara entitas, hubungan, dan atribut, sehingga ini
prosesnya agak sulit.
Relasi derajat 1 disebut sebagai 'Relasi Unair'.
Relasi derajat 2 disebut sebagai 'Relasi Biner'.
Relasi derajat 3 disebut sebagai ‘Relasi Ternary’.
Hubungan derajat n disebut sebagai 'Hubungan nary'.
17
UNIT-3
MODEL RELASIONAL
Sebuah basis data adalah kumpulan dari 1 atau lebih 'relasi', di mana setiap relasi adalah tabel dengan baris dan kolom.
Ini adalah model data utama untuk aplikasi pemrosesan data komersial.
Keuntungan utama dari model relasional dibandingkan model data yang lebih lama adalah,
Ini sederhana dan elegan.
2. representasi data yang sederhana.
[Link] dengan mana bahkan kueri kompleks dapat dinyatakan.
Pengantar:
Konstruksi utama untuk merepresentasikan data dalam model relasional adalah 'relasi'.
Sebuah hubungan terdiri dari
[Link] Relasi.
[Link] Instance.
Penjelasan adalah sebagai berikut.
[Link] Schema:
Students (Sid: string, name: string, login: string, age: integer, gross: real)
Ini mengatakan bahwa bidang yang bernama 'sid' memiliki domain bernama 'string'.
Himpunan nilai yang terkait dengan domain 'string' adalah himpunan semua string karakter.
2. Instance Relasi:
Contoh:
Bidang (Atribut, Kolom)
Contoh ini adalah suatu contoh dari relasi mahasiswa, yang terdiri dari 4 tupel dan 5 bidang. Tidak ada dua baris yang sama.
identik.
18
Degree:
Jumlah bidang disebut sebagai 'derajat'.
Ini juga disebut sebagai 'aritmetika'.
Cardinality:
Kardinalitas dari suatu instansi relasi adalah jumlah tuple di dalamnya.
Contoh:
Dalam contoh di atas, derajat relasinya adalah 5 dan kardinalitasnya adalah 4.
Basis data relasional:
Ini adalah kumpulan hubungan dengan nama hubungan yang berbeda.
Skema basis data relasional:
Ini adalah kumpulan skema untuk relasi dalam basis data.
Instansi:
Sebuah instance dari basis data relasional adalah kumpulan instance relasi, satu untuk setiap skema relasi di dalamnya
skema basis data.
Setiap instance relasi harus memenuhi batasan domain dalam skemanya.
Keterbatasan integritas (IC) adalah kondisi yang ditentukan pada skema basis data dan membatasi data yang dapat...
disimpan dalam sebuah instance dari basis data.
Berbagai pembatasan pada data yang dapat ditentukan pada skema basis data relasional dalam bentuk 'keterbatasan'.
Sebuah DBMS menegakkan batasan integritas, yang hanya mengizinkan instance yang sah untuk disimpan dalam database.
Kendala integritas ditentukan dan ditegakkan pada waktu yang berbeda seperti di bawah ini.
[Link] DBA atau pengguna akhir mendefinisikan skema basis data, ia atau dia
menentukan IC yang harus dipegang di setiap instance dari basis data ini.
[Link] aplikasi basis data dijalankan, DBMS memeriksa adanya pelanggaran.
dan melarang perubahan pada data yang melanggar IC yang ditentukan.
Instansi Hukum:
Jika instansi basis data memenuhi semua batasan integritas yang ditentukan pada skema basis data.
Keterbatasan dapat diklasifikasikan menjadi 4 jenis sebagai berikut.
[Link] Domain.
2. Pembatasan Kunci.
[Link] Integritas Entitas.
4. Kendala Integritas Referensial.
Penjelasan adalah sebagai berikut.
[Link] Constraints
Keterbatasan domain adalah bentuk paling mendasar dari keterbatasan integritas. Mereka diuji dengan mudah oleh sistem.
setiap kali item data baru dimasukkan ke dalam basis data.
Keterbatasan domain menentukan himpunan nilai yang mungkin diasosiasikan dengan suatu atribut. Keterbatasan semacam itu
juga dapat melarang penggunaan nilai nol untuk atribut tertentu.
Tipe data yang terkait dengan domain biasanya mencakup tipe data numerik standar untuk bilangan bulat.
Skema relasi menentukan domain dari setiap field atau kolom dalam instansi relasi.
Kendala domain dalam skema ini menentukan suatu kondisi penting bahwa setiap instance dari relasi harus
Memuaskan: Nilai-nilai yang muncul dalam sebuah kolom harus diambil dari domain yang terkait dengan kolom tersebut.
Dengan demikian, domain suatu bidang pada dasarnya adalah jenis bidang tersebut.
2. Kendala Kunci
[Link] the concept of Super Key, Candidate Key and Primary Key with examples?(6 Marks, Feb-2004)
Keterbatasan kunci adalah pernyataan bahwa subset minimal tertentu dari bidang sebuah relasi adalah pengidentifikasi unik untuk sebuah
pasangan
Contoh:
Hubungan 'mahasiswa' dan batasan bahwa tidak ada 2 mahasiswa yang memiliki id mahasiswa (sid) yang sama.
Ini dapat diklasifikasikan menjadi 3 jenis seperti di bawah ini.
19
a. Kunci Kandidat atau Kunci.
b. Kunci Super.
c. Kunci Utama.
Penjelasan ada di bawah.
a. Kunci Kandidat atau Kunci:
[Link] 'Kunci Kandidat'?(4 Poin, September-2003)
Sekumpulan bidang yang secara unik mengidentifikasi sebuah tuple menurut batasan kunci disebut sebagai 'Kunci Kandidat' untuk
hubungan.
Ini juga disebut sebagai 'kunci'.
Dari definisi kunci kandidat, kita memiliki,
1. Dua tuple yang berbeda dalam sebuah instance legal tidak dapat memiliki nilai yang identik
di semua bidang kunci. yaitu, dalam segala hal hukum, nilai-nilai dalam kunci
kolom secara unik mengidentifikasi sebuah tuple dalam instansi.
yaitu, nilai-nilai dalam kolom kunci secara unik mengidentifikasi sebuah tupel dalam instansi.
[Link] ada himpunan dari himpunan bidang dalam kunci yang merupakan pengidentifikasi unik untuk sebuah tupel.
yaitu, himpunan bidang {sid, name} bukanlah sebuah kunci untuk Mahasiswa.
Skema relasi dapat memiliki lebih dari satu kunci.
Contoh: Dalam hubungan Siswa di atas, bidang 'sid' adalah kunci kandidat.
{sid}.
Nilai dari atribut kunci dapat digunakan untuk mengidentifikasi secara unik setiap tuple dalam relasi.
‘Sekumpulan atribut yang membentuk kunci’ adalah sifat dari skema relasi.
Sebuah kunci ditentukan dari makna atribut.
Setiap relasi dijamin memiliki kunci. Karena relasi adalah sekumpulan tupel, kumpulan semua field selalu merupakan super.
kunci.
b. Super Key:
Sekumpulan bidang yang mengandung kunci disebut sebagai 'super key'.
Sekelompok 1 atau lebih atribut yang memungkinkan kita untuk mengidentifikasi secara unik suatu entitas dalam himpunan entitas.
Sebuah super key menentukan batasan keunikan bahwa tidak ada 2 tuple yang berbeda yang dapat memiliki nilai yang sama.
Setiap relasi memiliki setidaknya 1 kunci super default sebagai kumpulan semua atribut.
Contoh:
Siswa Sid
(Hubungan) Name (Fields)
Masuk
Usia
Kotor
Salah satu super kunci = {Sid, Nama, Login, Usia, Bruto}
c. Kunci Utama:
Ini juga merupakan kunci kandidat, yang nilainya digunakan untuk mengidentifikasi tupel dalam relasi.
It is common to designate one of the candidate keys as a primary key of the relation.
Atribut yang membentuk kunci utama dari skema relasi diberi garis bawah.
Ini digunakan untuk menunjukkan kunci kandidat yang dipilih oleh perancang basis data sebagai
alat utama untuk mengidentifikasi entitas dengan kumpulan entitas.
Contoh:
‘Sid’ dari hubungan Siswa.
Dalam SQL, kita mendeklarasikan sekumpulan bidang dari sebuah tabel yang terdiri dari kunci dengan menggunakan
K constraint ‘UNIQUE’.
Kendala 'UNIQUE' ini menentukan bahwa 2 tupel yang berbeda tidak dapat memiliki identik
Nilai.
Kunci kandidat dapat dideklarasikan sebagai 'kunci utama' menggunakan pembatasan
KUNCI UTAMA.
20
Kita dapat memberi nama pada batasan dengan menggunakan sintaksis seperti di bawah ini.
Contoh:
Ekspresikan 'sid' sebagai kunci utama dan kombinasi {nama, usia} sebagai kunci.
BUAT TABEL Siswa (sid CHAR (20), nama CHAR (30), login CHAR(20),
usia INTEGER, bruto REAL, UNIK (nama, usia)
` KONSTRAIN sid1 KUNCI UTAMA (sid));
Ini menyatakan bahwa tidak ada nilai kunci utama yang dapat bernilai null.
Nilai kunci utama digunakan untuk mengidentifikasi tuple individu dalam suatu relasi.
Memiliki nilai null untuk kunci utama berarti kita tidak dapat mengidentifikasi beberapa tuple.
CATATAN: Batasan Kunci, Batasan Integritas Entitas ditentukan pada relasi individual.
KUNCI UTAMA termasuk dalam hal ini.
21
Unit-4
Pernyataan SQL SELECT menanyakan data dari tabel di dalam basis data. Pernyataan dimulai dengan
PILIH kata kunci. Pernyataan SELECT dasar memiliki 3 klausa:
PILIH
FROM
DI MANA
Klausul SELECT menentukan kolom tabel yang diambil. Klausul FROM menentukan tabel yang digunakan.
diakses. Klausa WHERE menentukan baris tabel mana yang digunakan. Klausa WHERE bersifat opsional; jika
hilang, semua baris tabel telah digunakan.
Misalnya,
PILIH nama DARI s DI MANA kota='Roma'
Kueri ini mengakses baris dari tabel -s. Kemudian memfilter baris tersebut di mana kolom kota berisi Roma.
Akhirnya, kueri mengambil kolom nama dari setiap baris yang difilter. Menggunakan tabel contoh, kueri ini
menghasilkan:
nama
Mario
Deskripsi rinci tentang tindakan kueri:
Klausul WHERE menyaring baris dari tabel FROM untuk menggunakan yang kolomkota-nya mengandung
Roma. Ini memilih satu baris dari:
Klausul SELECT mengambil kolom nama dari baris yang difilter oleh klausul WHERE:
nama
22
Mario
Klausul SELECT
Klausul SELECT adalah wajib. Ini menentukan daftar kolom yang akan diambil dari tabel-tabel di FROM
klausa. Itu memiliki format umum berikut:
PILIH [SEMUA|UNIK] daftar-pilih
select-list adalah daftar nama kolom yang dipisahkan oleh koma. Spesifikasi ALL dan DISTINCT adalah opsional.
DISTINCT menentukan bahwa baris duplikat akan dibuang. Baris duplikat adalah ketika setiap kolom yang sesuai
kolom daftar memiliki nilai yang sama. Defaultnya adalah SEMUA, yang mempertahankan baris duplikat.
Sebagai contoh,
SELECT descr, color FROM p
Nama kolom dalam daftar pilih dapat diqualifikasi dengan nama tabel yang sesuai:
SELECT [Link], [Link] FROM p
Sebuah kolom dalam daftar pilih dapat diganti namanya dengan mengikuti nama kolom tersebut dengan nama baru.
contoh:
PILIH nama pemasok, kota lokasi DARI s
Ini menghasilkan:
lokasi pemasok
Pierre Paris
John London
Mario Roma
23
Sebuah daftar pilih khusus yang terdiri dari satu '*' meminta semua kolom di semua tabel dalam klausa FROM. Untuk
contoh
PILIH * DARI sp
24
benar -- jika thecolorcolumn berisi nilai string -- 'Merah',
salah -- jika thecolorcolumn berisi nilai string lain (bukan 'Merah'), atau
tidak diketahui -- jika kolomwarna mengandungnull.
Secara umum, ekspresi perbandingan membandingkan isi kolom tabel dengan literal, seperti di atas. A
ekspresi perbandingan juga dapat membandingkan dua kolom satu sama lain. Penggabungan tabel menggunakan jenis perbandingan ini.
Operator perbandingan =(sama dengan) membandingkan dua nilai untuk kesetaraan. Operator perbandingan tambahan adalah:
Misalnya,
PILIH * DARI sp DIMANA qty >= 200
sno pno qty
S2 P1 200
S3 P1 1000
S3 P2 200
Catatan: Di tabel ini, kolom qty untuk salah satu baris berisi null. Perbandingan -qty >= 200, mengevaluasi
tounknown untuk baris ini. Dalam hasil akhir dari sebuah kueri, baris dengan klausa WHERE yang mengevaluasi tounknown
(atau salah) dihilangkan (disaring keluar).
Kedua operand dari perbandingan harus memiliki tipe data yang sama, namun konversi otomatis dilakukan.
antara tipe numerik, datetime, dan interval. Ekspresi CAST menyediakan konversi tipe yang eksplisit.
Perbandingan yang Diperluas
Selain perbandingan dasar yang dijelaskan di atas, SQL mendukung operator perbandingan yang diperluas --
ANTARA, DI, SEPERTI dan ADALAH NULL.
Operator BETWEEN
Operator BETWEEN mengimplementasikan perbandingan rentang, yaitu, itu menguji apakah suatu nilai adalah
antara dua nilai lainnya. Perbandingan BETWEEN memiliki format berikut:
Perbandingan ini menguji apakah nilai-1 lebih besar dari atau sama dengan nilai-2 dan kurang dari atau sama dengan nilai-
3. Itu setara dengan predikat berikut:
Misalnya,
PILIH *
DARI sp
DI MANA qty ANTARA 50 dan 500
25
sno pno qty
S2 P1 200
S3 P2 200
Operator IN
Operator IN menerapkan perbandingan dengan daftar nilai, yaitu, ia menguji apakah suatu nilai cocok
nilai apapun dalam daftar nilai. Dalam perbandingan memiliki format umum sebagai berikut:
Perbandingan ini menguji apakah value-1 cocok dengan value-2 atau cocok dengan value-3, dan seterusnya. Ini setara dengan
predikat logis berikut:
Misalnya,
Operator LIKE
Operator LIKE menerapkan perbandingan pencocokan pola, yaitu, ia mencocokkan nilai string
melawan string pola yang berisi karakter wildcard.
Karakter wildcard untuk LIKE adalah persen -- '%' dan garis bawah -- '_'. Garis bawah mencocokkan setiap
karakter tunggal. Persentase mencocokkan nol atau lebih karakter.
Contoh,
26
Perbandingan LIKE memiliki format umum berikut:
Semua nilai harus berupa string (karakter). Perbandingan ini menggunakan value-2 sebagai pola untuk mencocokkan value-1.
Sub-klausul ESCAPE opsional menentukan karakter pelarian untuk pola, memungkinkan pola
untuk menggunakan '%' dan '_' (dan karakter pelarian) untuk pencocokan. Nilai ESCAPE harus berupa tunggal
string karakter. Dalam pola, karakter ESCAPE mendahului karakter apa pun yang akan di-escape.
Contoh yang lebih dipaksakan yang melarikan diri dari karakter pelarian:
setara dengan:
Operator IS NULL
Sebuah null di kolom tabel memiliki makna khusus -- nilai kolom saat ini tidak ada.
dikenal (hilang), namun nilainya mungkin diketahui di waktu yang akan datang. Sebuah databasenull dapat mewakili apa saja
nilai di masa depan, tetapi nilai tersebut tidak tersedia saat ini. Karena kolom null ganda mungkin akhirnya
diberikan nilai yang berbeda, satu nol tidak bisa dibandingkan dengan yang lain dengan cara konvensional. Yang
sintaks berikut ilegal dalam SQL:
Operator perbandingan khusus -- IS NULL, menguji kolom untuk null. Ini memiliki berikut ini secara umum
format:
Perbandingan ini mengembalikan benar jika value-1 mengandung null dan salah jika tidak. NOT opsional
membalikkan hasilnya:
setara dengan:
Sebagai contoh,
27
PILIH * DARI sp DIMANA qty ADALAH NULL
sno pno qty
S1 P1 NULL
Operator Logika
Operator logika adalah DAN, ATAU, TIDAK. Mereka mengambil ekspresi logika sebagai operand dan menghasilkan sebuah logika.
hasil (Benar, Salah, Tidak Diketahui). Dalam ekspresi logis, tanda kurung digunakan untuk pengelompokan.
Operator AND
Operator AND menggabungkan dua operand logika. Operand tersebut adalah perbandingan atau logika.
ekspresi. Ini memiliki format umum berikut:
DAN mengembalikan:
DAN T F U
T T F U
F F F F
U U F U
Misalnya,
PILIH *
DARI sp
DIMANA sno='S3' DAN qty < 500
sno pno qty
S3 P2 200
Operator OR
Operator OR menggabungkan dua operand logis. Operand adalah perbandingan atau logis.
ekspresi. Ini memiliki format umum sebagai berikut:
OR mengembalikan:
28
ATAU T FU
T T T T
FTF U
U T U U
Sebagai contoh,
PILIH *
DARI s
DIMANA sno='S3' ATAU kota = 'London'
sno name city
S2 John London
S3 Mario Roma
DAN memiliki prioritas yang lebih tinggi daripada ATAU, jadi ekspresi berikut:
a ATAU b DAN c
sama dengan:
a ATAU (b DAN c)
Operator TIDAK
Operator NOT membalikkan hasil dari ekspresi perbandingan atau ekspresi logika. Itu memiliki
format umum berikut:
Pernyataan tidak-1
TIDAK
T F
F T
U U
Contoh permintaan:
PILIH *
DARI sp
DI MANA TIDAK sno = 'S3'
sno pno qty
S1 P1 NULL
S2 P1 200
29
Klausul ORDER BY
Klausul ORDER BY bersifat opsional. Jika digunakan, harus menjadi klausul terakhir dalam pernyataan SELECT. ORDER
Klausul BY meminta pengurutan untuk hasil dari suatu kueri.
Ketika klausa ORDER BY tidak ada, baris hasil dari sebuah kueri tidak memiliki urutan yang ditentukan (mereka adalah
unurut). Klausa ORDER BY mendefinisikan urutan baris berdasarkan kolom dari SELECT
klausa. Klausa ORDER BY memiliki format umum berikut:
URUTKAN MENURUT kolom-1 [ASC|DESC] [ kolom-2 [ASC|DESC] ] ...
kolom-1, kolom-2, ... adalah nama kolom yang ditentukan (atau disiratkan) dalam daftar pilih. Jika kolom pilih adalah
diubah nama (diberikan nama baru dalam entri yang dipilih), nama baru digunakan dalam daftar ORDER BY. ASC dan
DESC permintaan pengurutan naik atau turun untuk sebuah kolom. ASC adalah default.
ORDER BY mengurutkan baris menggunakan kolom pengurutan dari kiri ke kanan, dari yang utama ke yang minor. Baris-baris diurutkan
pertama pada nama kolom pertama dalam daftar. Jika ada nilai duplikat untuk kolom pertama, duplikat tersebut
disejajarkan pada kolom kedua (dalam pengurutan kolom pertama) dalam daftar Urut Berdasarkan, dan seterusnya. Tidak ada
mendefinisikan urutan dalam untuk baris yang memiliki nilai duplikat untuk semua kolom Urutkan.
Databasenulls memerlukan pemrosesan khusus dalam ORDER BY. Sebuah kolom null diurutkan lebih tinggi daripada semua nilai biasa;
ini dibalik untuk DESC.
Dalam pengurutan, null dianggap sebagai duplikat satu sama lain untuk ORDER BY. Pengurutan pada informasi tersembunyi
tidak masuk akal untuk memanfaatkan hasil dari kueri. Inilah juga alasan mengapa SQL hanya mengizinkan kolom daftar pilihan dalam
URUTKAN DENGAN.
Untuk kenyamanan saat menggunakan ekspresi dalam daftar pilihan, item pilihan dapat ditentukan dengan angka (dimulai
dengan 1). Nama dan angka dapat dicampur aduk.
Contoh kueri:
PILIH * DARI sp URUTKAN DARI 3 DESC
sno pno qty
S1 P1 NULL
S3 P1 1000
S3 P2 200
S2 P1 200
PILIH nama, kota DARI s URUTKAN MENURUT nama
nama kota
John London
Mario Roma
Pierre Paris
PILIH * DARI sp URUTKAN MENURUT qty DESC, sno
sno pno qty
S1 P1 NULL
S3 P1 1000
S2 P1 200
S3 P2 200
Expressions
Dalam subseksi sebelumnya tentang pernyataan Select dasar, nilai kolom digunakan dalam daftar pilih dan di mana
predikat. SQL memungkinkan penggunaan ekspresi nilai skalar sebagai gantinya. Ekspresi nilai SQL dapat berupa:
30
Literal
Literal adalah nilai yang bertipe yang mendefinisikan dirinya sendiri. SQL mendukung 3 jenis literal:
String -- teks ASCII yang dibingkai dengan kutipan tunggal ('). Di dalam literal, sebuah kutipan tunggal direpresentasikan oleh 2
kutip tunggal ('')
Numeric -- numeric digits (at least 1) with an optional decimal point and exponent. The format is
[ddd][[.]ddd][E[+|-]ddd]
Literal numerik tanpa eksponen atau titik desimal diketik sebagai Integer. Mereka yang memiliki titik desimal
tetapi tidak ada eksponen yang diketik sebagai Desimal. Mereka yang memiliki eksponen diketik sebagai Float.
Datetime -- literal datetime dimulai dengan kata kunci yang mengidentifikasi jenis, diikuti oleh literal string:
oTanggal -- TANGGAL 'yyyy-mm-dd'
oWaktu -- WAKTU 'hh:mm:ss[.fff]'
oTimestamp -- TIMESTAMP 'yyyy-mm-dd hh:mm:ss[.fff]'
oInterval -- INTERVAL [+|-] stringkualifikasi-interval
Format dari string dalam literasi Interval tergantung pada kualifikasi interval. Untuk tahun-bulan
interval, formatnya adalah: 'dd[-dd]'. Untuk interval waktu siang, formatnya adalah '[dd ]dd[:dd[:dd]][.fff]'.
Fungsi SQL
SQL memiliki fungsi bawaan berikut:
Mengambil substring dari sebuah string -exp-1, dimulai dari nilai integer -exp-2, untuk panjang dari
nilai integer -[Link]-2 adalah 1 relatif. Jika exp-3 dihilangkan, panjang string yang tersisa
digunakan. Mengembalikan substring.
UPPER(exp-1)
Mengubah karakter huruf kecil dalam string -exp-1 menjadi huruf besar. Mengembalikan string yang telah diubah.
LOWER(exp-1)
Mengubah semua karakter huruf besar dalam string -exp-1 menjadi huruf kecil. Mengembalikan string yang telah diubah.
Menghapus karakter yang tidak diinginkan dari awal atau akhir string -exp-1. Karakter yang dihapus adalah spasi, atau jika
exp-2 ditentukan, itu menyediakan karakter pemangkasan. Jika LEADING, TRAILING, BOTH tidak ada, maka
default adalah KEDUANYA. Mengembalikan string yang telah dipangkas.
POSITION(exp-1 DI exp-2)
Mencari string -exp-2, untuk mencocokkan substring -exp-2. Mengembalikan integer, 1 relatif
posisi pertandingan atau 0 untuk tidak ada kecocokan.
PANJANG_CHAR(exp-1)
PANJANG_KARAKTER(exp-1)
31
Mengembalikan jumlah karakter integer dalam string -exp-1.
PANJANG_OCTET(exp-1)
Mengembalikan jumlah bilangan bulat oktet (byte 8-bit) yang diperlukan untuk merepresentasikan string -exp-1.
Mengembalikan subbidang numerik yang diekstrak dari nilai datetime -[Link]-bidang adalah TAHUN,
TRIWULAN, BULAN, HARI, JAM, MENIT, DETIK, JAM_ZONA_WAKTU atau
TIMEZONE_MINUTE, TIMEZONE_HOUR dan TIMEZONE_MINUTE mengekstrak sub-field dari
Bagian Zona Waktu dari exp-1. KUARTAL adalah (BULAN-1)/4+1.
Nilai Sistem
Nilai Sistem SQL adalah nama yang dicadangkan yang digunakan untuk mengakses nilai bawaan:
CAST(exp-1 AS tipe-data)
Mengonversi nilai -exp-1, ke dalam tipe tanggal yang ditentukan. Mengembalikan nilai yang telah dikonversi.
Kembalikan exp-1 jika tidak null, jika tidak kembalikan exp-2 jika tidak null, jika tidak kembalikan exp-3, dan
jadi seterusnya. Mengembalikan null jika semua nilai adalah null.
KASUS exp-1 { KETIKA exp-2 MAKA exp-3 } ... [LAINNYA exp-4] AKHIR
KASUS { KETIKA predikat-1 MAKA exp-3 } ... [LAINNYA exp-4] AKHIR
Bentuk pertama dari konstruk CASE membandingkan exp-1 dengan exp-2 dalam setiap klausa WHEN. Jika ada yang cocok
ditemukan, CASE mengembalikan exp-3 dari klausa THEN yang sesuai. Jika tidak ada kecocokan yang ditemukan, ia mengembalikan
exp-4dari klausa ELSE atau nullif jika klausa ELSE dihilangkan.
Bentuk kedua dari konstruksi CASE mengevaluasi predicate-1 di setiap klausa WHEN. Jika predikat
benar, CASE mengembalikan exp-3 dari klausa THEN yang sesuai. Jika tidak ada predikat yang dievaluasi menjadi benar,
ini mengembalikan exp-4 dari klausa ELSE atau null jika klausa ELSE dihilangkan.
Operator Ekspresi
Operator ekspresi menggabungkan 2 subekspresi untuk menghitung sebuah nilai. Ada 2 jenis dasar -- numerik dan
string.
Operator String
32
Hanya ada satu operator string - ||, untuk penggabungan string. Kedua operand dari || harus berupa string.
Operator menggabungkan string kedua ke akhir string pertama. Contohnya,
ab || cd ==> abcd
Operator numerik
o+-- penambahan
opengurangan
o*-- perkalian
o/-- pembagian
Semua operator numerik dapat digunakan pada tipe data numerik standar:
Konversi otomatis disediakan untuk operator numerik. Jika tipe integer digabungkan dengan sebuah yang tepat
tipe, bilangan bulat diubah menjadi tepat sebelum operasi. Jika tipe tepat (atau bilangan bulat) digabungkan
with an approximate type, it is converted to approximate before the operation.
Operator numerik dapat diterapkan pada nilai datetime, dengan beberapa pembatasan. Aturan dasar untuk
ekspresi tanggal dan waktu adalah:
oSebuah tanggal, waktu, nilai cap waktu dapat ditambahkan ke suatu interval; hasilnya adalah tanggal, waktu, cap waktu
nilai.
oNilai interval dapat dikurangkan dari nilai tanggal, waktu, timestamp; hasilnya adalah sebuah tanggal.
waktu, nilai cap waktu.
oSebuah nilai interval dapat ditambahkan atau dikurangkan dari interval lain; hasilnya adalah sebuah interval
nilai.
o Sebuah interval dapat dikalikan atau dibagi dengan nilai numerik standar; hasilnya adalah sebuah interval
nilai.
Bentuk khusus dapat digunakan untuk mengurangkan nilai tanggal, waktu, timestamp dari tanggal, waktu lainnya.
nilai timestamp untuk menghasilkan nilai interval:
Sebuah bentuk khusus kedua memungkinkan parameter ? untuk diketik sebagai interval:
? interval-qualifier
Dalam ekspresi, tanda kurung digunakan untuk pengelompokan.
Menggabungkan Tabel
Klausul FROM memungkinkan lebih dari 1 tabel dalam daftarnya, namun hanya mencantumkan lebih dari satu tabel akan sangat
jarang menghasilkan hasil yang diharapkan. Baris dari satu tabel harus berkorelasi dengan baris dari tabel lainnya.
Korelasi ini dikenal sebagai penyambungan.
33
Sebuah contoh dapat dengan baik menggambarkan alasan di balik penggabungan. Kuery berikut:
PILIH * DARI sp, p
Produces:
sno pno qty pno descr color
S1 P1 NULL P1 Widget Biru
S1 P1 NULL P2 Widget Merah
S1 P1 NULL P3 Dongle Hijau
S2 P1 200 Widget Biru P1
S2 P1 200 P2 Widget Merah
S2 P1 200 Dongle P3 Hijau
S3 P1 1000 P1 Widget Biru
S3 P1 1000 P2 Widget Merah
S3 P1 1000 P3 Dongle Hijau
S3 P2 200 Widget Biru P1
S3 P2 200 Widget Merah P2
S3 P2 200 P3 Dongle Hijau
Setiap baris inspis dipadukan secara arbitrer dengan setiap baris inp, menghasilkan 12 baris hasil (4 baris insp X 3 baris in)
Ini dikenal sebagai produk kartesian.
Kueri yang lebih dapat digunakan akan menghubungkan baris dari sp dengan baris dari p, misalnya mencocokkan pada
common column --pno:
PILIH *
DARI sp, p
DIMANA [Link] = [Link]
Ini menghasilkan:
sno pno qty pno descr color
S1 P1 NULL P1 Widget Biru
S2 P1 200 P1 Widget Biru
S3 P1 1000 P1 Widget Biru
S3 P2 200 P2 Widget Merah
Baris untuk setiap bagian dalampare digabungkan dengan baris insp untuk bagian yang sama dengan mencocokkan pada nomor bagian (pno).
Dalam kueri ini, klausa WHERE menyediakan predikat gabungan, mencocokkan pnofromp dengan pnofromsp.
Gabungan dalam contoh ini dikenal sebagai inner equi-join, yang berarti bahwa predikat gabungan menggunakan = (sama dengan)
untuk mencocokkan kolom yang bergabung. Jenis gabungan lainnya menggunakan operator perbandingan yang berbeda. Misalnya, sebuah kueri
mungkin menggunakan join lebih besar dari.
The terminnermeans only rows that match are included. Rows in the first table that have no matching rows
di tabel kedua dikecualikan dan sebaliknya (dalam gabungan di atas, baris inpwithpnoP3 tidak termasuk dalam
Hasilnya.) Anouterjoin termasuk baris yang tidak cocok dalam hasil.
Lebih dari 2 tabel dapat ikut serta dalam sebuah join. Ini pada dasarnya hanya merupakan perpanjangan dari join 2 tabel. 3 tabel --
a,b,c, mungkin digabungkan dengan berbagai cara:
ajoinsbwhich joinsc
ajoinsband gabungan dari a dan b gabungkan c
ajoinsbandajoinsc
Plus beberapa variasi lainnya. Dengan inner joins, struktur ini tidak eksplisit. Ini tersirat dalam sifat dari
Gabungkan predikat. Tanpa gabungan, itu eksplisit;
Kueri ini melakukan penggabungan 3 tabel:
34
SELECT name, qty, descr, color
DARI s, sp, p
DIMANA [Link] = [Link]
DAN [Link] = [Link]
Ini bergabungstospandsptop, menghasilkan:
name qty descr color
Pierre NULL Widget Biru
John 200 Widget Biru
Mario 1000 Widget Biru
Mario 200 Widget Merah
Perhatikan bahwa urutan tabel yang terdaftar dalam klausa FROM seharusnya tidak memiliki arti, begitu juga dengan urutan dari
bergabungkan predikat dalam klausa WHERE.
Gabungan Luar
Inner join mengecualikan baris dari salah satu tabel yang tidak memiliki baris yang cocok di tabel lainnya. Outer
join menyediakan kemampuan untuk menyertakan baris yang tidak cocok dalam hasil kueri. Join luar menggabungkan
baris tak cocok di salah satu tabel dengan baris buatan untuk tabel lainnya. Baris buatan ini memiliki semua kolom
set tonull.
Join luar ditentukan dalam klausa FROM dan memiliki format umum berikut:
tabel-1 { KIRI | KANAN | PENUH } OUTER JOIN tabel-2 PADA predikat-1
predicate-1 adalah predikat gabung untuk gabungan luar. Ini hanya dapat merujuk pada kolom dari tabel yang digabungkan.
Spesifikator LEFT, RIGHT atau FULL memberikan jenis gabungan:
KIRI -- hanya baris yang tidak cocok dari tabel sisi kiri (tabel-1) yang dipertahankan
KANAN -- hanya baris yang tidak cocok dari tabel sisi kanan (tabel-2) yang dipertahankan
FULL -- unmatched rows from both tables (table-1andtable-2) are retained
35
Subkueri
Subkueri adalah fitur yang mengidentifikasi SQL. Ini disebut Bahasa Query Terstruktur karena sebuah kueri dapat
bersarang di dalam kueri lain.
Ada 3 jenis dasar subquery di SQL:
Subquery Predikat -- konstruk logis yang diperluas dalam klausa WHERE (dan HAVING).
Subkueri Skalar -- kueri mandiri yang mengembalikan satu nilai; mereka dapat digunakan di mana saja.
nilai skalar digunakan.
Subkueri Tabel - kueri yang terbenam dalam klausa FROM.
Dalam Subquery
Subkueri IN menguji apakah nilai skalar cocok dengan nilai kolom kueri tunggal di mana pun
baris hasil subquery. Ini memiliki format umum sebagai berikut:
PILIH *
DARI p
DIMANA pno DALAM (PILIH pno DARI sp)
pno descr color
Widget Biru P1
Widget Merah P2
Contoh Self Join di subseksi sebelumnya dapat diekspresikan dengan Subquery IN:
Perhatikan bahwa klausa where subquery merujuk pada kolom di query luar ([Link]). Ini dikenal sebagai
sebagai referensi luar. Subkueri dengan referensi luar terkadang dikenal sebagai berkorelasi.
subkueri.
Subkueri Kuantitatif
Subkueri yang terkuantifikasi memungkinkan beberapa jenis pengujian dan dapat menggunakan seluruh set operator perbandingan.
Ini memiliki format umum sebagai berikut:
36
value-1 {=|>|<|>=|<=|<>} {ANY|ALL|SOME} (query-1)
Operator perbandingan menentukan bagaimana membandingkan nilai-1 dengan nilai kolom kueri tunggal dari
setiap baris hasil subkueri. Spesifier ANY, ALL, SOME memberikan jenis kecocokan yang diharapkan. ANY
dan SOME harus cocok dengan setidaknya satu baris dalam subquery. ALL harus cocok dengan semua baris dalam subquery.
PILIH *
DARI p
DIMANA pno =ANY (PILIH pno DARI sp)
pno descr color
P1 Widget Biru
Widget Merah P2
Sebuah self join digunakan untuk mencantumkan pemasok dengan jumlah tertinggi dari setiap bagian (mengabaikan null
kuantitas):
PILIH *
DARI sp a
DIMANA qty >SEMUA (PILIH qty DARI sp b
DIMANA [Link] = [Link]
DAN [Link] <> [Link]
DAN qty TIDAK NULL)
sno pno qty
S3 P1 1000
S3 P2 200
Subquery EXISTS
Subquery EXISTS menguji apakah subquery mengambil setidaknya satu baris, yaitu, apakah sebuah
baris yang memenuhi syarat ada. Ini memiliki format umum berikut
ADA(query-1)
Setiap subkueri EXISTS yang valid harus mengandung referensi luar. Ini harus berupa subkueri yang terhubung.
Catatan: daftar pilihan dalam subquery EXISTS sebenarnya tidak digunakan dalam mengevaluasi EXISTS, jadi bisa
contain any valid select list (though*is normally used).
PILIH *
DARI p
DIMANA ADA(SELECT * DARI sp DIMANA [Link] = [Link])
pno descr color
Widget Biru P1
Widget Merah P2
37
Subquery Skalar
Subkueri Skalar dapat digunakan di mana saja nilai dapat digunakan. Subkueri harus merujuk hanya pada satu
kolom dalam daftar pilih. Ini juga harus mengambil tidak lebih dari satu baris.
Ketika subquery mengembalikan satu baris, nilai dari kolom daftar pilih tunggal menjadi nilai dari
Subkueri Skalar. Saat subkueri tidak mengembalikan baris, sebuah databasenullis digunakan sebagai hasil dari subkueri.
Jika subquery mengambil lebih dari satu baris, itu akan menghasilkan kesalahan runtime dan menghentikan eksekusi kueri.
Subquery Skalar dapat muncul sebagai nilai skalar dalam daftar select dan predikat where dari query lain.
Kueri berikut pada thesptable menggunakan Subquery Skalar dalam daftar seleksi untuk mengambil kota pemasok
terkait dengan nomor pemasok (snokolom insp):
PILIH pno, qty, (PILIH kota DARI s DI MANA [Link] = [Link])
DARI sp
pno qty kota
P1 NULL Paris
P1 200 London
P1 1000 Roma
P2 200 Rome
Kueri berikut pada thesptable menggunakan Subquery Skalar di klausa where untuk mencocokkan bagian berdasarkan warna
terkait dengan nomor bagian (pnocolumn insp):
PILIH *
DARI sp
DIMANA 'Biru' = (PILIH warna DARI p DI MANA [Link] = [Link])
sno pno qty
S1 P1 NULL
S2 P1 200
S3 P1 1000
Perhatikan bahwa kedua kueri contoh menggunakan referensi luar. Ini adalah hal yang normal dalam Subkueri Skalar. Seringkali, Skalar
Subkueri adalah Kueri Agregat.
Subkueri Tabel
Subkueri Tabel adalah kueri yang digunakan dalam klausa FROM, menggantikan nama tabel. Pada dasarnya, hasil set dari
Subkueri Tabel bertindak seperti tabel dasar dalam daftar dari. Subkueri Tabel dapat memiliki nama korelasi di
dari daftar. Mereka juga dapat berada dalam gabungan luar.
Dua kueri berikut menghasilkan hasil yang sama:
PILIH p.*, qty
DARI p, sp
DIMANA [Link] = [Link]
DAN sno = 'S3'
pno descr color qty
P1 Widget Biru 1000
P2 Widget Merah 200
PILIH p.*, qty
DARI p, (PILIH pno, qty DARI sp DI MANA sno = 'S3')
DIMANA [Link] = [Link]
pno descr color qty
P1 Widget Biru 1000
P2 Widget Merah 200
38
Grouping Queries
Kueri Pengelompokan adalah jenis kueri khusus yang mengelompokkan dan merangkum baris. Ia menggunakan GROUP BY
Klausul.
Kueri Pengelompokan mengelompokkan baris berdasarkan nilai yang sama dalam satu set kolom pengelompokan. Baris dengan nilai yang sama
nilai untuk kolom pengelompokan ditempatkan dalam kelompok yang berbeda. Setiap kelompok diperlakukan sebagai satu baris dalam
hasil kueri.
Meskipun sekelompok data diperlakukan sebagai satu baris, baris yang mendasarinya dapat menjadi subjek operasi ringkasan.
dikenal sebagai Fungsi Set yang hasilnya dapat dimasukkan dalam kueri. Klausa HAVING opsional mendukung
memfilter baris grup dengan cara yang sama seperti klausa WHERE memfilter baris FROM.
Sebagai contoh, mengelompokkan thesptable berdasarkan kolom pnocon menghasilkan 2 kelompok:
Null mendapatkan perlakuan khusus oleh GROUP BY. GROUP BY menganggap null sebagai berbeda dari setiap null lainnya.
Setiap baris yang memiliki null di salah satu kolom pengelompokkannya membentuk kelompok terpisah.
Pengelompokan tabel ini pada kolom qty menghasilkan 3 grup:
sno pno qty
S1 P1 NULL NULL Grup
S2 P1 200
Grup 200
S3 P2 200
S3 P1 1000 1000 Grup
Baris di mana qty adalah null membentuk kelompok terpisah.
Klausul GROUP BY
GROUP BY adalah klausa opsional dalam sebuah kueri. Itu mengikuti klausa WHERE atau klausa FROM jika
Klausul WHERE hilang. Sebuah kueri yang mengandung klausul GROUP BY adalah Kueri Pengelompokan. GROUP BY
klausa memiliki format umum berikut:
GROUP BY kolom-1 [, kolom-2] ...
kolom-1dan kolom-2adalah kolom pengelompokan. Mereka harus merupakan nama kolom dari tabel di FROM
klausa; mereka tidak dapat menjadi ungkapan.
GROUP BY beroperasi pada baris dari klausul FROM yang difilter oleh klausul WHERE. Ini mengumpulkan
baris menjadi grup berdasarkan nilai umum di kolom pengelompokan. Kecuali null, baris dengan set yang sama dari
nilai untuk kolom pengelompokan ditempatkan dalam grup yang sama. Jika ada kolom pengelompokan untuk sebuah baris mengandung sebuah
null, baris diberikan grupnya sendiri.
Sebagai contoh,
PILIH pno
DARI sp
GROUP BY pno
pno
P1
P2
In Grouping Queries, the select list can only contain grouping columns, plus literals, outer references and
ekspresi yang melibatkan elemen-elemen ini. Kolom non-pengelompokan dari tabel FROM yang mendasarinya tidak dapat di
39
dirujuk langsung. Namun, kolom yang tidak dikelompokkan dapat digunakan dalam daftar seleksi sebagai argumen untuk Set
Fungsi. Fungsi Set merangkum kolom dari baris yang mendasari suatu grup.
Fungsi Himpunan
Fungsi Set adalah fungsi ringkasan khusus yang digunakan dengan Kuery Pengelompokan dan Kuery Agregat. Mereka
merangkum kolom dari baris yang mendasari suatu grup atau agregat.
Menggunakan contoh Group By di atas, mengelompokkan thesptable berdasarkan kolom thepnocolumn:
sno pno qty
S1 P1 NULL
S2 P1 200 'P1' Grup
S3 P1 1000
S3 P2 200 Grup 'P2'
Fungsi Set dapat menghitung total kuantitas untuk setiap kelompok:
sno pno qty qty total
S1 P1 NULL
S2 P1 200 'P1' Grup 1200
S3 P1 1000
S3 P2 200 Grup 'P2'
200
Kolom null diabaikan dalam menghitung ringkasan. Fungsi Set -- SUM, menghitung aritmetika
jumlah kolom numerik dalam sekumpulan baris yang dikelompokkan/di agregat. Misalnya,
PILIH pno, JUMLAH(qty)
DARI sp
GROUP BY pno
pno
P1 1200
P2 200
Fungsi Set memiliki format umum berikut:
fungsi-set ( [DISTINCT|ALL] kolom-1 )
set-functionis:
Hasil dari fungsi COUNT selalu berupa bilangan bulat. Hasil dari semua fungsi Set lainnya adalah tipe data yang sama
ketik sebagai argumen.
Fungsi Set melewatkan kolom dengan nilai null, merangkum nilai non-null. COUNT menghitung baris dengan non-
nilai null, AVG menghitung rata-rata nilai non-null, dan seterusnya. COUNT mengembalikan 0 ketika tidak ada nilai kolom non-null
ditemukan; fungsi lainnya mengembalikan null ketika tidak ada nilai untuk dirangkum.
Argumen Fungsi Set bisa berupa kolom atau ekspresi skalar.
Spesifikasi DISTINCT dan ALL bersifat opsional. ALL menunjukkan bahwa semua nilai non-null diringkas;
adalah default. DISTINCT menetapkan bahwa nilai kolom yang berbeda diringkas; nilai duplikat diabaikan.
Catatan: DISTINCT tidak berpengaruh pada hasil MIN dan MAX.
COUNT juga memiliki format alternatif:
HITUNG(*)
... yang menghitung baris yang mendasari terlepas dari isi kolom.
40
Contoh Fungsi Set:
SELECT pno, MIN(sno), MAX(qty), AVG(qty), COUNT(DISTINCT sno)
DARI sp
GROUP BY pno
pno
P1 S1 1000600 3
P2 S3 200 200 1
PILIH sno, COUNT(*) bagian
DARI sp
GRUPKAN MENURUT sno
sno bagian
S1 1
S2 1
S3 2
Klausul HAVING
Klausa HAVING terkait dengan Kueri Pengelompokan dan Kueri Agregat. Ini opsional di keduanya.
kasus. Dalam Kueri Pengelompokan, mengikuti klausa GROUP BY. Dalam Kueri Agregat, HAVING mengikuti
Klausul WHERE atau klausul FROM jika klausul WHERE hilang.
Klausul HAVING memiliki format umum berikut:
Pernyataan HAVING
Seperti Klausul WHERE, HAVING menyaring baris hasil kueri. WHERE menyaring baris dari FROM
klausa. HAVING memfilter baris yang dikelompokkan (dari klausa GROUP BY) atau baris agregat (untuk Agregat
Permintaan).
predikat adalah ekspresi logis yang merujuk pada kolom yang dikelompokkan dan fungsi set. Ini memiliki batasan yang sama
sebagai daftar pilihan untuk Kuery Pengelompokan dan Kuery Agregat.
Jika predikat Having dievaluasi sebagai benar untuk baris yang dikelompokkan atau agregat, baris tersebut termasuk dalam kueri
hasil, jika tidak, baris tersebut dilewatkan (tidak termasuk dalam hasil kueri).
Sebagai contoh,
PILIH sno, HITUNG(*) bagian
DARI sp
GROUP BY sno
MEMILIKI COUNT(*) > 1
sno bagian
S3 2
Kueri Agregat
Kueri Agregat dapat menggunakan Fungsi Set dan Klausul HAVING. Ini mirip dengan Kueri Pengelompokan kecuali
tidak ada kolom pengelompokan. Baris yang mendasari dari klausa FROM dan WHERE dikelompokkan menjadi
sebuah baris agregat tunggal. Kuery Agregat selalu mengembalikan satu baris, kecuali ketika klausa Having adalah
digunakan.
Kueri Agregat adalah kueri yang mengandung Fungsi Set dalam daftar pilih tetapi tidak memiliki klausa GROUP BY. Yang
Fungsi Set beroperasi pada kolom dari baris dasar dari baris agregat tunggal. Kecuali untuk luar
referensi, kolom mana saja yang digunakan dalam daftar pilih harus menjadi argumen untuk Fungsi Set.
Sebuah kueri agregat juga dapat memiliki klausa Having. Klausa Having menyaring baris agregat tunggal. Jika
predikat Having dievaluasi menjadi benar, hasil kueri mengandung baris agregat. Jika tidak, kueri
hasil tidak mengandung baris.
Sebagai contoh,
PILIH COUNT(DISTINCT pno) jumlah_bagian, SUM(qty) total_bagian
DARI sp
number_parts total_parts
41
2 1400
Subkueri sering kali adalah Kuery Agregat. Misalnya, bagian dengan pemasok:
PILIH *
DARI p
DIMANA (PILIH COUNT(*) DARI sp DIMANA [Link]=[Link]) > 0
pno descr color
Widget Biru P1
Widget Merah P2
Bagian dengan banyak pemasok:
PILIH *
DARI p
DI MANA (PILIH HITUNG(DISTINCT sno) DARI sp DI MANA [Link]=[Link]) > 1
pno descr color
Widget Biru P1
Kueri Gabungan
Operator SQL UNION menggabungkan hasil dari dua kueri menjadi hasil komposit. Komponen
kueri dapat berupa kueri SELECT/FROM dengan klausa WHERE/GROUP BY/HAVING opsional. UNION
operator memiliki format umum berikut:
kueri-1 UNION [SEMUA] kueri-2
query-1danquery-2adalah spesifikasi kueri lengkap. Operator UNION membuat hasil kueri baru yang
termasuk baris dari setiap kueri komponen.
Secara default, UNION menghapus baris duplikat dalam hasil kompositnya. Spesifier opsional ALL meminta
duplikasi harus dipertahankan dalam hasil UNION.
Kueri komponen dari Kueri Union juga bisa menjadi Kueri Union itu sendiri. Kurung digunakan untuk
kueri pengelompokan.
Daftar pilih dari kueri komponen harus kompatibel untuk penggabungan. Mereka harus cocok dalam derajat (jumlah
dari kolom). Untuk Entry Level SQL92, deskriptor kolom (tipe data dan presisi, skala) untuk setiap
kolom yang sesuai harus cocok. Aturan untuk SQL92 Tingkat Menengah kurang ketat.
Kueri yang Kompatibel dengan Union
Untuk Tingkat Masuk SQL92, setiap kolom yang sesuai dari kedua kueri harus memiliki deskripsi kolom yang sama
agar dua kueri dapat kompatibel dengan union. Aturannya kurang ketat untuk Tingkat Menengah SQL92.
Ini mendukung konversi otomatis dalam kategori tipe. Secara umum, tipe data yang dihasilkan akan lebih luas.
tipe. Kolom yang bersangkutan hanya perlu berada dalam kategori tipe data yang sama:
Contoh UNION
PILIH * DARI sp
UNION
PILIH CAST(' ' SEBAGAI VARCHAR(5)), pno, CAST(0 SEBAGAI INT)
42
DARI p
DI MANA pno TIDAK DI (PILIH pno DARI sp)
sno pno qty
S1 P1 NULL
S2 P1 200
S3 P1 1000
S3 P2 200
P3 0
Pernyataan INSERT
Pernyataan INSERT menambahkan satu atau lebih baris ke sebuah tabel. Ini memiliki dua format:
MASUKKAN KE dalam tabel-1 [(daftar-kolom)] NILAI (daftar-nilai)
dan,
MASUKKAN KE dalam tabel-1 [(daftar-kolom)] (spesifikasi-query)
Bentuk pertama menyisipkan satu baris ke dalam tabel-1 dan secara eksplisit menentukan nilai kolom untuk baris tersebut.
bentuk kedua menggunakan hasil dari spesifikasi-query untuk memasukkan satu atau lebih baris ke dalam tabel-1. Baris hasil
dari query apakah baris ditambahkan ke tabel insert. Catatan: query tidak dapat merujuk pada tabel-1.
Kedua bentuk memiliki spesifikasi daftar kolom opsional. Hanya kolom yang terdaftar yang akan diberikan nilai.
Kolom yang tidak terdaftar diatur ke null, jadi kolom yang tidak terdaftar harus memperbolehkan null. Nilai dari Klausul VALUES
(bentuk pertama) atau kolom dari rows spesifikasi-pertanyaan (bentuk kedua) ditugaskan ke
kolom yang sesuai dalam daftar-kolom sesuai urutan.
Jika daftar kolom opsional hilang, daftar kolom default akan digunakan. Daftar kolom default berisi
semua kolom di tabel-1 dalam urutan mereka dinyatakan dalam CREATE TABLE, atau CREATE VIEW.
Klausul VALUES
Klausa VALUES dalam Pernyataan INSERT menyediakan serangkaian nilai untuk ditempatkan di kolom-kolom baru
baris. Ini memiliki format umum sebagai berikut:
NILAI ( nilai-1 [, nilai-2] ... )
value-1danvalue-2adalah Nilai Literal atau Ekspresi Skalar yang melibatkan literal. Mereka juga dapat menentukan
NULL.
Daftar nilai dalam klausa VALUES harus cocok dengan daftar kolom eksplisit atau implisit untuk INSERT dalam derajat
(jumlah item). Mereka juga harus sesuai dengan tipe data kolom yang bersangkutan atau dapat dikonversi ke tipe tersebut
tipe data.
Sisipkan Contoh
MASUKKAN KE p (pno, warna) NILAI ('P4', 'Cokelat')
Sebelum Setelah
pno descr color pno descr color
Widget Biru P1 Widget Biru P1
Widget Merah P2 => P2 Widget Merah
P3 Dongle Hijau P3 Dongle Hijau
43
P4 NULL Coklat
INSERT INTO sp
PILIH [Link], [Link], 500
DARI s, p
DIMANA [Link]='Hijau' DAN [Link]='London'
Sebelum Setelah
sno pno qty sno pno qty
S1 P1 NULL S1 P1 NULL
S2 P1 200 S2 P1 200
=
S3 P1 1000 > S3 P1 1000
S3 P2 200 S3 P2 200
S2 P3 500
Pernyataan UPDATE
Pernyataan UPDATE mengubah kolom dalam baris tabel yang dipilih. Ini memiliki format umum sebagai berikut:
PERBARUI tabel-1 SET daftar-set [DIMANA predikat]
Klausul WHERE opsional memiliki format yang sama seperti dalam Pernyataan SELECT. Lihat Klausul WHERE.
Klausul WHERE memilih baris tabel mana yang akan diperbarui. Jika tidak ada, semua baris akan diperbarui.
Daftar set ini berisi penugasan nilai baru untuk kolom yang dipilih.
Ekspresi SET Clause dan predikat WHERE Clause dapat mengandung subquery, tetapi subquery tersebut
tidak dapat merujuk tabel-1. Ini mencegah situasi di mana hasil bergantung pada urutan pemrosesan.
SET Clause
Klausul SET dalam Pernyataan UPDATE memperbarui (menetapkan nilai baru ke) kolom-kolom di tabel yang dipilih
baris. Ini memiliki format umum sebagai berikut:
SET kolom-1 = nilai-1 [, kolom-2 = nilai-2] ...
kolom-1dan kolom-2 adalah kolom dalam tabel Pembaruan. nilai-1dan nilai-2 adalah ekspresi yang dapat
kolom referensi dari tabel pembaruan. Mereka juga bisa menjadi kata kunci -- NULL, untuk mengatur kolom menjadi null.
Karena ekspresi penugasan dapat merujuk pada kolom dari baris saat ini, ekspresi dievaluasi
first. After the values of all Set expressions have been computed, they are then assigned to the referenced
kolom. Ini menghindari hasil yang tergantung pada urutan pemrosesan.
UPDATE Examples
PERBARUI sp SET qty = qty + 20
Sebelum Setelah
sno pno qty sno pno qty
S1 P1 NULL S1 P1 NULL
S2 P1 200 = S2 P1 220
S3 P1 1000 > S3 P1 1020
S3 P2 200 S3 P2 220
PERBARUI s
SET name = 'Tony', city = 'Milan'
DIMANA sno = 'S3'
Sebelum Setelah
sno name city sno name city
S1 Pierre Paris S1 Pierre Paris
=>
S2 John London S2 John London
S3 Mario Roma S3Tony Milan
44
Pernyataan DELETE
Pernyataan DELETE menghapus baris yang dipilih dari sebuah tabel. Ini memiliki format umum berikut:
HAPUS DARI tabel-1 [DIMANA predikat]
Klausul WHERE yang opsional memiliki format yang sama seperti dalam Pernyataan SELECT. Lihat Klausul WHERE.
Klausul WHERE memilih baris tabel mana yang akan dihapus. Jika tidak ada, semua baris di tabel-1 akan dihapus.
Predikat klausa WHERE dapat mengandung subkueri, tetapi subkueri tidak dapat merujuk tabel-1. Ini
mencegah situasi di mana hasil bergantung pada urutan pemrosesan.
HAPUS Contoh
HAPUS DARI sp DIMANA pno = 'P1'
Sebelum Setelah
sno pno qty sno pno qty
S1 P1 NULL S3 P2 200
S2 P1 200 =
S3 P1 1000 >
S3 P2 200
HAPUS DARI p DI MANA pno TIDAK ADA DI (PILIH pno DARI sp)
Sebelum Setelah
pno descr color pno descr color
Widget Biru P1 Widget Biru P1
Widget Merah P2 => P2 Widget Merah
P3 Dongle Hijau
Pernyataan COMMIT -- komit (buat permanen) semua perubahan untuk transaksi saat ini
Pernyataan ROLLBACK -- membatalkan (mencabut) semua perubahan untuk transaksi saat ini
Gambaran Transaksi
Transaksi basis data adalah unit yang lebih besar yang membingkai beberapa pernyataan SQL. Sebuah transaksi memastikan bahwa
aksi dari pernyataan yang dibingkai adalah atomik sehubungan dengan pemulihan.
Pernyataan Modifikasi SQL memiliki pengaruh yang terbatas. Pernyataan tertentu hanya dapat memodifikasi konten secara langsung.
dari sebuah tabel tunggal (Dampak Integritas Referensial dapat menyebabkan modifikasi tidak langsung pada tabel lain.) Intinya adalah
operasi yang memerlukan modifikasi beberapa tabel harus melibatkan beberapa pernyataan modifikasi.
Contoh klasik adalah operasi bank yang mentransfer dana dari satu jenis rekening ke jenis rekening lain, yang memerlukan
pembaruan ke 2 tabel. Transaksi memberikan cara untuk mengelompokkan beberapa pernyataan ini dalam suatu unit atom.
Dalam SQL92, tidak ada pernyataan BEGIN TRANSACTION. Sebuah transaksi dimulai dengan pelaksanaan sebuah
Pernyataan SQL-Data ketika tidak ada transaksi saat ini. Semua pernyataan SQL-Data berikutnya sampai
COMMIT atau ROLLBACK menjadi bagian dari transaksi. Eksekusi pernyataan COMMIT atau
Pernyataan ROLLBACK menyelesaikan transaksi saat ini. Pernyataan SQL-Data berikutnya memulai yang baru.
transaksi.
Dalam hal efek langsung pada basis data, itu adalah Pernyataan Modifikasi SQL yang menjadi pertimbangan utama.
karena mereka mengubah data. Total serangkaian perubahan pada basis data oleh pernyataan modifikasi dalam sebuah transaksi
diperlakukan sebagai unit atom melalui tindakan transaksi. Serangkaian perubahan tersebut baik:
45
Dibuat sepenuhnya persisten dalam basis data melalui tindakan Pernyataan COMMIT, atau
Tidak memiliki efek persisten apapun pada database, melalui:
otindakan dari Pernyataan ROLLBACK,
opemutusan abnormal dari klien yang meminta transaksi, atau
opengakhiran abnormal dari transaksi oleh DBMS. Ini mungkin merupakan tindakan oleh sistem
(penyelesaian deadlock) atau oleh agen administratif, atau bisa juga merupakan penghentian abnormal dari
DBMS itu sendiri. Dalam hal ini, DBMS harus membatalkan segala transaksi aktif selama
pemulihan.
DBMS harus memastikan bahwa efek dari sebuah transaksi tidak bersifat sebagian. Semua perubahan dalam sebuah transaksi haruslah
dapat dibuat permanen, atau tidak ada perubahan dari transaksi yang harus dibuat permanen.
Isolasi Transaksi
Dalam banyak kasus, transaksi dilaksanakan di bawah koneksi klien ke DBMS. Beberapa koneksi klien
dapat memulai transaksi pada saat yang sama. Ini dikenal sebagai transaksi bersamaan.
Dalam model relasional, setiap transaksi sepenuhnya terisolasi dari transaksi aktif lainnya. Setelah dimulainya,
sebuah transaksi hanya dapat melihat perubahan pada basis data yang dibuat oleh transaksi yang telah dikomit sebelum memulai yang baru
transaksi. Perubahan yang dilakukan oleh transaksi yang bersamaan tidak terlihat oleh kueri DML SQL dan modifikasi
pernyataan. Ini dikenal sebagai isolasi penuh atau transaksi Serializable.
SQL92 mendefinisikan Serializable untuk transaksi. Namun, transaksi yang sepenuhnya diserialisasi dapat berdampak pada kinerja.
For this reason, SQL92 allows additional isolation modes that reduce the isolation between concurrent
transaksi. SQL92 mendefinisikan 3 mode isolasi lainnya, tetapi dukungan oleh DBMS yang ada sering kali tidak lengkap
dan tidak selalu cocok dengan mode SQL92. Periksa dokumentasi DBMS Anda untuk informasi lebih lanjut.
Pernyataan Skema SQL dalam Transaksi
Jenis SQL Ketiga - Pernyataan SQL-Schema, dapat berpartisipasi dalam mekanisme transaksi.
Pernyataan skema SQL dapat berupa:
SQL92 menyerahkan pilihan kepada masing-masing DBMS. Ini adalah perilaku yang ditentukan oleh implementasi.
Pernyataan COMMIT
Pernyataan COMMIT mengakhiri transaksi saat ini dan menerapkan semua perubahan di bawah transaksi tersebut.
persisten. Ini mengkomit perubahan ke database. Pernyataan COMMIT memiliki format umum sebagai berikut:
KOMIT [PEKERJAAN]
WORK adalah kata kunci opsional yang tidak mengubah semantik dari COMMIT.
Pernyataan ROLLBACK
Pernyataan ROLLBACK mengakhiri transaksi saat ini dan membatalkan semua perubahan yang dibuat di bawah
transaksi. Ini membalikkan perubahan pada database. Pernyataan ROLLBACK memiliki umum berikut
format:
ROLLBACK [KERJA]
WORK adalah kata kunci opsional yang tidak mengubah semantik dari ROLLBACK.
STATEMENT BUAT TABEL -- membuat tabel dasar baru di skema saat ini
Buat Pernyataan TAMPILAN -- buat tabel tampilan baru di skema saat ini
PERNYATAAN DROP TABLE -- menghapus tabel dasar dari skema saat ini
46
45
PERNYATAAN DROP VIEW -- menghapus tabel tampilan dari skema saat ini
Pernyataan GRANT -- memberikan hak akses untuk objek dalam skema saat ini kepada pengguna lain
PERNYATAAN REVOKE -- mencabut hak akses yang sebelumnya diberikan untuk objek di saat ini
skema dari pengguna lain
Tabel basis data adalah struktur logis tanpa karakteristik fisik yang diimplikasikan. Utama di antara berbagai
tabel logis adalah tabel dasar. Tabel dasar adalah persisten dan terpisah, yaitu, semua data adalah bagian dari tabel
itu sendiri tanpa informasi yang diambil secara dinamis dari tabel lain.
Sebuah tabel memiliki sekumpulan kolom tetap. Kolom-kolom dalam tabel dasar tidak diakses secara posisi tetapi berdasarkan nama,
yang harus unik di antara kolom-kolom tabel. Setiap kolom memiliki tipe data yang ditentukan, dan nilainya
untuk kolom di setiap baris harus dari tipe data yang ditentukan atau null. Kolom dari sebuah tabel diakses
dan diidentifikasi dengan nama.
Sebuah tabel memiliki 0 atau lebih baris. Sebuah baris dalam tabel dasar memiliki nilai atau null untuk setiap kolom di tabel. Baris-baris
dalam sebuah tabel tidak memiliki urutan yang ditentukan dan tidak diakses secara posisi. Sebuah baris tabel diakses dan diidentifikasi
oleh nilai-nilai di kolomnya.
Dalam SQL92, tabel dasar dapat memiliki baris duplikat (baris di mana setiap kolom memiliki nilai yang sama atau null).
Namun, model relasional tidak mengakui tabel dengan baris duplikat sebagai tabel dasar (relasi) yang valid.
Model relasional mengharuskan setiap tabel dasar memiliki identifier unik, yang dikenal sebagai Kunci Utama.
Kunci utama untuk sebuah tabel adalah sekumpulan kolom yang ditunjuk yang memiliki nilai unik untuk setiap baris tabel. Untuk sebuah
diskusi tentang Kunci Utama, lihat Integritas Entitas di bawah CREATE TABLE.
Tabel dasar didefinisikan menggunakan Pernyataan CREATE TABLE. Pernyataan ini menempatkan deskripsi tabel di
katalog dan menginisialisasi entitas internal untuk representasi aktual dari tabel dasar.
Contoh tabel dasar -s:
sno name city
S1 Pierre Paris
S2 John London
S3 Mario Roma
Pemasok catatan stabil. Ini memiliki 3 kolom yang ditentukan:
sno -- nomor pemasok, sebuah pengidentifikasi unik yang merupakan kunci utama
name -- the name of the supplier
kota -- kota tempat pemasok berada
46
Saat ini, ada 3 baris.
Jenis tabel lain dalam sistem adalah tabel yang dihasilkan. Pernyataan SQL-Data menggunakan tabel yang dihasilkan secara internal dalam
menghitung hasil. Sebuah kueri sebenarnya adalah tabel turunan. Misalnya, operator kueri - Union, menggabungkan dua
tabel derivatif untuk menghasilkan yang ketiga. Sebagian besar kekuatan SQL berasal dari fakta bahwa tingkat yang lebih tinggi
operasi dilakukan pada tabel dan menghasilkan tabel sebagai hasilnya.
Tabel turunan memiliki batasan yang lebih sedikit dibandingkan tabel dasar. Nama kolom tidak diwajibkan dan tidak harus unik.
Tabel turunan dapat memiliki baris duplikat. Tampilan adalah jenis tabel turunan yang dicatat dalam basis data.
Tampilan
Sebuah tampilan adalah tabel yang diturunkan yang terdaftar dalam katalog. Sebuah tampilan didefinisikan menggunakan kueri SQL. Tampilan tersebut adalah
secara dinamis diturunkan, yaitu, isinya dimaterialisasi untuk setiap penggunaan. Tampilan ditambahkan ke katalog dengan
pernyataan CREATE VIEW.
Setelah didefinisikan dalam katalog, sebuah tampilan dapat menggantikan tabel dalam pernyataan SQL-Data. Nama tampilan dapat berupa
digunakan sebagai pengganti nama tabel dasar dalam klausa FROM dari pernyataan SELECT. Tampilan juga bisa menjadi subjek
pernyataan modifikasi dengan beberapa batasan.
Pernyataan Modifikasi SQL dapat beroperasi pada tampilan jika itu adalah tampilan yang dapat diperbarui. Tampilan yang dapat diperbarui memiliki
batasan berikut pada kueri definisinya:
Klausul query FROM dapat merujuk pada satu tabel (atau tampilan)
Tabel tunggal dalam klausa FROM harus:
otabel dasar
opandangan yang juga merupakan tampilan yang dapat diperbarui, atau
okueri bersarang yang dapat diperbarui, yaitu, mengikuti aturan untuk kueri tampilan yang dapat diperbarui.
Kueri harus merupakan kueri dasar, bukan:
oQuery Pengelompokan,
oKueri Agregat, atau
oKueri Union.
Daftar seleksi tidak dapat berisi:
ospesifier DISTINCT,
osebuah Ekspresi, atau
oreferensi kolom duplikat
Subkueri dapat diterima dalam tampilan yang dapat diperbarui tetapi tidak dapat merujuk ke tabel dasar yang mendasari tampilan.
Klausul FROM.
Hak istimewa
SQL92 mendefinisikan agen SQL sebagai entitas yang bergantung pada implementasi yang menyebabkan eksekusi SQL
pernyataan. Sebelum menjalankan pernyataan SQL, agen SQL harus menetapkan pengenal otorisasi
untuk akses basis data. Sebuah pengenal otorisasi biasa disebut nama pengguna.
Seorang pengguna DBMS dapat mengakses objek basis data (tabel, kolom, tampilan) sesuai dengan hak istimewa yang diberikan.
identifikasi otorisasi spesifik tersebut. Hak akses dapat diberikan oleh sistem (otomatis) atau oleh pihak lain
pengguna.
Hak istimewa yang diberikan oleh sistem mencakup:
Semua hak istimewa pada tabel kepada pengguna yang membuat tabel. Ini termasuk hak istimewa untuk memberikan
hak istimewa di tabel kepada pengguna lain.
Pilih hak (readonly) pada katalog (tabel di skema -definisi_skema). Ini adalah
diberikan kepada semua pengguna.
Hak istimewa pengguna mencakup hak istimewa untuk mengakses dan memodifikasi tabel dan kolom-kolomnya. Hak istimewa dapat berupa
diberikan untuk pernyataan SQL-Data tertentu -- SELECT, INSERT, UPDATE, DELETE.
Buat Pernyataan TABEL
Pernyataan CREATE TABLE membuat tabel dasar baru. Ini menambahkan deskripsi tabel ke katalog.
tabel dasar adalah entitas logis dengan ketahanan. Deskripsi logis dari tabel dasar terdiri dari:
47
Skema -- skema database logis tempat tabel tersebut berada
Nama Tabel -- nama yang unik di antara tabel dan tampilan dalam Skema
Daftar Kolom -- daftar terurut dari deklarasi kolom (nama, tipe data)
Constraints -- a list of constraints on the contents of the table
NOT NULL -- menentukan bahwa kolom tidak dapat diatur menjadi null. Jika batasan ini tidak ditentukan,
kolom dapat bernilai nol, yaitu, dapat diatur menjadi nol. Biasanya, kolom kunci utama dinyatakan sebagai TIDAK
NULL.
PRIMARY KEY -- menentukan bahwa kolom ini adalah satu-satunya kolom di kunci utama. Hanya ada
hanya satu deklarasi kunci utama dalam CREATE TABLE. Untuk kunci utama dengan beberapa kolom,
gunakan PRIMARY KEYtableconstraint. Lihat Integritas Entitas di bawah untuk deskripsi mendetail tentang
kunci primer.
UNIK -- menentukan bahwa kolom ini memiliki nilai unik atau null untuk semua baris dalam tabel.
REFERENSI -- menentukan bahwa kolom ini adalah satu-satunya kolom dalam kunci asing. Untuk kunci asing
dengan beberapa kolom, gunakan batasan FOREIGN KEY. Lihat Integritas Referensial di bawah
untuk deskripsi rinci tentang kunci utama.
CHECK -- menentukan batasan yang ditentukan pengguna pada tabel. Lihat batasan tabel - CHECK
di bawah.
PRIMARY KEY -- menentukan sekumpulan kolom yang membentuk kunci utama. Hanya bisa ada
satu deklarasi kunci utama dalam pernyataan CREATE TABLE. Lihat Integritas Entitas di bawah untuk
deskripsi rinci tentang kunci primer.
UNIQUE -- menentukan bahwa sekumpulan kolom memiliki nilai unik (atau nol) untuk semua baris di tabel.
Spesifier UNIK diikuti oleh daftar nama kolom yang diparentesis, dipisahkan oleh koma.
KUNCI ASING -- menentukan sekumpulan kolom dalam kunci asing. Lihat Integritas Referensi di bawah untuk
deskripsi rinci tentang kunci asing.
CHECK -- menentukan batasan yang ditentukan pengguna, dikenal sebagai kondisi cek. Penentu CHECK adalah
diikuti oleh suatu predikat yang diapit dalam tanda kurung. Untuk SQL92 Tingkat Menengah, CHECK
predikat hanya dapat merujuk pada kolom dari baris tabel saat ini, tanpa subkueri. Banyak DBMS
mendukung subquery dalam predikat pemeriksaan.
Pernyataan cek harus dievaluasi menjadi benar sebelum modifikasi atau penambahan baris terjadi. Yang
pemeriksaan dilakukan secara efektif pada konten tabel setelah modifikasi. Untuk Pernyataan INSERT,
the predicate is evaluated as if the INSERT row were added to the table. For UPDATE Statements,
predikat dievaluasi seolah-olah baris tersebut diperbarui. Untuk Pernyataan DELETE, predikat adalah
dievaluasi seolah-olah barisnya dihapus (Catatan: Predikat pemeriksaan hanya berguna untuk HAPUS jika sebuah
subquery digunakan.)
48
Data Type
Subbagian ini menjelaskan spesifikasi tipe data. Kategori tipe data adalah:
Karakter (String) -- string karakter dengan panjang tetap atau variabel. Set karakter adalah implementasi
ditentukan tetapi sering default ke ASCII.
Numerik -- nilai yang mewakili kuantitas numerik. Nilai numerik dibagi menjadi dua kategori luas ini
categories:
oTepat (juga dikenal sebagai titik tetap) -- Nilai numerik tepat memiliki jumlah digit yang tetap untuk
sebelah kiri titik desimal dan jumlah digit tetap di sebelah kanan (skala). Total
jumlah digit di kedua sisi desimal adalah presisi. Subset khusus dari tepat
tipe numerik dengan skala 0 disebut sebagai integer.
oPerkiraan (juga dikenal sebagai titik mengambang) -- Nilai numerik perkiraan yang memiliki tetap
presisi (jumlah angka) tetapi titik desimal mengambang.
Datetime -- Nilai Datetime mencakup nilai kalender dan jam (Tanggal, Waktu, Timestamp) dan
interval. Tipe datetime adalah:
o Tanggal -- tanggal kalender dengan tahun, bulan, dan hari
oWaktu -- waktu jam dengan jam, menit, detik dan pecahan detik, ditambah zona waktu
komponen (penyesuaian dalam jam, menit)
oTimestamp -- kombinasi tanggal kalender dan waktu jam dengan tahun, bulan, hari, jam, menit,
detik dan pecahan detik, ditambah komponen zona waktu (penyesuaian dalam jam, menit)
oInterval -- interval mewakili interval waktu dan tanggal. Mereka bertanda. Nilai interval dapat
mengandung subset dari bidang interval, misalnya - jam ke menit, tahun, hari ke detik.
Tipe interval dibagi menjadi:
. interval tahun-bulan -- dapat berisi tahun, bulan atau kombinasi tahun/bulan
nilai.
. interval waktu siang -- hari, jam, menit, detik, pecahan detik.
Kualifikasi Interval
Kualifikasi interval menentukan jenis spesifik dari nilai interval. Kualifikasi untuk tipe interval menyatakan
sub-bidang yang terdiri dari interval, ketepatan sub-bidang tertinggi (paling kiri) dan skala dari
Sub-bidang KEDUA (jika ada).
Interval dibagi menjadi sub-tipe -- interval tahun-bulan dan interval hari-waktu. Interval tahun-bulan dapat
only contain the sub-fields - year and month. Day-time intervals can contain day, hour, minute, second. The
kualifikasi interval memiliki format berikut:
TAHUN [(presisi)] [KE BULAN]
MONTH [(precision)]
Untuk baris tertentu, set nilai untuk kolom kunci utama harus unik dari semua baris lainnya.
di dalam tabel,
Tidak ada kolom kunci utama yang dapat mengandung null, dan
Sebuah tabel hanya dapat memiliki satu kunci primer (serangkaian kolom kunci primer).
Catatan: SQL92 tidak mengharuskan pembatasan kedua pada null dalam kunci primer. Namun, itu diperlukan
untuk sistem relasional.
50
Integritas Entitas (Kunci Utama) ditegakkan oleh DBMS dan memastikan bahwa setiap baris memiliki yang tepat
pengidentifikasi unik. Isi dari kolom mana pun di tabel dengan Integritas Entitas dapat diakses secara unik
dengan 3 informasi
table identifier
nilai kunci primer
nama kolom
Kemampuan ini sangat penting untuk sistem relasional. Memiliki pengenal yang jelas dan konsisten untuk baris tabel (dan mereka
kolom) membedakan sistem relasional dari yang lainnya. Ini memungkinkan pembentukan hubungan
antara tabel, juga penting untuk sistem relasional. Ini dibahas di bawah ini di bawah Integritas Referensial.
Keterbatasan kunci utama dalam PERNYATAAN CREATE memiliki dua bentuk. Ketika kunci utama terdiri
dari satu kolom, dapat dinyatakan sebagai batasan kolom, cukup - PRIMARY KEY, dilampirkan pada
deskriptor kolom. Misalnya:
sno VARCHAR(5) TIDAK NULL KUNCI UTAMA
Sebagai batasan tabel, ia memiliki format berikut:
KUNCI UTAMA ( kolom-1 [, kolom-2] ...)
kolom-1dankolom-2adalah nama kolom dari kunci utama. Misalnya,
PRIMARY KEY (sno, pno)
Urutan kolom dalam kunci utama tidak signifikan, kecuali sebagai urutan default untuk FOREIGN KEY
kendala tabel.
Integritas Referensial
Kunci asing menyediakan hubungan antara tabel dalam database. Dalam relasional, kunci asing dalam sebuah tabel adalah
sekumpulan kolom yang mereferensikan kunci utama dari tabel lain. Untuk setiap baris dalam tabel yang mereferensi,
Kunci asing harus mencocokkan kunci utama yang ada di tabel yang direferensikan. Penegakan batasan ini
dikenal sebagai Integritas Referensial.
Integritas Referensial memerlukan bahwa:
Kolom dari kunci asing harus cocok dalam jumlah dan tipe dengan kolom dari kunci primer di
tabelreferensi.
Nilai-nilai kolom kunci asing di setiap baris tabel referensi harus cocok dengan nilai-nilai
dari kolom kunci primer yang sesuai untuk sebuah baris di tabel yang dirujuk.
Satu pengecualian untuk pembatasan kedua adalah ketika kolom kunci asing untuk suatu baris mengandung nilai nol.
kunci utama tidak boleh mengandung null, sebuah kunci asing dengan null tidak dapat mencocokkan baris mana pun di tabel yang direferensikan.
Namun, baris dengan kunci asing yang berisi semua null (semua kolom kunci asing berisi null) diperbolehkan di dalam
tabelreferensi. Itu adalah referensi nol.
Seperti batasan lainnya, batasan integritas referensial membatasi konten dari tabel yang mereferensikan, tetapi
itu juga mungkin pada dasarnya membatasi isi tabel yang direferensikan. Ketika sebuah baris dalam tabel direferensikan (melalui
kuncinya) oleh kunci asing dalam satu baris di tabel lain, operasi yang mempengaruhi kolom kunci utamanya
memiliki efek samping dan dapat membatasi operasi. Mengubah kunci utama atau menghapus baris yang memiliki
merujuk pada kunci asing akan melanggar batasan integritas referensial pada tabel yang merujuk jika diizinkan
untuk melanjutkan. Ini ditangani dengan dua cara,
Tabel yang dirujuk dibatasi untuk membuat perubahan (dan melanggar integritas referensial di
merujuk pada tabel), atau
Baris di tabel referensi dimodifikasi sehingga batasan integritas referensial dipertahankan.
Tindakan ini dikendalikan oleh deklarasi efek integritas referensial, yang disebut pemicu referensial oleh
SQL92. Tindakan efek integritas referensial yang didefinisikan untuk SQL adalah:
TIDAK ADA TINDAKAN -- perubahan pada tabel yang dirujuk (kunci utama) tidak dilakukan. Ini adalah
default.
51
CASCADE -- perubahan pada tabel yang direferensikan diteruskan ke tabel yang mereferensikan (kunci asing)
meja.
SET NULL -- kolom kunci asing di tabel yang mereferensikan diatur menjadi null.
Pembaruan dan penghapusan memiliki deklarasi tindakan yang terpisah. Untuk CASCADE, pembaruan dan penghapusan juga beroperasi
berbeda:
Untuk pembaruan (nilai kolom kunci utama telah dimodifikasi), kunci asing yang sesuai
kolom untuk merujuk baris diatur ke nilai baru.
Untuk menghapus (baris kunci utama dihapus), baris yang merujuk dihapus.
Kendala integritas referensial dalam PERNYATAAN BUAT memiliki dua bentuk. Ketika kunci asing
terdiri dari satu kolom, dapat dideklarasikan sebagai batasan kolom, seperti:
column-descr REFERENCES references-specification
Sebagai batasan tabel, ia memiliki format berikut:
KUNCI ASING (daftar-kolom) MENGACU PADA spesifikasi-referensi
column-list adalah kolom tabel yang menjadi referensi yang terdiri dari kunci asing. Nama kolom dipisahkan oleh koma
dalam daftar. Urutannya harus cocok dengan daftar kolom eksplisit atau implisit dalam spesifikasi referensi.
spesifikasi-referensi memiliki format berikut:
tabel-2 [ ( kolom-referensi ) ]
[ PADA PERBARUI { KASKADE | SET NULL | TIDAK ADA TINDAKAN }]
[ PADA HAPUS { CASCADE | SET NULL | TIDAK ADA AKSI }]
Urutan klausa ON UPDATE dan ON DELETE dapat dibalik. Klausa ini menyatakan efeknya
tindakan ketika kunci primer yang dirujuk diperbarui atau dihapus. Default untuk ON UPDATE dan ON
DELETE adalah TIDAK ADA TINDAKAN.
tabel-2 adalah nama tabel yang direferensikan (tabel kunci utama). Kolom-kolom yang direferensikan bersifat opsional.
kunci utama yang direferensikan. Koma memisahkan nama kolom dalam daftar. Defaultnya adalah daftar kunci utama
dalam urutan deklarasi.
Bertentangan dengan model relasional, SQL92 mengizinkan kunci asing untuk merujuk ke sebarang set kolom yang dinyatakan dengan
constraintUNIQUE di tabel yang dirujuk (meskipun tabel tersebut memiliki kunci utama). Dalam hal ini,
Daftar kolom yang direferensikan diperlukan.
Contoh batasan tabel untuk integritas referensial (untuk thesptable):
KUNCI ASING (sno)
REFERENCES s(sno)
JIKA DIHAPUS TIDAK ADA TINDAKAN
PADA PEMBARUAN CASCADE
BUAT TABEL Contoh
Membuat tabel contoh:
BUAT TABEL s
(sno VARCHAR(5) TIDAK NULL KUNCI UTAMA,
name VARCHAR(16),
city VARCHAR(16)
)
Buat TABEL p
(pno VARCHAR(5) TIDAK NULL KUNCI UTAMA,
descr VARCHAR(16)
color VARCHAR(8)
)
BUAT TABEL sp
(sno VARCHAR(5) TIDAK NULL MEREFERENSI s,
pno VARCHAR(5) TIDAK NULL MENGACU KE p,
52
qty INT,
PRIMARY KEY (sno, pno)
)
Create forspwith a constraint that the qty column can't be negative:
CREATE TABLE sp
(sno VARCHAR(5) TIDAK NULL REFERENSI s,
pno VARCHAR(5) TIDAK NULL REFERENSI p,
qty INT CHECK (qty IS NULL OR qty >= 0),
KUNCI UTAMA (sno, pno)
)
Buat Pernyataan Tampilan
Pernyataan CREATE VIEW membuat tampilan basis data baru. Tampilan pada dasarnya adalah kueri SQL yang disimpan di
katalog. FORMAT umum CREATE VIEW adalah sebagai berikut:
RESTRICT menentukan bahwa tabel tidak boleh dihapus jika ada ketergantungan yang ada. Jika ditemukan ketergantungan, sebuah
kesalahan dikembalikan dan tabel tidak dihapus.
CASCADE menentukan bahwa semua ketergantungan dihapus sebelum penghapusan dilakukan:
Views that reference the base table are dropped, and the sequence is repeated for their
ketergantungan.
Keterbatasan di tabel lain yang merujuk pada tabel ini dihapus; batasan tersebut dihapus tetapi
meja dipertahankan.
RESTRICT menentukan bahwa tampilan tidak boleh dihapus jika ada ketergantungan yang ada. Jika ketergantungan ditemukan, sebuah
kesalahan dikembalikan dan tampilan tidak dihapus.
CASCADE menentukan bahwa semua ketergantungan dihapus sebelum penghapusan dilakukan:
Tampilan yang merujuk pada dropview dihapus, dan urutan diulang untuk mereka
ketergantungan.
Keterbatasan dalam tabel dasar yang merujuk pada tampilan ini dihapus; batasan tersebut dihapus tetapi
tabel dipertahankan.
54
Pernyataan GRANT
Pernyataan GRANT memberikan hak akses untuk objek basis data kepada pengguna lain. Ini memiliki yang berikut
format umum:
BERIKAN daftar-hak pada [TABEL] daftar-objek KEPADA daftar-pengguna
daftar-kelayakan adalah SEMUA KELAYAKAN atau daftar properti yang dipisahkan dengan koma: PILIH, MASUKKAN,
UPDATE, [Link]-list adalah daftar nama tabel dan tampilan yang dipisahkan oleh koma. user-list adalah baik
PUBLIK atau daftar nama pengguna yang dipisahkan dengan koma.
Pernyataan GRANT memberikan setiap hak dalam daftar-hak untuk setiap objek (tabel) dalam daftar-objek kepada setiap pengguna
daftar-inuser. Secara umum, hak akses berlaku untuk semua kolom dalam tabel atau tampilan, tetapi mungkin untuk
spesifikasikan daftar kolom dengan penentu hak istimewa UPDATE:
PERBARUI [ ( kolom-1 [, kolom-2] ... ) ]
Jika daftar kolom opsional ditentukan, hak istimewa UPDATE diberikan hanya untuk kolom-kolom tersebut.
Daftar pengguna dapat menetapkan PUBLIK. Ini adalah pemberian umum, yang berlaku untuk semua pengguna (dan pengguna yang akan datang) di dalam
katalog.
Hak istimewa yang diberikan dicabut dengan Pernyataan REVOKE.
Spesifikasi opsional DENGAN Opsi GRANT dapat mengikuti daftar-pengguna dalam pernyataan GRANT. DENGAN
OPSI GRANT menentukan bahwa, selain dari hak akses, hak untuk memberikan hak-hak tersebut juga termasuk.
pengguna lain diberikan.
Contoh Pernyataan GRANT
BERIKAN SELEKSI PADA s,sp KEPADA PUBLIK
PL/SQL
PL/SQL adalah singkatan dari Bahasa Prosedural/SQL. PL/SQL memperluas SQL dengan menambahkan Struktur pengendali yang ditemukan di
Bahasa prosedural lainnya. PL/SQL menggabungkan fleksibilitas SQL dengan fitur kuat dari 3rdgenerasi
Bahasa. Konstruksi prosedural dan akses basis data ada dalam PL/SQL. PL/SQL dapat digunakan di kedua
di basis data di Oracle Server dan di alat pengembangan aplikasi sisi Klien.
Advantages of PL/SQL
Dukungan untuk SQL, dukungan untuk pemrograman berorientasi objek, kinerja yang lebih baik, portabilitas, lebih tinggi
produktivitas, Integrasi dengan Oracle
Tipe Skalar
BINARY_INTEGER, DEC, DECIMAL, DOUBLE, PRECISION, FLOAT, INT, INTEGER, NATURAL
NATURALN,NUMBER, NUMERIC, PLS_INTEGER,POSITIVE,POSITIVEN,REAL,SIGNTYPE,
SMALLINT,CHAR,IDENTITAS,PANJANG,PANJANG
RAW,NCHAR,NVARCHAR2,RAW,ROWID,STRING,VARCHAR,VARCHAR2,
Tipe Komposit
TABEL, VARRAY, REKAMAN
Jenis LOB
BFILE, BLOB, CLOB, NCLOB
Jenis Referensi
REF KURSOR
BOOLEAN, DATE
DBMS_OUTPUT.PUT_LINE:
Ini adalah paket yang telah ditentukan sebelumnya yang mencetak pesan di dalam tanda kurung
Teks pemicu Oracle Forms adalah blok PL/SQL anonim. Ini terdiri dari tiga bagian:
Sebuah deklarasi variabel, konstanta, kursor, dan pengecualian yang bersifat opsional.
Sebuah bagian dari pernyataan yang dapat dieksekusi.
ATTRIBUTES
Izinkan kami merujuk pada tipe data dan objek dari basis data. Variabel dan Konstanta PL/SQL dapat memiliki
atribut. Keuntungan utama menggunakan Atribut adalah bahkan jika Anda mengubah definisi data, Anda tidak perlu
untuk mengubah dalam aplikasi.
%TIPE
Ini digunakan saat mendeklarasikan variabel yang mengacu pada kolom database.
Menggunakan %TYPE untuk mendeklarasikan variabel memiliki dua keuntungan. Pertama, Anda tidak perlu mengetahui tipe data yang tepat dari
variabel. Kedua, jika definisi basis data variabel berubah, tipe data variabel berubah sesuai
pada waktu berjalan.
%ROWTYPE
Atribut %ROWTYPE menyediakan jenis catatan yang mewakili satu baris dalam sebuah tabel (atau tampilan). Catatan dapat
menyimpan seluruh baris data yang dipilih dari tabel atau diambil dari kursor atau variabel kursor yang terikat kuat.
56
PEMAAFAN
Sebuah Exception terjadi ketika kesalahan terjadi. Jika terjadi kesalahan, maka eksekusi normal dihentikan dan
kontrol segera dialihkan ke bagian penanganan pengecualian dari Blok PL/SQL.
Pengecualian dirancang untuk penanganan saat runtime, bukan penanganan saat compile time. Pengecualian meningkatkan
keterbacaan dengan membiarkan Anda mengisolasi rutinitas penanganan kesalahan.
Ketika terjadi kesalahan, sebuah pengecualian diangkat. Artinya, eksekusi normal berhenti dan kontrol dialihkan ke
bagian penanganan pengecualian dari blok PL/SQL atau subprogram Anda. Pengecualian internal diangkat secara implisit
(secara otomatis) oleh sistem runtime. Pengecualian yang ditentukan pengguna harus diangkat secara eksplisit dengan RAISE
pernyataan, yang juga dapat membangkitkan pengecualian yang telah ditentukan sebelumnya.
Untuk menangani pengecualian yang diangkat, Anda menulis rutin terpisah yang disebut penangan pengecualian. Setelah pengecualian
penangan berjalan, blok saat ini berhenti mengeksekusi dan blok yang membungkus melanjutkan dengan pernyataan berikutnya. Jika
tidak ada blok yang membungkus, kontrol kembali ke lingkungan host.
Jenis Eksepsi
Pengecualian internal diangkat secara implisit setiap kali program PL/SQL Anda melanggar aturan Oracle atau
melampaui batas yang bergantung pada sistem. Setiap kesalahan Oracle memiliki nomor, tetapi pengecualian harus ditangani oleh
nama. Jadi, PL/SQL mendefinisikan beberapa kesalahan umum Oracle sebagai pengecualian. Misalnya, PL/SQL mengangkat
eksepsi yang telah ditentukan NO_DATA_FOUND jika pernyataan SELECT INTO tidak mengembalikan baris.
Pengecualian yang ditentukan pengguna harus didefinisikan dan diangkat secara eksplisit oleh pengguna
PENGATURAN_PENGECUALIAN
Sebuah pengecualian yang dinamai dapat dikaitkan dengan kesalahan oracle tertentu. Ini dapat digunakan untuk menangkap kesalahan tersebut.
secara spesifik.
Pragma EXCEPTION_INIT mengaitkan nama pengecualian dengan nomor kesalahan Oracle. Itu memungkinkan
Anda untuk merujuk pada setiap pengecualian internal dengan nama dan menulis penangan khusus
RAISE_APPLICATION_ERROR
Prosedur raise_application_error memungkinkan Anda untuk mengeluarkan pesan kesalahan yang ditentukan oleh pengguna dari subprogram yang disimpan.
That way, you can report errors to your application and avoid returning unhandled exceptions.
Untuk pengecualian internal, SQLCODE mengembalikan nomor kesalahan Oracle. Nomor yang SQLCODE
pengembalian negatif kecuali jika kesalahan Oracle tidak ditemukan data, dalam hal ini SQLCODE mengembalikan +100.
SQLERRM mengembalikan pesan kesalahan yang sesuai. Pesan dimulai dengan kode kesalahan Oracle.
PL/SQL mengembalikan kesalahan pengecualian yang tidak tertangani ke lingkungan host, yang menentukan hasilnya.
KURSOR
Oracle mengalokasikan area memori yang dikenal sebagai area konteks untuk pemrosesan SQL
Pernyataan. Penunjuk yang mengarah ke area konteks adalah kursor.
Kelebihan
1] Memungkinkan untuk memposisikan pada baris tertentu dari hasil set.
Mengembalikan satu baris atau blok baris dari posisi saat ini di set hasil.
Mendukung modifikasi data pada baris di posisi saat ini dalam himpunan hasil.
TYPES
KURSOR STATIS
A] KURSOR EKPLISIT
Untuk menjalankan kueri multi-baris, Oracle membuka area kerja tanpa nama yang menyimpan
pemrosesan
informasi. Untuk mengakses informasi, Anda dapat menggunakan kursor eksplisit, yang menamai
pekerjaan
area.
Penggunaan - Jika pernyataan SELECT mengembalikan lebih dari satu baris maka kursor eksplisit
seharusnya
digunakan.
Langkah-langkah
Deklarasikan kursor
Buka kursor
Ambil data dari kursor
59
Tutup kursor
FOR LOOP KURSOR memungkinkan Anda untuk secara implisit MEMBUKA kursor, MENGAMBIL setiap baris yang dikembalikan oleh kueri
terkait dengan kursor dan TUTUP kursor ketika semua baris telah diproses.
SINTAKSIS
UNTUK <NAMA REKAMAN> DI <NAMA KURSOR> LOOP
STATEMENTS
AKHIR LOOP;
Untuk merujuk elemen dari catatan gunakan <nama catatan. Nama kolom>
Pengaturan Kursor Parameter
Sebuah kursor dapat mengambil parameter, yang dapat muncul dalam kueri terkait di mana saja konstanta dapat muncul.
Parameter formal dari sebuah kursor harus parameter IN. Oleh karena itu, mereka tidak dapat mengembalikan nilai ke parameter aktual.
parameter. Juga, Anda tidak dapat memberlakukan batasan NOT NULL pada parameter kursor.
Nilai parameter kursor digunakan oleh kueri yang terkait ketika kursor dibuka.
B. KURSOR IMPLISIT
Kursor IMPILISIT terkait dengan pernyataan DML SQL yang tidak memiliki secara eksplisit
kursor yang terkait dengannya.
Ini termasuk:
KURSOR DINAMIS
Kursor Dinamis dapat digunakan bersama dengan paket DBMS_SQL. Pernyataan SQL bersifat dinamis, jika itu adalah
dibangun saat runtime dan kemudian dijalankan.
60
KURSORM REF
Menyatakan variabel kursor menciptakan sebuah penunjuk, bukan sebuah item. Dalam PL/SQL, sebuah penunjuk memiliki tipe data REF X, di mana
REF adalah singkatan dari REFERENSI dan X mewakili kelas objek. Oleh karena itu, variabel kursor memiliki tipe data
REF KURSOR.
Untuk menjalankan kueri multi-baris, Oracle membuka area kerja tanpa nama yang menyimpan informasi pemrosesan. Untuk
akses informasi, Anda dapat menggunakan kursor eksplisit, yang menamai area kerja. Atau, Anda dapat menggunakan kursor
variabel, yang menunjuk ke area kerja.
Terutama, Anda menggunakan variabel kursor untuk mengirimkan hasil set kueri antara subprogram tersimpan PL/SQL dan berbagai
klien. Baik PL/SQL maupun salah satu kliennya tidak memiliki set hasil; mereka hanya berbagi pointer ke pekerjaan kueri
area di mana set hasil disimpan. Misalnya, klien OCI, aplikasi Oracle Forms, dan Oracle
Server dapat merujuk ke area kerja yang sama.
Dref
Ini adalah 'operator penghormatan. Seperti NILAI, ini mengembalikan nilai sebuah objek, tidak seperti nilai.
Input Dref adalah REF ke kolom dalam tabel dan Anda ingin mengambil target alih-alih penunjuk, Anda
DREF.
FUNGSI
Sebuah fungsi memiliki dua bagian: spesifikasi dan tubuh. Spesifikasi fungsi dimulai dengan kata kunci
FUNCTION dan diakhiri dengan klausa RETURN, yang menentukan tipe data dari nilai hasil. Parameter
deklarasi bersifat opsional. Fungsi yang tidak mengambil parameter ditulis tanpa tanda kurung. Fungsi tersebut
badan dimulai dengan kata kunci IS dan diakhiri dengan kata kunci END diikuti dengan nama fungsi yang bersifat opsional.
61
Pernyataan RETURN segera menyelesaikan eksekusi dari subprogram dan mengembalikan kendali ke
pemanggil. Eksekusi kemudian dilanjutkan dengan pernyataan setelah pemanggilan subprogram. (Jangan bingungkan dengan
Pernyataan RETURN dengan klausa RETURN dalam spesifikasi fungsi, yang menentukan tipe data dari nilai kembali
nilai.)
Sebuah subprogram dapat berisi beberapa pernyataan RETURN, yang tidak perlu menjadi pernyataan leksikal terakhir.
Menjalankan salah satu dari mereka menyelesaikan subprogram segera. Namun, untuk memiliki beberapa titik keluar dalam sebuah
subprogram adalah praktik pemrograman yang buruk.
Dalam prosedur, pernyataan RETURN tidak dapat berisi ekspresi. Pernyataan tersebut hanya mengembalikan kendali ke
penelepon sebelum akhir normal prosedur tercapai.
Namun, dalam fungsi, pernyataan RETURN harus berisi sebuah ekspresi, yang dievaluasi ketika
Pernyataan RETURN dieksekusi. Nilai yang dihasilkan ditetapkan ke pengidentifikasi fungsi, yang bertindak seperti sebuah
variabel dari tipe yang ditentukan dalam klausa RETURN. Perhatikan bagaimana fungsi balance mengembalikan
saldo dari akun bank yang ditentukan:
Prosedur Fungsi
Tidak ada tipe data KEMBALI Harus memuat tipe data KEMBALI
Dapat mengembalikan tidak ada, satu, atau banyak nilai Harus mengembalikan satu nilai
Tidak dapat digunakan dalam Pernyataan SQL Dapat Digunakan dalam Pernyataan SQL
PILIH TEKS DARI USER_SOURCE DIMANA NAMA = 'QUERY_EMP' URUTKAN MENURUT BARIS;
PAKET
Sebuah paket adalah objek skema yang mengelompokkan tipe PL/SQL, item, dan subprogram yang terkait secara logis.
Paket biasanya memiliki dua bagian, spesifikasi dan isi,
Kelebihan
Sederhanakan keamanan Tidak perlu mengeluarkan GRANT untuk setiap prosedur dalam paket
Batasi recompilasi Ubah badan prosedur atau fungsi tanpa
mengubah spesifikasi
Kinerja Panggilan pertama ke paket memuat seluruh paket ke dalam memori
Penyembunyian Informasi Dengan paket, Anda dapat menentukan jenis, item, dan subprogram mana yang
publik (terlihat dan dapat diakses) atau pribadi (tersembunyi dan tidak dapat diakses).
Bersembunyi Detail pelaksanaan dari pengguna, Anda melindungi integritas dari
paket.
Bagian Paket
[Link] PAKET
Spesifikasi paket berisi deklarasi publik. Cakupan deklarasi ini bersifat lokal terhadap Anda
skema basis data dan global untuk paket. Jadi, item yang dinyatakan dapat diakses dari aplikasi Anda dan
dari mana saja dalam paket.
B. TUBUH PAKET
Badan paket mengimplementasikan spesifikasi paket. Artinya, badan paket berisi definisi
setiap kursor dan subprogram yang dinyatakan dalam spesifikasi paket. Ingatlah bahwa subprogram
yang didefinisikan dalam badan paket hanya dapat diakses dari luar paket jika spesifikasinya juga muncul di dalam
spesifikasi paket.
BEBANAN PAKET
PL/SQL memungkinkan dua atau lebih subprogram terkemas memiliki nama yang sama. Opsi ini berguna ketika Anda
ingin sebuah subprogram untuk menerima parameter yang memiliki tipe data yang berbeda.
PRIBADI
Badan paket juga dapat berisi deklarasi privat, yang mendefinisikan tipe dan item yang diperlukan untuk
fungsi internal dari paket. Ruang lingkup deklarasi ini bersifat lokal untuk badan paket. Oleh karena itu,
tipe dan item yang dideklarasikan tidak dapat diakses kecuali dari dalam tubuh paket. Berbeda dengan spesifikasi paket,
bagian deklaratif dari tubuh paket dapat berisi tubuh subprogram.
63
UMUM
Barang-barang tersebut disebut publik. Ketika Anda harus mempertahankan barang-barang selama sesi atau di seluruh transaksi,
letakkan mereka di bagian deklaratif dari badan paket.
Keuntungan Paket
Paket menawarkan beberapa keuntungan: modularitas, desain aplikasi yang lebih mudah, penyembunyian informasi, tambahan
fungsi, dan kinerja yang lebih baik.
Modularitas
Paket memungkinkan Anda untuk mengenkapsulasi tipe, item, dan subprogram yang terkait secara logis dalam PL/SQL yang bernama.
modul. Setiap paket mudah dipahami, dan antarmuka antara paket sederhana, jelas,
dan terdefinisi dengan baik. Ini membantu pengembangan aplikasi.
Penyembunyian Informasi
Dengan paket, Anda dapat menentukan jenis, item, dan subprogram mana yang bersifat publik (terlihat dan
aksesibel) atau pribadi (tersembunyi dan tidak dapat diakses). Misalnya, jika sebuah paket berisi empat
subprogram, tiga mungkin publik dan satu privat. Paket tersebut menyembunyikan implementasi dari
subprogram privat sehingga hanya paket (bukan aplikasi Anda) yang terpengaruh jika implementasi
perubahan. Ini menyederhanakan pemeliharaan dan peningkatan. Selain itu, dengan menyembunyikan rincian implementasi
dari pengguna, Anda melindungi integritas paket.
Fungsi Tambahan
Variabel publik dan kursor yang dikemas bertahan selama sesi. Jadi, mereka dapat dibagikan.
oleh semua subprogram yang dijalankan di lingkungan. Juga, mereka memungkinkan Anda untuk mempertahankan data di seluruh
transactions without having to store it in the database.
Memori global untuk paket semacam itu dikumpulkan di Area Global Sistem (SGA), bukan dialokasikan ke
pengguna individu di Area Global Pengguna (UGA). Dengan cara itu, area kerja paket dapat digunakan kembali. Ketika
panggilan ke server berakhir, memori dikembalikan ke kolam. Setiap kali paket digunakan kembali, publiknya
variabel diinisialisasi ke nilai default mereka atau ke NULL.
Jumlah maksimum area kerja yang dibutuhkan untuk sebuah paket adalah jumlah pengguna yang bersamaan dari paket tersebut.
paket, yang biasanya jauh lebih kecil daripada jumlah pengguna yang masuk. Peningkatan penggunaan SGA
memori lebih dari seimbang oleh berkurangnya penggunaan memori UGA. Juga, Oracle menghapus area kerja yang tidak dalam
gunakan jika perlu untuk mengklaim memori SGA.
Untuk paket tanpa badan, Anda mengkodekan pragma di spesifikasi paket menggunakan sintaks berikut:
PRAGMA SERIALLY_REUSABLE;
Untuk paket dengan tubuh, Anda harus mengkodekan pragma di spesifikasi dan tubuh. Anda tidak dapat mengkodekan pragma
hanya di dalam tubuh. Contoh berikut menunjukkan bagaimana variabel publik dalam paket yang dapat digunakan kembali secara seri
berperilaku di seluruh batas panggilan:
TRIGGER DATABASE
Trigger mendefinisikan tindakan yang harus diambil database ketika terjadi beberapa peristiwa terkait database
terjadi. Pemicu dapat digunakan untuk melengkapi integritas referensial deklaratif, untuk menegakkan
aturan bisnis yang kompleks.
Trigger basis data adalah subprogram yang disimpan yang terkait dengan tabel. Anda dapat membuat Oracle secara otomatis memicu
pemicu sebelum atau setelah pernyataan INSERT, UPDATE, atau DELETE mempengaruhi tabel.
Trigger dijalankan ketika perintah manipulasi data tertentu dilakukan pada tabel tertentu
Trigger tingkat baris dieksekusi sekali untuk setiap baris dalam transaksi. Trigger tingkat baris dibuat menggunakan FOR
Setiap klausul ROW dalam perintah buat pemicu.
Pemicu tingkat pernyataan dieksekusi sekali untuk setiap transaksi. Misalnya, jika Anda menyisipkan 100 baris dalam satu
Pemicu tingkat pernyataan akan dieksekusi sekali.
Tabel berikut menunjukkan jumlah pemicu yang dapat Anda miliki untuk sebuah tabel. Jumlah pemicu yang Anda
dapat memiliki 14 pemicu untuk sebuah meja.
Tabel berikut menunjukkan jumlah pemicu yang dapat Anda miliki untuk sebuah tabel. Jumlah pemicu
Anda dapat memiliki 14 pemicu untuk sebuah tabel.
KEUNGGULAN TRIGGER
Feature Peningkatan
Keamanan Oracle Server memungkinkan akses tabel untuk pengguna atau peran. Pemicu memungkinkan akses tabel
menurut nilai data.
Auditing Server Oracle melacak operasi data pada tabel. Trigger melacak nilai untuk data
operasi pada tabel.
Integritas data Server Oracle menegakkan batasan integritas. Trigger menerapkan kompleks
integritas
rules.
Integritas referensial Server Oracle menegakkan aturan integritas referensial standar. Pemicu mengimplementasikan
fungsi nonstandar.
Replikasi tabel Server Oracle menyalin tabel secara asinkron ke dalam snapshot. Pemicu menyalin tabel
Data turunan Server Oracle menghitung nilai data yang diturunkan secara manual. Trigger menghitung
nilai data yang diturunkan secara otomatis.
Pencatatan peristiwa Oracle Server mencatat peristiwa secara eksplisit. Pemicu mencatat peristiwa secara transparan.
66
Sintaksis:
BUAT ATAU GANTI TRIGGER MY_TRIG SEBELUM INSERT ATAU UPDATE ATAU
HAPUS DI
DETAIL UNTUK SETIAP BARIS
MULAI
JIKA LTRIM(RTRIM(TO_CHAR(SYSDATE,'HARI')))='JUMAT' MAKA
JIKA MEMASUKKAN MAKA
RAISE_APPLICATION_ERROR(-20001,'INSERT IS NOT POSSIBLE');
JIKA MEMPERBARUI MAKA
RAISE_APPLICATION_ERROR(-20001,'UPDATE IS NOT POSSIBLE');
SEBALIKNYA MENGHAPUS MAKA
RAISE_APPLICATION_ERROR(-20001,'HAPUS TIDAK MEMUNGKINKAN');
AKHIR JIKA;
AKHIR JIKA;
SELESAI;
Contoh 2:
BUAT ATAU GANTI TRIGGER MY_TRIG SETELAH INSERT PADA
ITEM UNTUK SETIAP BARIS
MENYATAKAN
MITEMID NUMBER;
JUMLAH MQTY;
MULAI
PILIH ITEMID KE DALAM MITEMID DARI STOK DI MANA ITEMID =
:[Link];
PERBARUI STOC SET QTY=QTY+:[Link] DI MANA ITEMID=:[Link];
PEMBERITAHUAN KETIKA TIDAK_DITEMUKAN
MASUKKAN KE STOCK NILAI (:[Link], :[Link]);
SELESAI;
67
Contoh 3:
BUAT ATAU GANTI TRIGGER MY_TRIG SETELAH HAPUS PADA
EMP UNTUK SETIAP BARIS
AWAL
MASUKKAN KE EMP_BACK NILAI (:[Link], :[Link], :[Link],
:[Link]);
SELESAI;
Contoh 4:
BUAT ATAU GANTI TRIGGER TR02 SEBELUM INSERT ATAU UPDATE ATAU DELETE PADA EMP100
68
NYATAKAN
D1 VARCHAR(3);
MULAI
D1:=TO_CHAR(SYSDATE,'DY');
Contoh 5:
BUAT ATAU GANTI TRIGGER TR01 SETELAH HAPUS DI DEPT200 UNTUK SETIAP BARIS
MULAI
MASUKKAN KE DEPT1 NILAI (:[Link],:[Link],:[Link]);
SELESAI;
/
TAMPILKAN ERR
Contoh 6:
BUAT ATAU GANTI TRIGGER TR03 SETELAH PEMBARUAN PADA EMP UNTUK SETIAP BARIS
MULAI
UPDATE EMP100 SET SAL=:[Link]*2 WHERE EMPNO=:[Link];
SELESAI;
/
TUNJUKKAN ERR
Contoh 7:
BUAT ATAU GANTI TRIGER TR05 SETELAH PERBARUI DI EMP100
DEKLARASI
U1 VARCHAR2(50);
MULAI
PILIH PENGGUNA KE DALAM U1 DARI DUAL;
INSERT INTO USER1 VALUES(U1,SYSDATE,'UPDATE');
AKHIR;
/
TAMPILKAN ERR
Contoh 8:
BUAT ATAU GANTI TRIGGER TR06 SETELAH HAPUS PADA EMP100
NYATAKAN
U1 VARCHAR2(50);
MULAI
PILIH USER KE DALAM U1 DARI DUAL;
INSERT INTO USER1 VALUES(U1,SYSDATE,'HAPUS');
SELESAI;
/
TAMPILKAN ERR
SYSTEM TRIGGER
69
Contoh Pemicu LOGON dan LOGOFF
Anda dapat membuat pemicu ini untuk memantau seberapa sering Anda masuk dan keluar, atau Anda mungkin ingin menulis laporan tentang
berapa lama Anda terhubung. Jika Anda seorang DBA yang ingin melakukan ini, Anda akan mengganti SCHEMA dengan
DATABASE.
PERNYATAAN PANGGILAN
Ini memungkinkan Anda untuk memanggil prosedur yang disimpan, alih-alih mengkodekan tubuh PL/SQL di dalam pemicu itu sendiri.
ALIH-ALIH PEMICU
SEBAGAI pengganti untuk memicu MEMBERITAHU ORACLE apa yang harus dilakukan sebagai pengganti melakukan aksi yang dieksekusi
pemicu. Sebuah pemicu INSTEAD OF dapat digunakan untuk sebuah view. Pemicu ini dapat digunakan untuk mengatasi
pembatasan yang diterapkan oleh oracle pada tampilan yang tidak dapat diperbarui.
Contoh:
BUAT ATAU GANTI VIEW EMP_DEPT SEBAGAI PILIH [Link], [Link] DARI DEPT
A,EMP B DIMANA [Link]=[Link]
BUAT ATAU GANTI TRIGGER TRIG1 SEBAGAI GANTI DARI INSERT PADA EMP_DEPT
MENGACU BARU SEBAGAI N UNTUK SETIAP BARIS
MULAI
MASUKKAN KE DEPT NILAI(:[Link],'DNAME');
MASUKKAN KE DALAM EMP VALUES(:[Link],'ENAME',:[Link]);
SELESAI;
70