SQL Basic

00. Database

  • Database adalah kumpulan data yang tersusun secara terstruktur agar mudah diakses, dikelola, diperbaharui dan dianalisis. Database terbagi menjadi dua jenis, yaitu database relasional dan database non-relational.
  • Database relasional adalah jenis database yang menyimpan data dalam tabel (table) yang saling berhubungan melalui relasi (relationship). Setiap tabel terdiri dari baris (row/record) dan kolom (column/field). Satu baris sama dengan satu data atau satu entitas, sedangkan satu kolom berisi informasi tentang data tersebut.
  • Database non-relasional (atau NoSQL - Not Only SQL) adalah jenis database yang tidak menyimpan data dalam tabel yang saling berelasi seperti database relasional. Sebaliknya, data dapat disimpan dalam berbagai format, seperti dokumen, key-value, kolom, atau graf.
01. RDBMS
  • RDBMS (Relational Database Management System) adalah software yang digunakan untuk mengelola database relasional tersebut.
  • RDBMS memiliki berbagai fungsi, di antaranya:
    • Membuat database dan tabel.
    • Menambah, mengubah, dan menghapus data.
    • Menjalankan query menggunakan SQL.
    • Mengatur hubungan (relasi) antar tabel.
    • Menjaga keamanan data melalui hak akses pengguna.
    • Menjaga konsistensi data dengan transaksi (ACID).
    • Membuat backup dan melakukan recovery data.
  • Contoh RDMBS adalah MySQL, PostgreSQL, Microsoft SQL Server, Oracle Database, SQLite, dan MariaDB.
  • Conton NoSQL DBMS (Database Management System) atau NoSQL Database Management System adalah MongoDB (document database), Redis (key-value database), Apache Cassandra (column database), Neo4j (graph database).
02. Pengenalan SQL
  • SQL (Structured Query Language) adalah bahasa yang digunakan untuk berkomunikasi dengan database relasional. SQL memungkinkan kita membuat database, menyimpan data, mengambil data, mengubah data, dan menghapus data. 
  • SQL juga memungkinkan pengguna untuk membuat dan mengelola struktur database, seperti tabel, indeks, dan skema. 
03. Database PostgreSQL
  • PostgreSQL adalah RDBMS (Relational Database Management System) open source yang digunakan untuk mengelola database relasional menggunakan SQL. 
  • PostgreSQL terkenal karena stabil, kaya fitur, dan mampu menangani data dalam skala kecil maupun besar, sehingga menjadi salah satu pilihan utama di industri.
04. Perintah SQL PostgreSQL
  • Tanda ; dalam query SQL akan mengeksekusi query. Jadi query SQL wajib ditutup dengan ; (titik koma).
  • Dalam PostgreSQL, ada beberapa perintah SQL yang digunakan untuk mengelola database (bukan tabel), diantaranya:
    • Membuat database baru: CREATE DATABASE nama_database;
    • Menghapus database (⚠️ Peringatan: Perintah ini akan menghapus database beserta seluruh isinya secara permanen): DROP DATABASE nama_database;
    • Melihat database yang sedang digunakan: SELECT current_database();
    • Mengubah nama database: ALTER DATABASE nama_lama RENAME TO nama_baru;
05. Perintah help di prompt psql
  • psql (command-line PostgreSQL) adalah alat untuk berkomunikasi/berinteraksi dengan server PostgreSQL, menjalankan perintah SQL, dan melakukan administrasi database melalui terminal.
  • Perintah help di Command Prompt (CMD) digunakan untuk menampilkan daftar perintah yang tersedia beserta penjelasan singkatnya. Hasil outputnya antara lain:
    • \copyright untuk melihat informasi lisensi dan hak cipta PostgreSQL.
    • \h untuk melihat semua perintah SQL.
    • \? untuk melihat semua meta-command psql, misalnya: \l (melihat database), \dt (melihat daftar tabel), \d (deskripsi tabel), \c (pindah database), \i (menjalankan file SQL), \q (keluar).
  • Perintah psql lainnya sebagai berikut:
    • \list atau \l melihat semua database.
    • \h SELECT untuk melihat bantuan khusus perintah SELECT.
    • \g akan mengeksekusi query yang sudah diketik selain titik koma.
    • \! memberi tahu psql untuk menjalankan perintah di shell (terminal). Contoh penggunaan dengan perintah shell, yaitu \! clear; akan membersihkan layar terminal (di Linux/macOS).
    • connect nama_database; atau \c nama_database; menggunakan/terhubung ke database tertentu.
06. Perintah shell
  • Shell adalah program yang menjadi perantara antara pengguna dan sistem operasi.
  • Perintah shell adalah perintah yang dijalankan langsung oleh sistem operasi melalui terminal atau command line, bukan perintah SQL. Contoh perintah shell antara lain:
    • dir menampilkan daftar file dan folder.
    • cd berpindah folder.
    • cls atau clear membersihkan layar.
    • mkdir membuat folder.
    • del menghapus file.
    • copy menyalin file.
    • move memindahkan file.
07. Tipe Data PostgreSQL
  •  Tipe Data Numerik


    Keterangan:
    • Tipe data SMALLINT, INTEGER (INT), dan BIGINT digunakan untuk menyimpan angka bulat (tanpa angka di belakang koma). 
    • SMALLINT digunakan jika angka yang disimpan relatif kecil (misalnya umur, nilai ujian, jumlah anak). 
    • INTEGER paling sering digunakan untuk angka bulat umum (misalnya ID, stok barang, jumlah pelanggan). 
    • BIGINT digunakan jika angka bisa sangat besar (misalnya jumlah view YouTube, jumlah transaksi e-commerce, data sensor).
    • Tipe data REAL, DOUBLE PRECISION, NUMERIC (p, s), DECIMAL (p, s) digunakan untuk angka yang memiliki koma/desimal.
    • REAL digunakan jika ukuran angka kecil tapi presisi terbatas (misalnya tinggi). Sebagai contoh, tingginya 170.123456 yang disimpan mungkin 170.12346 karena hanya sekitar 6 digit signifikan.
    • DOUBLE PRECISION digunakan jika presisinya tinggi (misalnya nilai pi). Sebagai contoh nilai pi 3.141592653589793 masih dapat disimpan dengan cukup akurat. DOUBLE menggunakan memori lebih besar tetapi hasilnya lebih akurat.
    • NUMERIC (p, s) menyimpan angka desimal secara tepat (misalnya harga, saldo, pajak, diskon). p adalah jumlah maksimal digit dan s adalah jumlah digit dibelakang koma. Contoh: NUMERIC (10, 2) artinya maksimal 10 digit dan 2 digit di belakang koma, misalnya 12345678.99.
    • DECIMAL (p, s) sama seperti NUMERIC. 
    • Tipe data SERIAL dan BIGSERIAL digunakan untuk membuat angka bertambah otomatis (auto increment).
    • SERIAL dipakai jika pimary key pada tabel berukuran normal. Sedangkan BIGSERIAL jika primary key pada tabel berukuran sangat besar.
  • Tipe Data Karakter


    Keterangan:
    • CHAR (Character) digunakan untuk data yang selalu memiliki panjang yang sama, misalnya: kode negara, jenis kelamin, kode mata uang.
    • VARCHAR (Variable Character) digunakan untuk data dengan panjang yang bervariasi, tetapi memiliki batas maksimum, misalnya: nama, email, nama produk, kota, alamat singkat.
    • TEXT digunakan untuk menyimpan teks tanpa menentukan batas panjang, misalnya: deskripsi produk, artikel, komentar pengguna, catatan, log.
  • Tipe Data Waktu


    Keterangan:
    • Tipe data DATE cocok digunakan untuk tanggal lahir, tanggal masuk kerja, tanggal transaksi, dan tanggal pemesanan.
    • Tipe data TIME cocok digunakan untuk jam buka toko, jam masuk kantor, jadwal pelajaran, dan waktu alarm.
    • Tipe data TIMESTAMP cocok digunakan untuk waktu transaksi, waktu login, waktu checkout, dan waktu upload file.
    • Tipe data INTERVAL dapat digunakan untuk perhitungan, misalnya durasi pengiriman, lama proses, dan selisih waktu.
  • Tipe Data BOOLEAN
    Tipe data BOOLEAN digunakan untuk menyimpan nilai kebenaran dengan tiga kemungkinan:
    • TRUE (benar)
    • FALSE (salah)
    • NULL (belum diketahui atau belum diisi)
  • Di dalam postgreSQL terdapat berbagai macam tipe data, lengkapnya dapat dilihat disini: https://www.postgresql.org/docs/current/datatype.html 
08. Contraints
  • Dalam PostgreSQL (psql), constraint adalah aturan yang diterapkan pada kolom tabel untuk berbagai macam kebutuhan. Jenis-jenis constraint sebagai berikut:
  • PRIMARY KEY : Menjamin bahwa setiap baris memiliki identitas yang unik dan tidak boleh NULL. Di dalam sebuah tabel, hanya terdapat satu kolom PRIMARY KEY, yaitu biasanya pada kolom id atau kode unik.

    Contoh penggunaan PRIMARY KEY pada kolom id:
    CREATE TABLE customers(
    		id SERIAL PRIMARY KEY,
    		name VARCHAR(100),
    		age SMALLINT,
    		email text,
    		address text
    );
    Keterangan:
    • Tidak boleh ada id yang sama.
    • id tidak boleh NULL.
  • UNIQUE: Memastikan bahwa semua nilai dalam suatu kolom harus unik (tidak boleh ada duplikasi). Perbedaan dengan PRIMARY KEY, kita bisa membuat beberapa kolom UNIQUE dalam satu tabel, sedangkan PRIMARY KEY hanya boleh satu.

    Contoh penggunaan UNIQUE pada kolom email:
    CREATE TABLE customers(
    		id SERIAL PRIMARY KEY,
    		name VARCHAR(100),
    		age SMALLINT,
    		email text UNIQUE,
    		address text
    );
    Keterangan:
    • kolom email datanya harus unik (tidak boleh ada email yang sama di kolom email).
  • NOT NULL: Memastikan bahwa kolom tidak boleh berisi nilai NULL.
    Contoh penggunaan NOT NULL pada kolom name dan email:
    CREATE TABLE customers(
    		id SERIAL PRIMARY KEY,
    		name VARCHAR(100) NOT NULL,
    		age SMALLINT,
    		email text UNIQUE NOT NULL,
    		address text
    );
    Keterangan:
    •  Kolom name dan email tidak boleh kosong datanya (wajib diisi).  
  • CHECK: Memungkinkan kita untuk menentukan kondisi tertentu yang harus dipenuhi setiap baris.
    Contoh penggunaan CHECK pada kolom age:
    CREATE TABLE customers(
    		id SERIAL PRIMARY KEY,
    		name VARCHAR(100) NOT NULL,
    		age SMALLINT CHECK (age>17),
    		email text UNIQUE NOT NULL,
    		address text
    );
    Keterangan:
    • Ketentuan di kolom age harus lebih dari 17 tahun. 
  • DEFAULT:  Memberikan nilai default/bawaan pada suatu kolom jika pengguna tidak memasukkan nilai secara eksplisit.
    Contoh penggunaan DEFAULT pada kolom address:
    CREATE TABLE customers(
    		id SERIAL PRIMARY KEY,
    		name VARCHAR(100) NOT NULL,
    		age SMALLINT CHECK (age>17),
    		email text UNIQUE NOT NULL,
    		address text DEFAULT 'no address'
    );
    Keterangan:
    •  Kolom address jika tidak diisi maka akan otomatis diisi dengan no address.
09. Perintah SQL Membuat Tabel

Sintaks Dasar:
CREATE TABLE nama_tabel (
    nama_kolom1 TIPE_DATA,
    nama_kolom2 TIPE_DATA,
    nama_kolom3 TIPE_DATA
);
Keterangan:
  • CREATE TABLE : perintah SQL untuk membuat tabel baru.
  • nama_tabel : nama tabel yang ingin dibuat.
  • nama_kolom : nama setiap kolom.
  • TIPE_DATA : jenis data yang akan disimpan pada kolom tersebut.
09. SQL: Menambahkan Data ke Tabel

Sintaks Dasar:
INSERT INTO nama_tabel (kolom1, kolom2, kolom3)
VALUES (nilai1, nilai2, nilai3);
Keterangan:
  • INSERT INTO : perintah SQL untuk menambahkan data ke tabel.
  • nama_tabel : nama tabel tujuan.
  • (kolom1, kolom2, ...) : kolom yang akan diisi.
  • VALUES ( ... ) : nilai yang dimasukkan ke setiap kolom.



https://lynk.id/bayoudata