SQL Module 1:
Introduction and
Basic Queries
Author:
Gerry Chandra
Hi There, Nice to Meet You!
Gerry Chandra
Data Scientist
January 2020 - Now
[Link]@[Link]
[Link]
Session Outline
1. Introduction
2. Concept of Database
3. Concept of SQL
4. Introduction to DB Browser for SQLite
5. Datasets
6. Selecting columns
7. Filtering rows
8. Limiting output
Introduction
SQL, important?
Banyak pekerjaan/profesi yang diprediksi akan menghilang dalam
beberapa tahun ke depan karena perkembangan teknologi yang
begitu pesat pada hari-hari ini.
Data Analytics
SQL adalah skillset
paling populer dalam
dunia Data Analytics!
Careers in SQL
Big Data Expert Cloud Database Expert
Data Application Interface Developer
Big Data Architect
Data Analyst
Data Modeler
Database Admin
Data Scientist
BI Application Developer BI Solution Architect
Database Tester
BI Admin Database Developer
Database Migration Engineer
ETL Developer BI Reporting Engineer
Database
What and Why?
Yuk, coba bayangin sebentar!
Kira-kira, berapa banyak data
yang dimiliki oleh perusahaan
ojek online favorit kamu?
Contohnya, Gojek ...
Customers / Pengguna 50 Juta ++ gojek
download di Playstore
Order / Pesanan
Perusahaan
Gojek
Address / Alamat pengguna
5 Juta ++ driver apps
Drivers / Pengemudi download di Playstore
Excel? Nope.
SAY NO
TO EXCEL !!!
● 1 tabel terbatas 1 juta baris,
● Pengolahan data yang lambat untuk data besar,
● Sulit untuk digunakan secara bersamaan dalam satu perusahaan.
Hi, Database!
Say hello to
Database !
Menyimpan seluruh data secara sistematik.
● Penyimpanan data dalam jumlah besar dan bisa diakses
oleh semua user secara bersamaan,
● Format data yang terstandarisasi dan konsisten,
● Cepat dan mudah untuk memanipulasi data
(menambah data baru, delete, edit dan lainnya).
KOK BISA ???
Siapa yang melakukan itu semua?
Database Management System (DBMS)
adalah sebuah software untuk membuat
dan mengatur database secara efisien,
juga terstruktur.
Data Flow
Kumpulan data yang Data disimpan ke Data diakses oleh Data
dimiliki tiap perusahaan dalam sebuah Analyst dan/atau posisi
(contoh: data transaksi, database yang diatur lain yang berhubungan
data user yang baru secara sistematis oleh (Engineering).
login, dsb). DBMS.
Tipe-Tipe Database Management System
- Relational DBMS (RDBMS), adalah tipe DBMS
yang menyimpan data dalam bentuk tabular
(tabel) dan diketahui hubungan antar
tabel-tabelnya (ada relation/hubungan)
Contoh: MySQL, PostgreSQL, Oracle, SQLite, dll.
- NoSQL Database, tidak disimpan dalam bentuk
tabular, biasanya hanya format text JSON.
Contoh: MongoDB, Cassandra, HBase, dll.
Konsep RDBMS
Dalam Database terdapat banyak tabel
Konsep RDBMS
Memiliki format tabular.
Customers / Pengguna Order / Pesanan
Perusahaan
Ojek Online
Address / Alamat pengguna Merchant / Penjual
Konsep RDBMS (2)
Tabel terdiri dari baris dan kolom.
Antar tabel memiliki relasi (bisa terhubung).
Customers / Pengguna
Order / Pesanan
Address / Alamat pengguna Merchant / Penjual
Konsep RDBMS (3)
Setiap nilai pada sebuah kolom di RDBMS
harus memiliki tipe yang sama,
angka angka huruf angka Angka besar Tanggal Benar/Salah
(integer) (integer) (varchar) (integer) (big integer) (date) (binary/boolean)
FOREIGN KEY, merupakan primary key dari tabel lain
PRIMARY KEY, kolom yang digunakan sebagai identifier baris
pada suatu tabel.
SQL
How is it related to DB?
Data Flow (lagi)
Kumpulan data yang Data disimpan ke Data diakses oleh Data
dimiliki tiap perusahaan dalam sebuah Analyst dan/atau posisi
(contoh: data transaksi, database yang diatur lain yang berhubungan
data user yang baru secara sistematis oleh (Engineering).
login, dsb). DBMS.
Bagaimana caranya data
dalam DB dapat diakses
oleh pengguna??
SQL adalah jawabannya!
SQL (Structured Query Language)
adalah bahasa standar untuk
mengakses RDBMS dan mengolah
data dalam database.
DB Browser SQLite
Introduction
Membuat Membuka
database baru database yang sudah ada
Klik open Database
Pilih database yang sudah di-download dari
[Link]
Melihat seluruh tabel Mengambil data
yang ada di database dengan perintah SQL
Melihat isi data
Setiap tabel yang ada
Syntax / perintah SQL untuk mengambil data
(Ctrl + enter, untuk menjalankan perintahnya)
Hasil / keluaran dari perintah SQL yang
sudah dijalankan
Datasets
Overview
Datasets in this Short Course
1. Chinook, data media digital.
2. World, data negara-negara (ekonomi, populasi, dll).
3. Soccer, data pertandingan liga eropa.
4. Sakila, data rental film.
5. RakaFood, data merchant F&B.
Today’s dataset: CHINOOK
Basic Queries
Select, Where, Limit
Perintah Dasar SQL
1. Select, untuk memilih kolom yang ingin diambil
2. Where, untuk melakukan penyaringan (filter) pada data
3. Limit, untuk membatasi jumlah baris yang diambil
SELECT
Deskripsi Syntax Umum
Ambil satu kolom SELECT nama_kolom
FROM nama_tabel
Ambil beberapa kolom SELECT kolom_1, kolom_2, . . . kolom_10
FROM nama_tabel
Ambil semua kolom SELECT *
FROM nama_tabel
Ambil kolom dengan SELECT DISTINCT kolom_1, …
nilai unik FROM nama_tabel
SELECTing single column
#1. Ambil kolom FirstName pada tabel customers.
SELECTing multiple columns
#2. Ambil kolom FirstName dan LastName pada tabel customers.
SELECTing all columns
#3. Ambil semua kolom pada tabel customers.
SELECTing unique values
#4. Ambil nilai unik kolom Company pada tabel customers.
WHERE
Deskripsi Syntax Umum
Filter kolom numerik SELECT *
FROM nama_tabel
WHERE kolom_num <c.o*> value
Filter kolom text SELECT *
FROM nama_tabel
WHERE kolom_txt <c.o*> ‘value’
= sama dengan
!= tidak sama dengan
*<c.o>: > lebih besar dari
Comparisson Operator < lebih kecil dari
>= lebih besar sama dengan
<= lebih kecil sama dengan
Filtering Numerical Column
#1. Ambil nama dan composer track yang memiliki harga satuan 0.99.
Filtering Numerical Column
#2. Ambil semua detail track yang memiliki durasi lebih besar dari 300,000 ms.
Filtering Numerical Column
#3. Ambil TrackId dan nama track yang memiliki ukuran memori lebih
kecil dari 5,000,000 bytes (5 mb).
Filtering Text Column
#4. Ambil CustomerID, LastName customer yang di kota Prague.
Filtering Text Column
#5. Ambil semua detail customer yang bukan di negara USA.
Filtering Text Column
#6. Ambil LastName dan Title employees yang di-hire setelah 1 Okt 2003.
WHERE with Logical Operator
Deskripsi Syntax Umum
Menampilkan data SELECT *
untuk kondisi tidak FROM nama_tabel
terpenuhi (not true) WHERE NOT kondisi_filter
Menampilkan data SELECT *
untuk semua kondisi FROM nama_tabel
terpenuhi WHERE kondisi_1 AND kondisi_2
Menampilkan data SELECT *
untuk salah satu kondisi FROM nama_tabel
terpenuhi WHERE kondisi_1 OR kondisi_2
Filtering Multiple Conditions - NOT
#1. Ambil semua detail customers yang negaranya bukan di Brazil.
Filtering Multiple Conditions - AND
#2. Ambil semua detail track yang harganya 0.99 dan di atas 300,000 ms.
Filtering Multiple Conditions - AND
#3. Ambil semua detail track yang durasinya lebih besar dari 180,000 ms
dan lebih kecil dari 300,000 ms.
Filtering Multiple Conditions - AND
#4. Ambil semua detail track yang ukurannya di bawah 5,000,000 bytes,
durasinya lebih besar dari 180,000 ms dan lebih kecil dari 300,000 ms.
Filtering Multiple Conditions - OR
#5. Ambil semua detail customer yang negaranya di France juga
Germany.
Filtering Multiple Conditions - AND+OR
#6. Ambil semua detail employee yang di-hire sebelum tahun 2003 dan
jabatannya General Manager atau Sales Support Agent.
WHERE is the null??
Deskripsi Syntax Umum
Menampilkan baris yang SELECT *
tidak null pada kolom FROM nama_tabel
tertentu WHERE nama_kolom IS NOT NULL
Menampilkan baris yang SELECT *
null pada kolom tertentu FROM nama_tabel
WHERE nama_kolom IS NULL
Filtering out null values
#1. Ambil semua detail customer yang kolom company tidak null.
Filtering to find null values
#2. Ambil semua detail customer yang tidak punya fax.
LIMIT
Deskripsi Syntax Umum
Membatasi hanya n-baris SELECT *
yang tampil FROM nama_tabel
(WHERE kondisi_filter)
LIMIT n
LIMITing rows
#1. Ambil sampel 3 baris pertama dari tabel employees.
Mini Challenges
Let’s practice!
#1
Tampilkan semua detail customer di
mana kolom fax, company dan state
tidak null.
#2
Tampilkan nama-nama track yang
durasinya tidak di antara 3-5 menit.
#3
Tampilkan data invoice pada bulan
Desember tahun 2010 dan bulan
Desember tahun 2011 yang total
penjualannya lebih dari 5 dollar.
That’s All!