SQL Lecturer:
Mahendra Data, S.Kom
SQL • SQL adalah singkatan dari Structured Query Language • SQL adalah bahasa standar yang digunakan untuk mengakses serta memanipulasi database • SQL termasuk dalam standar yang ditetapkan oleh ANSI (American National Standarts Institute)
Apa saja yang bisa dilakukan SQL? • SQL bisa digunakan untuk: Mengeksekusi querie ke database Mengambil data dari database Memasukkan data ke dalam database Merubah data dalam database Menghapus data dalam database Membuat database baru Membuat tabel baru dalam database Membuat stored procedure dalam database Membuat views dalam database Merubah hak akses terhadap table, procedure dan view dalam database
Yang harus diingat! • Bahas SQL bersifat case insensitive! Hurut besar dan huruf kecil dianggap sama
• Sangat disarankan menuliskan semicolon (;) di akhir perintah SQL. Beberapa DBMS mengharuskan menuliskan semicolon Semicolon adalah cara standar untuk mengakhiri suatu perintah SQL sehingga memungkinkan untuk mengeksekusi lebih dari satu perintah SQL
DML vs DDL • Data Manipulation Language (DML) Digunakan untuk memanipulasi data dalam database, yang meliputi: pengambilan, perubahan, penghapusan dan penambahan data.
• Data Definition Language (DDL) Digunakan untuk mendefiniskan schema database, yang meliputi: pembuatan dan pengubahan database, pembuatan dan pengubahan table, dll.
DML • Data Manipulation Language (DML) SELECT ektrak data UPDATE update data DELETE menghapus dat INSERT INTO menambahkan data baru
DDL • Data Definition Language (DDL) CREATE DATABASE membuat database ALTER DATABASE memodifikasi database CREATE TABLE membuat tabel ALTER TABLE memodifikasi tabel DROP DATABASE menghapus database DROP TABLE menghapus tabel CREATE INDEX membuat index (search key) DROP INDEX menghapus index
Let’s practice… (part 1) Basic SQL
Database Rating Film Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
101 Gone with the Wind
1939 Victor Fleming
201 Sarah Martinez
201 101
2
102 Star Wars
1977 George Lucas
202 Daniel Lewis
202 106
4
103 The Sound of Music
1965 Robert Wise
203 Brittany Harris
203 103
2
104 E.T.
1982 Steven Spielberg
204 Mike Anderson
203 108
4
105 Titanic
1997 James Cameron
205 Chris Jackson
204 101
6
106 Snow White
1939 Null
206 Elizabeth Thomas
205 103
3
107 Avatar
2009 James Cameron
207 James Cameron
205 104
2
108 Raiders of the Lost Ark
1981 Steven Spielberg
208 Ashley White
205 108
4
206 107
3
206 106
5
207 107
5
208 104
3
SELECT … FROM … • Tampilan daftar judul film. SELECT title FROM Movie; select title from movie; SELECT TITLE FROM MOVIE;
Movie mID
Ingat SQL bersifat case insensitive
Reviewer title
year
director
rID
Rating name
rID mID stars
SELECT … FROM … • Tampilan daftar sutradara film. SELECT director FROM Movie; SELECT DISTINCT director FROM Movie; Ingat SQL bersifat multiset
Digunakan untuk menghilangkan record / tuple dengan nilai yang sama
Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
SELECT … FROM … • Tampilan isi tabel Movie. SELECT *FROM Movie;
• * adalah karakter spesial yang digunakan untuk menampilkan seluruh tabel yang ada dalam relasi. Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
SELECT … FROM … WHERE … • Cari judul film yang disutradarai oleh James Cameron SELECT title FROM movie WHERE director = "James Cameron";
• Tanda petik (“ ”) digunakan untuk menyatakan nilai dalam bentuk STRING Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
SELECT … FROM … WHERE … • Cari judul film yang dibuat setelah tahun 1980 SELECT title FROM movie WHERE year > 1980;
• Tanda = , <> , > , >= , < , <= digunakan untuk membandingkan nilai. • Dapat digunakan di hampir semua tipe data, termasuk STRING. Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
SELECT … FROM … WHERE … OR / AND … • Cari judul film yang disutradarai oleh James Cameron yang dibuat setelah tahun 2000 SELECT title FROM movie WHERE director = "James Cameron” AND year > 2000;
Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
SELECT … FROM … WHERE … OR / AND … • Cari judul film yang dibuat sebelum tahun 2000 yang disutradarai oleh Steven Spielberg atau James Cameron SELECT title FROM Movie WHERE year < 2000 AND director = "Steven Spielberg" OR director = "James Cameron";
Movie mID
Reviewer title
year
director
rID
SALAH
Rating name
rID mID stars
SELECT … FROM … WHERE … OR / AND … • Cari judul film yang dibuat sebelum tahun 2000 yang disutradarai oleh Steven Spielberg atau James Cameron SELECT title FROM Movie WHERE year < 2000 AND (director = "Steven Spielberg" OR director = "James Cameron"); BENAR Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
SELECT …, … FROM … ORDER BY … • Tampilan daftar judul dan nama sutradara film yang diurut berdasarkan nama sutradara SELECT title, director FROM Movie ORDER BY director;
Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
Let’s practice… (part 2) Dealing with multiple table
SELECT … FROM …, …. WHERE … • Tampilkan daftar judul film dan stars rating SELECT DISTINCT title, stars FROM Movie, Rating WHERE Movie.mID = Rating.mID; Kerena terdapat lebih dari 1 kolom yang bernama mID maka perlu disertakan nama tabel di depan nama kolom tersebut.
Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
SELECT … FROM …, …. WHERE … • Tampilkan daftar judul film dan stars rating yang memiliki stars rating 4 atau 5 SELECT DISTINCT title, stars FROM Movie, Rating WHERE Movie.mID = Rating.mID AND (stars = 4 OR stars = 5);
Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
SELF JOIN • Tampilkan ID film dan dua ID reviewer yang mereview film yang sama SELECT R1.mID, R1.rID, R2.rID FROM Rating R1, Rating R2 WHERE R1.mID = R2.mID AND R1.rID < R2.rID; Perlu membuat alias table, karena self join akan menggabungkan 1 tabel yang sama
Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
UNION • Tampilkan daftar nama sutradara dan reviewer SELECT director FROM Movie UNION SELECT name FROM Reviewer;
Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
UNION • Tampilkan daftar nama sutradara dan reviewer SELECT director AS nama FROM Movie UNION SELECT name AS nama FROM Reviewer;
Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
INTERSECT • Tampilkan daftar nama sutradara yang juga merupakan nama reviewer SELECT director AS nama FROM Movie INTERSECT SELECT name AS nama FROM Reviewer; • Sayangnya tidak ada perintah intersect di MySQL, tapi tak perlu kuatir karena operasi intersect bisa dilakukan dengan cara lain Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
INTERSECT • Tampilkan daftar nama sutradara yang juga merupakan nama reviewer SELECT DISTINCT director AS nama FROM Movie, Reviewer WHERE director = name;
Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
EXCEPT • Tampilkan daftar nama sutradara yang bukan merupakan nama reviewer SELECT director AS nama FROM Movie EXCEPT SELECT name AS nama FROM Reviewer; • Sayangnya tidak ada perintah intersect di MySQL, tapi tak perlu kuatir karena operasi intersect bisa dilakukan dengan cara lain Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
EXCEPT • Tampilkan daftar nama sutradara yang bukan merupakan nama reviewer SELECT DISTINCT director AS nama FROM Movie, Reviewer WHERE director <> name; SALAH
Movie mID
Reviewer title
year
director
rID
Rating name
rID mID stars
EXCEPT • Tampilkan daftar nama sutradara yang bukan merupakan nama reviewer SELECT DISTINCT director AS nama FROM Movie WHERE director NOT IN (SELECT name FROM Reviewer);
Movie mID
Reviewer title
year
director
rID
BENAR
Rating name
rID mID stars
Selamat belajar
SELESAI….
Daftar Pustaka • http://www.w3schools.com/sql/default.asp • http://www.db-class.org/course/class/index