Structured Query Language (SQL)
Structured Query Language Yaitu bahasa yang kita gunakan untuk melakukan query ataupun memodifikasi data pada sistem database Bahasa SQL tergolong high level language karena mudah dipahami oleh manusia
Implementasi Skema Basisdata Implementasi skema basisdata “TRANSACTION” menggunakan SQL Tools yang dipakai adalah PostGre SQL Contoh tools basisdata yang lain : Oracle, phpmyadmin, Ms Access
Database TRANSACTION Tabel yang terlibat : Customer berisi data pelanggan (nama, alamat, dll) OderInfo berisi info pemesanan oleh pelanggan (tgl pesan, tgl kirim, dsb) OrderLine berisi info barang-barang yang dipesan beserta jumlahnya Item berisi info detail setiap barang Stock berisi info jumlah stok barang Barcode berisi kode barang dan barcode-nya
Langkah-langkah Membuat database baru Membuat tabel-tabel Mengisi tabel dengan data Memodifikasi data sesuai kebutuhan Melakukan query data yang diinginkan
Membuat Database Baru
Membuat tabel-tabel CREATE TABLE item ( item_id serial , description varchar(64) NOT NULL, cost_price numeric(7,2) , sell_price numeric(7,2) , CONSTRAINT item_pk PRIMARY KEY(item_id) );
Operasi pada tabel Menghapus tabel DROP TABLE barcode; Menghapus kolom ALTER TABLE stock DROP COLUMN quantity; Menambah kolom ALTER TABLE stock ADD COLUMN quantity integer; Mengosongkan tabel TRUNCATE TABLE customer;
Mengisi tabel INSERT INTO stock(item_id, quantity) VALUES(1,12); INSERT INTO item(description, cost_price, sell_price) VALUES('Wood Puzzle', 15.23, 21.95);
Modifikasi data UPDATE tablename SET columnname = value WHERE condition Contoh UPDATE customer SET town = 'Leicester', zipcode = 'LE4 2WQ‘ WHERE fname = 'Peter' and lname = 'Bradley';
Delete Data DELETE FROM tablename WHERE condition Contoh : DELETE FROM customer WHERE town = 'Lincoln';
Query pada data SELECT <comma-separated list of columns> FROM <table name> Contoh: SELECT * FROM item; SELECT town, lname FROM customer; SELECT town, lname AS "Last Name" FROM customer;
ORDER BY (mengurutkan data) Contoh SELECT town, lname AS "Last Name" FROM customer ORDER BY town; Jika tak ditambahkan ASC atau DESC maka defaultnya ASCENDING
ORDER BY Contoh SELECT town, lname AS 'Last Name' FROM customer ORDER BY town DESC, lname ASC;
SELECT DISTINCT Menghilangkan duplikasi SELECT DISTINCT town FROM customer; Pada query di atas, ditampilkan semua nama kota tanpa ada perulangan
Melakukan kalkulasi SELECT description, cost_price * 100 AS price FROM item
Where SELECT town, lname, fname FROM customer WHERE town = 'Bingham';
Where Kondisi pakai operator SELECT title, fname, lname, town FROM customer WHERE title <> 'Mr' AND (town = 'Bingham' OR town = 'Nicetown');
BETWEEN Untuk menambahkan syarat kondisi pada suatu range Contoh SELECT DISTINCT, customer_id, town FROM customer WHERE customer_id BETWEEN 2 AND 5;
SELECT DISTINCT SELECT DISTINCT customer_id, town FROM customer WHERE customer_id BETWEEN 2 AND 5;
IN atau NOT IN Membandingkan dengan sebuah kumpulan nilai SELECT title, fname, lname, town FROM customer WHERE title <> 'Mr' AND town IN ('Bingham', 'Nicetown');
Pattern Matching match towns beginning with B ... WHERE town LIKE 'B%‘ match first names that end with E, WHERE fname LIKE '%e'; match first names that are exactly four characters long ... WHERE fname LIKE '_ _ _ _';
Pattern Matching Match letter a as the second character SELECT fname, lname FROM customer WHERE fname LIKE '_a%';
LIMIT Display first five matching rows SELECT customer_id, town FROM customer LIMIT 5;
FUNGSI-FUNGSI AGREGATE Yaitu fungsi-fungsi yang hasilnya diambil dari proses tiap baris pada tabel. Proses tersebut akan mengolah nilai sebuah field atau lebih mulai baris pertama sampai seluruh baris Fungsi-fungsi tersebut yakni: - COUNT(*) mendapatkan jumlah baris - SUM(kolom) mendapatkan hasil penjumlahan kolom - MAX(kolom) mendapatkan nilai tertinggi - MIN(kolom) mendapatkan nilai terendah - AVG(kolom) mendapatkan nilai rata-rata
FUNGSI-FUNGSI AGREGATE Contoh untuk menampilkan jumlah seluruh anggota: SELECT COUNT(*) FROM Anggota untuk menampilkan tahun kelahiran anggota tertua: SELECT MIN(year(TglLahir)) FROM anggota
GROUP BY <kolom1> [,<kolom2>] Digunakan untuk pengelompokan dari fungsi-fungsi aggregate Yang penting untuk diperhatikan, kolom-kolom yang disertakan setelah GROUP BY harus sama dengan kolom-kolom yang dipilih pada setelah klausa SELECT yg selain fungsi AGGREGATE
Tampilkan nama kota dan jumlah customer yang tinggal di kota tersebut
Select town, count(*) as num from customer group by town
HAVING <kondisiAgregate> Jika untuk filter query biasa kita menggunakan klause where, maka klausa having digunakan untuk filter fungsi-fungsi aggregate. Contoh untuk menampilkan jumlah buku per kode penerbit, tetapi hanya yang jumlahnya >10 saja yang ditampilkan. SELECT idPenerbit, COUNT(*) FROM koleksi GROUP BY idPenerbit HAVING COUNT(*)>10
Select town, count(*) as num from customer group by town having count(*)> 2
Latihan Tampilkan fname, town customer yang nama depannya berakhiran a Select fname, town from customer where fname LIKE '%a‘ Tampilkan fname, town customer yang nama depannya berawalan e Select fname, town from customer where fname LIKE ‘e%' Tampilkan fname, town customer yang nama depannya mengandung karakter ‘e’ di tempat ke 3 dari belakang Select fname, town from customer where fname LIKE ‘%e__' Tampilkan fname, town customer yang nama depannya mengandung karakter “be” LIKE ‘%be%'
Tampilkan fname, lname untuk customer yang tinggal di Bingham, Lincoln, atau Yuleville Select fname, lname from customer where town in(‘Bingham’, ‘Lincoln’, ‘ Yuleville’) Tampilkan item_id, quantity dari tabel stock untuk barang yang quantity nya antara 10 sampai 50 select item_id, quantity from stock where quantity between 10 AND 50 Tampilkan 6 peringkat teratas item_id dari tabel stock untuk barang yang quantity-nya menipis select item_id from stock order by quantity limit 6
Tampilkan jumlah komposisi Mr, Mrs, Ms dari table customer select title, count(*) as num from customer group by title