Skip to content

Commit bdf0bfd

Browse files
committed
update tutorial
1 parent e81bb65 commit bdf0bfd

2 files changed

Lines changed: 214 additions & 8 deletions

File tree

SQL-intro.Rmd

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,16 @@ quiz(
193193

194194
Salah satu fungsi yang sangat berguna dalam melakukan summary dari suatu tabel pada database yaitu `GROUP BY` dan `ORDER BY`. Kedua fungsi tersebut biasanya digunakan secara bersamaan untuk mendapatkan informasi dari suatu tabel yang sudah dikelompokkan dengan kondisi tertentu dan disajikan secara terurut. Seperti nama fungsinya yaitu `GROUP BY` digunakan untuk melakukan summary dengan melakukan pengelompokan berdasarkan kolom tertentu pada tabel yang dapat disajikan secara terurut menggunakan `ORDER BY`.
195195

196+
`GROUP BY` dapat digunakan dengan syntax berikut ini:
197+
198+
```
199+
SELECT column_name(s)
200+
FROM table_name
201+
WHERE condition
202+
GROUP BY column_name(s)
203+
ORDER BY column_name(s)
204+
```
205+
196206
Misalnya, sebagai composer muda, seorang composer ingin membuat suatu lagu dengan genre tertentu yang dapat menggambarkan banyaknya track yang ada. Oleh karena itu, composer tersebut ingin mencoba mencari tahu genre apakah yang dapat mewakili dan menggambarkan total track yang ada.
197207
```{r}
198208
represent_genre <- dbSendQuery(conn = connection, statement = "SELECT g.Name, COUNT(t.TrackId) AS
@@ -274,6 +284,94 @@ quiz(
274284
)
275285
```
276286

287+
## UPDATE dan DELETE
288+
289+
`UPDATE` digunakan untuk melakukan modifikasi nilai pada suatu record dalam tabel. Dalam melakukan modifikasi, `UPDATE` selalu dibarengi dengan perintah `SET.` Berikut ini adalah code perintah dalam menggunakan `UPDATE`:
290+
291+
```
292+
UPDATE table_name
293+
SET column1 = value1, column2 = value2, ...
294+
WHERE condition
295+
```
296+
297+
Misalnya kita ingin mengubah nama genre "Rock" menjadi "Rock Metal" dimana GenreId nya merupakan 1 pada tabel `genres`. Namun sebelumnya, agar kita memiliki 2 database yang berbeda dari satu sumber database dengan tujuan agar tetap memiliki yang asli, kita akan coba melakukan koneksi database ulang dengan nama object koneksinya berbeda.
298+
```{r}
299+
conn_update <- dbConnect(SQLite(), "data_input/chinook-update.db")
300+
dbListTables(conn_update)
301+
```
302+
303+
304+
```{r}
305+
dbSendQuery(conn = conn_update, statement = "UPDATE genres SET Name = 'Rock Metal' WHERE GenreId = 1")
306+
```
307+
308+
Ketika kita melakukan update informasi pada tabel dalam database, maka kita akan diberikan informasi berapa banyak perubahan yang terjadi. Untuk dapat melihat perubahan yang terjadi, kita harus menampilkan secara utuh kembali atau kolom yang ingin kita tampilkan saja.
309+
310+
```{r}
311+
dbFetch(dbSendQuery(conn = conn_update, statement = "SELECT * FROM genres"))
312+
```
313+
314+
Berbeda dengan `UPDATE`, `DELETE` statement digunakan untuk menghapus record atau baris yang sudah ada pada tabel. `DELETE` dapat kita gunakan dengan perintah berikut :
315+
316+
```
317+
DELETE FROM table_name
318+
WHERE condition
319+
```
320+
321+
Misalnya, disini kita akan coba hapus row pertama pada tabel `genres` yaitu yang menyimpan informasi GenreId = 1 dan Name = 'Rock Metal'.
322+
```{r}
323+
dbSendQuery(conn = conn_update, statement = "DELETE FROM genres WHERE Name = 'Rock Metal'")
324+
```
325+
326+
Setelah melakukan perubahan menggunakan `DELETE`, kita diberikan informasi banyaknya perubahan yang terjadi. Hasil dari perubahan tersebut dapat kita tampilkan lagi pada tabel `genres`.
327+
```{r}
328+
dbFetch(dbSendQuery(conn = conn_update, statement = "SELECT * FROM genres"))
329+
```
330+
331+
Tabel `genres` yang tadinya memiliki 25 baris, karena dilakukan penghapusan 1 baris, maka tinggal tersisa 24 baris.
332+
333+
Kegunaan dari `UPDATE` dan `DELETE` ini akan sangat berguna apabila terdapat perubahan data dari customer (jika itu data customer) agar data yang kita miliki lebih aktual.
334+
335+
### Latihan
336+
337+
1. Lakukanlah perubahan data pada tabel `customers` dimana customer yang memiliki email dengan ekstensi "apple" maka ubah nama company-nya menjadi "Apple Inc.". Berapa banyak customer yang berasal dari "Apple Inc."?
338+
339+
```{r exam1, exercise = TRUE}
340+
341+
```
342+
```{r exam1-hint}
343+
# Anda dapat menggunakan bantuan fungsi `LIKE` dan beberapa wildcard untuk melakukan perubahan. Gunakan `conn_update` untuk mengerjakan
344+
```
345+
346+
2. Setelah mendapatkan informasi banyaknya customer yang berasal dari company "Apple Inc.", coba lakukanlah pengapusan record customer yang berasal dari company "Apple Inc." tersebut. Berapa banyak data customer yang kita miliki?
347+
348+
```{r exam2, exercise = TRUE}
277349
350+
```
278351

352+
```{r exam2-hint}
353+
# Gunakan `conn_update` untuk mengerjakan
354+
```
279355

356+
Pilihlah jawaban dibawah ini yang paling tepat untuk menjawab beberapa pertanyaan diatas.
357+
358+
```{r quiz3, echo = FALSE}
359+
quiz(
360+
question("Berapa banyak customer yang berasal dari Apple Inc.?",
361+
answer("8"),
362+
answer("49"),
363+
answer("7", correct = TRUE),
364+
answer("14"),
365+
incorrect = "Kita hanya menggunakan informasi dari tabel `curtomers` aja",
366+
allow_retry = TRUE
367+
),
368+
question("Berapa banyak data customer yang kita miliki? ",
369+
answer("52", correct = TRUE),
370+
answer("7"),
371+
answer("59"),
372+
answer("48"),
373+
incorrect = "Jangan lupa gunakan connection `conn_update` yaa",
374+
allow_retry = TRUE
375+
)
376+
)
377+
```

0 commit comments

Comments
 (0)