Query database di postgresql penjelasan sederaharnya cara kita untuk mendapatkan data yang kita inginkan dalam bentuk table baru yang kita dapatkan dari tabel tabel yang tersedia di database yang sama.
Dalam praktik nge query databases ada dua cara melalui terminal (shell), atau melalui GUI SQL (seperti: pgAdmin, Dbeaver, dan sejenisnya). Kalo aku sendiri lebih nyaman pakai terminal (shell zsh).
Prasyarat sebelum nge-query harus punya:
- postgresql
- databases
- dbeaver (untuk menampilkan ER Diagram dari databases yang sudah ada)
Dalam case ini dipakai database dengan nama dvd_rent. Pastikan server postgresql sudah berjalan lalu masuk ke database dvd_rent
:
$ psql dvd_rent
lalu akan muncul seperti ini :
$ psql dvd_rent
psql (12.4)
Type "help" for help.
dvd_rent=# [command line sql ketik disini, pastikan diakhiri dengan titik koma]
sebelum nge query setidaknya kita punya ER(Entity Relational) Diagram supaya kita punya gambaran (visualization databases), untuk databases dvd_rent bentuknya seperti ini:
cara untuk menampilkan ER Diagram seperti gambar diatas di dbeaver Klik dvd_rent(nama database) -> Schema -> Table, lalu klik kanan Table pilih opsi View Diagram, maka di jendala sebelah kanan akan muncul diagram.
Selain dengan ER Diagram kita bisa melihat tabel table yang punya entity relation dengan mengetikkan perintah :
\dt
contoh hasilnya:
dvd_rent=# \dt
List of relations
Schema | Name | Type | Owner
--------+---------------+-------+----------
public | actor | table | metalbee
public | address | table | metalbee
public | category | table | metalbee
public | city | table | metalbee
public | country | table | metalbee
public | customer | table | metalbee
public | film | table | metalbee
public | film_actor | table | metalbee
public | film_category | table | metalbee
public | inventory | table | metalbee
public | language | table | metalbee
public | payment | table | metalbee
public | rental | table | metalbee
public | staff | table | metalbee
public | store | table | metalbee
(15 rows)
Disini praktik query nya melalui terminal. OK, kita akan melakukan beberapa query yang nanti hasilnya akan menjadi seperti gambar gambar table dibawah:
Query Tabel Dengan column: first_name, custome_id, dan total_rental
Untuk bisa menghasilkan tabel seperti diatas caranya:
Keterangan:
SELECT film.film_id, title, name AS category_name
statement memilih column dari table table yang ada, knapa untuk column film.film_id
? karena film_id
diambil dari table film (lihat ER Diagram).
kalo misal ditulis SELECT film.film_id, name AS category_name, title
, maka hasilnya tabel dari kiri kekanan pun akan menjadi column 1: film_id, column 2: category_name, column 3:title, jadi posisi column yang kita SELECT menentukan urutan kolom dari kiri kekanan.
khusus untuk column name namAnya diubah menjadi category_name, cara mengubah namanya [nama column didalam tabel] AS [nama column baru]
, misal:
name AS category_name
statement FROM rental LEFT JOIN customer ON customer.customer_id = rental.customer_id
origin tabelnya berasal dari table rental di join memalui statement left join nah untuk table customer kita samain key customer_id karena tabel customer dan rental memiliki key yang sama (customer_id). untuk bagian agregate key bisa di bolak balik bisa seperti ini ON rental.customer_id = customer.customer_id
. Nah untuk penggunaan prefix JOIN seperti LEFT RIGHT atau INNER, ini ada kaitannya dengan performa (per milisecond) query data.
statement GROUP BY customer.customer_id, first_name, rental.customer_id
untuk nge groupin banyak customer id yg sama dalam tabel baru yang dibuat.
statement ORDER BY customer.first_name ASC
untuk ngurutin secara ascending berdasarkan column first_name.
atau pakai code query dengan cara nge aliasin dari nama tabel, contohnya bisa lihat di bawah ini:
Query Tabel Dengan column: customer_id, total_payment.
Untuk bisa menghasilkan tabel seperti diatas caranya:
Query Tabel Dengan column: film_id, title, category_name, category_id.
Untuk bisa menghasilkan tabel seperti diatas caranya: