0% menganggap dokumen ini bermanfaat (0 suara)
12 tayangan

Modul DB 4

Diunggah oleh

wahyu.apria
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
12 tayangan

Modul DB 4

Diunggah oleh

wahyu.apria
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 20

Modul 4 : SQL Built-In Function

4.1 Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat:
1. Mempraktekkan menampilkan data dari satu tabel dengan menggunakan numeric Built-in
Function
2. Mempraktekkan menampilkan data dari satu tabel dengan menggunakan string processing
Built-In Function
3. Mempraktekkan menampilkan data dari satu tabel dengan menggunakan date and time
Builtin Function
4. Mempraktekkan menampilkan data dari satu tabel dengan menggunakan grouping function

4.2 Alat & Bahan


Alat & Bahan Yang digunakan adalah hardware perangkat PC beserta Kelengkapannya berjumlah
40 PC serta Software XAMPP yang telah terinstall pada masing-masing PC

4.3 Dasar Teori


MySQL built-in function merupakan fungsi-fungsi yang telah didefinisikan oleh MySQL untuk
dapat langsung dipergunakan dan memiliki kegunaan nya masing-masing. Terdapat beberapa jenis
Built-in function, diantaranya adalah:

1. String Processing function


2. Numeric function
3. Date and time function
4. Grouping function

4.3.1 String Processing Function


String processing function adalah fungsi-fungsi yang sudah tersedia di MySQL digunakan untuk
mengolah data-data dengan tipe data text atau string. Berikut adalah fungsi yang termasuk ke dalam
string processing function:

Tabel String Processing Function


Fungsi Tujuan Contoh Hasil
CONCAT (S1,S2,…..) Berfungsi untuk SELECT CONCAT ‘MySQL’
menggabungkan antara (‘My’,’S’,’QL’)
string satu dengan string
yang lain
LENGTH(string) Berfungsi untuk SELECT LENGTH (‘MySQL’) 5
menampilkan panjang
karakter dari suatu string
LCASE(string) atau Berfungsi untuk SELECT LOWER (‘MYSQL’) ‘mysql’
LOWER(string) mengubah string menjadi
huruf kecil
UCASE (string) atau Berfungsi untuk SELECT UPPER(‘mysql’) ‘MYSQL’
UPPER (string) mengubah string menjadi
kuruf capital

Modul Praktikum Bahasa Query Terstruktur 64


MID Berfungsi untuk SELECT ‘SQL’
(string,position,length)
menampilkan karakter SUBSTRING(‘MySQL’,3,3)
atau dari suatu string
SUBSTRING dimulai dari suatu
posisi dengan
(string,position,length)
mendefinisikan jumlah
/panjang karakter yang
akan
Ditampilkan
LEFT (string, length) Berfungsi untuk SELECT LEFT (‘MySQL’, 3) ‘MyS’
menampikan sejumlah
karakter tertentu dimulai
dari karakter paling kiri
RIGHT (string,length) Berfungsi untuk SELECT RIGHT (‘MySQL’,3) ‘SQL’
menampilkan sejumlah
karakter tertentu dimulai
dari karakter paling kanan
LTRIM (string) Berfungsi untuk SELECT LTRIM (‘ ‘MySQL’
menghilangkan spasi di MySQL’)
dari kiri
RTRIM (string) Berfungsi untuk SELECT RTRIM (‘MySQL ‘) ‘MySQL’
menghilangkan spasi dari
kanan
LPAD(string, length, Berfungsi untuk SELECT LPAD (‘MySQL’, ??MySQL
char) menambah karakter 7,’?‘)
sehingga mencapai
sejumlah tertentu sesuai
dengan karakter yang
diinginkan dari kiri.
RPAD (string, Berfungsi menambah SELECT RPAD(‘MySQL’7,’?’) MySQL??
length,char) karakter sehingga
mencapai sejumlah
tertentu sesuai dengan
karakter yang diinginkan
dari kanan.
RELPACE (String, old Berfungsi untuk SELECT REPLACE ‘MySDL’
string, new string) menggantikan string (‘MySQL’,’Q’,’D’)
tertentu dengan string
yang lain

4.3.2 Numeric Function


Numeric function adalah fungsi-fungsi yang sudah tersedia di MySQL digunakan untuk mengolah
data-data dengan tipe data numerik. Berikut adalah fungsi yang termasuk ke dalam numeric
function:

Tabel Numeric Function


Fungsi Tujuan Contoh Hasil

Modul Praktikum Bahasa Query Terstruktur 65


ABS (X) Berfungsi untuk menghasilkan nilai mutlak dari SELECT ABS(-32) 32
suatu nilai X
CEILING(X) Berfungsi Untuk menghasilkan nilai pembulatan ke SELECT 2
atas CEILING(1.23)
FLOOR(X) Berfungsi untuk menghasilkan nilai pembulatan ke SELECT 1
bawah FLOOR(1.23)
MOD(n,m) Berfungsi untuk menghitung sisa hasil bagi SELECT 2
MOD(27,5)
DIV(n,m) Berfungsi untuk menghitung hasil bagi SELECT DIV(27,5) 5
POW(n,m) Berfungsi untuk menghitung hasil pangkat SELECT POW(2,2) 4
SQRT(n) Berfungsi untukmenghitung hasil akar pangkat dua SELECT SQRT(16) 4

4.3.3 Date Function


Date function adalah fungsi-fungsi yang sudah tersedia di MySQL digunakan untuk mengolah
datadata dengan tipe data tanggal. Berikut adalah fungsi yang termasuk ke dalam date function:

Tabel Date Function


Fungsi Tujuan Contoh Hasil
Curdate() atau Menampilkan SELECT NOW() 2013-
curtime() atau now() tanggal saat ini 05-
20
19:48:3
5
ADDATE(date, INTERVAL days) Menampilkan SELECT ADDATE(‘2008- ‘2007-
tanggal 0102’, interval 31 day) 12-
ditambah 01’
dengan interval
waktu
tambahan
SUBDATE(date, INTERVAL Menampilkan SELECT ADDATE(‘2008- ‘2007-
days) tanggal 0102’, interval 31 day) 12-
dikurangi 01’
dengan interval
waktu
tambahan
DAYNAME(date) Menampilkan SELECT Monday
nama hari pada (DAYNAME(CURDATE())
tanggal tertentu
DAYOFMONTH(date) Menampilka SELECT 03
n tanggal DAYOFMONTH(‘2007-02-
(range dari 1 03’)
sampai
dengan 31)
DAYOFWEEK (date) Menampilkan SELECT DAYOFWEEK(‘2007- 7
indeks hari 02-03’)
dalam satu
minggu (range

Modul Praktikum Bahasa Query Terstruktur 66


dari 1 sampai
dengan 7)
DAYOFYEAR(date) Menampilkan SELECT 34
Menampilkan indeks hari DAYOFYEAR(‘200702-03’)
dalam satu
tahun (range
dari satu
sampai dengan
366)
Fungsi Tujuan Contoh Hasil
MONTH(date) Menampilkan SELECT MONTH(‘2008-02- 2
bulan dari 03’)
suatu tanggal
MONTHNAME(date) Menampilkan SELECT Februar
nama bulan MONTHNAME(‘2008-02-03’) y
dari suatu
tanggal
YEAR(date) Menampilkan SELECT YEAR(‘2008-02-03’) 2008
tahun dari
suatu tanggal
STR_TO_DATE(string, date Mengubah SELECT ‘2016-
format) string menjadi STR_TO_DATE(’01,5,2016’, 05-
format tanggal ’%d,%m,%Y) 01
TIMESTAMPDIFF(year/month/ Menghitung SELECT 1
day, date1, date2) selisih antara TIMESTAMPDIFF(year,’20160
dua tanggal 2-01’,’2015-01-01’)
dengan output
berupa tahun

4.3.4 Grouping function


Grouping function adalah fungsi-fungsi yang sudah tersedia di MySQL digunakan untuk mengolah
data-data dan khusus untuk dapat dipergunakan pada saat menggunakan klausa GROUP BY. Berikut
adalah fungsi yang termasuk ke dalam grouping function:

Tabel Grouping Function


Fungsi Deskripsi
Avg(nama_kolom) Menghasilkan nilai rata-rata kolom
Count(nama_kolom) Menghasilkan jumlah baris data dalam suatu kolom
Min(nama_kolom) Menghasilkan nilai terkecil dari suatu kolom
Max(nama_kolom) Menghasilkan nilai terbesar dari suatu kolom
Sum(nama_kolom) Menghasilkan jumlah dari suatu kolom

Diketahui terdapat tabel Pelanggan sebagai berikut:

Data Pelanggan
Id_Pelanggan Nama Alamat Pekerjaan No_ktp No_telp

Modul Praktikum Bahasa Query Terstruktur 67


P0001 Novita Jl. Kebon Kalapa Wiraswasta 3451237890124567 0227451234
Putri No.12 Bandung
P0002 Wulandari Jl. Pegadaian Dosen 3451237874354582 0223456789
No.25 Bandung
P0003 Pujiharti Jl. Kewadanaan Wiraswasta 1231237874354567 0214456789
No. 14 Jakarta
P0004 Andre Jl. Pasir Kaliki Wiraswasta 3451237874300000 0222445356
Terdata No. 104A Bandung

Contoh:

Berdasarkan tabel diatas, tampilkan jumlah pelanggan yang memiliki pekerjaan wiraswasta.

Perintah untuk menampilkan data sesuai dengan permasalahan diatas dapat dilakukan dengan
perintah sebagai berikut:

SELECT COUNT(pekerjaan)
FROM pelanggan
WHERE
pekerjaan=’Wiraswasta’;

Sehingga akan menampilkan data sebagai berikut:

Contoh Tampilan Hasil Selecting Data Menggunakan Grouping Function


COUNT(pekerjaan)
3

Contoh Lain:

Berdasarkan tabel pelanggan, tampilkan jumlah pelanggan dari setiap pekerjaan.

Perintah untuk menampilkan data sesuai dengan permasalahan diatas dapat dilakukan dengan
perintah sebagai berikut:

SELECT pekerjaan, COUNT(pekerjaan)


FROM pelanggan
GROUP BY
pekerjaan;

Sehingga akan menampilkan data sebagai berikut:

Contoh Tampilan Hasil Selecting Data Menggunakan Grouping Function dan Klausa GROUP
BY
Pekerjaan COUNT(pekerjaan)
Wiraswasta 3
Dosen 1

SELECT [*][nama_kolom1, nama_kolom2,….]


FROM nama_tabel
[WHERE kondisi_data_yang_ditampilkan]

Modul Praktikum Bahasa Query Terstruktur 68


[GROUP BY group]
[HAVING kondisi_group]
[ORDER BY nama_kolom_yg_diurutkan];

4.4 Latihan
Lengkapilah Bahasa query di kolom sebelah kanan yang sudah disediakan sesuai dengan petunjuk
soal di kolom sebelah kiri.

4.4.1 Latihan 1
Berikut adalah ER Diagram dan Diagram relasi antar tabel untuk studi kasus Ananda Brownis
Penjualan:

Modul Praktikum Bahasa Query Terstruktur 69


Berikut adalah data (isi tabel) yang ada dalam studi kasus Ananda Brownis Penjualan:

Tabel Jenis_kue

Kue

Modul Praktikum Bahasa Query Terstruktur 70


Outlet

Penjualan

Detail_jual

Modul Praktikum Bahasa Query Terstruktur 71


Akun

Jurnal_penjualan

Modul Praktikum Bahasa Query Terstruktur 72


INSTRUKSI QUERY

1. Tampilkan data akun sehingga menghasilkan luaran sebagai SELECT CONCAT( kode_akun,' ',
berikut: nama_akun) as akun from akun

2. Tampilkan nama outlet beserta dengan jumlah karakter dari SELECT nama_outlet,
nama outlet tersebut sehingga menghasilkan luaran: LENGTH(nama_outlet)as 'Panjang
Karakter' FROM outlet

3. Tampilkan nama kue sehingga menghasilkan luaran: SELECT UPPER (nama_kue) as 'Nama Kue'
FROM kue

Modul Praktikum Bahasa Query Terstruktur 73


4. Tampilkan nama kue dan lima karakter paling kiri dari nama SELECT nama_kue,LEFT(nama_kue,5)AS
kue sehingga menghasilkan luaran: 'Lima Huruf Pertama' FROM kue

5. Tampilkan nama kue dan 4 karakter paling kanan dari nama SELECT
kue sehingga menghasilkan luaran: nama_kue,right(nama_kue,4)AS 'Lima
Huruf Terakhir' FROM kue

6. Tampilkan nama kue dan nama kue setelah penggantian nama SELECT nama_kue,
yang mengandung kata Brownies menjadi Brodol seperti replace(nama_kue,'Brownies', 'Brodol') as
luaran sebagai berikut: 'Nama Baru' from kue

Modul Praktikum Bahasa Query Terstruktur 74


7. Tampilkan tanggal penjualan, dan periode penjualan sehingga SELECT tgl_jual, concat( monthname(tgl_jual) ,'
luaran sebagai berikut ',year(tgl_jual)) as periode
FROM penjualan

8. Tampilkan tanggal penjualan dan tanggal setelah tujuh hari dari SELECT tgl_jual,
penjualan sehingga memberikan luaran: adddate(tgl_jual, interval 7 DAY) as 'Tujuh
Hari Setelah
Penjualan' from penjualan

4.4.2 Latihan 2
Berikut terdapat ER Diagram Toko Sukses Selalu.

Modul Praktikum Bahasa Query Terstruktur 75


Diagram Relasi Antar Tabel Toko Elektronik Sukses Selalu

Data dalam Database Toko Sukses Selalu


Pelanggan
id_pelanggan no_ktp nama alamat no_telp pekerjaan
Pelanggan
Tidak
1111111111 Terdaftar
8924234423 3372026404830000 Jeko Jl.Bojong Soang Bandung 022734412234 swasta
8935353535 3372026404832420 Boy Jl.Sukabirus Bandung 098987654321 mahasiswa
8911223344 3372026404112233 Domino Jl.Moch.Toha Bandung 02254321 wirausaha

Pegawai
id_pegawai no_ktp nama Alamat no_telp posisi

Modul Praktikum Bahasa Query Terstruktur 76


201301001 3372026404830000 Jeko Jl.Bojong Soang Bandung 022734412234 kasir
201301002 3372026404777777 Budi Jl.Sukapura Bandung 08988776655 kasir
201302001 3372026404987654 Wawan Jl.Sukabirus Bandung 089899999 kasir
201302009 3372026404135792 Wati Jl. Telekomunikasi 14000 supervisor
Bandung

Kategori_barang
id_kategori nama_kategori Keterangan
ELK Elektronik Elektronik
BZR Bazar Perlengkapan Rumah Tangga
SFL Softline Pakaian Siap Pakai
GPK Grocery Perawatan Kecantikan Perawatan dan kecantikan
GMK Grocery Makanan Minuman Makanan dan Minuman
PSG Pasar Segar Sayur, buah dan daging

Barang
id_barang Nama harga stok id_kategori
UA-22F5000 LED TV Samsung 22 inch 1900000 100 ELK
KLV-24EX430 LED TV SONY 24 Inch 1999600 100 ELK
24LN4100 LED TV LG 24 Inch 2036900 100 ELK
32LN5100 LED TV LG 32 Inch 3492000 100 ELK
DH-6330P HOME THEATHER LG 2461700 100 ELK
ES-FL8605- WASHING MACHINE SHARP 6KG 2863600 100 ELK
WW
NA-F852 WASHING MACHINE PANASONIC 2590000 100 ELK
8.5KG
MUG-ZDK MUG ZODIAK 19900 100 BZR
MUG-SHO MUG SHIO 19900 100 BZR
MUG-ANI MUG ANIMAL 19900 100 BZR
KNWTPUMP KENMASTER WATER PUMP 27500 100 BZR
KC-105 KOMPOR MINI PORTABLE 124900 100 BZR
STELLA70GR STELLA ALL IN ONE 70 GR 7200 100 BZR
HITLEMON HIT AEROSOL LEMON 600ML 24150 100 BZR
ATTSOFT ATTACK SOFTENER 800GR 14325 100 BZR
ATTCMAX ATTACK CLEAN MAXIMIZER 14325 100 BZR
800GR
INDOMIE INDOMIE ALL VARIAN 1500 100 GMK
UHT125ML ULTRAMILK 125ML 1800 100 GMK
UHT1000ML ULTRAMILK 1000ML 11350 100 GMK

Nota_penjualan
id_nota tgl_nota total id_pelanggan id_pegawai
86856 2013-05-01 45675 1111111111 201301001
86857 2013-05-01 52800 8924234423 201301001
86858 2013-05-01 38500 8924234423 201301002

Modul Praktikum Bahasa Query Terstruktur 77


86859 2013-05-01 3492000 8935353535 201301002
86860 2013-06-01 8817300 8911223344 201301002
86861 2013-07-01 2863600 8924234423 201301002
86862 2013-07-01 297000 8924234423 201302001

Detail_penjualan
id_nota id_barang jumlah subtotal
86856 STELLA70GR 1 7200
86856 HITLEMON 1 24150
86856 ATTSOFT 1 14325
86857 HITLEMON 1 24150
86857 ATTSOFT 2 28650
86858 MUG-ZDK 1 19900
86858 INDOMIE 10 15000
86858 UHT125ML 2 3600
86859 32LN5100 1 3492000
86860 32LN5100 1 3492000
86860 DH-6330P 1 2461700
86860 ES-FL8605- 1 2863600
WW
86861 ES-FL8605- 1 2863600
WW
86862 INDOMIE 90 135000
86862 UHT125ML 90 162000

Transaksi
id_trans tgl_trans jml_trans
BYR1 2013-05-01 45675
BYR2 2013-05-01 52800
BYR3 2013-05-01 38500
BYR4 2013-05-01 3000000
BYR5 2013-06-01 492000
BYR6 2013-06-01 4408650
BYR7 2013-07-01 2204325
BYR8 2013-08-01 2000000
BYR9 2013-09-01 204325
BYR10 2013-07-01 363600
BYR11 2013-07-01 47000
RTR1 2013-05-01 10500
RTR2 2013-07-02 43650

Modul Praktikum Bahasa Query Terstruktur 78


Pembayaran
id_bayar sisa_piutang id_nota id_pegawai
BYR1 0 86856 201301001
BYR2 0 86857 201301001
BYR3 0 86858 201301002
BYR4 492000 86859 201301002
BYR5 0 86859 201301001
BYR6 47000 86860 201301002
BYR7 2204325 86860 201301001
BYR8 204325 86860 201301001
BYR9 0 86860 201301001
BYR10 2500000 86861 201301002
BYR11 250000 86862 201302001

retur
Id_retur
RTR1
RTR2

Detail_retur
id_nota id_barang id_retur jumlah subtotal
86858 INDOMIE RTR1 7 10500
86862 INDOMIE RTR2 13 19500
86857 HITLEMON RTR2 1 24150

Akun
no_akun nm_akun header_akun
1 Aktiva
11 Aktiva Lancar 1
111 Kas 11
112 Piutang Dagang 11
113 Persediaan Barang Dagangan 11
114 Sewa Dibayar Dimuka (10/12) 11
115 Asuransi Dibayar Dimuka (09/12) 11
116 Perlengkapan 11
2 Hutang
21 Hutang Lancar 2
211 Utang Dagang 21
3 Modal
311 Modal Tn X 3
3112 Prive Tn. X 311
4 Pendapatan
41 Pendapatan Usaha 4

Modul Praktikum Bahasa Query Terstruktur 79


411 Penjualan 41
412 Harga Pokok Penjualan 41
413 Retur Penjualan 41
414 Potongan Penjualan 41
5 Beban
511 Beban Listrik 5
512 Beban Air 5
513 Beban Telepon 5
514 Beban Gaji 5

jurnal
no_akun id_trans posisi_dr_cr nominal
111 BYR1 debet 45675
411 BYR1 kredit 45675
111 BYR2 debet 52800
411 BYR2 kredit 52800
111 BYR3 debet 38500
411 BYR3 kredit 38500
111 BYR4 debet 3000000
112 BYR4 debet 492000
411 BYR4 kredit 3492000
111 BYR5 debet 492000
112 BYR5 kredit 492000
111 BYR6 debet 4408650
112 BYR6 debet 4408650
411 BYR6 kredit 8817300
111 BYR7 debet 2204325
112 BYR7 kredit 2204325
111 BYR8 debet 2000000
112 BYR8 kredit 2000000
111 BYR9 debet 204325
112 BYR9 kredit 204325
111 BYR10 debet 363600
112 BYR10 debet 2500000
411 BYR10 kredit 2863600
111 BYR11 debet 47000
112 BYR11 debet 250000
411 BYR11 kredit 297000
413 RTR1 debet 10500
111 RTR1 kredit 10500
413 RTR2 debet 43650
111 RTR2 kredit 43650

Modul Praktikum Bahasa Query Terstruktur 80


INSTRUKSI QUERY

1. Tampilkan id barang dan nama barang menjadi satu kolom SELECT CONCAT ( id_barang,'',nama) as
dengan nama kolom ‘Barang’. Seperti hasil di bawah ini barang from barang;

2. Tampilkan id barang dan nama barang menjadi satu kolom


dengan nama kolom ‘Barang’ dan hitung jumlah karakter
untuk kolom tersebut dengan nama kolom ‘Total_karakter’.
Data yang ditampilkan adalah data dengan total karakter
lebih dari 20.

3. Tampilkan id pegawai dan nama pegawai menjadi satu


kolom dengan nama ‘Pegawai’ dan ditampilkan dengan
seluruh huruf berupa kapital.

4. Tampilkan id barang, nama barang menjadi satu kolom


dengan nama kolom ‘Barang’ dan kolom harga barang
dengan tampilan seluruh karakter kapital, khusus yang
ditampilkan adalah barang yang termasuk ke dalam kode
barang ‘ELK’ yang memiliki harga antara 2 juta sampai
dengan 4 juta

Modul Praktikum Bahasa Query Terstruktur 81


5. Tampilkan tanggal transaksi penjualan dan total penjualan
yang terjadi pada dari tanggal 1 Mei 2013 sampai dengan 1
Juni 2013 dengan total penjualan lebih dari 50ribu rupiah.
Keluaran sebagai berikut (output huruf kapital dan nama
kolom harus sesuai dengan luaran sebagai berikut).

6. Tampilkan total penjualan tertinggi, total penjualan terendah,


dan rata-rata total penjualan yang ada dalam tabel nota
penjualan dengan luaran harus sesuai dengan tabel sebagai
berikut (nama kolom harus sama)

7. Tampilkan id_barang dan nama barang menjadi satu kolom


dengan nama kolom ‘Barang’. Data ‘Barang’ yang
ditampilkan adalah barang dengan harga termurah yang
memiliki nama mengandung kata ‘LED TV’ sehingga
menghasilkan luaran sebagai berikut (penulisan nama kolom
harus sama dan menggunakan huruf kapital).

8. Tampilkan jumlah akun yang memiliki header akun ‘11’.


Luaran adalah sebagai berikut.

9. Tampilkan nomor nota, tanggal nota dan tanggal nota


ditambah dengan 3 hari sebagai asumsi bahwa tanggal tersebut
adalah batas waktu maksimal untuk retur barang. Namun data
yang ditampilkan adalah yang tanggal maksimal retur barang
nya kurang dari 30 Juni 2013 dan ditangani oleh id pegawai
‘201301002’.

10. Tampilkan tanggal nota, dan hitung selisih antara tanggal 14


september 2016 dengan tanggal nota pada tabel
nota_penjualan sehingga menghasilkan luarah selisih dalam
tahun seperti tabel berikut.

11. Tampilkan tanggal nota, dan hitung selisih antara tanggal 14


september 2016 dengan tanggal nota pada tabel
nota_penjualan sehingga menghasilkan luaran selisih dalam
tahun dan bulan seperti tabel berikut.

Modul Praktikum Bahasa Query Terstruktur 82


12. Tampilkan tanggal nota, dan hitung selisih antara tanggal 14
september 2016 dengan tanggal nota pada tabel
nota_penjualan sehingga menghasilkan luaran selisih dalam
tahun dan bulan khusus yang selisihnya lebih dari 3 tahun dua
bulan seperti tabel berikut.

Modul Praktikum Bahasa Query Terstruktur 83

Anda mungkin juga menyukai