Anda di halaman 1dari 43

DAFTAlR ISI

BAB I. PERINTAH-PERINTAH DDL ................................................................................................................ 3


1.1. Tujuan ..................................................................................................................................... 3
1.2. Dasar Teori .............................................................................................................................. 3
1.3. Praktikum ................................................................................................................................ 3
1.4. Tugas ....................................................................................................................................... 5
BAB II. MANIPULASI DATA .......................................................................................................................... 7
2.1. Tujuan ..................................................................................................................................... 7
2.2. Dasar Teori .............................................................................................................................. 7
2.3. Praktikum ................................................................................................................................ 7
2.4. Tugas ....................................................................................................................................... 9
BAB III. FUNGSI-FUNGSI AGREGAT ........................................................................................................... 11
3.1. Tujuan ................................................................................................................................... 11
3.2. Dasar Teori ............................................................................................................................ 11
3.3. Praktikum .............................................................................................................................. 11
3.4. Tugas ..................................................................................................................................... 12
BAB IV. DISPLAY DATA SINGLE TABLE ....................................................................................................... 14
4.1. Tujuan ................................................................................................................................... 14
4.2. Dasar Teori ............................................................................................................................ 14
4.3. Praktikum .............................................................................................................................. 14
4.4. Tugas ..................................................................................................................................... 16
BAB V. SUBQUERY ..................................................................................................................................... 18
5.1. Tujuan ................................................................................................................................... 18
5.2. Dasar Teori ............................................................................................................................ 18
5.3. Praktikum .............................................................................................................................. 19
5.4. Tugas ..................................................................................................................................... 20
BAB VI. INNER JOIN ................................................................................................................................... 22
6.1. Tujuan ................................................................................................................................... 22
6.2. Dasar Teori ............................................................................................................................ 22
6.3. Praktikum .............................................................................................................................. 23
Hal aman |2

6.4. Tugas ..................................................................................................................................... 25


BAB VII. LEFT DAN RIGHT JOIN .................................................................................................................. 27
7.1. Tujuan ................................................................................................................................... 27
7.2. Dasar Teori ............................................................................................................................ 27
7.3. Praktikum .............................................................................................................................. 28
7.4. Tugas ..................................................................................................................................... 29
BAB VIII. LIMIT DAN DISTINCT ................................................................................................................... 31
8.1. Tujuan ................................................................................................................................... 31
8.2. Dasar Teori ............................................................................................................................ 31
8.3. Praktikum .............................................................................................................................. 31
8.4. Tugas ..................................................................................................................................... 33
BAB IX. SISTEM PENCARIAN DATA ............................................................................................................ 35
9.1. Tujuan ................................................................................................................................... 35
9.2. Dasar Teori ............................................................................................................................ 35
9.3. Praktikum .............................................................................................................................. 36
9.4. Tugas ..................................................................................................................................... 38
BAB X. PERINTAH UNION .......................................................................................................................... 40
10.1. Tujuan ............................................................................................................................... 40
10.2. Dasar Teori ........................................................................................................................ 40
10.3. Praktikum .......................................................................................................................... 40
10.4. Tugas ................................................................................................................................. 41
REFERENSI................................................................................................................................................. 43
Hal aman |3

BAB I. PERINTAH-PERINTAH DDL

1.1. Tujuan
Mengenal syntax atau perintah DDL (Data Definition Language) menggunakan SQL (Structured
Query Language).

1.2. Dasar Teori

2.2.1. Perintah-Perintah DDL


DDL merupakan kumpulan perintah SQL yang digunakan untuk membuat (create), mengubah
(alter) dan menghapus (drop) struktur dan definisimeta data dari objek-objek database. Objek-
objek tersebut adalah Database, Table, View, Index, Stored Procedure, Function dan Trigger.

1.3. Praktikum
1) Membuat database bernama world
Sintak dasar:
CREATE DATABASE [nama database];

Praktik:
CREATE DATABASE world;

2) Membuat tabel
a. country
CREATE TABLE country (
Code CHAR(3) NOT NULL DEFAULT '',
Name CHAR(52) NOT NULL DEFAULT '',
Continent ENUM('Asia','Europe','North
America','Africa','Oceania','Antarctica','South America') NOT
NULL DEFAULT 'Asia',
Region CHAR(26) NOT NULL DEFAULT '',
SurfaceArea FLOAT(10,2) NOT NULL DEFAULT '0.00',
IndepYear SMALLINT(6) DEFAULT NULL,
Population INT(11) NOT NULL DEFAULT '0',
LifeExpectancy FLOAT(3,1) DEFAULT NULL,
GNP FLOAT(10,2) DEFAULT NULL,
Hal aman |4

GNPOld FLOAT(10,2) DEFAULT NULL,


LocalName CHAR(45) NOT NULL DEFAULT '',
GovernmentForm CHAR(45) NOT NULL DEFAULT '',
HeadOfState CHAR(60) DEFAULT NULL,
Capital INT(11) DEFAULT NULL,
Code2 CHAR(2) NOT NULL DEFAULT '',
PRIMARY KEY (Code)
) ENGINE=MYISAM DEFAULT CHARSET=latin1;

b. Tabel city
CREATE TABLE city (
ID INT(11) NOT NULL AUTO_INCREMENT,
Name CHAR(35) NOT NULL DEFAULT '',
CountryCode CHAR(3) NOT NULL DEFAULT '',
District CHAR(20) NOT NULL DEFAULT '',
Population INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (ID)
) ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

c. Tabel countrylanguage
CREATE TABLE countrylanguage (
CountryCode char(3) NOT NULL DEFAULT '',
Language char(30) NOT NULL DEFAULT '',
IsOfficial enum('T','F') NOT NULL DEFAULT 'F',
Percentage float(4,1) NOT NULL DEFAULT '0.0',
PRIMARY KEY (CountryCode,Language)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

3) Menghapus dan mengubah nama field


a. Menghapus fieldCode2 pada tabel country
Sintak dasar:
ALTER TABLE [nama tabel] DROP COLUMN [nama field];

Praktik:
ALTER TABLE country DROP COLUMN Code2;

b. Mengubah nama fieldGovernmentForm menjadi PoliticalSystem pada tabel country


Sintak dasar:
ALTER TABLE [nama tabel] CHANGE [nama field lama] [nama field
baru] [tipe data];

Praktik:
ALTER TABLE country CHANGE GovernmentForm PoliticalSystem CHAR(45);
Hal aman |5

4) Mengubah tipe data fieldHeadOfState pada tabel country


Pada saat membuat tabel peserta, field HeadOfState bertipe data CHAR dengan lebar 60.
Sekarang akan diubah menjadi bertipe VARCHAR dengan lebar 100. Sintak hampir sama
pada point 3.b. bedanya hanya mengubah tipe datanya saja tanpa mengubah nama field.
Sintak dasar:
ALTER TABLE [nama tabel] CHANGE [nama field lama] [nama field baru]
[tipe data];

Praktik:
ALTER TABLE country CHANGE HeadOfState HeadOfState VARCHAR(60);

5) Menambahkan index
Index adalah objek pada MySQL yang berisi data yang terurut dari nilai-nilai pada satu atau
lebih field dalam suatu tabel. Sama seperti daftar isi pada sebuah buku, index terutama
digunakan untuk mempercepat pencarian terhadap suatu set data dengan kondisi tertentu
yang melibatkan kombinasi field yang sudah didefinisikan dalam suatu index. Tanpa index,
pencarian data biasanya akan memakan waktu lama, terutama jika data sudah dalam skala
jumlah yang sangat besar.
Sintak dasar:
ALTER TABLE [nama tabel] ADD INDEX [nama index] ([field yang
diindex]);

Praktik:
ALTER TABLE country ADD INDEX idx_region (Region);

6) Menghapus tabel dan database


Menghapus tabel dan database sama-sama menggunakan perintah DROP yaitu:

DROP TABLE [nama tabel];

DROP DATABASE [nama database];

1.4. Tugas
1) Tambahkan field cityCode CHAR(5) pada tabel City dan tempatkan field tersebut setelah
field name.
2) Ubah nama tabel countrylanguage menjadi country_language
Hal aman |6

CATATAN :
Hal aman |7

BAB II. MANIPULASI DATA

2.1. Tujuan
Mengenal dan memahami syntax atau perintah DML (Data Manipulation Language)
menggunakan SQL (Structured Query Language).

2.2. Dasar Teori

3.2.1. Manipulasi Data


Manipulasi data atau juga disebut DML (Data Manipulation Language) adalah kumpulan
perintah SQL yang berhubungan dengan pekerjaan mengolah data di dalam table dan tidak
terkait dengan perubahan struktur dan definisi tipe data dari objek database seperti table,
column, dan sebagainya. Beberapa perintah DML antara lain SELECT, INSERT, UPDATE dan
DELETE.

2.3. Praktikum
1) Memasukkan (insert) 1 baris data ke tabel country
Sintak dasar:
INSERT INTO [nama tabel] ([nama field 1],[nama field 2],[nama field
3],...) VALUES ([nilai 1],[nilai 2],[nilai 3],...);

Praktik:
INSERT INTO country (Code, Name, Region, SurfaceArea, IndepYear,
Population, LifeExpectancy, GNP, GNPOld, LocalName, GovernmentForm,
HeadOfState, Capital) VALUES ('TML', 'Timor Leste', 'South East
Asia', '500000', '2001', '1179100', '42.7', '9462.00', '2346.00',
'Timor', 'Republic', 'Xanana Gusmao', '7962');

2) Memasukkan beberapa baris data sekaligus ke tabel city


Sintak dasar:
INSERT INTO [nama tabel] ([nama field 1],[nama field 2],[nama field
3],...)VALUES
([nilai 1],[nilai 2],[nilai 3],...),
([nilai 1],[nilai 2],[nilai 3],...),
([nilai 1],[nilai 2],[nilai 3],...),
...;

Praktik:
INSERT INTO city (Name, CountryCode, District, Population)
VALUES
('Manatuto', 'TML', 'Manatuto', '4753'),
('Bobonaro', 'TML', 'Bobonaro', '90412'),
('Ermera', 'TML', 'Ermera', '109643'),
('Cova Lima', 'TML', 'Cova Lima', '309578'),
Hal aman |8

('Oecusse', 'TML', 'Oecusse', '47993');

Dalam sintak INSERT, setiap nilai yang akan dimasukkan diapit tanda petik (). Hal ini wajib
untuk nilai yang bertipe string. Meski nilai yang bertipe data numeric tidak diwajibkan,
sangat dianjurkan untuk mengapit dengan tanda petik semua, mencegah kesalahan ketika
proses insert.

3) Mengubah/menyunting data menggunakan perintah UPDATE pada tabel country


Sintak dasar:
UPDATE [nama tabel] SET [nama field] = [nilai];

Sintak tersebut akan mengubah semua isi data pada suatu field. Dalam kebutuhan
pemrograman, lebih sering ditambahkan menggunakan klausa WHERE.

UPDATE [nama tabel] SET [nama field] = [nilai] WHERE [kondisi];

Praktik:
UPDATE country SET HeadOfState = 'Susilo Bambang Yudhoyono' WHERE
Code = 'IDN';

Sintak di atas mengubah data pada field HeadOfState dari Abdurahman Wahid menjadi
Susilo Bambang Yudhoyono berdasar berkode IDN.

4) Mengubah data multi tabel menggunakan UPDATE dan WHERE


Mengubah kode negara Timor Leste dari TML menjadi TLS pada tabel country, namun
karena di tabel city terdapat kunci tamu yaitu field CountryCode maka proses UPDATE
harus dilakukan secara bersamaan.

Praktik:
UPDATE country,city
SET
Code = 'TLS',
CountryCode = 'TLS'
WHERE
Code = CountryCode
AND
Code = 'TML';

Field Code pada country dan CountryCode pada city diset menjadi TLS tetapi hanya field
Code dan Country yang memiliki kesamaan serta field Code yang bernilai TML saja yang
diubah. Hasilnya, kode negara Timor Leste menjadi TLS pada tabel country, begitu juga
kota-kota Timor Leste pada tabel city kode negaranya (CountryCode) menjadi TLS.
Hal aman |9

5) Menghapus data dengan perintah DELETE


Sintak dasar:
DELETE FROM [nama tabel];

Sama halnya dengan SELECT dan UPDATE, perintah dasar tersebut juga bisa ditambahkan
WHERE untuk filtering.

DELETE FROM [nama tabel] WHERE [kondisi];

Praktik:
DELETE FROM city WHERE CountryCode = 'NGA';

Data kota yang memiliki CountryCode berkode NGA akan terhapus semua.

6) Menghapus multi tabel dengan DELETE dan WHERE


Menghapus data negara Timor Leste berdasarkan kode negara TLS. Selain data pada tabel
country, data kota-kota Timor Leste pada tabel city juga harus ikut terhapus sekaligus.
Praktik:

DELETE cnt,cty
FROM country AS cnt, city AS cty
WHERE cnt.Code = cty.CountryCode
AND cnt.Code = 'TLS'

2.4. Tugas
1) Tulislah query untuk menghapus data dari tabel city dengan kode IDN dimana populasinya
kurang dari 100.
2) Tulislah query untuk menampilkan data negara dari tabel country yang tahun
kemerdekaannya bernilai NULL.
H a l a m a n | 10

CATATAN :
H a l a m a n | 11

BAB III. FUNGSI-FUNGSI AGREGAT

3.1. Tujuan
Menggunakan fungsi-fungsi MySQL untuk kebutuhan penghitungan matematika pada database.

3.2. Dasar Teori

3.2.1. Fungsi-fungsi agregrat


Hampir semua DBMS relational, seperti MySQL menyertakan fungsi yang dapat dipakai untuk
mengetahui penjumlahan, rata-rata, nilai minimum, nilai maksimun dan cacah. Fungsi-fungsi
tersebut antara lain SUM, MIN, MAX, AVG, COUNT.

3.3. Praktikum
1) Mencari nilai minimum menggunakan MIN()
Sintak dasar:
SELECT MIN([nama field]) FROM [nama tabel];

Praktik:
SELECT MIN(Capital) FROM country;

Selain penggunaan untuk mencari nilai minimum pada field yang bertipe data numeric, juga
bisa digunakan untuk mencari nilai minimum pada field bertipe data string yang
penghitungannya berdasarkan panjangnya dan diurutkan secara alphabetis.

SELECT MIN(Continent) FROM country;

2) Mencari nilai minimum menggunakan MAX()


Sintak dasar:
SELECT MAX([nama field]) FROM [nama tabel];

Praktik:
SELECT MAX(Capital) FROM country;

Seperti halnya MIN, MAX merupakan kebalikannya sehingga memiliki sifat yang sama yaitu
juga bisa menentukan suatu nilai maksimum bertipe string.

SELECT MAX(Continent) FROM country;

3) Menjumlahkan dengan menggunakan SUM()


Sintak dasar:
SELECT SUM([nama field]) FROM [nama tabel];
H a l a m a n | 12

Praktik:
SELECT SUM(Population) FROM country;
Perintah SUM tersebut menjumlahkan seluruh field Population tabel country atau dengan
kata lain mendapatkan jumlah keseluruhan populasi seluruh dunia.

4) Mencari cacah data dengan COUNT()


Sintak dasar:
SELECT COUNT([NAMA FIELD]) FROM [nama tabel];

Praktik:
SELECT COUNT(ID) FROM city;

Sintak di atas adalah untuk menghitung cacah data tabel city berdasar field ID. COUNT juga
bisa menggunakan tanda asterisk atau bintang (*) pada nama field. Bedanya, jika
menggunakan tanda bintang, semua data akan dihitung. Jika menggunakan field secara
spesifik, nilai NULL tidak akan dihitung sebagai cacah data. Bandingkan 2 sintak berikut.

SELECT COUNT(*) FROM country;


SELECT COUNT(Capital) FROM country;

5) Mencari rata-rata dengan AVG()


Sintak dasar:
SELECT AVG([NAMA FIELD]) FROM [nama tabel];

Praktik:
SELECT AVG(SurfaceArea) FROM country;

3.4. Tugas
1) Tulislah query untuk menampilkan nama tiap benua dan nilai luas area rata-rata dari tabel
country.
2) Tulislah query untuk menampilkan nama tiap wilayah, nama benua, dan total luas dari
masing-masing wilayah.
H a l a m a n | 13

CATATAN :
H a l a m a n | 14

BAB IV. DISPLAY DATA SINGLE TABLE

4.1. Tujuan
Memahami beberapa cara dalam menampilkan data dengan query.

4.2. Dasar Teori

4.2.1. Display Data Single Table


Perintah SELECT pada MySQL berfungsi untuk menampilkan data dari satu tabel atau lebih.
Query SELECT memiliki banyak variasi yang dapat digunakan, antara lain :

1) SELECT ALL
Kondisi ini digunakan untuk menampilkan semua record dan semua field dari tabel.
Sintak : SELECT * FROM nama_tabel

2) SELECT FIELD
Kondisi ini digunakan untuk menampilkan semua record tetapi hanya dari field tertentu saja.
Sintak : SELECT field_1, field_2,. . . FROM nama_tabel

3) SELECT RECORD (WHERE)


Kondisi ini digunakan untuk menampilkan isi dari record tertentu atau field tertentu.
Sintak : SELECT (ALL/FIELD) FROM nama_tabel WHERE nama_field =
value

4.3. Praktikum
1) Menampilkan data bersyarat menggunakan klausa WHERE
1. Menampilkan negara yang berada pada benua (continent) Asia.
SELECT * FROM country
WHERE Continent = 'asia';

2. Menampilkan negara yang berada pada benua Asia dan berada pada regional (region)
Asia Tenggara.
SELECT * FROM country
WHERE Continent = 'asia' AND Region = 'southeast asia';

Terdapat logika AND pada klausa WHERE. Artinya, kedua persyaratan harus terpenuhi.
Jika hanya salah satu saja, maka tidak ada data yang ditampilkan. Contoh:
SELECT * FROM country
WHERE Continent = 'asia' AND Region = 'caribbean';

3. Menampilkan negara benua Eropa atau region Central America


SELECT * FROM country
WHERE Continent = 'Europe' OR Region = 'Central America';
H a l a m a n | 15

Logika OR pada klausa WHERE, akan menampilkan data setidaknya salah satu kondisi
terpenuhi.

4. Menampilkan negara benua Eropa atau region Central America dan bentuk
pemerintahannya (GovernmentForm) Republic
SELECT * FROM country
WHERE
(Continent = 'Europe' OR Region = 'Central America') AND
GovernmentForm = 'Republic';

5. Menampilkan data dengan operator matematika untuk mendapatkan data lebih dari,
kurang dari, sama dengan.
SELECT name, Population FROM City WHERE Population > 1000000;

Query diatas untuk mencari kota yang populasinya lebih dari 1000000. Kebalikannya
adalah kurang dari. Contoh:
SELECT name, Population FROM City WHERE Population < 1000000;

Kemudian, untuk mencari yang nilainya sama dengan, maka menggunakan operator =.
Contoh:
SELECT name, Population FROM City WHERE Population = 95268;

6. Menampilkan kota berkode (countryCode) IDN, selain District Central Java.


SELECT Name,Population,District FROM city
WHERE CountryCode = 'IDN' AND District <> 'Central Java';

7. Menampilkan kota dengan berdasar jajaran/range populasi antara 100000 hingga


200000.
SELECT Name, Population FROM City WHERE Population BETWEEN
100000 AND 200000;

2) Menampilkan data dengan klausa GROUP BY


1. Menampilkan kota, tiap negara hanya diwakili oleh 1 kota saja. Grouping berdasar
CountryCode.
SELECT * FROM city BY CountryCode

Bisa juga menggunakan 2 field, misal countryCode dan District. Sehingga nanti jika
kombinasi 2 field tersebut ada yang kembar, maka akan ditampilkan sekali saja. Contoh:
SELECT * FROM city GROUP BY CountryCode,District

2. Menampilkan data agregasi penjumlahan populasi tiap region


SELECT region, SUM(population) FROM country GROUP BY region;
H a l a m a n | 16

Apabila hanya menggunakan SUM saja tanpa klausa GROUP BY, maka hasilnya jumlah
keseluruhan semua region. Jika menggunakan GROUP BY region maka penjumlahannya
berdasar field yang di grouping yaitu region sehingga hasilnya jumlah populasi tiap
region.

3) Menampilkan data dengan klausa ORDER BY


a) Mengurutkan data negara berdasar Name
SELECT Name,Continent,Region
FROM country ORDER BY Name;

Query di atas secara otomatis mengurutkan paling kecil atau paling awal dalam
alphabetis, ditempatkan paling atas (Ascending). Sebenarnya klausa ORDER BY tersebut
secara lengkap adalah ORDER BY Name ASC.

b) Mengurutkan data secara Descending


SELECT Name,Continent,Region FROM country
ORDER BY Name DESC;

c) Mengurutkan data beberapa field sekaligus


SELECT Name,Continent,Region FROM country
ORDER BY Name,Continent,Region;

d) Mengurutkan data Ascending dan Descending sekaligus


SELECT Continent,Region FROM country
ORDER BY Region ASC,Continent DESC;

4.4. Tugas
1) Tampilkan record dari tabel Country dimana populasinya kurang dari 10000 dan berada di
benua Afrika
2) Tampilkan record benua, wilayah dan total populasi tiap wilayah dari tabel Country dimana
hanya benua Europe atau Oceania yang ditampilkan, kemudian urutkan hasilnya
berdasarkan benua dan total populasi terbanyak.
H a l a m a n | 17

CATATAN :
H a l a m a n | 18

BAB V. SUBQUERY

5.1. Tujuan
Memahami pemakaian subquery untuk menampilkan data.

5.2. Dasar Teori

5.2.1. Subquery
Subquery adalah query di dalam query atau sebuah query SELECT berada di dalam perintah
SELECT yang lain. Subquery terdiri dari 2 bagian yaitu outer query dan inner query. Outer query
adalah query terluar atau query utama sedangkan inner query adalah query inti atau bisa disebut
subquery.

Gambar 5.1 Struktur subquery

Gambar 5.2 Contoh subquery


H a l a m a n | 19

5.3. Praktikum
1) Subquery pada 1 tabel
SELECT * FROM country
WHERE Population < (SELECT AVG(Population) FROM country);

Query di atas untuk mencari negara yang populasinya dibawah rata-rata jumlah populasi
dunia. Mencari rata-rata populasi dunia menggunakan SELECT AVG(Population) FROM
country yang mana merupakan inner query. Kemudian outer querySELECT * FROM
country WHERE Population < ... akan menampilkan data negara yang jumlah
populasinya kurang dari nilai yang dihasilkan dari inner query tadi.

2) Subquery pada 2 tabel


SELECT * FROM city
WHERE Population > (SELECT AVG(surfaceArea) FROM country);

Query di atas untuk mencari kota yang populasinya lebih besar dari rata-rata luas
permukaan daratan di seluruh negara.
Inner query dan outer query menggunakan 2 tabel yang berbeda. Inner querySELECT
AVG(surfaceArea) FROM country mencari rata-rata luas permukaan daratan
(surfaceArea) pada tabel country. Sedangkan outer query menampilkan data kota selama
jumlah populasinya lebih dari nilai inner query.

c) Subquery bersyarat
SELECT * FROM city
WHERE
CountryCode IN
(SELECT code FROM country WHERE GovernmentForm = 'Republic')
AND
countryCode IN
(SELECT CountryCode FROM countrylanguage WHERE Language =
'English');

Query di atas untuk menampilkan kota yang bentuk pemerintahan negaranya Republic dan
bahasanya English. Di sini melibatkan 3 tabel sekaligus, 1 tabel pada outer query, 2 tabel
lainnya sebagai inner query. Pada inner query terdapat syarat atau filter klausa where.

Alur eksekusi dari subquery adalah inner query dieksekusi oleh server terlebih dahulu,
setelah memberi nilai kembalian, selanjutnya outer query dieksekusi dan hasil yang
ditampilkan bergantung dari hasil dari inner query tadi. Ilustrasi alur eksekusi query di atas
bisa dilihat pada gambar.
H a l a m a n | 20

Gambar 5.3 Alur eksekusi subquery

5.4. Tugas
1) Tampilkan record benua, wilayah dan total populasi tiap wilayah dari tabel Country dimana
total lebih besar sama dengan 300000000, kemudian urutkan hasilnya berdasarkan benua
dan total populasi terbanyak.
H a l a m a n | 21

CATATAN
H a l a m a n | 22

BAB VI. INNER JOIN

6.1. Tujuan
Memahami konsep dan praktik Inner Join.

6.2. Dasar Teori

6.2.1. Inner Join


Perintah JOIN berguna untuk mengkombinasikan baris/record dari 2 tabel atau lebih
berdasarkan field yang ada pada tabel-tabel tersebut. Sedangkan perintah INNER JOIN adalah
untuk menampilkan semua baris dari kedua tabel selama field penghubung nilainya sama.

Gambar 6.1 Gambaran perintah join.

Jika dilihat dari diagram venn ilustrasi di atas, bisa dikatakan bahwa ketika 2 tabel dilakukan
INNER JOIN, maka hanya data yang beririsan (area hijau) saja yang akan ditampilkan. Sedangkan
yang tidak beririsan (berwarna putih) tidak akan ditampilkan. Apabila tidak ada yang beririsan,
maka tidak akan ada data yang ditampilkan.

Field penghubung biasanya berupa kunci primer (primary key) dengan kunci tamu (foreign key).
Misal, field Code dengan CountryCode, masing-masing tabel Country dan City.

Sintak :

SELECT column_name(s)
FROM table1 INNER JOIN table2
ON table1.column_name=table2.column_name;

atau:

SELECT column_name(s)
FROM table1 JOIN table2
ON table1.column_name=table2.column_name;

INNER JOIN bisa ditulis hanya JOIN saja.


H a l a m a n | 23

6.3. Praktikum
1) Inner Join 2 tabel
SELECT
Code, Name, Continent, Region, CountryCode, Language
FROM country
INNER JOIN countrylanguage ON CODE = CountryCode;

Jumlah data yang tampil sebanyak jumlah data pada tabel countryLanguage. Perhatikan
gambar berikut:

Gambar 1.2 Tabel Country

Gambar 6.3 Tabel countryLanguage

Jika dilihat dari hasil query di atas, maka negara ABW (Aruba) akan tampil 4 kali, begitu juga
AFG tampil 5 kali meski dilihat dari Tabel Country, ABW dan AFG masing-masing hanya 1.
Ketika dilakukan inner join dengan tabel countryLanguage, maka data pada tabel Country
akan terus digabungkan dan ditampilkan dengan data countryLanguage selama data pada
field penghubung nilainya sama. Dengan kata lain, code ABW mengecek countryCode dari
baris pertama, ketika pengecekan baris kelima, sudah tidak sama dengan code ABW lagi,
melainkan menjadi Code AFG maka yang ditampilkan selanjutnya code AFG.

Hal itu juga akan sama ketika tabel country inner join dengan city.

SELECT cn.CODE, cn.NAME, cn.Continent, ct.Name, ct.CountryCode,


ct.District, ct.Population
FROM country cn
INNER JOIN city ct ON cn.Code = ct.CountryCode;
H a l a m a n | 24

2) Inner Join bersyarat


SELECT Code, Name, Continent, Region, CountryCode, Language
FROM country
INNER JOIN countrylanguage ON Code = CountryCode
WHERE LANGUAGE = 'english';

Inner Join juga bisa ditambakan filtering untuk memilih data hasil join dengan syarat
tertentu. Sama seperti query yang dipelajari sebelumnya tentang where.

Jika dilihat pada tabel countrylanguage, negara yang menggunakan bahasa English maka
akan tampil sebagai berikut:

Gambar 6.4 Record data countrylanguage

Gambar di atas hanya sebagian data saja. Data sesungguhnya ada 60 baris. Maka, ketika
query diatas tadi dijalankan, dia hanya akan menggabungkan dan menampilkan negara-
negara yang sesuai pada gambar tersebut atau hanya 60 negara saja.

3) Inner Join dengan klausa GROUP BY


SELECT Code, Name, Continent, Region, CountryCode, Language
FROM country
INNER JOIN countrylanguage ON Code = CountryCode
GROUP BY continent;

Dengan adanya klausa Group By pada field continent, maka data yang ditampilan hanya
sejumlah jenis continent saja.
H a l a m a n | 25

Gambar 6.5 Inner Join Tanpa Group By

Pada gambar di atas adalah ketika tanpa ditambahkan Group By. Tanda biru (vertikal) adalah
field Continent yang dijadikan field Grouping. Sedangkan tanda merah (horizontal) adalah
baris-baris yang akan ditampilkan ketika query di atas tadi dijalankan. Jika dilihat dari
gambar itu, baris yang terpilih untuk ditampilkan adalah baris yang muncul pertama kali dari
atas bedasar nama benua (continent)

4) Inner Join dengan klausa Order By


SELECT Code, Name, Continent, Region, CountryCode, Language
FROM country
INNER JOIN countrylanguage ON Code = CountryCode
ORDER BY Language;

Penambahan klausa Order By untuk mengurutkan data hasil Inner Join.

6.4. Tugas
1) Tampilkan nama Negara dan jumlah kota dari masing-masing Negara dengan syarat Negara
tersebut mempunyai kota minimal 1, kemudian urutkan berdasarkan jumlah kota terbanyak.
H a l a m a n | 26

CATATAN
H a l a m a n | 27

BAB VII. LEFT DAN RIGHT JOIN

7.1. Tujuan
Memahami konsep dan praktik Left dan Right Join.

7.2. Dasar Teori

7.2.1. Left dan Right Join


Left Join dan Right Join atau kadang bisa ditulis Left Outer Join dan Right Outer Join fungsinya
sama seperti pada Bab 6 yaitu INNER JOIN namun terdapat perbedaan karakteristik yang
menimbulkan hasil query yang berbeda.

Left Join akan menampilkan semua data pada tabel berada pada sisi kiri atau tabel pertama,
dengan menyamakan baris pada tabel sisi kanan atau tabel kedua. Jika baris pada tabel sisi
kanan tidak sama, maka baris itu bernilai NULL. Berikut ilutstrasinya

Sintaks:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

Right Join adalah kebalikan dari Left Join yaitu data pada tabel sisi kanan atau tabel kedua akan
ditampilkan terlebih dahulu kemudian diiringi tabel pertama dengan menyamakan masing-
masing baris. Begitu pula jika tabel sisi kiri atau tabel pertama ada yang tidak cocok dengan
tabel sisi kanan maka baris itu akan bernilai NULL. Berikut ilustrasinya
H a l a m a n | 28

Sintaks:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;

7.3. Praktikum
1) Left Join 2 tabel
SELECT code, name, CountryCode, language, IsOfficial
FROM country
LEFT JOIN countrylanguage ON code = CountryCode;

Query di atas menghubungkan antara tabel country (sebagai Left tabel atau tabel pertama)
dengan countrylanguage (sebagai right tabel atau tabel kedua) dengan field kunci code dan
CountryCode. Ditemukan beberapa baris di countrylanguage nilainya NULL. Berarti ada baris
field kunci yang tidak sama atau tidak ada di countrylanguage dengan country

Gambar 7.1 Hasil LEFT JOIN

2) Right Join 2 tabel


SELECT code, name, CountryCode, language, IsOfficial
FROM country
RIGHT JOIN countrylanguage ON code = CountryCode;

Kebalikan dari Left, sekarang Right . Yaitu tabel countrylanguage (sebagai right tabel
atau tabel kedua)akan ditampilkan terlebih dahulu.

Agar terlihat perbedaannya maka , lakukan penghapusan dan penyuntingan (update) pada
tabel country dengan kode negara CIV dan update pada kode AFG.
DELETE FROM country WHERE
code = 'CIV';

UPDATE country
SET Code = 'AFX'
WHERE Code= 'AFG';
H a l a m a n | 29

Kemudian jalankan lagi perintah Right Join tadi. Sorting berdasar nama negara. Maka akan
tampil baris NULL di code, name yang merupakan field milik tabel country. Ini membuktikan
bahwa Right Join akan selalu menampilkan semua baris di tabel sisi kanan terlebih dahulu.
Apabila data di tabel country (left tabel) tidak tersedia, maka barisnya akan bernilai NULL
kemudian data yang tidak sama, juga akan bernilai NULL. Berdasar contoh tadi, countrycode
AFG tidak ada persamaannya karena code AFG yang ada pada tabel country sudah diganti
menjadi AFX.

Gambar 7.2 Hasil RIGHT JOIN

7.4. Tugas
1) Tampilkan nama Negara yang tidak mempunyai kota.
H a l a m a n | 30

CATATAN :
H a l a m a n | 31

BAB VIII. LIMIT DAN DISTINCT

8.1. Tujuan
Mengenal dan memahami syntax atau perintah Limit dan Distinct dalam menampilkan data
lebih lanjut.

8.2. Dasar Teori

8.2.1. Limit dan Distinct


LIMIT, adalah klausa untuk membatasi jumlah data yang akan ditampilkan, sehingga dapat
ditentukan berapa jumlah yang akan ditampilkan dan dimulai dari mana akan ditampilkan. LIMIT
juga dapat dipakai pada klausa perintah UPDATE dan DELETE.
Sintak:

SELECT column_name(s)
FROM table_name
LIMIT number;

DISTINCT, adalah perintah tambahan setelah SELECT, berguna untuk menghilangkan duplikasi
data ketika akan ditampilkan.
Sintak:
SELECT DISTINCT column_name,column_name
FROM table_name;

8.3. Praktikum
1) Menampilkan data dengan batasan jumlah tertentu
SELECT * FROM city
LIMIT 10;

Query tersebut untuk menampilkan data pada tabel City dengan batasan hanya 10 baris
teratas.

2) Menampilkan data dengan batasan jumlah dan dimulai dari baris tertentu.
SELECT * FROM city
LIMIT 5,10;

Query tersebut untuk menampilkan data pada tabel City dengan batasan hanya 10 baris
teratas, dimulai pada baris ke-6 sebanyak 10 baris yaitu baris ke-6 hingga ke-15.
H a l a m a n | 32

Hasil kedua query tersebut, bisa dilihat pada gambar berikut:

Gambar 8.1 Hasil penggunaan klausa LIMIT

Query pada poin pertama ditunjukkan dengan tanda garis utuh. Sedangkan query kedua
ditunjukkan oleh garis putus-putus. Dari gambar itu, jelas perbedaannya. Meski sama-sama
hanya 10 data yang ditampilkan, namun berbeda pada awalan baris yang ditampilkan.

Klausa LIMIT 5,10 pada query kedua, bisa diterjemahkan bahwa 5 baris teratas akan
diabaikan (tidak ditampilkan), maka setelah baris ke-5 akan ditampilkan sebanyak 10 baris
secara beruntun.

3) Menampilkan data dengan Distinct


SELECT DISTINCT countrycode FROM city;

Dengan menambahkan perintah DISTINCT pada field countrycode, maka field tersebut tidak
ada duplikasi data.

SELECT DISTINCT countrycode,District FROM city;

Query tersebut akan menampilkan data countrycode dan district yang unique. Dalam query
ini, yang dianggap duplikasi adalah ketika gabungan nilai countrycode dan district nilainya
sama. Lihat contoh pada gambar berikut:
H a l a m a n | 33

Gambar 8.2 Contoh duplikasi data gabungan countrycode dan District

Gambar di atas belum dijalankan query distinct countrycode, district sehingga ditemukan 6
duplikasi data. Countrycode NLD dengan district Zuid-Holland.

Gambar 8.3 Setelah Distinct countrycode,District

Setelah query kedua dijalankan, telah terlihat tanda pada gambar bahwa countrycode NLD
dengan district Zuid-Holland hanya ditampilkan 1 kali saja.

8.4. Tugas
1) Tampilkan jumlah total benua dari tabel Country

2) Tampilkan data dari hasil query tabel City dibawah ini mulai dari record ke 2 hingga 4
H a l a m a n | 34

CATATAN :
H a l a m a n | 35

BAB IX. SISTEM PENCARIAN DATA

9.1. Tujuan
Memahami logika pencarian menggunakan regular expression dan operator like/not like

9.2. Dasar Teori

9.2.1. Regular Expression (REGEX)


Regular Expressoin (REGEX) adalah konstruksi bahasa untuk mencocokan teks berdasarkan pola
tertentu, terutama untuk kasus-kasus komplek. Pada beberapa kasus REGEX biasanya digunakan
untuk mencari teks berawalan karakter tertentu, memiliki jumlah perulangan dari suatu teks
dan lain sebagainya. Selain itu REGEX juga digunakan untuk proses penguraian kata (text
parsing).

Ada 3 operator yang digunakan REGEX pada MySQL:

1) REGEXP : melakukan pencocokan pola (pattern matching) menggunakan Regular


Expression
2) NOT REGEXP : negasi dari REGEXP
3) RLIKE : sama dengan REGEXP

Selain itu ada beberapa aturan penulisan REGEX:

1) . : tanda titik dalam REGEX berarti sebuah karakter apa saja.


2) [. . .] : tanda kurung siku ini berarti kumpulan karakter. Misal [asdf] cocok dengan a,
s, d atau f. Bisa juga digunakan sebagai jangkauan (range), contoh [a-z] atau [0-9].
3) * : tanda bintang cocok dengan 0 atau lebih dari karakter sebelumnya. Misalkan
a* berarti akan cocok dengan seluruh kata yang mengandung 0 atau lebih a.
4) ^ : tanda pangkat atau topi menandakan berada diawal kata.
5) $ : tanda dolar ini menandakan bahwa pola berada diakhir kata.

Sintak:

Expression [NOT] REGEXP expression

Atau

Expression RLIKE expression

9.2.2. [NOT] LIKE


Operator like biasanya digunakan untuk mencari data yang menyerupai atau hamper sama
dengan pola tertentu. Operator ini juga biasa digunakan untuk mencari data dengan tipe
H a l a m a n | 36

string/teks. Penempatan karakter _ (karakter ganti yang cocok untuk satu karakter apa saja)
atau % (karakter ganti yang cocok untuk karakter apa saja dengan panjang karakter tidak
terbatas) sangat berpengaruh dalam pengoprasian operator ini. Sedangkakn operator NOT LIKE
adalah negasi dari operator LIKE.

Sintak:

Expression [NOT] LIKE expression

9.3. Praktikum
1) Pencarian menggunakan REGEX
Sintak:
SELECT name FROM City WHERE name REGEXP "^sur"

Query diatas menampilkan data dari field name yang datanya berawalan sur

Sintak:
SELECT name FROM City WHERE name NOT REGEXP "[asdf]"

Query diatas menampilkan data dari field name yang datanya tidak mengandung huruf a,
s, d atau f.

Sintak:
SELECT name FROM City WHERE name REGEXP "^[^a-z]"

Query diatas menampilkan data dari field name yang datanya tidak berawalan karakter a
sampai z.

2) Pencarian menggunakan LIKE


1. LIKE tanpa karakter _ atau %
Sintak:
SELECT * FROM City WHERE countryCode LIKE 'NLD'

Gambar 9.1 Hasil query LIKE


H a l a m a n | 37

Gambar diatas adalah hasil query menggunakan perintah LIKE. Perintah tersebut akan
mencari data dengan kata kunci NLD. Berbeda dengan operator =, perintah LIKE
mampu mencari data yang mengandung kata NLD dan tidak berpengaruh dengan
besar kecilnya karakter data dalam record.

2. LIKE menggunakan karakter _


Sintak:
SELECT * FROM City WHERE name LIKE '_'

Perintah diatas berfungsi melakukan pencarian data pada record di field name dengan
syarat hanya terdapat satu karakter di dalam record tersebut. Singkatnya untuk
menampilkan karakter yang jumlahnya semisal 4 pada field tertentu maka karakter
yang di tulis pada syarat pencarian LIKE berjumlah 4 x _ atau ____.
Sintak:
SELECT * FROM City WHERE name LIKE '____'

Gambar 9.2 Hasil query dengan karakter 4 x _

Sintak:
SELECT * FROM City WHERE Population LIKE '5__'

Gambar 9.3 Hasil query untuk mencari populasi dengan awalan karakter 5 dan diikuti 2 karakter
setelahnya

3. LIKE menggunakan karakter %


Sintak:
SELECT District FROM City WHERE District LIKE 'West%'

Perintah query diatas akan menampilkan fieldDistrict yang datanya diawali dengan kata
kunci West
H a l a m a n | 38

Sintak:
SELECT District FROM City WHERE District LIKE '%Java'

Perintah query diatas akan menampilkan fieldDistrict yang datanya diakhiri dengan kata
kunci Java

Sintak:
SELECT * FROM City WHERE District LIKE '%Java%'

Perintah query diatas akan menampilkan fieldDistrict yang datanya mengandung kata
kunci Java

9.4. Tugas
1) Buatlah query untuk menampilkan nama kota dari tabel city menggunakan REGEX dengan
syarat data nama kota tersebut mengandung karakter -. Misal : Yong-in, Pointe-Noire
2) Buarlah query untuk menampilkan nama kota dari tabel city menggunakan perintah LIKE
dengan syarat nama kota berjumlah 6 huruf dengan huruf terakhir berakhiran huruf i.
Misal : Tajimi, Kediri, Jhansi
H a l a m a n | 39

CATATAN :
H a l a m a n | 40

BAB X. PERINTAH UNION

10.1. Tujuan
Mengenal dan memahami fungsi dan pemanfaatan dari perintah UNION

10.2. Dasar Teori

10.2.1. Perintah Union


UNION adalah fungsi untuk menggabungkan dua atau lebih query SELECT dalam satu hasil
keluaran. Dengan syarat query SELECT tersebut harus memiliki jumlah field yang sama. UNION
mulai dipakai pada MySQL veris 4.0.

Gambar 10.1 Ilustrasi UNION

Gambar 10.2 Ilustrasi UNION ALL

Sintak :

SELECT field_1, field_2, field_3 FROM nama_table_1

UNION [ALL | DISTINCT]

SELECT abc_1 AS field_1, abc_2 AS field_2, abc_3 AS field_3 FROM


nama_tabel_2

10.3. Praktikum
1) Tampilkan nama negara dan nama kota menggunakan UNION
(SELECT 'Kota' AS keterangan, District AS nama FROM City LIMIT 2)
UNION
(SELECT 'Negara' AS keterangan, NAME AS nama FROM Country LIMIT 2)
H a l a m a n | 41

Query diatas menampilkan data dari tabel Country dan City yang kemudian hasilnya
digabungkan dengan fungsi UNION.

Gambar 10.1 Hasil query UNION

2) Tampilkan nama negara menggunakan UNION dan UNION ALL


- Langkah 1, buat query UNION
(SELECT District AS nama FROM City LIMIT 2)
UNION
(SELECT NAME AS nama FROM Country LIMIT 2)

Gambar 10.2 Hasil query UNION kota dan negara

- Langkah 2, update nama salah satu kota yang isinya disamakan sama nama salah satu
negara
- Langkah 3, lakukan perintah langkah 1 untuk melihat apa saja data yang ditampilkan
- Langkah 4, gabungkan dengan UNION ALL
(SELECT District AS nama FROM City LIMIT 2)
UNION ALL
(SELECT NAME AS nama FROM Country LIMIT 2)

10.4. Tugas
1) Tampilkan data pada satu kolom untuk jumlah Negara, jumlah kota, jumlah bahasa resmi
yang digunakan (bernilai True) .
H a l a m a n | 42

CATATAN :
H a l a m a n | 43

REFERENSI

http://mysql.phi-integration.com/sql/

http://www.duniailkom.com/

https://dev.mysql.com/doc/refman/5.6/en/

http://www.w3schools.com/

http://w3resource.com/

Anda mungkin juga menyukai