Handout INF106 modul praktikum jum at 28 April 2017

Menghapus Duplikasi Data dengan Query DISTINCT
Pada Tutorial Belajar MySQL kali ini kita akan membahas tentang query DISTINCT. Query
ini digunakan untuk menghapus atau mengeleminasi duplikasi dari hasil tampilan SELECT.
Sama seperti query AS, ORDER BY, dan LIMIT, query DISTINCT ini digunakan sebagai
tambahan dari query utamanya, yakni SELECT.
Jika

anda

ingin

menggunakan

dalam tabel_daftar dosen

secara

data
manual,

tabel

atau

yang

sama,

menggunakan

silahkan

input

query LOAD

ke

DATA

INFILE dibawah, untuk file txt dapat diperoleh dari sample data tabel daftar_dosen ver.2.


LOAD DATA INFILE 'D:\\MySQL\\daftar_dosen.txt' (sesuaikan dengan lokasi file di komputer
anda) INTO TABLE daftar_dosen FIELDS TERMINATED BY ',' LINES TERMINATED BY
'\r\n';
Cara Menggunakan Query DISTINCT Untuk Menghapus Duplikasi
Penekanan untuk judul diatas, query DISTINCT digunakan hanya untuk memanipulasi
tampilan hasil dari tabel. Duplikasi yang dihapus adalah untuk tampilan data, bukan tabel
asli dari MySQL.
SELECT alamat FROM daftar_dosen ORDER BY alamat;
Dari hasil query tersebut, dapat dilihat bahwa nama kota yang sama akan tampil lebih dari
sekali. Hal ini terjadi karena terdapat beberapa dosen yang kebetulan beralamat di kota
yang sama dengan dosen lainnya. Jika yang kita inginkan bahwa untuk setiap kota yang
sama, hasil query harus muncul 1 kali saja, kita akan memerlukan perintah DISTINCT.
Cara Penulisan Query DISTINCT
Format dasar penulisan query DISTINCT adalah sebagai berikut:
SELECT DISTINCT nama_kolom FROM nama_tabel;


Nama_kolom adalah nama kolom yang akan ditampilkan.




Nama_tabel adalah nama tabel untuk kolom yang akan ditampilkan.

Sehingga untuk contoh kasus kita sebelumnya untuk menampilkan seluruh kota 1 kali saja,
maka querynya:

SELECT DISTINCT alamat FROM daftar_dosen ORDER BY alamat;
Dengan penambahan perintah DISTINCT di awal query SELECT, maka hanya data yang
unik saja (data yang tidak sama) yang akan ditampilkan. Seandainya hasil query terdapat
data yang sama lebih dari 1 kali tampil, perintah DISTINCT hanya akan menampilkannya 1
kali saja.
Namun jika kita menambahkan kolom nama_dosen seperti query berikut:
SELECT DISTINCT nama_dosen,alamat FROM daftar_dosen
ORDER BY alamat;
Terlihat bahwa MySQL tetap menampilkan seluruh isi tabel tanpa ada yang dieliminasi. Hal
ini dikarenakan query DISTINCT hanya mengeleminasi query yang unik, atau tidak sama
dilihat

secara


baris

per

baris

(per

record).

Dengan

mengkombinasikan nama_dosen dengan alamat, maka setiap baris dianggap unik, kecuali
terdapat nama dosen dan alamat yang persis sama.

Tipe Data Date (Tanggal) dalam MySQL

Tipe data ini digunakan untuk menyimpan data yang berkaitan dengan tanggal dan waktu.
Tipe data date, terdiri dari: DATE, TIME, DATETIME, TIMESTAMP, dan YEAR.


Jenis tipe data DATE dalam MySQL
MySQL memiliki beberapa format untuk tipe data date. Format tipe data date tersebut
adalah: DATE, TIME, DATETIME, TIMESTAMP, dan YEAR. Perbedaan dari tipe-tipe
tersebut terletak pada format penyimpanan data. Untuk lebih lengkapnya dapat dilihat dari
tabel dibawah ini:
Tipe Data
DATE

Jangkauan
‘1000-01-01’

DATETIME

‘9999-12-31’
‘1000-01-01

to

Ukuran
3 byte


Zero Value
‘0000-00-00’

8 byte

‘0000-00-00

00:00:01’ to ‘9999TIMESTAMP

12-31 23:59:59’
‘1970-01-01

00:00:00’
4 byte

00:00:00’ to ‘2038TIME

01-18 22:14:07’
‘838:59:59’


YEAR(2)

‘838:59:58’
00 to 99

to

‘0000-00-00
00:00:00’

3 byte

‘00:00:00’

1 byte

‘00’

MySQL menyediakan beberapa format yang dapat digunakan untuk input tipe data tanggal,

masing masing untuk tipe data yang bersesuaian.
Tipe Data
DATETIME
TIMESTAMP

DATE

TIME
YEAR

Fomat Input
'CCYY-MM-DD hh:mm:ss'
'YY-MM-DD hh:mm:ss'
'CCYYMMDDhhmmss'
'YYMMDDhhmmss'
CCYYMMDDhhmmss
YYMMDDhhmmss
'CCYY-MM-DD'
'YY-MM-DD'
'CCYYMMDD'

'YYMMDD'
CCYYMMDD
YYMMDD
'hh:mm:ss'
'hhmmss'
hhmmss
'CCYY'
'YY'

CCYY
YY
Jika MySQL tidak dapat membaca format, atau data tidak tersedia, maka data akan diisi
sesuai dengan nilai pada Zero Value.
Contoh query untuk membuat tabel dengan data DATE:
CREATE TABLE contoh_date (dat DATE, tim TIME, dattim DATETIME,
timestam TIMESTAMP, yea YEAR);
DESCRIBE contoh_date;
Perhatikan pada saat mendefinisikan tipe data YEAR, pada query DESCRIBE kita dapat
melihat bahwa MySQL memberikan nilai YEAR(4) sebagai nilai default. Kita dapat secara
langsung mendefinisikan YEAR(2) jika menginginkan data tahun dengan 2 digit, namun hal

ini tidak disarankan, karena dengan mendefinisikan tahun 26, akan menjadi ambigu, apakah
itu tahun 1926 atau 2026, walaupun MySQL memiliki aturan akan mengkonversinya menjadi
2026.
MySQL menyediakan fungsi NOW() untuk memberikan tanggal server pada saat ini, dan kita
akan menggunakannya sebagai nilai tiap kolom pada tabel contoh_date:
INSERT INTO contoh_date values (NOW(),NOW(),NOW(),NOW(),'2017');

Rangkuman materi basisdata :
1.

MEMBUAT DAN MENGHAPUS DATABASE
a.

CREATE DATABASE UNIVERSITAS;

b.

CREATE DATABASE IF NOT EXISTS MAHASISWA;
Format [IF NOT EXISTS] akan membuat database jika database itu belum ada
sebelumnya.


Jika

sudah

ada,

query CREATE

DATABASE tidak

menghasilkan apa-apa (database yang lama tidak akan tertimpa).
c. USE UNIVERSITAS;
d. DROP DATABASE UNIVERSITAS;

akan

e. DROP DATABASE [IF EXISTS] DATABASE_NAME;
Sama seperti query pada pembuatan database, pilihan [IF EXISTS] digunakan
untuk menghilangkan pesan error jika seandainya database tersebut memang
tidak ada.
2.

MEMBUAT, MENGHAPUS DAN MANIPULASI TABEL
a.

CREATE TABLE DATA_MAHASISWA ( NIM CHAR(9), NAMA CHAR(50), UMUR
INT, TEMPAT_LAHIR CHAR(50), JURUSAN CHAR (30) );

b.

CREATE TABLE DATA_MAHASISWA ( NIM CHAR(9) PRIMARY KEY, NAMA
CHAR(50), UMUR INT, TEMPAT_LAHIR CHAR(50), JURUSAN CHAR (30) );

c.

CREATE TABLE DATA_MAHASISWA ( NIM CHAR(9), NAMA CHAR(50), UMUR
INT, TEMPAT_LAHIR CHAR(50), JURUSAN CHAR (30), UNIQUE (NIM, NAMA));

d.

SHOW TABLES;

e.

DESCRIBE DATA_MAHASISWA;

f.

DROP TABLE DATA_MAHASISWA;

g.

RENAME TABLE DATA_MAHASISWA TO MAHASISWA;

h.

ALTER TABLE MAHASISWA ADD NAMA_BELAKANG CHAR(25) AFTER NAMA;

i.

ALTER TABLE MAHASISWA DROP NAMA_BELAKANG;

j.

INSERT INTO TABEL MAHASISWA (NIM, NAMA, UMUR, TEMPAT LAHIR,
JURUSAN)

VALUES

('2016071001’,’AHMAD

AQIL

HALIM’,

20,

‘JAKARTA’,’INFORMATIKA’);
k.

UPDATE MAHASISWA SET NAMA=’AQIL’ WHERE NIM=’2016071001’;

l.

DELETE FROM MAHASISWA WHERE NIM=’2016071001’;

m. TRUNCATE MAHASISWA;

3. CARA MENAMBAHKAN DATA DARI FILE (LOAD DATA INFILE)
a. LOAD

DATA

INFILE

'D:\\MYSQL\\INPUT_DATA.TXT'

INTO

TABLE

DAFTAR_DOSEN FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES
TERMINATED BY '\R\N';
b. LOAD DATA LOCAL INFILE 'D:\\MySQL\\data_lagi.txt' REPLACE INTO TABLE
daftar_dosen FIELDS TERMINATED BY '\t' ENCLOSED BY '\'' LINES
STARTING BY '**' TERMINATED BY '|' IGNORE 1 LINES;
4. QUERY SELECT
a. SELECT * FROM MAHASISWA;

b. SELECT NIM, NAMA FROM MAHASISWA
c. SELECT * FROM MAHASISWA WHERE IPK >= 3.0;
d. SELECT NAMA FROM MAHASISWA WHERE ALAMAT=’PAMULANG’;
e. SELECT * FROM MAHASISWA WHERE IPK BETWEEN 2.75 AND 3.5;
f.

SELECT * FROM MAHASISWA WHERE NAMA LIKE ‘%ADI%’;

g. SELECT * FROM MAHASISWA WHERE NAMA LIKE ‘%A’;
h. SELECT * FROM MAHASISWA WHERE NAMA LIKE ‘A%’;
i.

SELECT NAMA, ALAMAT FROM MAHASISWA ORDER BY NAMA ASC;

j.

SELECT NAMA, ALAMAT FROM MAHASISWA ORDER BY NAMA DESC;

k. SELECT * FROM MAHASISWA GROUP BY ALAMAT;
l.

SELECT COUNT(*) FROM MAHASISWA;

m. SELECT SUM HARGA_BARANG FROM BARANG;
n. SELECT * FROM BARANG WHERE LEFT (KODE_BARANG,1) = “D”;
o. SELECT * FROM BARANG WHERE RIGHT (KODE_BARANG, 2) = “2”;
p. SELECT * FROM BARANG WHERE MID(KODE_BARANG, 2, 1) = “P”;
q. SELECT MAX (IPK) FROM MAHASISWA;
r.

SELECT MIN (IPK) FROM MAHASISWA;

SOAL LATIHAN
1. BUATLAH DATABASE RUMAH SAKIT BINTARO
2. BUATLAH TABEL DOKTER, TABEL SPESIALIS DAN TABEL JAGA DENGAN
KETENTUAN SEBAGAI BERIKUT :
a. TABEL DOKTER
b. TABEL SPESIALIS
c. TABEL JAGA
3. ISI TABEL DENGAN CARA MELAKUKAN LOAD DATA DENGAN SOURCE
SEBAGAI BERIKUT :

a. DOKTER.TXT
b. SPESIALIS.TXT
c. JAGA.TXT
4. TAMPILKAN SEMUA RECORD DARI TABEL DOKTER, TABEL SPESIALIS DAN
TABEL JAGA
5. TAMPILKAN INFORMASI DOKTER SPESIALIS YANG ADA DI RUMAH SAKIT
BINTARO

6. HITUNG BERAPA JUMLAH DOKTER SPESIALIS YANG ADA DI RUMAH SAKIT
BINTARO

7. HITUNG BERAPA JUMLAH SETIAP DOKTER SPESIALIS YANG ADA DI RUMAH
SAKIT BINTARO

8. TAMPILKAN JADWAL PRAKTEK SETIAP DOKTER SPESIALIS ADA DI RUMAH
SAKIT BINTARO

9. TAMPILKAN NAMA DAN JADWAL DOKTER SPESIALIS YANG PRAKTEK DI
HARI SENIN

10. TAMPILKAN NAMA DOKTER KANDUNGAN YANG PRAKTER PADA HARI
SELASA