Rabu, 02 Desember 2015

Cara menjalankan MsSQL dengan XAMPP

Cara Menjalankan MySQL
Terdapat dua cara menjalankan MySQL yaitu melalui phpmyadmin dan melalui command prompt (Windows OS) atau terminal (Linux OS), tetapi saya akan menjelaskan mengunakan cara command prompt, yaitu sebagai berikut:
  1. Download dan install XAMPP pada komputer;
  2. Aktifkan MySQL dan Apache pada XAMPP;
1) Buka XAMPP Control Panel;
2) Start untuk Apache dan MySQL;
xampp
  1. Eksekusi aplikasi MySQL;
1) Buka CMD;
2) Eksekusi perintah berikut:
cd c:\xampp\mysql\bin
mysql -u root
openingsql
Menggunakan Perintah DDL

  1. Create
  • Membuat Database
Create database nama_database;
contoh:
create
Mengunakan database yang pernah di buat, gunakan perintah use
use
  • Membuat tabel
CREATE TABLE nama_tabel(
nama_field_1 tipe_data,
nama_field_2 tipe_data,
.
.
.
nama_field_n tipe_data
);
createtable
Keterangan :
  • Primary key, menjadikan field unik, nilainya berbeda dengan yang field lainya.
  • Auto_increment, menjadikan field terisi otomatis.
  • Not null, menjadikan field harus terisi, tidak boleh kosong.

  1. Drop
  • Menghapus tabel
Drop table nama_table;
Contoh :
droptable
  • Menghapus database
Drop database nama_database;
Contoh:
dropdatabase
2.Alter
  • Mengubah nama table
altertable
  • menambah kolom
altertambahkolom
  • menganti kolom
altergantikolom
  • Menghapus kolom
alterhapuskolom
  • DML (Data Manipulation Language)
DML adalah bahasa/perintah SQL yang berfungsi untuk memanipulasi data yang ada di dalam basis data (database) dan digunakan untuk mengambil, memasukkan, memodifikasi,bahkan menghapus informasi/isi yang ada didalam database tersebut. Beberapa manfaat atau kegunaan dari DML diantaranya adalah sebagai berikut :
  1. Pengambilan informasi yang disimpan dalam basis data (Select)
  2. Penyisipan informasi baru ke basis data (Insert)
  3. Penghapusan informasi dari basis data (Delete)
  4. Modifikasi informasi yang disimpan dalam basis data (Update)
Perintah DML dalam SQL
Contoh kasus : menu makanan warteg
Kita aplikasikan program DDL diatas
– Membuat tabel menu makanan (dengan nama : menu)
– Membuat tabel pelanggan (dengan nama : pelanggan)
– Membuat tabel pesanan (dengan nama : pesanan)
– Membut tabel karyawan (dengan nama : pekerja)
Jangan lupa untuk membuat foreign key pada tabel pesanan.
Sekarang lanjut ke fungsi DML !
  1. INSERT
Insert merupakan perintah yang berfungsi untuk menyisipkan, memasukkan
dan menyimpan data dari luar sistem ke dalam tabel. Perintah insert memiliki 2
cara yaitu :

  • Cara Langsung
INSERT INTO namatabel VALUES (isi1, isi2, isi3, …);
  • Cara Tak Langsung
INSERT INTO namatabel (namafield1, namafield2,…) VALUES (isi1, isi2,
isi3, …);
Sekarang insert data pada tabel yang telah kita buat sebelumnya.
  •  Tabel menu
insert
Dan lakukanlah untuk tabel-tabel yang lain.
  1. SELECT
Berfungsi untuk melakukan pengambilan sejumlah data yang ada di dalam
table untuk ditampilkan ataupun dimanipulasi. SQL yang digunakan:
  • Menampilkan seluruh isi tabel
SELECT * FROM nama_tabel;
Contoh: SELECT * from MENU;
select
  • Menampilkan dengan klausa WHERE
SELECT * FROM nama_tabel WHERE kondisi;
contoh: select id_makanan, nama_makanan, harga makanan from menu where harga_makanan=’13000’;
clausawhere
  • Menampilkan field tertentu
SELECT nama_field1, nama_field2,…… FROM nama_tabel;
Contoh : select id_karyawan, nama_karyawan from pekerja;
fieldtertentu
  • Menampilkan data yang diambil dari beberapa tabel
SELECT tabel1.field, tabel2.field,….
FROM tabel1, tabel2,….
WHERE kondisi;
*(contoh ada di bagian operator AND dan OR)
  • Penggunaan operator AND dan OR
Untuk mengambil dat tertentu dengan syarat/kondisi lebih dari satu, dan
apabila semua syarat bernilai benar.
SELECT * FROM nama_tabel WHERE kondisi1 AND kondisi2 AND kondisi3..;
SELECT * FROM nama_tabel WHERE kondisi1 OR kondisi2 OR kondisi3…;
beberapatable
  • Penggunaan operator BETWEEN dan NOT BETWEEN
Untuk menyaring data dengan rentang tertentu (memiliki jangkauan).
SELECT * FROM nama_tabel WHERE field BETWEEN batas_bawah AND
batas_atas ;
SELECT * FROM nama_tabel WHERE field NOT BETWEEN batas_bawah AND
batas_atas ;
datajangkauan
  • Penggunaan operator LIKE dan NOT LIKE
Untuk menseleksi data dengan kriteria mengandung kata atau klausa
yang didefinisikan oleh LIKE.
SELECT * FROM nama_tabel WHERE field LIKE ‘%….’;
SELECT * FROM nama_tabel WHERE field LIKE ‘….%’;
SELECT * FROM nama_tabel WHERE field LIKE ‘%….%’;

operator like
  • Penggunaan operator ORDER BY
Digunakan untuk mengurutkan data
                    SELECT * FROM nama_tabel ORDER BY namafield;

acsdesc
  • Penggunaan operator ASC dan DESC
Untuk mengurutkan data yang ditampilkan secara menaik atau menurun.
SELECT * FROM nama_tabel ORDER BY namafield ASC;
  SELECT * FROM nama_tabel ORDER BY namafield DESC;
orderby
  1. UPDATE
Perintah ini digunakan untuk memperbarui data lama menjadi data terbaru.
Disini perlu diingat perintah update ini harus dikuti dengan perintah WHERE
sebagai kondisi untuk menentukan data mana yang akan diperbarui.
UPDATE nama_tabel SET field1=nilai_baru, field2=nilai_baru, …..
                    WHERE kondisi;
Contoh sebelum dan sesudah dirubah harga dalam tabel menu
update
  1. DELETE
Perintah ini digunakan untuk menghapus atau menghilangkan baris data (record)
dari table. Penggunaan perintah ini juga harus menggunakan WHERE sebagai
kondisi untuk menentukan data mana yang akan dihapus.
                    DELETE FROM nama_tabel WHERE kondisi;
delete
  • Aggregasi & Groping
Fungsi aggregasi adalah fungsi matematika sederhana dalam SQL. Biasanya fungsi aggregasi ini digunakan pada bagian SELECT untuk melakukan perhitungan dengan melibatkan sekumpulan data atau nilai. Sedangkan grouping merupakan fungsi untuk mengelompokkan suatu data tabel berdasarkan salah satu field yang diperlukan dari tabel tersebut.

AGGREGASI
  1. AVG()
Fungsi ini digunakan untuk menghasilkan nilai rata-rata sekelompok nilai dari sebuah
kolom (field) numerik.
Perintah umum:
SELECT AVG(nama_field) From nama_tabel
Contoh:
avg
  1. COUNT()
Fungsi ini digunakan untuk menghasilkan nilai jumlah data (baris/record) dari
sekelompok data tabel maupun view.
Perintah umum :
SELECT COUNT(nama_field) From nama_tabel
Contoh:
count
  1. MAX()
Fungsi ini digunakan untuk menghasilkan nilai tertinggi sekelompok nilai dari sebuah
kolom (field) numerik.
Perintah umum :
SELECT MAX(nama_field) From nama_tabel
Contoh:
max
  1. MIN()
Fungsi ini digunakan untuk menghasilkan nilai terendah dari sebuah kolom (field)
numerik.
Perintah umum :
SELECT MIN(nama_field) From nama_tabel
Contoh :
min
  1. SUM()
Fungsi ini digunakan untuk menghasilkan nilai total jumlah sekelompok dari sebuah
kolom (field) numerik.
Perintah umum :
SELECT SUM(nama_field) From nama_tabel
Contoh :
sum
  1. ROUND()
Fungsi ini digunakan untuk melengkapi bidang numerik dengan jumlah desimal yang
ditentukan.
Perintah:
SELECT ROUND(nama_field,jumlah_decimal) From nama_tabel
Contoh:
round
  1. STDDEV_POP()
Fungsi ini digunakan untuk menghasilkan nilai standart deviasi populasi.
Perintah umum:
SELECT STDDEV_POP(nama_field) From nama_tabel
Contoh :
stddev
  1. VAR_POP()
Fungsi ini digunakan untuk menghasilkan nilai standart varian populasi.
Perintah umum :
SELECT VAR_POP(nama_field) From nama_tabel
Contoh:
varpop
GROUPING

  1. Order By
Order by adalah perintah yang digunakan untuk menampilkan data secara
terurut berdasarkan nilai tertentu. Order by dikelompok menjadi 2 jenis yaitu
ascending (data diurutkan dari yang terkecil ke terbesar) dan descending(data
diurutkan dari yang terbesar ke terkecil).
Perintah umum :
            SELECT *FROM(nama_tabel) ORDER BY atribut ASC/DESC      
Contoh :
gropingorderby
  1. Group By
Group by merupakan perintah yang digunakan untuk mengelompokan
beberapa data pada perintah SELECT;
Perintah Umum :
SELECT *FROM(nama_tabel) GROUP BY atribut;
Contoh:
groupby
  1. Having
Fungsi Having terkait dengan GROUP BY dan AGREGASI. Biasanya digunakan untuk
menentukan kondisi tertentu pada group by dan kondisi tersebut berkaitan dengan fungsi
agrgasi. Fungsi HAVING sebenarnya memiliki kemiripan dengan WHERE dalam
penggunaannya. HAVING digunakan dalam SQL karena WHERE tidak dapat digunakan
dengan fungsi agregasi
Perintah Umum:
SELECT atribut FROM nama_tabel GROUP BY atribut HAVING fungsi_agregasi:
Contoh:
having
  1. View
View dapat disebut sebagai sebuah table semu/bayangan. Data-data pada
table view dapat merupakan gabungan dari data pada tabe-tabel lain. View dapat
digunakan untuk membatasi pengaksesan atas sebuah table tertentu, jadi user
hanya boleh melihat table yang berisi data-data secara spesifik.
Perintah umum:
CREATE VIEW NAMA_VIEW AS<QUERY>
Contoh:
view

Dasar-dasar Basis Data


Untuk postingan kali ini saya akan mengulas tentang basis data, saya akan merangkumnya menjadi tulisan lebih simple dan mudah-mudahan dapat di mengerti.

Tentang Data dan Informasi
Data merupakan kumpulan dari suatu fakta yang bisa berupa huruf, angka dan lain sebagainya yang belum di olah sehingga belum memiliki arti atau memiliki makna. Lalu apa hubungannya dengan informasi?
Informasi tidak mungkin ada tampa adanya data. Informasi merupakan hasil dari pengelolaan data. Sehingga hasil pengelolaan data tersebut sudah memiliki arti atau makna.

Komponen Basis Data
  1. Hardware terdiri dari computer, memory, storage, hardisk, dan lain-lain,
  2. Operating system adalah program yang menjalankan system computer
  3. Database adalah struktur table, indeks, dan lain-lain.
  4. DBMS (Data Base Management System) adalah perangkat lunak yang memintai data dalam jumlah besar. Contoh perangkat lunak dBase,Microsoft-Access, Oracle Database, dan MySQL.
  5. User adalah pengguna database.
  6. Aplikasi adalah program kain dalam DBMS.

MySQL dan SQL
Berhubung dalam mata kuliah saya menggunakan MySQL maka saya akan menjelaskan sedikit tentang MySql. Secara sederhana dapat saya katakan bahwa MySQL adalah perangkat lunak system manajemen basis data relasional yang di gunakan untuk mengelola atau mengatur database yang memungkinkan user untuk berintereaksi dengan basis data di dalam disk. Sedangkan SQL (Structured Query Language) adalah bahasa basis data yang paling popular saat ini.

ERD (Entitas Relation Diagram)
ERD di definisikan sebagai penerjemas semesta data yabg ada di “dunia nyata” dengan memanfaatkan sejumlah perangkat konseptual menjadi sejumlah data, sederhananya ERD adalah cara memodelkan suatu data tingkat konseptual dalam perancangan basis data. ERD sendiri hadir untuk menjadikan data lebih mudah di mengerti dalam rangka mempermudah dan perancangan dan pengaksesan basis data, ERD menjelaskan hubungan antara data dalam basis data berdasarkan objek-objek dasar data yang mempunyai hubungan antar relasi.
Adapun komponen ERD sebagai berikut:
  1. Entitas
Entitas di definisikan sebagai individu yang mewakili suatu yang nyata dan dapat di bedakan dari sesuatu yang lain. Sederhanyanya entitas adalah suatu objek yang di bedakan dengan objek lainnya di dunia nyata. Entitas Dallam ERD digambarkan dalam bentuk persegi panjang. Berikut beberapa contoh entitas:
entitas
2.Atribut
Atribut merupakan kateristik dari entitas yang menjelaskan secara detail tentang entitas tersebut. Atribut dalam ERD direpresentasikan dengan bentuk oval.
Berikut contoh atribut
atribut

3.Relasi
Relasi di defenisikan sebagai hubungan diantara sejumlah entitas yang berasal dari himpunan entitas berbeda, relasi dikenal sebagai hubungan yang terjadi diantara satu atau lebih entitas . relasi direpresetasikan dalam bentuk bangun datar belah ketupat, berikut contoh relasi:
relasi
4.Kardinalitas
Kardinalitas relasi menunjukan jumlah maksimum entitas yang dapat berelasi dengan entitas pada himpunan entitas lain. Berikut kardinalitas yang terjadi diantara dua himpunan entitas:
  • One to one
Kardinalitas ini terjadi apabila entitas (aku) berhubungan dengan satu entinas (kamu), begitupun sebaliknya. Sederhananya relasi one to one merupakan relasi dua tabel, dengan primary key dan foreign key dengan meletakan kolom one to one yang baru.
Contoh
kardinalitas
  • One to Many dan Many to One
Relasi ini terjadi apabila data yang ada pada tabel pertama memniliki beberapa data yang sama dengan table pertama, sebagai contoh:
kardinalitas1ton
  • Many to Many
Kardinalitas ini terjadi apabila banyak entitas berhubungan dengan banyak entitas, apabila sebuah data yang ada pada tabel pertama memiliki beberapa data pada tabel kedua, dan begitu juga sebaliknya. Berikut contoh many to many:
kardinalitas many to many
Bahasa Basis Data
  • DDL (Data Definition Language)
Data Definition Language (DDL) adalah bahasa basis data yang digunakan untuk mendefinisikan, mengubah, dan menghapus basis data serta objek-objek yang diperlukan, seperti table, view, user, index dan sebagainya. DDL biasa digunakan oleh Data Base Administrator (DBA) dalam pembuatan sebuah aplikasi basis data.
Secara umum, DDL yang digunakan meliputi perintah sebagai berikut:
 CREATE; digunakan untuk membuat objek yang baru;
 ALTER; digunakan untuk mengubah objek yang sudah ada;
 DROP; digunakan untuk menghapus objek yang sudah ada.
Perintah Umum yang Digunakan pada MySQL
createAlter/RenameDrop
Create DatabaseAlter DatabaseDrop Database
Create FunctionAlter FunctionDrop Index
Create IndexAlter ProcedureDrop Procedure
Create ProcedureAlter TableDrop Table
Create TableAlter ViewDrop Trigger
Create TringgerRename TabelDrop View
Create ViewDrop Function


Tipe Data yang Dapat Digunakan pada MySQL
Data bilangan
NOTIPE DATAKETERANGAN
1TINYINTDigunakan untuk menyimpan data bilangan bulat positif dan negatif
Jangakuan : -128 s.d 127
Ukuran     : 1 byte (8bit)
2SMALLINTDigunakan untuk menyimpan data bilangan bulat positif dan negatif
Jangakuan : -8.388.608 s.d 8.388.607
Ukuran     : 3 byte (24 bit)
3INTDigunakan untuk menyimpan data bilangan bulat positif dan negatif
Jangkauan : -2.147.483.648 s.d 2.147.483.647
Ukuran     : 4 byte (32 bit)
4BIGINTDigunakan untuk menyimpan data bilangan bulat postis dan negatif
Jangkauan :±9,22 x 1018
Ukuran     : 8 byte (64 bit)
5FLOATDigunakan untuk menyimpan data bilangan pecahan positif dan negatif
Jangkauan : -3.402823266E+38 s.d -1.175494351E38,0
Dan 1.175494351E-38 s.d 3.402823466E+38
Ukuran     : 4 byte (32 bit)
6DOUBLEDigunakan untuk menyimpan data bilangan pecahan positif dan negatif presisi ganda
7REALMerupakan sinonim dari DOUBLE
8DECIMALDigunakan untuk menyimpan data bilangan pecahan positif dan negatif
Jangkauan : -1.79…E+308 s.d -2.22…E-308,0
Dan 2.22..E-308 s.d 1.79..E+308
Ukuran     : 8 byte (64 bit)

tgl,jam,hari
datalainnya

ROLE OR REAL #3


“kenalin ini ann sepupu aku, selama ini dia tinggal di Singapore” Rick memperkenalkan wanita itu kepadaku. Aku terdiam sejenak, berusaha menahan kegirangan yang bergejolak didalam diri ini.
“ap.. apa? Eh dia sepupu kamu?”
“iya, kenapa memangnya?” Rick menatapku dengan wajah aneh.
“eh tidak tidak, oh iya aku Flow, pa..ac….” ucapanku terhenti saat melihat wajah Rick yang tampak masam,
“hah kenapa ka?”
“eh tidak, maksudku aku teman satu sekolahnya rick, hehehe” jawabku dengan sedikit tertawa yang dipaksakan.
Aku bertanya dalam diri, ada apa ini sebenarnya? Mengapa Rick mempertemukan aku dengan sepupunya? Apa hubungannya denganku? Ah sudahlah yang penting malam ini aku bisa dinnerbareng lelaki tampan ini. Gumam ku dalam hati.
***
“gua masih gak paham itu cewe siapa sih? Kok main  ganggu acara Flow sama Rick, dasar cewe gatel” aku tidak sabaran melihat pemandangan apa yang terjadi di depan mataku, padahal aku berharap supaya malam ini akan jadi malam yang special buat Flow.
“gua kesana ya”
“lu mau ngapain si mut? Udah biarin dulu jangan bikin keributan, toh Flow baik-baik aja dia bisa tersenyum gitu” Dita menahan tangan ku lebih erat agar aku tidak nekat untuk mendekati Flow, Rick, dan cewe yang tidak ku kenal itu.
“Kalau sampai flow menujukan raut sedih gua akan bikin perhitungan rick” kataku dalam hati.
Dinda yang sendari tadi sibuk dengan gadgetnya tidak memperhatikan situasi yang sedang terjadi, dinda bisa dibilang gadget maniak, dia suka sekali main rp, apa itu rp? Rp adalah role player, yang biasanya dimainkan di media social seperti facebook, twitter, instagram dan sebagainya, dimana kita berperan sebagai artis di dalam dunia maya, misalnya kita salah satu fans dari ariel noah, kita bisa bikin akun bernama aril noah, dan menfollow akun rp yang lain. Di sana kita akan bercengkramah seperti di media social biasa, namun bedanya kita tidak mengetahui siapa di balik akun tersebut, siapa namanya, apa gendernya, bagaimana wujudnya, kita tidak tau, kecuali kita sepakat untuk bertukar jati diri.
Aku kembali duduk dan kembali mengaduk-aduk pasta yang aku pesan dengan perasaan kesal. Dita masih memegangi tanganku, entah apa yang memotivasi dia untuk melakukan itu. Mungkin dia takut aku kembali mengeluarkan emosiku.
***
“aku kangen sekali sama kaka, apa kabar ka? Sekarang pacar kaka siapa?” Tanya gadis cantik itu kepada Rick.
“hmn aku? Baik lah seperti kamu lihat, tambah tampan hahaha. Gak ada single aku”
Rasanya sakit ketika Rick mengucapkan kata single tadi, seperti ada sambaran petir di telingaku, dan pisau menyayat di hati ini, seketika aku merasakan getaran pada tubuhku dan terasa naik suhu badanku.
“huuh narsis kamu ka, eh tapi memang iya sih kamu tambah tampan haha, siapa dulu adeknya? Eh tapi serius kamu  single ka? Yang waktu itu sering kamu ceritain ke aku juga putus? Perasaan udah setahun lebih ka” ann kembali mengangkat suaranya, mengeluarkan senyum indahnya. Bisa aku pastikan pasti dia anak yang periang, dan apa adanya, tidak seperti perempuan kebanyakan. Dan tiba-tiba ann membahasku.
Hening beberapa saat, sampai-sampai alorji yang aku gunakan terdengar decitannya.
“tuhkan akhirnya kamu ngakuin ke tampanan aku hahaha”jawab Rick setelah beberapa saat terdiam dan memasang wajah tertawa dipaksakan, kemudian Rick kembali terdiam untuk menengak larva float yang dia pesan sebelumnya “in sure dek aku single, yang itu udah putus, gak cocok aja sama dia haha”
“Rick benar-benar sudah menutup hatinya, dia sudah mendeklarasikan dirinya single” aku bergumam dalam hati sambil menahan tangis ini. Aku berusaha sekuat aku untuk menahan tangis ini muncul, mataku mulai perih.  Aku hanya bisa menunduk.
“wah aku punya temen jomblo nih, chinese gitu ka, tipe kaka banget deh, tinggi, putih, sipit, rambut panjang haha”
“serius dek?” jawab rick dengan sangat extracted
“hooh, mau liat nih aku ada fotonya”
“coba-coba” Rick menyampingkan badannya mendekati ann, dan mengambil ponsel ann dengan tidak sabaran. Aku yang dari tadi hanya terdiam, seperti patung yang diabaikan, tidak mengerti apa yang mereka bicarakan. aku terus mengunci rapat mulutku. Aku mulai menghayal, bagaimana nantinya jika aku benar-benar kehilangan Rick? Aku sayang dia, banyak hal yang aku lakukan bersama dia. Ini tidak adil setelah banyak yang dia lakukan kepadaku, sekarang dia meninggalkan aku begitu saja. Dan baru genap seminggu kita putus, dia seperti tidak menganggap pernah terjadii apa-apa diantara kita.
“waduhh bener dek cantik, ada contact yang bisa gua hubungin gak?”
“ada kok, kaka mau apa? Pin, WA, path, twitter?
“haha kaya makerlah kamu dek, semuanya deh, lumayan itu” jawab Rick dengan muka sangat sumringah. Dan aku semangkin sakit melihat betapa senangnya wajah Rick memandangi foto yang ada di hp ann itu.
“flow kamu mau liat gak?” tiba-tiba Rick memanggil namaku, aku senang dia memanggilku, berarti dia tidak sepenuhnya lupa kepadaku. Tetapi aku sedih kenapa dia harus menawari aku untuk melihat foto wanita yang sedang Rick lihat.
“eh hmn…. Enggak deh hehe” aku menjawab dengan wajah yang dipaksakan tertawa.
“nanti ya aku bbmin contactnya ka” ”eh by the way  ka flow kenapa? Dari tadi kok lebih banyak diam? Kaka sakit?”
“ah tidak kok hehe, mugkin sedikit ngantuk saja karena ini sudah malam” jawab kok berbohong.
“eh iya flow adek aku selama di jkt kamu  yang nemenin ya kalo dia mau jalan, kan kamu tau aku sibuk. Kamu sama temen-temen kamu kan suka hangout tuh ajak dia ketempat-tempat bagus ya. Mumpung libur juga kan kamunya? Itung-itung refreshing sebelum kamu ujian, gak keberatan kan?”
“eh hah? Hmn… iiya iya Rick” jawab ku shoked saat tau maksud dari meet up ini, dia memintaku untuk menemani adiknya selama ada di Jakarta, huffftt…… ya walaupun aku tidak sesuai harapanku untuk dinner ini bisa balikan lagi dengan Rick, setidaknya Rick masih mempercayai aku, sampai-sampai iya memintaku untuk menemani adiknya. Dan ini bisa aku manfaatkan sebagai celah untuk kembali dekat dengan Rick. “hmn okelah, its fine” aku bergumam dalam hati.
“udah tenang masalah biaya aku yang tanggung flow” jawab Rick.
“iya tenang aja Rick serahin aja sama aku,  oh iya emang ann sampai kapan di Jakarta?”
“aku Cuma semingguan kok hehe, kaka temenin aku hangoutnya kalo lagi gak sibuk aja ka” jawab ann, kembali dengan mengembangkan senyumnya.
***