DML Lanjutan Pertemuan Minggu Ke-10.

Slides:



Advertisements
Presentasi serupa
Antonius Wahyu Sudrajat, S. Kom., M.T.I. Trigger.
Advertisements

SQL – DML.
SQL.
MATA KULIAH : “LOGIKA DAN ALGORITMA”
KUMPULAN PERINTAH SQL PENDY.
SQL ADVANCEADVANCE. SQL Data Type MySQL Text Type : 9/7/2014By : Suwondo, S.Kom2.
RELASI & JOIN.
DML (Data Manipulation Language)
T R I G G E R.
SQL: Queries II, Constraints & Triggers (Chap. 5 – Ramakrishnan)
Sistem Manajemen Basis Data
Manajemen Basis Data menggunakan SQL Server
TRIGGER.
Stored Procedure Basis Data Terapan.
Triggers & Stored Procedure The main reference of this presentation is from book: Peter Rob, Carlos Coronel, “Database systems: Design, Implementation.
JOINED TABLE Untuk menampilkan data dari dua atau lebih tabel, maka tabel – tabel tersebut harus dihubungkan terlebih dahulu  JOIN.
PL/SQL PROGRAMMING PL/SQL adalah prosedur berkelanjutan dari Oracle -SQL yang menawarkan satu bentuk bahasa pemrograman. PL/SQL memungkinkan user atau.
SQL 2. Database TRANSACTION Tabel yang terlibat : Customer berisi data pelanggan (nama, alamat, dll) OderInfo berisi info pemesanan oleh pelanggan (tgl.
Praktek Pemograman Client-Server
STORED PROCEDURE Achmad Yasid, SKom.
Procedure Siti Mukaromah, S.Kom.
TRIGGER Siti Mukaromah, S.Kom.
TRIGGER.
Microsoft SQL Server DDL dan DML dasar
Data Definition Language dan Data Manipulation Language
SQL (Structured Query Language) Materi Pertemuan
SINTAK STORED PROCEDURE
Triggers & Stored Procedure The main reference of this presentation is from book: Peter Rob, Carlos Coronel, “Database systems: Design, Implementation.
P E R T E M U A N 12 SISTEM BASIS DATA.
Data Types Data Definition Language Referential Constraint SQL Query
SQL-Aggregate dengan Fungsi GROUP, HAVING dan subQuery
SQL: DML (2) Basis Data Pertemuan 07.
BAHASA QUERY TERAPAN OLEH : HARSITI, ST.
© 2010 © Rizki Arif Firdaus © 2010 © 2010.
STRUCTURED QUERY LANGUAGE (SQL)
Pengelolaan Database Kependudukan
BAB 4 QUERY FORMULATION with SQL
TRIGGER (Statement & Row Trigger)
PENJURUSAN DI ORACLE ORACLE DEVELOPER
Rekayasa Perangkat Lunak Materi 3 (Database)
TRIGGER SYAIFUL HUDA, S.Kom.
STORED PROCEDURE & TRIGGER
Structure Query Language (SQL)
SQL.
JOIN.
Pemrograman Visual Akuntansi III
View dan Trigger Materi 5
SQL (Structure Query Language)
Menggunakan Subquery untuk Memecahkan Query Query
JOIN.
Using Subqueries to Solve Queries
Manajemen Basis Data menggunakan SQL Server
SQL (Structured Query Language)
TRIGGER.
SQL OVERVIEW.
Sistem Manajemen Basis Data
SQL (2) (Structure Query Language)
Structured Query Language
Query dalam sql server Pertemuan 6.
Structured Query Language (SQL)
Sesi VI Query dengan SQL
Data Manipulation Language (DML)
Aplikasi Database Dosen : Sarwo, Skom,.Mkom Url :
Oleh : FIRMAN JAYA, S.Pt, M.Kom
Integritas Basis Data Triggers, Store Procedure
Structured Query Language (SQL)
12/6/2018 TRIGGER Pemrograman Basis Data Siti Mukaromah, S.Kom.
ORACLE PL/SQL TRIGGER Program Studi D3 Teknik Informatika -Fakultas Ilmu Terapan.
BAHASA BASIS DATA Retreiving Data dan Manipulation Function
10/14/2019 TRIGGER Pemrograman Basis Data.
Transcript presentasi:

DML Lanjutan Pertemuan Minggu Ke-10

Kompetensi Khusus Mahasiswa mampu menggunakan perintah dan fungsi manipulasi data lanjutan pada database menggunakan MySQL (C3)

Operator Join Menggabungkan baris dari 2 tabel & mengembalikan baris dengan salah satu dari kondisi berikut: Memiliki nilai yang sama dalam kolom dari 2 tabel (natural join). Memenuhi kondisi join yang diberikan (sama atau tidak sama). Memiliki nilai yang sama dalam kolom atau tidak memiliki nilai yang sama (outer join). Operasi join dapat diklasifikasikan menjadi: Inner join : join dimana hanya baris yang memenuhi kriteria yang dipilih. Outer join : mengembalikan tidak hanya baris yang sesuai melainkan baris dengan nilai atribut yang tidak sesuai untuk 1 tabel atau 2 tabel yang dijoin.

Cross Join Melakukan produk relasional (dikenal juga sebagai produk Kartesian) dari 2 tabel. Sintaknya sbb: SELECT column-list FROM table1 CROSS JOIN table2; Cth: SELECT * FROM INVOICE CROSS JOIN LINE; User juga dapat melakukan cross join yang hanya menampilkan atribut yang disebutkan: SELECT INVOICE.INV_NUMBER, CUS_CODE, INV_DATE, P_CODE FROM INVOICE CROSS JOIN LINE;

SELECT column-list FROM table1 NATURAL JOIN table2; Mengembalikan semua baris dengan nilai yang sesuai dalam kolom yang sesuai & membuang kolom duplikat. Berikut sintaksnya: SELECT column-list FROM table1 NATURAL JOIN table2; Natural join melakukan tugas berikut: Menentukan atribut umum dengan mencari atribut dengan nama identik & tipe data yang sesuai. Hanya memilih baris dengan nilai umum dalam atribut umum. Jika tidak terdapat atribut umum, tampilkan produk relasional dari 2 tabel.

Contoh berikut menampilkan natural join dari tabel CUSTOMER & INVOICE & mengembalikan hanya atribut terpilih: SELECT CUS_CODE, CUS_LNAME, INV_NUMBER, INV_DATE FROM CUSTOMER NATURAL JOIN INVOICE; Natural join tidak terbatas pada 2 tabel. User dapat menggabungkan tabel INVOICE, LINE, & PRODUCT & hanya menampilkan atribut terpilih: SELECT INV_NUMBER, P_CODE, P_DESCRIPT, LINE_UNITS, LINE_PRICE FROM INVOICE NATURAL JOIN LINE NATURAL JOIN PRODUCT;

JOIN dengan USING Query join yang menggunakan USING akan mengembalikan hanya baris dengan nilai yang sesuai dalam kolom yang disebutkan dalam USING - & kolom tsb harus ada dalam kedua tabel. Sintaknya sbb: SELECT column-list FROM table1 JOIN table2 USING (common-column); Cth: SELECT INV_NUMBER, P_CODE, P_DESCRIPT, LINE_UNITS, LINE_PRICE FROM INVOICE JOIN LINE USING (INV_NUMBER) JOIN PRODUCT USING (P_CODE);

JOIN dengan ON Cara lain menggunakan join ketika tabel tidak memiliki nama atribut yang sama adalah dengan JOIN ON. Query akan mengembalikan hanya baris yang sesuai dengan kondisi join yang diberikan. Kondisi JOIN akan memasukkan ekspresi perbandingan sama dengan dari 2 kolom. Sintaknya sbb: SELECT column-list FROM table1 JOIN table2 ON join-condition; Cth JOIN dengan ON: SELECT INVOICE.INV_NUMBER, PRODUCT.P_CODE, P_DESCRIPT, LINE_UNITS, LINE_PRICE FROM INVOICE JOIN LINE ON INVOICE.INV_NUMBER = LINE.INV_NUMBER JOIN PRODUCT ON LINE.P_CODE = PRODUCT.P_CODE;

Outer Join Mengembalikan tidak hanya baris yang sesuai dengan kondisi join, melainkan juga baris dengan nilai yang tidak sesuai. Standar ANSI mendefinisikan 3 jenis outer join: left, right, & full. Left & right merefleksikan urutan tabel yang diproses oleh DBMS. Tabel pertama setelah FROM akan menjadi sisi kiri & tabel kedua akan menjadi sisi kanan. Jika 3 atau lebih tabel yang dijoin, hasil dari penggabungan 2 tabel pertama menjadi sisi kiri & tabel ketiga menjadi sisi kanan. Left outer join tidak hanya mengembalikan baris yang sesuai dengan kondisi join melainkan juga baris dalam tabel kiri dengan nilai yang tidak sesuai dalam tabel kanan.

Berikut sintaksnya: Cth: SELECT column-list FROM table1 LEFT [OUTER] JOIN table2 ON join-condition; Cth: SELECT P_CODE, VENDOR.V_CODE, V_NAME FROM VENDOR LEFT JOIN PRODUCT ON VENDOR.V_CODE = PRODUCT.V_CODE; Right outer join mengembalikan tidak hanya baris yang sesuai dengan kondisi join, melainkan juga baris dalam tabel kanan dengan nilai yang tidak sesuai dalam tabel kiri. SELECT column-list FROM table1 RIGHT [OUTER] JOIN table2 ON join-condition; FROM VENDOR RIGHT JOIN PRODUCT ON VENDOR.V_CODE = PRODUCT.V_CODE;

Full outer join mengembalikan tidak hanya baris yang sesuai dengan kondisi join, melainkan juga semua baris dengan nilai yang tidak sesuai dalam tabel pada kedua sisi. Berikut sintaksnya: SELECT column-list FROM table1 FULL [OUTER] JOIN table2 ON join-condition; Cth: SELECT P_CODE, VENDOR.V_CODE, V_NAME FROM VENDOR FULL JOIN PRODUCT ON VENDOR.V_CODE = PRODUCT.V_CODE;

Subquery Terkadang data yang diproses membutuhkan data yang diproses lainnya. Cth query untuk menghasilkan daftar vendor yang tidak memasok produk: SELECT V_CODE, V_NAME FROM VENDOR WHERE V_CODE NOT IN (SELECT V_CODE FROM PRODUCT); Cth query untuk menghasilkan semua produk dengan harga lebih besar sama dengan harga rata-rata produk: SELECT P_CODE, P_PRICE FROM PRODUCT WHERE P_PRICE >= (SELECT AVG(P_PRICE) FROM PRODUCT);

Berikut karakteristik subquery: Subquery adalah query (pernyataan SELECT) dalam query. Subquery biasanya diekspresikan dalam tanda kurung. Query pertama dalam pernyataan SQL dikenal sebagai query luar. Query di dalam pernyataan SQL dikenal sebagai query dalam. Query dalam dieksekusi terlebih dulu. Output dari query dalam digunakan sebagai input untuk query luar. Keseluruhan pernyataan SQL kadang disebut sebagai query bersarang.

Subquery dapat mengembalikan: Satu nilai tunggal (1 kolom & 1 baris). Subquery ini digunakan di sisi kanan dari ekspresi perbandingan. Daftar nilai (1 kolom & beberapa baris). Subquery ini digunakan dengan IN dalam ekspresi WHERE. Tabel virtual (beberapa kolom & beberapa baris nilai). Subquery ini digunakan dengan FROM.

Subquery WHERE Jenis subquery yang paling umum menggunakan subquery SELECT pada sisi kanan dari ekspresi perbandingan WHERE. Cth query untuk menemukan semua produk dengan harga lebih besar sama dengan harga rata-rata produk: SELECT P_CODE, P_PRICE FROM PRODUCT WHERE P_PRICE >= (SELECT AVG(P_PRICE) FROM PRODUCT); Ketika menggunakan ekspresi kondisi >, <, =, >=, atau <=, membutuhkan subquery yang mengembalikan hanya 1 nilai (1 kolom & 1 baris). Nilai yang dihasilkan oleh subquery harus berupa tipe data yang sama; jika atribut di sebelah kiri dari simbol perbandingan adalah tipe karakter, subquery harus mengembalikan string karakter.

Subquery IN Operator IN digunakan untuk membandingkan atribut tunggal dengan daftar nilai. Cth: SELECT DISTINCT CUS_CODE, CUS_LNAME, CUS_FNAME FROM CUSTOMER JOIN INVOICE USING (CUS_CODE) JOIN LINE USING (INV_NUMBER) JOIN PRODUCT USING (P_CODE) WHERE P_CODE IN (SELECT P_CODE FROM PRODUCT WHERE P_DESCRIPT LIKE ‘%hammer%’ OR P_DESCRIPT LIKE ‘%saw%’);

Subquery HAVING Seperti menggunakan WHERE, user juga dapat menggunakan subquery dengan HAVING. HAVING digunakan untuk membatasi output dari query GROUP BY dengan mengaplikasikan kriteria kondisional untuk kelompok baris. Cth query untuk menampilkan semua produk dengan jumlah yang terjual lebih besar dari jumlah rata-rata yang terjual: SELECT P_CODE, SUM(LINE_UNITS) FROM LINE GROUP BY P_CODE HAVING SUM(LINE_UNITS) > (SELECT AVG(LINE_UNITS) FROM LINE);

Operator Subquery Multibaris : ANY & ALL Jika user ingin membuat perbandingan selain sama dengan dari 1 nilai dengan daftar nilai maka dapat menggunakan ALL. Cth query berikut untuk menampilkan biaya produk yang lebih mahal dari semua produk yang dipasok oleh vendor dari Florida: SELECT P_CODE, P_QOH * P_PRICE FROM PRODUCT WHERE P_QOH * P_PRICE > ALL (SELECT P_QOH * P_PRICE FROM PRODUCT WHERE V_CODE IN (SELECT V_CODE FROM VENDOR WHERE V_STATE=‘FL’)); Operator ANY digunakan membandingan nilai tunggal dengan daftar nilai & memilih hanya baris dimana biaya inventori lebih besar atau lebih kecil dari nilai dalam daftar. User dapat menggunakan sama dengan pada operator ANY, yang berfungsi sama dengan operator IN.

Subquery FROM Karena hasil dari subquery (pernyataan SELECT) adalah tabel lain (tabel virtual), maka user dapat menggunakan subquery SELECT dalam FROM. Cth query untuk menampilkan semua pelanggan yang membeli produk 13-Q2/P2 & 23109-HB: SELECT DISTINCT CUSTOMER.CUS_CODE, CUSTOMER.CUS_LNAME FROM CUSTOMER, (SELECT INVOICE.CUS_CODE FROM INVOICE NATURAL JOIN LINE WHERE P_CODE=‘13-Q2/P2’) CP1, (SELECT INVOICE.CUS_CODE FROM INVOICE NATURAL JOIN LINE WHERE P_CODE=‘23109-HB’) CP2 WHERE CUSTOMER.CUS_CODE=CP1.CUS_CODE AND CP1.CUS_CODE=CP2.CUS_CODE;

Subquery Daftar Atribut Pernyataan SELECT menggunakan daftar atribut untuk menandakan kolom apa yang ditampilkan. Kolom dapat berupa atribut dari tabel, atribut yang dikomputasi, atau hasil dari fungsi agregasi. Daftar atribut juga dapat menggunakan ekspresi subquery, yg disebut dengan inline subquery. Subquery dalam daftar atribut harus mengembalikan nilai tunggal. Cth query untuk menampilkan harga rata-rata produk & selisih harga produk dengan harga rata-rata: SELECT P_CODE, P_PRICE, (SELECT AVG(P_PRICE) FROM PRODUCT) AS AVGPRICE, P_PRICE – (SELECT AVG(P_PRICE) FROM PRODUCT) AS DIFF FROM PRODUCT;

Fungsi SQL Fungsi tanggal & waktu: YEAR, MONTH, DAY, dsb. Fungsi numerik: ABS, ROUND, CEIL/ FLOOR, dsb. Fungsi string: UPPER, LOWER, SUBSTRING, LENGTH, dsb. Fungsi konversi: CAST, CONVERT, dsb.

Operator Relasional UNION untuk menggabungkan baris dari 2 atau lebih query tanpa memasukkan baris duplikat. UNION ALL sama seperti UNION tetapi baris duplikat tetap ditampilkan. INTERSECT untuk menggabungkan baris dari 2 query & hanya mengembalikan baris yang muncul di kedua query. MINUS untuk menggabungkan baris dari 2 query & hanya mengembalikan baris yang muncul di query pertama tetapi tidak yang di query kedua. Sintaks alternatif: jika DBMS tidak mendukung INTERSECT atau MINUS, maka user dapat menggunakan subquery IN & NOT IN untuk mendapatkan hasil yang sama.

Tabel Virtual: Membuat View View adalah tabel virtual berdasarkan query SELECT. Query dapat berisi kolom, kolom yang dikomputasi, alias, & fungsi agregasi dari 1 atau lebih tabel. Tabel yang menjadi acuan dari view adalah base table. View dapat dibuat dengan perintah CREATE VIEW: CREATE VIEW viewname AS SELECT query;

View relasional memiliki beberapa karakteristik khusus: Nama view dapat digunakan dimanapun nama tabel diharapkan dalam pernyataan SQL. View diupdate secara dinamis. View menyediakan tingkat keamanan dalam database karena membatasi user untuk melihat hanya kolom & baris yang disebutkan dalam tabel. View juga dapat digunakan sebagai dasar untuk laporan.

Procedural SQL (PL/SQL) PL/SQL adalah bahasa yang memungkinkan penggunaan & penyimpanan kode prosedural & pernyataan SQL dalam database & untuk menggabungkan SQL & pemrograman tradisional seperti variabel, pemrosesan kondisi (IF-THEN-ELSE), loop dasar (FOR & WHILE), & pengecekan kesalahan. Kode prosedural dieksekusi sebagai sebuah unit oleh DBMS ketika dipanggil (langsung atau tidak langsung) oleh end user. End user dapat menggunakan PL/SQL untuk membuat: Anonymous PL/SQL blocks Triggers Stored procedures PL/SQL functions

Trigger Trigger adalah kode SQL prosedural yang secara otomatis dijalankan oleh RDBMS saat kemunculan kejadian manipulasi data yang diberikan. Penting untuk diingat bahwa: Trigger dijalankan sebelum atau sesudah baris data dimasukkan, diperbaharui, atau dihapus. Trigger berhubungan dengan tabel database. Tiap tabel database mungkin memiliki 1 atau lebih trigger. Trigger dieksekusi sebagai bagian dari transaksi yang memicunya. Trigger dapat digunakan untuk menerapkan batasan yang tidak dapat diterapkan pada tingkat desain & implementasi DBMS. Trigger menambah fungsionalitas dengan mengotomatiskan aksi kritis & menyediakan peringatan & saran untuk aksi perbaikan. Trigger dapat digunakan untuk memperbaharui nilai tabel, memasukkan record dalam tabel, & memanggil stored procedure lain.

Berikut sintaks untuk membuat trigger: CREATE OR REPLACE TRIGGER trigger_name [BEFORE / AFTER][DELETE / INSERT / UPDATE OF column_name] ON table_name [FOR EACH ROW] [DECLARE] [variable_namedata type[:=initial_value]] BEGIN PL/SQL instructions; ... END;

Stored Procedure Stored procedure adalah kumpulan dari pernyataan prosedural & SQL. Keuntungan utama dari stored procedure adalah dapat digunakan untuk mengenkapsulasi & mewakilkan transaksi bisnis. Keuntungan lainnya: Mengurangi lalu lintas jaringan & meningkatkan kinerja. Membantu mengurangi duplikasi kode dengan isolasi kode & sharing kode, sehingga meminimalisasi kesempatan kesalahan & biaya pengembangan & pemeliharaan aplikasi.

Berikut sintaks untuk membuat stored procedure: CREATE OR REPLACE PROCEDURE procedure_name [(argument [IN/OUT] data-type, ...)] [IS/AS] [variable_namedata type[:=initial_value]] BEGIN PL/SQL or SQL statements; ... END;

Stored Function Stored function pada dasarnya adalah kelompok dari pernyataan prosedural & SQL yang mengembalikan nilai, ditandai dengan pernyataan RETURN dalam kode programnya. Stored function hanya dapat dipanggil dari dalam stored procedure atau trigger, & tidak dapat dipanggil dari pernyataan SQL kecuali fungsi mengikuti beberapa aturan khusus.

Berikut sintaks untuk membuat fungsi: CREATE FUNCTION function_name (argument IN data-type, ...) RETURN data-type [IS] BEGIN PL/SQL statements; ... RETURN (value or expression); END;

Review Materi Mahasiswa mempraktikkan DML Lanjutan di MySQL.