Anda di halaman 1dari 2

CONTOH SQL - PAKTIKUM BASIS DATA

1. Membuat Database
CREATE DATABASE [Namadatabase];
USE [namadatabase];

2. Membuat tabel
CREATE TABLE anggota
(idanggota CHAR(10) NOT NULL, nama VARCHAR(40) NOT NULL, sex CHAR(1) NOT NULL,
tempatlahir VARCHAR(40) NOT NULL, tanggallahir DATETIME NOT NULL, alamat VARCHAR(100),
notelepon VARCHAR(30),
CHECK((sex='L') OR (sex='l') OR (sex='P') OR (sex='p')),
PRIMARY KEY (idanggota));

CREATE TABLE kategori


(idkategori CHAR(5) NOT NULL, namakategori VARCHAR(10) NOT NULL,
PRIMARY KEY (idkategori));

3. Mengisi Tabel
INSERT INTO kategori(idkategori,namakategori) VALUES ('K01','Majalah');
atau :
INSERT INTO kategori values ('K01', 'Pelajaran');
Contoh :
insert into anggota values ('A01','Teguh','L', 'Sragen', '09-06-1975','Klaten', '08152525');

4. Perintah Select
SELECT * FROM ANGGOTA WHERE NAMA LIKE 'E%';
-> Menampilkan yang namanya berawalan huruf E
SELECT * FROM ANGGOTA WHERE UPPER(NAMA) LIKE '%Y%';
-> Menampilkan yang namanya ada Y besar.
SELECT NAMA FROM ANGGOTA WHERE (UPPER(SEX )= 'L') AND (EXTRACT(YEAR FROM
TANGGALLAHIR)<1970);
-> Menampilkan yang laki-laki dan lahir sebelum tahun 1970
SELECT IDBUKU FROM PEMINJAMAN WHERE TANGGALKEMBALI-JADWALKEMBALI >= 1 ;
-> Menampilkan data peminjam buku yang terlambat lebih dari 1 hari

5. Cross Product
CROSS PRODUCT 2 buah tabel berarti mengkombinasikan semua baris pada tabel pertama dengan
setiap baris pada tabel ke dua.

Contoh :
Select * from buku, kategori

ITU SALAH...
Harusnya :
Select * from Buku JOIN Kategori ON (buku.kategori = kategori.idkategori);

Menampilkan id buku yang pernah dipinjam oleh anggota yang berusia lebih dari 1200 hari
SELECT IDBUKU FROM PEMINJAMAN JOIN ANGGOTA ON (Peminjaman.IDAnggota =
Anggota.IDAnggota) WHERE CURRENT_DATE – TANGGALLAHIR > 12000;

Menampilkan id buku yang pernah dipinjam oleh anggota pria


SELECT Peminjaman.IDbuku FROM ANGGOTA JOIN PEMINJAMAN JOIN BUKU ON
Peminjaman.IDAnggota = Anggota.IDAnggota ON Peminjaman.IDBuku = Buku.IDBuku WHERE
UPPER(Sex) = 'L';

Menampilkan judul buku beserta nama beserta nama peminjamnya yang pernah dipinjam oleh anggota
wanita selama lebih dari 3 hari.
SELECT Nama,Judul FROM ANGGOTA JOIN PEMINJAMAN JOIN BUKU ON Peminjaman.IDAnggota =
Anggota.IDAnggota ON Peminjaman.IDBuku = Buku.IDBuku WHERE (UPPER(Sex) = 'P') AND
(tanggalkembali – tanggalpinjam > 3) ;

6. Agregate
Merupakan fungsi untuk menggabungkan banyak baris menjadi 1 baris.
z Count, Max, SUM, AVG
Untuk SUM dan AVG khusus Numerik
Contoh :
SELECT COUNT (Idbuku) FROM Buku
7. Left, Right dan Outer Join
Merupakan fungsi untuk menggabungkan banyak baris menjadi 1 baris.

JOIN : Hanya menampilkan isi tabel yang punya pasangan.


LEFT JOIN : Yang kiri, meski tak punya pasangan akan ditampilkan.
RIGHT JOIN : Yang kanan, meski tak punya pasangan akan ditampilkan.
OUTER JOIN : Semua, meski tak punya pasangan akan ditampilkan.

CONTOH-CONTOH :

SELECT Idbuku, Judul, namakategori FROM Buku JOIN Kategori ON (Buku.Kategor


i = Kategori.Idkategori) ;

SELECT Idbuku, Judul, namakategori FROM Buku RIGHT JOIN Kategori ON (Buku.Kategori =
Kategori.Idkategori) ;

8. Berbagai Contoh
1. Select dengan membuat kolom baru yang sebenarnya tidak ada
SELECT idanggota, tanggalkembali-tanggalpinjam AS lamapinjam from peminjaman;

2. Menggabung dengan Concatenation


SELECT upper(idanggota) || ' ' || UPPER(nama) FROM anggota;

3. Sub Query -> Select di dalam Select


Misal : Menampilkan idanggota dan denda yang nilai dendanya etrtinggi.
SELECT idanggota, denda from Peminjaman Where Denda = (Select Max(Denda) From Peminjaman);

4. Grouping -> Hasil select dapat dikelompokkan menjadi group-group berdasarkan kesamaan nilai pada
kolom tertentu.
Misal : Menghitung Jumlah orang berdasarkan Jenis Kelamin;
SELECT COUNT(NAMA), SEX FROM ANGGOTA GROUP BY SEX;

5. Group By bisa dilakukan pada banyak kolom. Hasil Group By, bisa di group lagi dengan HAVING.
SELECT COUNT(IDANGGOTA), SEX FROM ANGGOTA GROUP BY SEX HAVING SEX = 'L';

6. Order By :
SELECT * FROM ANGGOTA ORDER BY SEX DESCENDING, NAMA ASCENDING

7. Menampilkan ID Anggota dan usianya :


SELECT IDANGGOTA, ((CURRENT_DATE-TANGGALLAHIR)/365) AS UMUR FROM ANGGOTA)

8. Menampilkan ID Anggota beserta ID buku yang terlambat mengembalikan


SELECT IDANGGOTA, IDBUKU, (DENDA/(TANGGALKEMBALI-JADWALKEMBALI)) FROM
PEMINJAMAN WHERE TANGGALKEMBALI>JADWALKEMBALI)

9. Menampilkan selisih usia antara anggota tertua dan anggota termuda (DALAM HARI)
SELECT MAX(tanggal_lahir) – MIN(tanggal_lahir) AS Selisihhari FROM ANGGOTA;

10. Melihat ID Anggota yang belum pernah meminjam buku.


SELECT IDANGGOTA from anggota WHEER IDANGGOTA <> ALL (SELECT IDANGGOTA FROM
PEMINJAMAN)
atau
SELECT IDANGGOTA FROM ANGGOTA WHERE NOT EXISTS (SELECT IDANGGOTA FROM
PEMINJAMAN WHERE PEMINJAMAN.IDANGGOTA = anggota.idanggota)

Anda mungkin juga menyukai