Konsep Basis Data · Pelajaran 1 dari 9
Apa itu basis data
8 menit baca · BelajarCode
Hampir setiap aplikasi menyimpan data: akun pengguna, transaksi, nilai siswa, stok barang. Data itu disimpan di basis data (database), dan dikelola oleh perangkat lunak yang disebut DBMS (Database Management System), misalnya MySQL, PostgreSQL, SQLite, dan SQL Server.
Kenapa tidak cukup spreadsheet?
| Kebutuhan | Spreadsheet | Basis data |
|---|---|---|
| Jumlah data | Ribuan baris mulai berat | Jutaan baris tetap cepat dengan indeks |
| Banyak pengguna sekaligus | Rawan bentrok | Diatur dengan aman |
| Aturan data | Mudah diisi sembarangan | Tipe data, kunci, dan batasan dipaksakan |
| Hubungan antartabel | Disalin manual | Dihubungkan dengan kunci |
| Diakses program | Terbatas | Lewat SQL dari bahasa apa pun |
Model relasional
Basis data relasional menyimpan data dalam tabel. Setiap tabel punya kolom (atribut) dengan tipe tertentu, dan setiap baris adalah satu catatan. Tabel-tabel dihubungkan lewat kolom kunci, dibahas di pelajaran berikutnya.
Bahasa untuk berbicara dengan basis data relasional adalah SQL (Structured Query Language). Perintah SQL inti hampir sama di semua DBMS. Contoh di kursus ini memakai SQLite, dan sebagian besar bisa langsung dipakai di MySQL maupun PostgreSQL.
1CREATE TABLE siswa (2 id INTEGER PRIMARY KEY,3 nama TEXT NOT NULL,4 kelas TEXT,5 nilai INTEGER6);78INSERT INTO siswa (nama, kelas, nilai) VALUES9 ('Andi', 'XI-1', 80),10 ('Bela', 'XI-2', 92),11 ('Citra', 'XI-1', 75);1213SELECT * FROM siswa;id | nama | kelas | nilai 1 | Andi | XI-1 | 80 2 | Bela | XI-2 | 92 3 | Citra | XI-1 | 75
CREATE TABLEmembuat tabel beserta kolom dan tipenya.INSERT INTOmenambah baris. Kolomidterisi otomatis karenaINTEGER PRIMARY KEY.SELECT * FROM siswamengambil semua kolom (*) dari tabel siswa.- Kata kunci SQL tidak membedakan huruf besar dan kecil, tetapi biasa ditulis kapital supaya mudah dibedakan dari nama tabel dan kolom.
Mencoba SQL di Playground
Playground belum menjalankan SQL secara langsung, tetapi Python punya modul sqlite3 bawaan. Salin program ini ke Playground Python, lalu ganti isi perintah SQL-nya untuk mencoba contoh-contoh di kursus ini:
1import sqlite323db = sqlite3.connect(":memory:")4db.executescript("""5CREATE TABLE siswa (id INTEGER PRIMARY KEY, nama TEXT NOT NULL, kelas TEXT, nilai INTEGER);6INSERT INTO siswa (nama, kelas, nilai) VALUES ('Andi', 'XI-1', 80), ('Bela', 'XI-2', 92), ('Citra', 'XI-1', 75);7""")89hasil = db.execute("SELECT * FROM siswa")10print(" | ".join(kolom[0] for kolom in hasil.description))11for baris in hasil:12 print(" | ".join(str(x) for x in baris))id | nama | kelas | nilai 1 | Andi | XI-1 | 80 2 | Bela | XI-2 | 92 3 | Citra | XI-1 | 75
":memory:" membuat basis data sementara di memori, jadi tidak ada file yang dibuat.
Cek pemahaman
Apa peran DBMS seperti MySQL atau PostgreSQL?
Latihan
Tabel buku
Tulis perintah SQL untuk membuat tabel buku dengan kolom id, judul (wajib diisi), penulis, tahun terbit, dan stok. Masukkan dua buku, lalu tampilkan semuanya.
Pembahasan
1CREATE TABLE buku (2 id INTEGER PRIMARY KEY,3 judul TEXT NOT NULL,4 penulis TEXT,5 tahun INTEGER,6 stok INTEGER DEFAULT 07);89INSERT INTO buku (judul, penulis, tahun, stok) VALUES10 ('Dasar Pemrograman', 'Tim Penulis A', 2021, 5),11 ('Basis Data Relasional', 'Tim Penulis B', 2023, 2);1213SELECT * FROM buku;id | judul | penulis | tahun | stok 1 | Dasar Pemrograman | Tim Penulis A | 2021 | 5 2 | Basis Data Relasional | Tim Penulis B | 2023 | 2
DEFAULT 0 membuat stok bernilai 0 jika tidak diisi saat menambah buku.