kali ini saya akan memposting tentang trigger atau SQL.
meskipun masih cukup dasar semoga ini bermanfaat buat semua agan-agan yang pada kece.
langsung saja.
SQL4
EMBEDDED QUERY
Bahasa Definisi Data
DDL (Data Definition Languange)
dalam SQL mengijinkan tidak hanya spesifikasi tentang relasi tetapi juga
informasi tentang relasi termasuk
·
Skema untuk setiap realasi
·
Rnah nilai (domain)
yang berasosiasi dengan tiap atribut
·
Batasan integrasi
·
Indek untuk mempercepat
aksesa
·
Imformasi keamanan dan
informasi otorisasi untuk setiap relasi
·
Struktur fisik tempat penyimpanan
untuk setiap relasi
Ranah nilai dalam SQL
SQL standar mendukung berbagai tipe seperti tipe data
yang akan di bahas di bawah ini :
·
Char (n) : String
dengan panjang karakter tetap di gunakan yang dispesifikasi dengan n bentuk
lengkap character yang di gunakan
·
Varchar (n) : string
dengan pnjang karakter bervariasi dengan panjang maksimum n bentuk lengkap
character varying adalah ekivalen
·
int : bilangan bulat
(panjangnya sangan di pengaruhi oleh computer yang digunakan) bentuk lengkapnya
sering di gunakan
·
Smallint : bilangan
bulat yang lebioh kecil dari int (panjang sesungguhnya di tentukan oleh 3tipe
computer serta system operasi yang di gunakan pada computer yang di gunakan
·
Numeric (p,d) :
bilangan real dengan tingkat ketelitian yang di tentukan oleh pengguna
·
Real,double precision :
penyimpang bilangan pecahan yang bergantung kepada tipe computer yang di
gunakan
·
Float (n) : bilangan
pecahan dengan ketelitian paling sedikitr n dijit.
·
date : menyimpan data
waktu yang mengandung 4dijit yaitu tahun, bulan hari
·
Time : menyimpan data
waktu yaitu menit, jam dan detik
·
Timestamp : kombinasi
dari date and time variannya timesstam (p) dapat digunakan jumlah pecahan
(nilai default adalah6)
Nilai
null merupakan isi dari ranah nilai (domain) perubah untuk beberapa atribut
tentu saja mungkin null tidak sesuai.
Definisi Skema dalam SQL
MENDEFINISIKAN
RELASI sql menggunakan perintang create table sebagai berikut:
Create table r (A1,D1,A2,D2,.....,AN DN,
(batasan integrasi -1),
(batasan integrasi-2),
.......
(batasan integrasi-k)
Batas
integrasi yang diijinkan meliputi :
·
Primary
key (A1,A2......An) spesifikasi PRIMARY KEY
MENGATAKAN BAHWA ATRIBUT a1,a2,,,,,an berfungsi sebagai kunci primer untuk
relasi yang bersangkutan
·
Check
(p): klausa check menspesifikasi predikat p yang harus di penuhi oleh setiap
oleh setiap rekaman pada relasi
Create table nasabah
{nama_nasabah char(20),
Jalan_nasabah char(30),
Kota_nasabah char(30),
Primary key (nama_nasabah)}
Create table cabang
(nama_cabang char(15),
Kota_cabang char(30,.
Aset intenger
Primary key (nama_cabang),
Check (aset >= 0},
Create table rekening
(no_rekening char(10),
Nama_cabang char(30),
saldo intenger,
Primary key (no_rekening),
Check (saldo >= 0)}
Create table penabung
(nama_nasabah char(20),
Np_rekening char(10),
Primary key (nama_nasabah,
no_rekening)}
Rekaman
yang di sisipkan atau nilai null yang sah setiap atribut kecuali
dispesifikasikan dengan not null suatu atribut dapat dideklarasikan sebagai not
null suatu atribut dapat dideklarasikan sebagai not null dengan cara berikut:
No_rekening char (10) not null
SQL
juga mendukung batasan integrasi berikut
Unique (A1,A2,....An)
Contoh
di atas menggunakan klausa check untuk mentimulasi sesuatu yang terbilang salah
satu nilai S-1,S-2,S3
Prosedur tertanam dan triggers
Prosedur
yang tertanam (stored procedure) dan triggers adalah sangat berdaya guna sebab
mereka tersimpan di basis data dan dikendalikan oleh DBMs maka kode yang dibutuhkan
untuk menciptakan kemungkinan data pengguna dalam basis data tersimpan triggers memiliki 3 bagian:
Create triggers ORDER_ID_BIR
Before insert on ORDER_T
For eash row
Begin
Select ID_SEQUENCE.NEXTVAL:
Into : NEW.ORDER_ID
FROM DUAL
End ORDER_ID_BIR
Triggers
akan secara otomatis terpicu dan menyisipkan nomor pesanan kapan pun pesanan
baru di tambahkan BIR adalah konversi nama triggers dan before insert row (sebelum seuatu baris disisipkan) triggers
memungkinkan terjadi entah sebelum atau sesudah peryataan yang menimbulkan
triggers di eksekusi. Mereka mungkin akan muncul kata seperti INSERT, UPDATE, DELETET pada kasus yang
kita tulis di atas triggers akan menyisipkan nomor pesanan sebelum setiap
pesanan ditambahkan.
SQL TERTANAM (EMBEDDED
SQL)
SQL
menyediakan bahasa query deklaratif sangat berdaya guna query dengan SQL lebih
mudah bandingkan dengan menulis kode untuk mencari data dihendaki dengan bahasa
pemogram seperti C/C++, java, pascal dll pemogram karena alasan :
1. Tidak
semua query dapat diekspresikan dengan SQL, karena SQL tidak menyediakan
sesuatu secara ekspresif seperti pemogram serbaguna, katakanlah ,C/C++. Dengan
kata lain, ada bentuk query yang dapat di ekspresikan dengan SQL, untuk
mendapatkan hasil yang
diinginkan, kita menanam (embed0 SQL dalam bahasa yang lebig berguna.
2. aksi
non_deklaratif seperti mencetak laporan, interaksi dengan pengguna atau
mengirimkan hasil query ke antar muka grafis (GUI - Graphical User
Interface) tidak dapat dikerjakan dengan SQL. Aplikasi biasanya memiliki
komponen dan pencairan data (query) serta data hanya merupakan salah satu komponen, komponen yang lain
ditulis dengan bahasa pemograman. Untuk aplikasi integrasi, ditulis dengan
bahasa pemograman harus dapat mengakses basis data.
SQL
standar mendefinisikan SQL tertanam dalam berbagai bahasa pemoraman seperti
C/C++, COMBOL,
Pascal, Java, PL/I, Fortan, hingga ke bahasa generasi IV seperti Visual BASIC, serta Dhelpi bahasa query dapat ditanamkandi
rusjuk sebagai host language SQL yang diijinkan dalam host language dinamakan
embedded SQL (SQL Tertanam).
Program SQL Tertanam harus diproses dengan preprosesor
khusus sebelum kompilasi. Preprosesor menggantikan permintaan SQL tertanam
dengan deklarasi host language dan pemanggilan prosedur yang mengijinkan
eksekusi dari akses-akses basis data. Sehingga, program dikompilasi oleh
compiler milik host language. Untuk mengidentifikasi permintaan SQL ke
preprosesor dapat menggunakan pernyataan EXEC SQL yang memiliki bentuk sebagai
berikut:
EXEC
SQL <pernyataan SQL tertanam> END EXEC
Sintak untuk SQL tertanam biasanya bergantung pada
pemograman yang menjadi host languagenya. Sebagai contoh, tanda titik koma ( ;
). Digunakan untuk menggantikna END EXEC.
#SQL {
<pernyataan SQL tertanam> };
Kita
menempatkan peryataan SQL INCLUDE
pada program untuk mengidntifikasi tempat propesor dapat
menyisipkan perubahan yang di gunakan untuk komunikasi antar program dengan
system basis data.
Menulis query relasional, kita menggunakan pernyataan
declare-cursor. Hasil query belum dihitung. Lebih jauh program harus
menggunakan perintah open dan fetch untuk mendapatkan rekaman-rekaman hasil.
Pertimbangan skema bank, asumsikan kita memiliki perubahan
host language yang bernama jumlah,
dan kita bertahap untuk menemukan nama_nasabah
dan kota_nasabah tempat
nasabah-nasabah yang memiliki saldo rekening lebih besar dari nilai jumlah.
Kita bisa menulis query sebagai berikut :
EXEC SQL
Declare
c sursor for
Select
nama_nasabah, kota_nasabah
From
penabung. Nasabah, rekening
Where
penabung, nama_nasabah=nasabah. Nama_nasabah
And
Rekening.no_rekening
= penabung.No_rekening and rekening.saldo > jumlah
END EXEC
Perubahan c pada
ekspresi di atas dinamakan cursor untuk query. Kita
menggunakan perubahan ini untuk mengidentifikasi query pada pernyataan open,
yang mengakibatkan query dievaluasi. Dan pada pernyataan fetch yang menyebabkan
nilai dari satu rekaman ditempatkan pada perubahan yang dimiliki oleh host
language.
Pernyataan
open pada contoh kita di atas adalah sebagai berikut :
EXEC SQL open c END EXEC
Pernyataan di atas mengakibatkan system basis data
mengeksekusi query dan menyimpan hasilnya dalam relasi sementara (temporer).
Program SQL tertanam mengeksekusi urutan dari pernyataan fetch untuk menerima
rekaman-rekaman hasil. Untuk contoh query kita di atas, kita membutuhkan satu
perubahan untuk menampung nilai nama_nasabah dan satu perubahan lagi untuk
menampung nilai kota_nasabah misalkan :
EXEC SQL fetch c into :cn, :cc END EXEC
Menghasilkan rekaman-rekaman dari relasi hasil. Program
kemudian dapat memanipulasi mengubah cn dan cc. menggunakan fitur-fitur bahasa
pemograman yang menjadi host languagenya.
Suatu petnyataan fetch tunggal hanya menghasilkan
suatu rekaman setiap saat. Untuk mendapatkan suatu rekaman program harus
melakukan interasi sepanjang semua rekaman. SQL tertanam membantu pemrogram
dalam pengelolaan iterasi meskipun relasi secara konseptual, himpunan
rekaman-rekaman yang merupakan hasil sebuah query ada dalam urutan fisik
tertentu. Saat program mengeksekusi pernyataan open pada cursor, cursor diatur
untuk berada pada rekaman pertama. Saat tidak ada lagi rekaman yang harus
diproses, peubah SQLSTATE diatur menjadi ‘02000’ (artinya tidak ada data).
Sehingga kita dapat menggunakan iterasi while (atau loop/kalang yang ekivalen).
Untuk memproses setiap rekaman pada hasilnya.
Pernyataan close digunakan untuk menyatakan pada
system basis data untuk menghapus relasi sementara yang menampung hasil dari
suatu query. Berikut contohnya :
EXEC SQL
close c END EXEC
Ekspresi SQL tertanam untuk di modifikasi basis data
(update, insert, delete) tidak mengembalikan hasil sehingga lebih sederhana
untuk di ekspresikan modifikasi basis data memiliki bentuk;
EXEC SQL
<pernyataan_pernyataan yang sah dari update,
insert,dlete>
END EXEC
Perubahan-perubahan host language selalu dimulai
dengan titik-dua ( : ).
Jika kondisi
kesalahan muncul pada eksekusi pernyataan, maka ia di simpan di SQLCA.
Jika kita ingin menambah Rp.100.000 ke atribut saldo
setiap rekening yang ada di cabang cilacap, kita bisa mendeklarasi cursor
sebagai berikut :
Declare
c cursor for for
Select*
From
rekening where nama_cabang=’cilacap’
For
update
Kemudian kita dapat melakukan iterasi sepanjang
rekaman dengan melaksanakan operasi fetch pada cursor, setelah melakukan
operasi fetch pada setiap rekaman kita mengeksekusi kode di bawah ini :
Update
rekening
Sat
saldo = saldo+100000
Where current of c
SQL
tertanam mengijinkan program yang dibuat dengan host language untuk mengakses
basis data, tetapi tidak menyediakan bantuan untuk pembuatan laporan.
SQL DINAMIS
Komponen
SQL dinamis mengijinkan pemogram untuk mengontruksi dan mengirim query SQL saat program aplikasi
di jalankan. Menggunakan SQL dinamis, program dapat menciptakan query-query SQL
sebagai string saat program dijalankan (misalnya saat menerima masukan dari
pengguna).
Char*
sqlprog =*update rekening set saldo=saldo*1.05 where no_rekening=?*
EXEC SQL
prepare dynprog from :sqlprog;
Char
rekening [10]= *A-101”;
EXEC SQL
execute dynprog using :rekening;
Konsep dari
sesi SQL. Pengguna atau aplikasi terhubung ke server SQL, memelihara sesi
mengeksekusi urutan pernyataan kemudian terakhir memutus sesi sehingga semua
aktivitas pengguna atau aplikasi adalah dalam konteks sesi SQL. Sebagai
tambahan perintah SQL yang biasa, sesi juga dapat memuat perintah untuk
melanjutkan serta membatalkan transaksi.
Int ODBCexample ( )
{
RETCODE error;
HENV env; /* environment */
HDBC conn;
/*koneksi basis data */
SQLALLocEn(&cnv)
SQLALLocConnect(env.
&com):
SQLConnect(conn,
“itb.lab.com”,SQL_NTS,”avi”,
SQL_NTS,”pass”,SQL_NTS);
{
Char
nama_cabang[75]:
Float
saldo;
Int
outl, out2;
HSTMT
stmt;
SQLALLoc(conn,
&stmt);
Char*
sqlquery= “select nama_cabang, sum(saldo)
From rekening
Group by nama_cabang”;
Error=SQLExecDirect(stmt,
sqlquery, SQL_NTS);
If
(error==SQL_SUCCESS)
{
SQLBindcol(stmt,1,SQL_C.CHAR,nama_cabang,80,&out1);
SQLBindcol(stmt,2,SQL_C.CHAR,nama_cabang,0,&out2);
While
(SQLFetch(stmt) >= SQL_SUCCESS)
{
Print
(“&g\n”, nama_cabang, saldo)
}
}
}
/*perintah-perintah untuk mengakhiri hubungan ke basis
data*/
SQLFreeStmt(stmt, SQL_DROP);
SQLDisconnect(conn);
SQLFreeConnect (conn);
SQLFreeEnv(env);}
ODBC (OPEN DATABASE CONNECTIVITY)
ODBC adalah
standar yang mendefinisikan cara bagaimana program aplikasi bekomunikasi dengan
server habis data. ODBC mendefinisikan API (Aplication Program Interface) yang
merupakan modul aplikasi yang dapat di gunakan untuk pembuka hubungan dengan
basis data, mengirim query dan pembaharuan , dan mengirimkan kembali hasil
aplikasi seperti anatarmuka pengguna grafis.
Setiap
system basis data yang mendukung ODBC menyediakan pustaka-pustaka yang harus
digabungkan dengan program peminta. Saat program peminta pembuat pemanggilan
ODBC API, kode pada pustaka berkomunikasi dengan server untuk mendapatkan aksi
yang diminta.
Langkah
pertama menggunakan ODBC untuk berkomunikasi dengan server adalah mengatur
koneksi dengan server. Untuk mengerjakannyaprogram pertama kali mengalokasikan
lingkungan SQL (SQL Envirotment) kemudian koneksi basis data di tangani. ODBC
mendefinisikan HENV, HDBC dan RECODE program kemudian membuka koneksi basis
data menggunakan SQLConnect.pemanggilan menghasilkan beberapa meter termasuk
penangan koneksi server mana yang terhubung.
Setelah
koneksi di tetapkan program dapat mengirim perintah SQL ke basis data
menggunakan perubahan bahasa c yaitu SQLExecDirect yang dapat terikat k atribut
itu di simpan dari hasil query. Pad sesi akhir program membebaskan pengendalian
terhadap pernyataan-pernyataan memutuskan program dari basis data, serta
membebaskan koneksi dan lingkungan SQL.
JDBC (JAVA
DATABASE CONNECTIVITY)
JDBC (JAVA
DATABASE CONNECTIVITY) standar mendefinisikan suatu API dimana program java
dapat menggunakan untuk terhubung ke server basis data. Lihatlah contoh di
bawah ini:
Public static void
JDBCExp(string dbit,string userid, string Pwd)
{
Try
{
Class.forName9”oracle.hdbc.driver.ocacleDriver"
Connection
con=DriverManager.getConnection
(“jdbc:oracle:thin;@itb.labs.com:2000:bankdb”,
Userid,
pwd);
Statement
stmt = conn.createStatement();
Try
{
Stmt.executeUpdate(
“insert
into rekening values(‘A_1234’,’Bandung’,10000”);
}catch
(SQLException sqlw)
{
System.out.printin(“tidak
dapat dilakukan penyisipan”+sqlw);
}
Resultset
reset = stmt. executeQuery (“select nama_cabang.avg (saldo)
From
rekening
Group
by nama_cabang”);
While
(rset.next() {
System.out.printin(rset.getString(“nama_cabang)
+*”
Rset.getFloat(2));
}
Stmt.close();
Conn.close();
}
Catch
(SQLExceptionStype)
(
System.outprintin(“SOLEException : “ + sqle); }
}
Program
diatas pertama kali harus membuka koneksi ke basis data, dan kemudian dapat
mengeksekusi peryataan-pernyataan SQL. Driver JDBC dapat mendukung berbagai
protocol dan kita harus menpesifikasi baik basis data maupun drivernya.
Program
kemudian menciptakan penangan pernyataan pada koneksi dan menggunakan untuk
mengeksekusi peryataan SQL dan mengembalikan hasilnya.
Konstruksi
pernyataan pembaharuan. Konstruksi rty ( … ) catch ( … ) mengijinkan kita untuk
mengendalikan kesalahan yang terjadi. Program yang dapat mengeksekusi query
dengan menggunakan stmt.executeQuery. Ia mengambil baris dan memasukannya ke
Resultset dan mengambilnya satu persatu menggunakan fungsi next(). Dalam hal
ini, kita juga dapat menyiapkan peryataan untuk mengisinya dengan nilai
sebenarnya dengan tanda ”?”. Kita kemudian dapat mengkompilasi query setelah ia
disiapkan dan setiap kali ia mengeksekusi (dengan nilai yang baru), basis data
dapat menggunakan-ulang bentuk terkompilasinya.
cukup dulu postingan dari saya.
terima kasih :)
mohon kritik dan sarannya ya :)