Anda di halaman 1dari 41

PHP-MySQL

Modul Kursus
Rev. 1902
Database dan MySQL
Dalam tutorial ini akan dibahas tentang konsep Relational Database Management System,
Structured Query Language SQL, Database MySQL dan cara mengaksesnya dengan dengan bahasa
pemrograman PHP (PHP MySQL).

1 Mengenal Database

1.1 What is Database?


Database adalah aplikasi yang digunakan untuk menyimpan data. Database dapat mengambil
berbagai macam bentuk, seperti:

 Flat file, misalnya data yang disimpan dalam csv.


 Ini file, yaitu data disimpan dalam bentuk baris-baris, dimana satu baris menyimpan data yang
lengkap, tetapi dengan jenis dan isi yang beragam (beda dengan baris pada table).
 Hierarchical database, dimana data yang disimpan memiliki hubungan secara hirarki, contoh nya
penyimpanan file pada Microsoft Explorer
 Relational Database, dimana data disimpan dalam bentuk table-table yang memiliki hubungan
secara dinamis. Untuk mengelola datanya, baik menyimpan maupun mengambil, membuat
database dan table, dilakukan dengan menggunakan bahasa yang disebut Structured Query
Language (SQL).

Pada masa ini, database yang paling banyak digunakan untuk aplikasi, termasuk aplikasi berbasis
web, adalah RDBMS.

1.2 Mengenal Relational Database Management System


Berikut adalah istilah yang sering dipakai dalam RDBMS:

 Database: koleksi dari tabel-table yang memiliki data saling terkait.


 Table: adalah data dalam bentuk matrik, yang terdiri dari baris dan kolom. Tabel dipakai untuk
menyimpan informasi sejenis, misalnya: data pelanggan, data karyawan, data produk, dan
seterusnya.
 Column/Field: Satu kolom mewakili satu jenis tipe data. Misalnya dalam tabel karyawan, ada
kolom nama, nip, tanggal lahir, dan seterusnya.
 Row/Record: Baris mewakili satu satu set item data dari table tertentu. Misalnya, dari table
karyawan, baris akan berisi data lengkap dari satu karyawan. Datanya bisa terdiri dari: nama,
nip, alamat, tanggal_lahir, dan seterusnya.
 Primary Key: Merupakan kolom yang berisi kunci utama yang sifatnya unik. Setiap baris pada
pada tabel memiliki satu kunci utama.
 Relationship: Yaitu hubungan antara 2 table atau lebih. Misalnya hubungan antara Table Order
dan Order Detail. Hubungan antar table ini melalui satu kode kunci (key)
 Foreign Key: Kunci utama yang dipakai untuk Relationship dua tabel. Foreign key biasanya
merupakan primary key dari suatu tabel, yang dijadikan kolom pada tabe lainnya. Contohnya
pada kasus table Order dan Order Detail, maka Foreign key adalah Primary Key table Order yang
disimpan di table Order Detail.
 Referential Integrity: Referential Integrity akan meyakinkan bahwa foreign-key hanya berisi nilai
yang menunjuk pada baris yang benar-benar ada.
 Index: Adalah sistem internal yang dipakai oleh sistem database untuk menemukan data secara
cepat. Pada MySQL, sebuah Key biasanya juga merupakan Index.

2 Mendesain Database

2.1 Dasar-dasar Desain database yang baik.


Mendesain database bukan hal sulit, akan tetapi harus mengikuti beberapa aturan/standar agar
model data menjadi fleksibel dan membuat kita lebih mudah bekerja dengannya. Desain yang baik
juga akan mempermudah kita dalam menjaga integritas data dan membuat laporan.

Desain database yang baik dimulai dari mendaftar data apa saja yang ingin dimasukan ke dalam
database dan apa yang ingin anda lakukan terhadap data tersebut. Jangan terlalu menganggap
ringan karena jika ada yang terlewat dimasukan, terkadang harus mulai lagi dari awal.

2.2 Mengidentifiksi Entities


Jenis informasi yang akan disimpan di dalam database disebut entities. Entities terdiri dari 4 jenis:
orang, barang, event, dan lokasi. Semua entitas yang ingin dimasukan ke dalam database harus
masuk dalam kategori ini. Jika ia tidak masuk dalam kategori itu, mungkin merupakan properti dari
entities, atau sering juga disebut atribut.

Sebagai contoh, sebuah database toko akan mempunyai entitas berikut:

 Toko adalah lokasi


 Penjualan adalah event
 Produk adalah barang
 Pelanggan adalah orang.

2.3 Mengidentifikasi Relationship


Langkah berikutnya adalah membuat Relationship. Relationship menunjukan bagaimana hubungan
antar entiti ini. Seperti hubungan: Pelanggan membeli Produk, Produk dengan Toko, Toko dengan
Pelanggan, dan seterusnya.

Hubungan relationship dapat dikelompokan dalam beberapa jenis:

 one-to-one, 1:1
 one-to-many: 1:N
 many-to-one: M:1
 many-to-many: M:N

Untuk kasus Toko, kita bisa membuat relationship seperti berikut:

 Pelanggan => Penjualan; => 1:N, 1 Pelanggan melakukan banyak transaksi Penjualan (1
transaksi hanya bisa dilakukan oleh 1 Pelanggan);
 Pelanggan => Produk; => M:N, Banyak pelanggan dapat membeli 1 Produk, dan Banyak
Produk dapat dibeli 1 Pelanggan
 Pelanggan => Toko; => M:N, Banyak Pelanggan bisa membeli di 1 toko, dan Banyak Toko bisa
menjual ke 1 Pelanggan
 Penjualan => Produk; => M:N, Banyak Penjualan menjual 1 Produk, dan Banyak Produk bisa
dijual dalam 1 transaksi Penjualan.
 Toko => Penjualan; => 1:N, 1 Toko bisa melakukan banyak Penjualan. (1 transaksi Penjualan
hanya bisa dilakukan di 1 toko)
 Toko => Produk; => M:N, Banyak Toko bisa menyimpan 1 Produk, Banyak Produk bisa
disimpan di satu Toko.

Hubungan antar tabelnya bisa kita gambar sebagai berikut :

Gambar 1. Hubungan relationship antar entity yang belum dioptimasi.

2.3.1 Relationship Redundant

Dari gambar diatas, kita melihat bahwa hubungan antara Pelanggan dan Produk dapat diwakili oleh
Penjualan. Relationship ini disebut Redundant. Relasi seperti ini bisa dihapus.

Hubungan Produk dan Penjualan yang berupa M:N (banyak ke banyak) pada prakteknya tidak bisa
dilakukan langsung. Tetapi harus dilakukan melalui tabel antara. Begitu juga antara Produk dengan
Toko. Untuk hubungan antara Produk dan Penjualan dapat dibuat tabel antara Penjualan Detil.
Sedangkan hubungan antara Produk dan Toko, dapat dibuat tabel antara Stok. Berikut adalah
model database yang telah diperbaiki:
Gambar 2. Hubungan relationship antar entity yang sudah dioptimasi dengan menghapus
relationship redundant, dan tambahan 2 table: penjualan detail dan stok.

2.4 Mengidentifikasi Atribut

Elemen data yang ingin kita simpan dalam sebuah entitas disebut atribut. Contoh atribut pada entitas
Produk adalah nama produk, harga, tipe, pabrik. Pada Pelanggan, misanya nama dan alamat.
Pada Penjualan misalnya produk, tanggal, jumlah, dan seterusnya.

2.4.1 Data Turunan

Data turunan adalah data yang diturunkan dari data atribut lain yang sudah disimpan. Contoh klasik
dari data turunan misalnya ‘total penjualan’. Nilainya adalah total penjumlahan dari harga barang
dikali jumlah pembelian, dalam kurun waktu tertentu. Karena nilainya bisa terus berubah seiring
waktu, maka data turunan ini tidak perlu disimpan.

2.5 Assigning Keys


2.5.1 Primary Keys
Primary key (PK), atau kunci-utama, adalah satu atau lebih atribut yang mengidentifikasi entity
secara unik. Jika PK terdiri dari dua atau lebih atribut, maka ia disebut composite-key. Semua
atribut yang menjadi bagian dari PK harus memiliki nilai pada setiap record dan sifatnya harus unik
(tidak boleh ada yang sama). Contoh PK misalnya nomor pelanggan, kode barang, dan seterusnya.

Dalam membangun relationship antar entitas, PK dipakai sebagai referensi. Contohnya, relasi antara
entitas Penjualan dan Penjualan-detil akan menggunakan PK Penjualan. Data atribut PK
Penjualan akan disimpan sebagai kolom pada pada entitas Penjualan-detil.
Keberadaan PK Penjualan dalam PK Penjualan-detil disebut Foreign Key.

2.5.2 Menentukan Tipe Data untuk Atribut


Setelah semua entitas dan relationship dibuat, proses berikutnya adalah menentukan tipe data.
Setiap database biasanya mempunyai tipe data sendiri-sendiri. Akan tetapi ada beberapa yang
sesuai standar. Misanya: CHAR, VARCHAR, TEXT, INT, FLOAT, dab DOUBLE.

The standard data types that every database knows, and are most-used, are: CHAR, VARCHAR, TEXT,
FLOAT, DOUBLE, and INT. Untuk database MySQL, akan dibahas pada bagian berikutnya.

3 Normalisasi Entitas

Normalilsasi adalah proses untuk akan menjaga agar data tetap mempunyai integritas yang baik
dengan menghilangkan kelompok data yang duplikat dan redundant. Normalisasi akan membuat
model data menjadi fleksible dan reliable.

Umumnya proses normalisasi dilakukan 3 tahap.

1. Normalisasi Pertama (1NF)


Aturan normalisasi pertama, kolom dari table harus bersifat atomik-value, artinya satu cell
tidak boleh menyimpan banyak nilai. Pada contoh dibawah, kolom Color menyimpan 2 nilai:
red, green dan yellow, blue. Untuk memenuhi normalisasi pertama, kolom Color harus
dikembangkan seperti Contoh 2.

Contoh 1. Tabel yang belum di normalisasi.


Contoh 2. Table yang memenuhi kriteria Normalisasi Pertama.
2. Normalisasi Kedua (2NF)
Aturan Normalisasi kedua adalah adalah:
a. Memenuhi semua syarat dari Normalisasi pertama.
b. Menghilangkan subset data yang terdapat pada banyak baris kemudian
meletakkanya pada table terpisah.
c. Membuat relasi antara tabel yang dipisah ini, dengan menggunakan Foreign Key.
Pada Contoh 3, kolom Purchase Location memiliki kolom dengan subset data yang berulang
yaitu Long Angeles (diulang 2x) dan San Fransisko (diulang 2x). Karena itu tabel harus
dipecah di buat relasi antara keduanya.

Contoh 3. Tabel belum memenuhi normalisasi kedua.

Contoh 4. Table yang telah memenuhi rule normalisasi kedua.


3. Normalisasi Ketiga (3NF)
Kriteria normalisasi ketiga:
a. Memenuhi kriteria normalisasi kedua.
b. Menghilangkan kolom yang tidak bergantung pada primary-key tabel tersebut.
Pada contoh di bawah ini, kolom GenreType tidak bergantung pada primary-key buku.
Hanya price yang bergantung pada buku. Karena itu GenreType harus dihilangkan dan dalam
contoh ini, dibuat menjadi table sendiri.
Contoh 5. Tabel yang belum sesuai normalisasi ketiga.

Contoh 6. Kolom GenreType dihilangkan karena tidak bergantung pada primary-key buku.
Pada contoh ini, dibuat tabel baru Table_Genre.

4 Database MySQL
MySQL adalah adalah Relational Database Management System (RDBMS) open-source yang paling
terkenal. Ia juga merupakan database yang paling banyak dipakai untuk aplikasi berbasis web.MySQL
adalah database yang cepat, mudah digunakan, dan dapat dipakai baik pada bisnis kecil ataupun
yang berskala besar. MySQL dikembangkan, didukung, dan dipasarkan oleh perusahaan MySQL AB
dari Swedia.

4.1 Mengapa memakai Database MySQL


 MySQL bersifat open-source dan gratis. Jika perlu dukungan teknis dapat memakai versi yang
berbayar.
 MySQL adalah aplikasi database server powerfull dan cepat dan sanggup bekerja untuk aplikasi
yang besar. Dapat mendukung lebih dari 50 juta baris. Batas default untuk ukuran file pada
tabelnya adalah 4GB, walaupun masih bisa ditingkatkan jika sistem operasinya mendukung.
Secara teoritis, ukuran file table bisa sampai 8 juta TeraByte.
 MySQL mendukung pemakaian bahasa Structured Query Languange (SQL).
 MySQL dapat dipasang banyak sistem operasi (Windows, Linux, Unix, MacOS, dst) dan bekerja
dengan banyak bahasa pemrograman, seperti: PHP, PERL, C, C++, JAVA, etc.
 MySQL sangat luas dipakai sebagai database server untuk aplikasi web yang dikembangkan
dengan PHP. Mayoritas hosting web di Internet memasang database MySQL server sebagai
paket standar.

4.2 Menginstall MySQL di Windows


Cara yang paling mudah memasang database MySQL di komputer kita adalah menggunakan paket
aplikasi server web lokal. Misalnya: XAMPP, WAMP, LAMP, PHPTriad, dan lain sebagainya.

Untuk menggunakan XAMPP, silahkan ikuti tutorial [NAMA TUTORIAL XAMPP]


Gambar 1. Contoh screenshot XAMPP Control Panel. Modul MySQL yang berwarna hijau
menunjukan bahwa database server MySQL telah aktif.

Paket XAMPP telah menyertakan aplikasi phpMySQL untuk mengelola database server.

4.3 MySQL Data Types


Mendefinisikan field dalam table sangat penting agar database kita optimal. Pakailah tipe field dan
ukuran data yang sesuai dengan kebutuhan. Misalnya, jika Anda perlu menyimpan 2 karakter,
gunakan tipe field VARCHAR(2). Tipe VARCHAR adalah tipe data untuk menyimpan karakter,
sedangkan 2 adalah jumlah karakter maksimal.
MySQL memiliki banyak tipe data. Mereka dibagi dalam 3 kategori: numeric, tanggal, dan teks
(string).

4.3.1 Tipe Data Numerik


MySQL menggunakan seluruh tipe data numeric standar ASCII, sehingga jika Anda menggunakan
MySQL dari system database yang berbeda, definisinya akan tetap familiar. Berikut adalah beberapa
tipe data numeric yang sering dipakai di MySQL.

 INT – Integer ukuran normal, nilai yang diperbolehkan adalah dari -2147483648 to 2147483647,
bisa negative dan positif. Jika atribut di set UNSIGNED, maka range yang dapat dipakai adalah
dari 0 sampai 4294967295. Integer ini dapat di set maksimal sampai 11 digit, atau INT(11).
 TINYINT – Tipe Integer yang sangat kecil, bisa negative dan positif. Untuk tipe SIGNED, nilai yang
diizinkan adalah -128 sampai 127. Sedangkan untuk UNSIGNED dari 0 sampai 255. Tipe TINYINT
dapat diset sampai 4 digit.
 SMALLINT – Tipe integer kecil, SIGNED memiliki range -32768 sampai 32767, dan UNSIGNED 0
sampai 65535. Tipe SMALLINT dapat di set sampai 5 digits.
 MEDIUMINT - Tipe integer menengah, SIGNED memiliki range -8388608 sampai 8388607, dan
UNSIGNED 0 sampai 16777215. Tipe MEDIUMINT dapat di set sampai 9 digits.
 BIGINT –Tipe integer paling besar, SIGNED memiliki range -9223372036854775808 sampai
9223372036854775807, dan UNSIGNED 0 sampai 0 to 18446744073709551615. Tipe BIGINT
dapat di set sampai 20 digits.
 FLOAT(M,D) – Tipe bilangan pecahan. Tipe ini tidak bisa unsigned. Anda dapat menentukan
panjang tampilan dengan (M) dan jumlah decimal pada (D). Nilai default untuk (M,D) adalah
(10,2). Nilai (10,2) artinya panjang total adalah 10 digit, termasuk decimal. Nilai presisi decimal
bisa sampai 24.
 DOUBLE(M,D) – Tipe bilangan pecahan presisi dobel. Tipe ini tidak bisa unsigned. Anda dapat
menentukan panjang tampilan dengan (M) dan jumlah decimal pada (D). Nilai default untuk
(M,D) adalah (16,4). Nilai presisi decimal bisa sampai 53. Tipe REAL adalah sinonim untuk
DOUBLE.
 DECIMAL(M,D) – Tipe DECIMAL tidak bisa unsigned. Pada tipe ini, setiap decimal akan
mengambil satu byte. Menentukan nilai M dan D adalah keharusan (tidak ada nilai default). Tipe
NUMERIC adalah nama lain dari DECIMAL.

4.3.2 Date and Time Types:


MySQL memiliki tipe yang berkaitan dengan tanggal dan waktu sebagai berikut

 DATE – Tanggal dalam format YYYY-MM-DD (YYYY=tahun, MM=bulan, DD=tanggal/hari) antara


1000-01-01 sampai dengan 9999-12-31. Sebagai contoh, 1 Januari 2015 akan ditulis 2015-01-.
 DATETIME – Yaitu format kombinasi antara tanggal dan waktu. Formatnya adalah YYYY-MM-DD
HH:MM:SS, dengan nilai antara 1000-01-01 00:00:00 sampai dengan 9999-12-31 23:59:59.
 TIMESTAMP – Timestamp adalah tipe field yang secara otomatis terisi sesuai dengan tanggal
dan waktu saat data di insert/update. Timestamp mirip dengan format DATETIME.
 TIME – Menyimpan data waktu, dengan format HH:MM:SS format.
 YEAR(M) – Menyimpan tahun dalam format 2-digit dan 4-digit.
4.3.3 String Types:
MySQL memiki beberapa jenis tipe data string. String adalah rangkaian karakter (bisa juga disebut
teks). Tipe data string adalah tipe yang paling banyak dipakai dalam table MySQL. Pastikan anda
menggunakan tipe data string sesuai kebutuhannya.

 CHAR(M) – String yang memiliki panjang tetap, antara 1 dan 255. Panjang tipe string dapat
ditentukan dengan CHAR(M) dimana M adalah jumlah maksimal karakter.
 VARCHAR(M) – String dengan panjang variable antara 1-255.
 BLOB or TEXT – Tipe data String (rangkaian karakter) dengan maksimum panjang data 65535
characters. BLOBs singkatan dari "Binary Large Objects", dipakai untuk menyimpan data binary,
seperti gambar. Sedangkan TEXT dipakai untuk menyimpan data yang berbasis “Karakter untuk
dibaca”. Pada proses mengurutkan dan pencarian, tipe data TEXT akan berbasis karakter.
Sedangkan BLOB berbasis nilai byte numerik.
 TINYBLOB or TINYTEXT – Tipe data BLOB atau TEXT yang berisi maksimal 125 karakter.
 MEDIUMBLOB or MEDIUMTEXT – Tipe data BLOB or TEXT dengan panjang maksimum
16777215 characters.
 LONGBLOB or LONGTEXT – Tipe data BLOB or TEXT dengan panjang maksimum 4294967295
characters.
 ENUM – Enum adalah tipe data string dengan nilai yang dipilih dari daftar tertentu yang
diizinkan. Daftar tersebut ditentukan saat table dibuat. Misanya Anda ingin membuat datar
untuk mengisi field jenis kelamin, tipenya: ENUM(“PRIA”,”WANITA”).

5 Structured Query Language

5.1 Apa itu SQL?

 SQL singkatan dari Structured Query Language


 SQL memungkinkan Anda mengakses dan memanipulasi data dalam database
 SQL mengikuti standar ANSI (American National Standards Institute)

5.2 Apa Bisa lakukan SQL?

 SQL dapat mengeksekusi query pada database


 SQL dapat mengambil data dari database
 SQL dapat menyisipkan record dalam database
 SQL dapat memperbarui record dalam database
 SQL dapat menghapus record dari database
 SQL dapat membuat database baru
 SQL dapat membuat table baru dalam database
 SQL dapat membuat prosedur yang tersimpan dalam database
 SQL dapat membuat view dalam database
 SQL dapat mengatur hak akses pada table, prosedur, dan view

Meskipun SQL adalah standar ANSI (American National Standards Institute), tetapi ada beberapa
bagian yang berbeda dari bahasa SQL tergantung vendor databasenya.
Namun, untuk menjadi sesuai dengan standar ANSI, mereka semua mendukung setidaknya perintah
utama dengan model sintak yang sama. Contoh perintah utama: : SELECT, UPDATE, DELETE, INSERT,
WHERE, dan seterusnya.

5.3 Menggunakan SQL di Situs Web Anda


Untuk membangun sebuah situs web yang mengekases data dari database, Anda akan perlu:

 Sebuah program database RDBMS (yaitu MySQL, MS Access, SQL Server, Oracle)
 Bahasa server-side scripting seperti PHP atau ASP
 Bahasa SQL untuk mendapatkan data yang Anda inginkan

6 Latihan dalam tutorial


Dalam tutorial ini, kita akan menggunakan database sakila untuk latihan menulis SQL atau
melakukan query ke database. Database sakila berisi data perusahaan fiktif yang bergerak dibidang
penyewaan film.

Database sakila dapat didownload di lokasi https://dev.mysql.com/doc/sakila/en/


Gambar 2. ERD Database Sakila

7 Jenis Perintah SQL


Perintah dalam SQL dapat dibagi 2:
1. Data Definition Statement, yaitu kelompok perintah yang berkaitan dengan proses
membuat struktur data, seperti membuat database, membuat dan menentukan tipe data
field di table, merubah dan menghapus database dan table, dan seterusnya.
2. Data Manipulation Statement, yaitu perintah yang berkaitan dengan pengambilan (filter,
sort, grup) dan perubahan data yang ada didalam table, tanpa merubah struktur sama
sekali.

7.1 SQL Data Definition Statment


Perintah yang termasuk dalam SQL Data Manipulation misalnya:

 CREATE DATABASE
 SELECT DATABSE
 DROP DATABASE
 CREATE TABLE
 DROP TABLE
 ALTER COMMAND

7.2 SQL Data Manipulation Statment


Perintah yang termasuk dalam SQL Data Manipulation adalah:

 SELECT - ekstrak data dari database


 UPDATE - update data dalam database
 DELETE - menghapus data dari database
 INSERT INTO - menyisipkan data baru ke dalam database

8 SQL CREATE DATABASE


Pernyataan CREATE DATABASE dipakai untuk membuat database SQL yang baru.

8.1.1 Syntax:
CREATE DATABASE nama_database;

Gunakan nama database yang unik/belum ada di dalam RDBMS MySQL.

8.1.2 Contoh:
CREATE DATABASE database_baru;

Perintah tersebut untuk membuat database baru dengan nama database_baru. Setelah dibuat,
database tersebut dapat dicek dalam daftar menggunakan perintah berikut:

SHOW DATABASES;

9 SQL DROP DATABASE


Pernyataan SQL DROP DATABASE digunakan untuk menghapus database yang telah ada di dalam
skema/RDBMS MySQL.
9.1.1 Syntax:
DROP DATABASE DatabaseName;

9.1.2 Contoh:
Misalnya kita akan menghapus database database_baru, maka perintah yang dipakai adalah:

DROP DATABASE testDB;

Catatan.

Hati-hatilah dalam menggunakan perintah ini akan akan menghapus database dengan seluruh isinya
dan datanya tidak bisa dikembalikan.

When you have multiple databases in your SQL Schema, then before starting your operation, you
would need to select a database where all the operations would be performed.

10 SQL USE DATABASE


Perintah SQL USE dipakai untuk memilih database agar menjadi aktif. Dengan menggunakan USE ini,
maka semua perintah yang dipakai pada saat melakukan query Data Manipulation akan secara
default menggunakan database ini.

10.1.1 Syntax:
USE nama_database;

11 SQL CREATE TABLE


Perintah SQL CREATE TABLE digunakan untuk membuat table baru. Perintah tersebut termasuk
pernyataan tentang daftar nama field dan tipe data yang dipakainya.

11.1.1 Syntax:
Basic syntax of CREATE TABLE statement is as follows:

CREATE TABLE table_name(

column1 datatype,

column2 datatype,

column3 datatype,

.....

columnN datatype,

PRIMARY KEY( one or more columns )

);

Berikut adalah contoh bagaimana menggunakan perintah CREATE TABLE untuk membuat table
lengkap dengan field yang didefinisikan tipe-nya.
11.1.2 Contoh:
Berikut adalah contoh untuk membuat table CUSTOMER lengkap dengan field: ID (Integer), NAME
(teks), AGE (Integer), ADDRESS (teks), SALARY (decimal), dan ID sebagai primary key.

CREATE TABLE CUSTOMERS(


ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);

Setelah table dibuat, anda dapat memverifikasi hasil table tersebut dengan memanggil perintah:

DESC CUSTOMERS;

12 SQL DROP Table


Pernyataan SQL DROP TABLE dipakai untuk menghapus table dan seluruh datanya, index, triggers,
permission, dan seterusnya. Perintah ini sebaiknya dilakukan dengan hati-hati karena data yang
sudah dihapus tidak bisa dikembalikan lagi.

12.1.1 Syntax:
DROP TABLE table_name;

13 SQL SELECT Statement


Pernyataan SELECT digunakan untuk memilih data dari database.

13.1.1 SQL SELECT Sintaks


SELECT column_name,column_name FROM table_name;
dan
SELECT * FROM table_name;

13.1.2 Contoh SELECT Kolom


Pernyataan SQL berikut memilih kolom title dan description dari table film:

SELECT title, description FROM `film`;

13.1.3 Contoh SELECT *


Pernyataan SQL berikut memilih semua kolom dari table Customers:

SELECT * FROM film;

14 SQL SELECT DISTINCT Statement


Dalam table, kolom mungkin berisi banyak nilai ganda; dan kadang-kadang Anda hanya ingin
menampilkan daftar nilai yang berbeda saja. Untuk menampilkan kolom secara unik (hanya yang
berbeda saja) dari nilai kolom yang memiliki nilai ganda.
14.1 SQL SELECT DISTINCT Sintaks

SELECT DISTINCT column_name,column_name


FROM table_name;

14.1.1 Contoh SELECT DISTINCT

Pernyataan SQL berikut dipakai untuk memilih kategori yang unik (hanya ditampilkan sekali) dari
table film list:

SELECT DISTINCT category FROM film_list;

15 SQL WHERE Clause


Klausa WHERE digunakan untuk menampilkan record yang memenuhi kriteria tertentu saja.

15.1 Sintaks SQL WHERE

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

15.1.1 Contoh WHERE


Pernyataan SQL berikut memilih film yang termasuk dalam kategori Horror

SELECT * FROM film_list WHERE category="Horror"


SELECT * FROM film_list WHERE id=1

15.2 Text Fields vs. Numeric Fields


SQL memerlukan tanda kutip tunggal/ganda untuk nilai teks. Sedangkan untuk nilai angka, tidak
perlu tanda kutip.

15.3 Operator WHERE


Operator berikut digunakan dalam klausa WHERE:
Operator Deskripsi
= Sama
<> Tidak Sama.
> Lebih Besar dari
< Kurang dari
>= Lebih Besar dari atau Sama
<= Kurang dari atau Sama
BETWEEN Antara rentang inklusif
LIKE Mencari Pola
IN Untuk menentukan beberapa nilai yang mungkin
untuk kolom
15.4 Operator SQL AND & OR
Operator AND menampilkan record jika kedua kondisi pertama dan kondisi kedua adalah benar.
Operator OR menampilkan record jika salah satu kondisi pertama ATAU kondisi kedua benar.

15.4.1 Contoh Operator AND


Pernyataan SQL berikut memilih film dengan kategori Horror dengan Rating G

SELECT * FROM film_list


WHERE category="Horror" AND rating="G"

15.4.2 Contoh Operator OR


Pernyataan SQL berikut memilih semua film dari kategori Komedi sekaligus Family

SELECT * FROM film_list


WHERE category="Comedy" OR "Family"

15.4.3 Kombinasi AND & OR


Anda juga dapat menggabungkan AND dan OR dengan menggunakan kurung untuk membentuk
ekspresi kompleks.

SELECT * FROM film_list


WHERE (category="Comedy" OR "Family") AND rating="G"

16 SQL ORDER BY Keyword


Kata kunci ORDER BY yang digunakan untuk menyortir hasil query berdasarkan satu kolom atau
lebih.
Secara default, ORDER BY akan mengurutkan hasil secara naik (Ascending)
Untuk mengurut secara turun (Descending), gunakan kata kunci DESC

16.1 SQL ORDER BY Syntax

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

16.1.1 Contoh ORDER BY


Pernyataan SQL berikut memilih semua diurut berdasarkan title

SELECT * FROM film_list ORDER BY title

16.1.2 Contoh ORDER BY DESC


Pernyataan SQL berikut memilih semua diurut berdasarkan title dengan urutan terbalik (mulai dari
huruf “z”)

SELECT * FROM film_list ORDER BY title DESC


16.1.3 Contoh ORDER BY Beberapa Kolom

SELECT * FROM film_list ORDER BY title, rating DESC

17 SQL INSERT INTO Statement


INSERT INTO digunakan untuk menyisipkan (menambahkan) record baru dalam sebuah table.

17.1 SQL INSERT INTO Sintaks


Perintah INSERT INTO dapat dibuat dalam dua bentuk.
Bentuk pertama tidak menentukan nama kolom di mana data akan dimasukkan, hanya nilai-nilai
saja:

INSERT INTO table_name


VALUES (value1,value2,value3,...);

Bentuk kedua harus menetapkan nama kolom dan nilai-nilai yang akan dimasukkan:

INSERT INTO table_name (column1,column2,column3,...)


VALUES (value1,value2,value3,...);

17.1.1 Contoh INSERT INTO


Anggaplah kita ingin menyisipkan aktor/aktris baru dalam table actors.
Kita dapat menggunakan pernyataan SQL berikut:

INSERT INTO `actor`


VALUES (0, "Margot","Robie","2016-02-20")

Niai 0 pada kolom pertama dipakai untuk kolom autoincrement.

17.1.2 Data Insert Hanya di Kolom Tertentu

INSERT INTO `actor` (first_name, last_name, last_update)


VALUES ("Margot","Robie","2016-02-20")

18 UPDATE SQL Statement


Pernyataan UPDATE digunakan untuk memperbarui record yang ada dalam sebuah table.

18.1 SQL UPDATE Sintaks

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

18.1.1 Contoh SQL UPDATE


Berikut adalah contoh untuk memperbarui title pada table film. Query yang dipakai adalah:
UPDATE film SET title="ACE GOLDFINGER 2"
WHERE film_id=2

18.1.2 Peringatan!

Hati-hati saat memperbarui record. Jika kita telah menghilangkan klausa WHERE dalam contoh di
atas, maka seluruh title pada table film akan diperbarui.

19 SQL DELETE Statement


Pernyataan DELETE digunakan untuk menghapus baris dalam sebuah table.

19.1 SQL DELETE Syntax

DELETE FROM table_name


WHERE some_column=some_value;

19.1.1 Contoh SQL DELETE


Berikut adalah contoh untuk menghapus record dari table film dengan id=2

DELETE FROM film WHERE film_id=2;

19.2 Hapus Semua Data


Dengan SQL dimungkinkan untuk menghapus semua baris dalam table dengan perintah DELETA.

DELETE FROM table_name

or

DELETE * FROM table_name;

Catatan: Berhati-hatilah saat menghapus record. Anda tidak dapat membatalkan pernyataan ini!

20 SQL SELECT LIMIT


SELECT LIMIT digunakan untuk menentukan jumlah record yang tampil pada hasil.

21 SQL SELECT LIMIT Syntax


SELECT column_name(s)
FROM table_name
LIMIT [offset,] row_count

21.1.1 Contoh SELECT LIMIT


Query berikut akan menampilkan 5 hasil teratas
SELECT * FROM film
LIMIT 5;

21.1.2 Contoh SELECT LIMIT dengan OFFSET


Query berikut akan menampilkan 5 hasil teratas dimulai dari baris ke
10

SELECT * FROM film


LIMIT 10, 5;

22 SQL LIKE Operator


Operator LIKE digunakan untuk mencari pola dalam kolom sesuai dengan yang ditentukan.

22.1 Sintak SQL LIKE

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

22.1.1 Contoh Operator SQL LIKE

Pernyataan SQL berikut memilih semua film dengan title mulai dari huruf “s”:

SELECT * FROM film


WHERE title LIKE 's%';

Tip: Tanda "%" digunakan untuk mendefinisikan wildcard (huruf hilang). Wildcard dapat digunakan
sebelum dan sesudah pola.
Pernyataan SQL berikut memilih semua film diakhiri dengan huruf "s":

SELECT * FROM film


WHERE title LIKE '%s';

Pernyataan SQL berikut memilih semua film yang title-nya berisi pola "land":

SELECT * FROM film


WHERE title LIKE '%land%';

Kata kunci “NOT” digunakan untuk untuk memilih record yang TIDAK sesuai pola.

Pernyataan SQL berikut memilih semua film dengan title yang tidak mengandung pola "land":

SELECT * FROM film


WHERE title NOT LIKE '%land%';
23 SQL Wildcards
Sebuah karakter wildcard dapat digunakan untuk menggantikan karakter lain (s) dalam sebuah
string.

23.1 Karakter SQL Wildcards

Dalam SQL, karakter wildcard digunakan dengan operator SQL LIKE.


SQL Wildcard digunakan untuk mencari data dalam table.

Berikut adalah daftar wildcard dalam SQL adalah:

Wildcard Deskripsi
% Sebuah pengganti nol atau lebih karakter
_ Sebuah pengganti satu karakter
[charlist] Sets dan ranges karakter untuk mencocokkan
[^charlist] Pertandingan hanya karakter tidak ditentukan dalam kurung
or
[!charlist]

23.1.1 Contoh Penggunaan SQL % Wildcard

Pernyataan SQL berikut memilih semua film dengan title dimulai kata "ber":

SELECT * FROM film


WHERE title LIKE 'ber%';

Pernyataan SQL berikut memilih semua film dengan title mengandung pola "es":

SELECT * FROM film


WHERE title LIKE '%es%';

23.2 Menggunakan SQL _ Wildcard

Pernyataan SQL berikut memilih semua film dengan title dimulai dengan karakter apapun, diikuti
dengan " ictory ":

SELECT * FROM city


WHERE City LIKE '_ictory';

Berikut adalah contoh lainnya

Memilih film dengan pola yang mengandung huruf L o on

SELECT * FROM film


WHERE title LIKE 'L_n_on';
Pernyataan SQL berikut memilih semua film dengan title dimulai dengan "b", "s", atau "p":

SELECT * FROM film


WHERE title LIKE '[bsp]%';

Pernyataan SQL berikut memilih semua film dengan title dimulai dengan "a", "b", atau "c":

SELECT * FROM film


WHERE title LIKE '[a-c]%';

Pernyataan SQL berikut memilih semua film dengan title TIDAK dimulai dengan "b", "s", atau "p":

SELECT * FROM film


WHERE title LIKE '[!bsp]%';

atau

SELECT * FROM film


WHERE title NOT LIKE '[bsp]%';

24 Operator SQL IN

Operator IN memungkinkan Anda menentukan beberapa nilai sekaligus dalam klausa WHERE.
Nilai yang dimasukan dalam klausa WHERE dipisahkan dengan KOMA

24.1 Sintak SQL IN

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

24.1.1 Contoh Operator IN

Pernyataan SQL berikut memilih semua film dengan rating PG dan G:

SELECT * FROM `film_list`


WHERE rating IN ('PG', 'G')

25 Operator SQL BETWEEN


Operator BETWEEN yang digunakan untuk memilih nilai-nilai dalam jangkauan BETWEEN. Nilai-nilai
tersebut dapat berupa: angka, teks, atau tanggal.

25.1 Sintak SQL BETWEEN

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
25.1.1 Contoh Operator BETWEEN

Pernyataan SQL berikut memilih semua film dengan harga sewa antar 2 samai 3 (dollar):

SELECT * FROM `film_list`


WHERE price BETWEEN 2 AND 3

25.1.2 Contoh Operator NOT BETWEEN

Untuk menampilkan produk di luar jangkauan contoh sebelumnya, gunakan NOT BETWEEN:

SELECT * FROM `film_list`


WHERE price NOT BETWEEN 2 AND 3

Pernyataan SQL berikut memilih semua pembayaran dengan payment_date antara 1 Juni 2005
sampai denagn 30 Juni 2005:

SELECT * FROM `payment`


WHERE payment_date BETWEEN '2005-05-01' AND '2005-05-30'

26 SQL Alias
Alias SQL digunakan untuk memberikan nama sementara pada table database atau kolom.
Tujuannya agar mudah dibaca, terutama untuk kolom-kolom yang berasal dari rumus/fungsi.

26.1 Sintak SQL Alias untuk Kolom

SELECT column_name AS alias_name


FROM table_name;

26.2 Sintak SQL Alias untuk Tabel

SELECT column_name(s)
FROM table_name AS alias_name;

26.2.1 Contoh Alias untuk Kolom Tabel


Berikut adalah contoh untuk membuat alias alamat bagi untuk daftar alamat customer_list, dengan
menggabungkan data address, city, dan country.

SELECT CONCAT(address,", ",city,", ",country) as alamat FROM


`customer_list`;
27 SQL Joins
Klausa JOIN digunakan untuk menggabungkan record yang berasal dari dua atau lebih table,
berdasarkan field yang sama diantara mereka.

Jenis yang paling umum dari bergabung adalah: SQL JOIN (INNER JOIN).
Sebuah SQL JOIN menghasilkan semua baris dari beberapa table di mana kondisi JOIN terpenuhi.

Berikut adalah contoh tabel "Orders":

OrderID CustomerID OrderDate


10308 2 1996-09-18
10309 37 1996-09-19
10310 77 1996-09-20

Berikut adalah tabel "Customers" yang memiliki CustomerID yang sama dengan tabel Orders:

CustomerID CustomerName ContactName Country


1 Alfreds Futterkiste Maria Anders Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Mexico
3 Antonio Moreno Taquería Antonio Moreno Mexico

Hubungan antara dua tabel tersebut adalah pada kolom "CustomerID".

Berikut adalah contoh memanggil JOIN dengan menggunakan relasi CustomerID tersebut:

27.1.1 Contoh
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;

akan mengasilkan

OrderID CustomerName OrderDate


10308 Ana Trujillo Emparedados y helados 9/18/1996
10365 Antonio Moreno Taquería 11/27/1996
10383 Around the Horn 12/16/1996
10355 Around the Horn 11/15/1996
10278 Berglunds snabbköp 8/12/1996

27.2 TIPE SQL JOINs


Ada beberapa jenis SQL JOIN berdasarkan record keluarannya:
 INNER JOIN: Menghasilkan semua baris ketika ada setidaknya satu kecocokan di KEDUA table
 LEFT JOIN: Menghasilkan semua baris dari table kiri, dan baris yang cocok dari table kanan
 RIGHT JOIN: Menghasilkan semua baris dari table kanan, dan baris yang cocok dari table kiri
 FULL JOIN: Menghasilkan semua baris ketika ada kecocokan dalam SATU dari table
28 SQL INNER JOIN
INNER JOIN kata kunci memilih semua baris dari kedua table selama ada kecocokan antara kolom di
kedua table

28.1 Syntak SQL INNER JOIN

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;

Catatan. INNER JOIN adalah sama dengan JOIN.

28.1.1 Contoh Database


Pada contoh berikut ini, akan digunakan database Northwind sebagai sumber data.

Berikut adalah contoh "Customers" table:

CustomerID CustomerName ContactName Address City PostalCode Country


1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222
3 Antonio Moreno Antonio Mataderos 2312 México 05023 Mexico
Taquería Moreno D.F.

Dan data berikut berasal dari tabel "Orders":

OrderID CustomerID EmployeeID OrderDate ShipperID


10308 2 7 1996-09-18 3
10309 37 3 1996-09-19 1
10310 77 8 1996-09-20 2
28.1.2 Contoh
Pernyataan SQL berikut akan menghasilkan semua data customer dengan order-nya:

SELECT Customers.CustomerName, Orders.OrderID


FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Catatan:
Kata kunci INNER JOIN hanya menampilkan baris yang memiliki kecocokan antar kolom. Baris
lainnya akan disembunyikan.

29 SQL LEFT JOIN Keyword


Pernyataan LEFT JOIN akan menghasilkan semua baris dari tabel yang terletak disebelah kiri, dan
hanya menampilkan yang cocok dari tabel yang ada disebelah kanan. Jika tidak ada data yang cocok
pada tabel kanan, maka akan ditampilkan NULL sebagai hasilnya.

29.1 SQL LEFT JOIN Syntax


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

or:

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

PS! In some databases LEFT JOIN is called LEFT OUTER JOIN.


29.1.1 Contoh Database
Pada contoh berikut ini, akan digunakan database Northwind sebagai sumber data.

Berikut adalah contoh data dari "Customers" table:

CustomerID CustomerName ContactName Address City PostalCode Country


1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222
3 Antonio Moreno Antonio Mataderos 2312 México 05023 Mexico
Taquería Moreno D.F.

Dan data dari "Orders" table:

OrderID CustomerID EmployeeID OrderDate ShipperID


10308 2 7 1996-09-18 3
10309 37 3 1996-09-19 1
10310 77 8 1996-09-20 2

29.1.2 Contoh
Pernyataan SQL berikut akan menampilkan seluruh baris customer, dan hanya order yang mungkin
mereka miliki:

SELECT Customers.CustomerName, Orders.OrderID


FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Catatan:

LEFT JOIN kata kunci menghasilkan semua baris dari table kiri (Customers), bahkan jika tidak ada
kecocokan di table kanan (Pesanan).

30 SQL RIGHT JOIN Keyword


Pernyataan RIGHT JOIN akan menghasilkan semua baris dari tabel yang terletak disebelah kanan,
dan beberapa baris dari tabel sebelah kiri yang memiliki nilai yang sesuai (dengan tabel sebelah
kanan). Jika tidak ada baris yang sesuai pada tabel sebelah kiri, maka hanya menampilkan hasil NULL.

30.1 SQL RIGHT JOIN Syntax


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

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

PS! Pada beberapa database, pernyataa RIGHT JOIN dikenal dengan RIGHT OUTER JOIN.

30.1.1 Contoh
Berikut adalah contoh dari database Northwind.

Berikut adalah data dari table "Orders":

OrderID CustomerID EmployeeID OrderDate ShipperID


10308 2 7 1996-09-18 3
10309 37 3 1996-09-19 1
10310 77 8 1996-09-20 2

dana data dari table "Employees":

EmployeeID LastName FirstName BirthDate Photo Notes


1 Davolio Nancy 12/8/1968 EmpID1.pic Education includes a BA in psychology.....
2 Fuller Andrew 2/19/1952 EmpID2.pic Andrew received his BTS commercial
and....
3 Leverling Janet 8/30/1963 EmpID3.pic Janet has a BS degree in chemistry....

30.1.2 Contoh
Pernytaan berikut akan menghasilkan semua employee, dan beberapa order yang telah masuk:

SELECT Orders.OrderID, Employees.FirstName


FROM Orders
RIGHT JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID
ORDER BY Orders.OrderID;
31 SQL Aggregate Functions
Fungsi SQL aggregate adalah menghasilakn nilai tunggal, yang dihitung dari nilai yang ada di kolom.

Beberapa fungsi aggregate yang paling sering dipakai:

 AVG() – Menghasilkan nilai rata-rata


 COUNT() – Menghasilkan jumlah baris
 MAX() – Menghasilkan nilai terbesar
 MIN() – Menghasilkan nilai terkecil
 SUM() – Menghasilkan jumlah

32 The AVG() Function


Fungsi AVG() menghasilkan nilai rata-rata dari kolom yang bertipe angka.

32.1 SQL AVG() Syntax


SELECT AVG(column_name) FROM table_name

32.1.1 Demo Database


Contoh berikut akan menggunakan data dari Northwind database.

Berikut adalah data dari tabel "Products":

ProductID ProductName SupplierID CategoryID Unit Price


1 Chais 1 1 10 boxes x 20 bags 18
2 Chang 1 1 24 - 12 oz bottles 19
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 21.35
5 Chef Anton's Gumbo Mix 2 2 36 boxes 25

32.1.2 Contoh
Pernyataan SQL berikut akan menghasilkan rata-rata dari kolom "Price" dari tabel "Products":

SELECT AVG(Price) AS PriceAverage FROM Products;

SELECT ProductName, Price FROM Products


WHERE Price>(SELECT AVG(Price) FROM Products);

33 SQL COUNT() Function


Fungsi COUNT() menghasilkan jumlah baris yang sesuai dengan kriteria tertentu.

33.1.1 SQL COUNT(column_name) Syntax


Fungsi COUNT(column_name) menghasilkan jumlah baris pada kolom tertentu, dimana nilai NULL
tidak akan dihitung:

SELECT COUNT(column_name) FROM table_name;


33.1.2 SQL COUNT(*) Syntax
Fungsi COUNT(*) menghasilkan jumlah seluruh record pada tabel:

SELECT COUNT(*) FROM table_name;

33.1.3 Contoh Database


Dalam contoh berikut, akan digunakan database Northwind.

Berikut adalah data tabel "Orders":

OrderID CustomerID EmployeeID OrderDate ShipperID


10265 7 2 1996-07-25 1
10266 87 3 1996-07-26 3
10267 25 4 1996-07-29 1

33.1.4 Contoh
Pernyataan SQL menghitung jumlah order dari "CustomerID"=7 from untuk tabel "Orders":

SELECT COUNT(CustomerID) AS OrdersFromCustomerID7 FROM Orders


WHERE CustomerID=7;

Pernyataan SQL menghitung jumlah total order dari tabel "Orders":

SELECT COUNT(*) AS NumberOfOrders FROM Orders;

34 SQL MAX() Function


Fungsi MAX() akan menghasilkan nilai terbesar dari kolom tertentu..

34.1 SQL MAX() Syntax


SELECT MAX(column_name) FROM table_name;

34.1.1 Contoh Database


Contoh berikut akan menggunakan data dari Northwind database.

Berikut adalah data dari tabel "Products":

ProductID ProductName SupplierID CategoryID Unit Price


1 Chais 1 1 10 boxes x 20 bags 18
2 Chang 1 1 24 - 12 oz bottles 19
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 21.35
5 Chef Anton's Gumbo Mix 2 2 36 boxes 25

34.1.2 Contoh
Pernyataan SQL berikut menghasilkan nilai terbesar dari kolom "Price" dari table "Products":

SELECT MAX(Price) AS HighestPrice FROM Products;

35 SQL MIN() Function


Fungsi MIN() menghasilkan nilai terkecil dari kolom tertentu yang dipilih..
35.1 SQL MIN() Syntax
SELECT MIN(column_name) FROM table_name;

35.1.1 Contoh Database


Contoh berikut akan menggunakan database Nortwind.

Berikut adalah contoh data dari table "Products":

ProductID ProductName SupplierID CategoryID Unit Price


1 Chais 1 1 10 boxes x 20 bags 18
2 Chang 1 1 24 - 12 oz bottles 19
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 21.35
5 Chef Anton's Gumbo Mix 2 2 36 boxes 25

35.1.2 Contoh
Pernyataan SQL berikut akan menghasilkan nilai terkecil dari kolom "Price" dari table "Products":

SELECT MIN(Price) AS SmallestOrderPrice FROM Products;

36 SQL SUM() Function


Fungsi SUM() menghasilkan jumlah total dari kolom bertipe numerik.

36.1 SQL SUM() Syntax


SELECT SUM(column_name) FROM table_name;

36.1.1 Contoh Database


Pada contoh di bawah ini, akan digunakan database Northwind.

Berikut adalah data dari tabel "OrderDetails":

OrderDetailID OrderID ProductID Quantity


1 10248 11 12
2 10248 42 10
3 10248 72 5
4 10249 14 9
5 10249 51 40

36.1.2 Contoh
Pernyataan berikut menghitung jumlah total dari kolom "Quantity" untuk tabel "OrderDetails":

SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;

37 SQL GROUP BY Statement


Fungsi Aggregate sering membutuhkan pernyataan GROUP BY.

Fungsi GROUP BY dipakai secara bersamaan dengan fungsi aggregate untuk menghasilkan nilai yang
dikelompokan berdasarkan kriteria tertentu.
37.1 SQL GROUP BY Syntax
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

37.1.1 Contoh Database


Pada contoh berikut, akan digunakan database Northwind.

Berikut adalah data dari tabel "Orders":

OrderID CustomerID EmployeeID OrderDate ShipperID


10248 90 5 1996-07-04 3
10249 81 6 1996-07-05 1
10250 34 4 1996-07-08 2

dan data berikut dari tabel "Shippers":

ShipperID ShipperName Phone


1 Speedy Express (503) 555-9831
2 United Package (503) 555-3199
3 Federal Shipping (503) 555-9931

data data dari "Employees:

EmployeeID LastName FirstName BirthDate Photo Notes


1 Davolio Nancy 1968-12-08 EmpID1.pic Education includes a BA....
2 Fuller Andrew 1952-02-19 EmpID2.pic Andrew received his BTS....
3 Leverling Janet 1963-08-30 EmpID3.pic Janet has a BS degree....

37.1.2 Contoh
Contoh berikut menghitung order digrup berdasarkan shipper:

SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM


Orders
LEFT JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName;

SELECT Shippers.ShipperName, Employees.LastName,


COUNT(Orders.OrderID) AS NumberOfOrders
FROM ((Orders
INNER JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID)
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY ShipperName,LastName;
38 SQL HAVING Clause
Klausa HAVING ditambahkan di SQL karena ada model query dimana WHERE tidak bisa dipakai
bersamaan dengan fungsi aggregat.

38.1 SQL HAVING Syntax


SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

38.1.1 Contoh Database


Berikut adalah data dari tabel "Orders":

OrderID CustomerID EmployeeID OrderDate ShipperID


10248 90 5 1996-07-04 3
10249 81 6 1996-07-05 1
10250 34 4 1996-07-08 2

dan data berikut dari tabel "Employees":

EmployeeID LastName FirstName BirthDate Photo Notes


1 Davolio Nancy 1968-12-08 EmpID1.pic Education includes a BA....
2 Fuller Andrew 1952-02-19 EmpID2.pic Andrew received his BTS....
3 Leverling Janet 1963-08-30 EmpID3.pic Janet has a BS degree....

38.1.2 Contoh
Berikut adalah contoh SQL untuk mencari jumlah employee yang terdaftar memililki lebih dari 10
order.

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM


(Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

Berikut adalah untuk mencari employees "Davolio" or "Fuller" yang telah teregister lebih dari 25
orders.

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM


Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID
WHERE LastName='Davolio' OR LastName='Fuller'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;
39 PHP MySQL Sistem
Aplikasi berbasis web menggunakan server-side script seperti PHP untuk mengakses database. PHP-
MySQL adalah salah satu sistem yang paling populer untuk jenis aplikasi web. Dengan PHP, kita
dapat melakukan Query untuk memanipulasi database, menambah dan menghapus database, table,
dan record, serta mengupdate dan melakukan select untuk mengambil data.

39.1 Database Queries


Query adalah permintaan data ke server database. Permintaan ini dilakukan melalui perintah-
perintah dalam bentuk bahasa Structured Query Language (SQL).

Dengan Query, kita bisa mendapatkan informasi yang sepesifik melalui data yang
dihasilkan/dikeluarkan olehnya.

PHP 5 dan versi setelahnya, dapat bekerja dengan MySQL database menggunakan fungsi-
fungsi MySQLi Extension (huruf "i" berasal dari “improved”). Manual tentang aplikasi-aplikasi ini
bisa dilihat di http://php.net/manual/en/book.mysqli.php

39.2 Membuka koneksi PHP ke MySQL


Sebelum melaukan query, kita harus melalukan proses koneksi ke server.

Kode PHP untuk koneksi adalah sebagai berikut.

39.2.1.1 Contoh kode PHP Koneksi ke MySQL


<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

39.3 Menutup Koneksi PHP ke MySQL


Setelah melakukan koneksi, dan kemudian melakukan query, kita harus menutup koneksi. Koneksi
ini akan terputus secara otomatis jika skrip selesai. Jika kita akan menutup koneksi sebelum skrip
berkhir, kode nya adalah sebagai berikut.

39.3.1.1 Contoh kode PHP untuk menutup koneksi:


mysqli_close($conn);
40 Operasi Standar PHP MySQL Sistem
40.1 Menambah Data
Setelah melakukan koneksi, berikutnya adalah menambah data ke database. Caranya dengan
melakukan query SQL menggunakan SQL INSERT.

Berikut adalah aturan yang harus diikuti dalam melakukan query SQL dalam PHP:

 Di PHP, Query SQL harus dalam bentuk quoted” *


 Nilai string dalam SQL harus dalam bentuk quoted”
 Nilai numerik tidak perlu quoted
 Nlai NULL tidak harus dalam bentuk quoted

*) Dalam bentuk quoted artinya pernyataan yang dibuat berada dalam pasangan tanda petik satu ‘..
’atau dua “...“. Pernyataan dalam bentuk quoted akan dianggap STRING oleh PHP.

Pernyataan SQL yang dipakai adalah INSERT INTO:

INSERT INTO table_name (column1, column2, column3,...)


VALUES (value1, value2, value3,...)

40.1.1.1 Contoh kode PHP MySQL INSERT:


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)


VALUES ('John', 'Doe', 'john@example.com')";

if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>

40.2 Menampilkan Data


Pernyataan SELECT digunakan untuk memilih data yang ingin dihasilkan melalui query. Sintak dasar
untuk pernyataan query SQL SELECT adalah:

SELECT column_name(s) FROM table_name WHERE condition ORDER BY column_name

40.2.1.1 Contoh kode PHP MySQL SELECT


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT id, firstname, lastname FROM MyGuests";


$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " .
$row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>

40.3 Menghapus Data


Pernyataan delete dipakai untuk menghapus record dari dalam database.

Pernyataan delete yang dipakai dalam SQL adalah

DELETE FROM table_name WHERE some_column = some_value

Catatan Penting.

Dalam melakukan perintah DELETE perhatikan klausul WHERE karena jika tidak sengaja diabaikan bisa
menyebabkan seluruh data terhapus.

40.3.1.1 Contoh kode PHP MySQL DELETE


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

// sql to delete a record


$sql = "DELETE FROM MyGuests WHERE id=3";

if (mysqli_query($conn, $sql)) {
echo "Record deleted successfully";
} else {
echo "Error deleting record: " . mysqli_error($conn);
}
mysqli_close($conn);
?>

40.4 Mengupdate Data


Pernyataan update dalam query SQL digunakan untuk memperbarui data.

Pernyataan UPDATE dalam SQL adalah sebagai berikut:

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

Catatan Penting.

Dalam melakukan perintah UPDATE perhatikan klausul WHERE karena jika tidak sengaja
diabaikan bisa menyebabkan seluruh terupdate data yang sama.

40.4.1.1 Contoh kode PHP MySQL untuk melakukan UPDATE.


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";

if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
mysqli_close($conn);
?>

Anda mungkin juga menyukai