SQL — DDL dan DML
| English | Bahasa Indonesia |
|---|---|
| SQL/ˌes kjuː ˈel/ | SQL |
| Data Definition Language/ˈdeɪtə ˌdefɪˈnɪʃn ˈlæŋɡwɪdʒ/ | Bahasa Definisi Data |
| Data Manipulation Language/ˈdeɪtə məˌnɪpjʊˈleɪʃn ˈlæŋɡwɪdʒ/ | Bahasa Manipulasi Data |
| INNER JOIN/ˈɪnə dʒɔɪn/ | INNER JOIN |
| aggregate functions/ˈæɡrɪɡeɪt ˈfʌŋkʃnz/ | fungsi agregat |
Bahasa yang juga digunakan para programmer kakek-nenek Anda
- Pada tahun 1974, dua peneliti IBM merancang bahasa kueri untuk tabel Codd dan menamainya SEQUEL: Structured English Query Language. Namanya dipotong menjadi SQL, dan bahasa ini tidak pernah lenyap.
- Lima puluh tahun kemudian, setiap bank, maskapai, rumah sakit, dan situs web yang Anda gunakan berjalan di atasnya. Seorang siswa yang mengetik
SELECThari ini sedang menulis pernyataan yang sama dengan yang ditulis programmer sebelum orang tuanya lahir. - Ini memiliki dua bagian, dan ujian meminta Anda membaca salah satu dan menulis keduanya: Data Definition Language yang membangun struktur, dan Data Manipulation Language yang mengisi, mengubah, dan menanyakan data.
- Pelajaran ini adalah subset SQL dalam silabus, pernyataan demi pernyataan, dengan poin yang dibebankan pada masing-masing.
DDL dan DML
- DBMS melaksanakan semua pembuatan dan modifikasi struktur basis data melalui DDL-nya: membuat database, membuat dan mengubah tabel, menambahkan kunci.
- Ia melaksanakan semua kueri dan pemeliharaan data melalui DML-nya: memilih, menyisipkan, memperbarui, dan menghapus baris.
- SQL adalah standar industri untuk keduanya. Mengelompokkan pernyataan ke bagian yang tepat adalah pertanyaan satu poin umum:
CREATE TABLEadalah DDL,SELECTadalah DML.

Struktur di satu sisi, data di sisi lain
Manakah yang merupakan bagian dari Bahasa Definisi Data (DDL)?
DDL mengubah struktur (CREATE, ALTER, DROP). SELECT/INSERT/UPDATE/DELETE adalah DML (bekerja dengan data).
DDL mendefinisikan struktur (misalnya CREATE TABLE), sementara DML bekerja dengan data di dalamnya (SELECT, INSERT, UPDATE, DELETE).
Definisi vs Manipulasi: DDL membentuk tabel; DML membaca dan mengubah baris.
DDL: membuat struktur
CREATE DATABASE Shop;
CREATE TABLE CUSTOMER (
CustomerID INTEGER,
Name VARCHAR(50),
Town VARCHAR(30),
Joined DATE,
Active BOOLEAN,
PRIMARY KEY (CustomerID)
);
ALTER TABLE CUSTOMER ADD Email VARCHAR(100);
- Tipe data dalam silabus:
CHARACTER(jumlah karakter tetap),VARCHAR(n)(hingga n karakter),BOOLEAN,INTEGER,REAL,DATE,TIME. PRIMARY KEY (field)memberi nama kunci;ALTER TABLE … ADDmenambahkan atribut ke tabel yang sudah ada.
Cocokkan setiap item data dengan tipe data SQL untuknya.
Dua keadaan, teks panjang variabel, angka dengan bagian pecahan, tanggal kalender. INTEGER digunakan untuk jumlah bulat dan TIME untuk waktu dalam sehari.
Contoh terpecahkan: dua tabel dengan kunci asing
- Tulis SQL untuk membuat tabel
ORDERSdenganOrderIDsebagai kunci utama,CustomerIDsebagai kunci asing keCUSTOMER, dan sebuahOrderDate.
CREATE TABLE ORDERS (
OrderID INTEGER,
CustomerID INTEGER,
OrderDate DATE,
PRIMARY KEY (OrderID),
FOREIGN KEY (CustomerID) REFERENCES CUSTOMER(CustomerID)
);
- Poin-poinnya:
CREATE TABLEdengan nama; setiap atribut dengan tipe yang sesuai;PRIMARY KEY;FOREIGN KEY … REFERENCESyang menyebutkan tabel dan bidangnya.
DML: mengajukan pertanyaan dengan SELECT
SELECT Name, Town
FROM CUSTOMER
WHERE Town = 'London'
ORDER BY Name ASC;
SELECTmencantumkan bidang yang akan ditampilkan (*untuk semua),FROMmenyebut nama tabel,WHEREhanya menampilkan baris yang memenuhi syarat,ORDER BYmengurutkan hasil,ASCatauDESC.- String masuk dalam tanda kutip tunggal; angka tidak. Perbandingan:
=,<,>,<=,>=,<>; kondisi digabungkan denganAND,OR,NOT;LIKE 'A%'cocok dengan teks yang dimulai dengan A;BETWEEN 10 AND 20memberikan rentang.

Hanya baris yang lolos WHERE yang mencapai hasil
Kata kunci SQL manakah yang mengambil data dari tabel? (satu kata)
SELECT mencantumkan bidang yang akan diambil; FROM menyebut nama tabel.
Klausa WHERE dalam pernyataan SELECT:
WHERE memfilter baris berdasarkan kondisi; ORDER BY mengurutkan; daftar SELECT memilih kolom.
Contoh terpecahkan: tulis kueri
- Tulis skrip SQL untuk menampilkan nama dan alamat email semua pelanggan aktif di Manchester, diurutkan secara alfabetis berdasarkan nama.
SELECT Name, Email
FROM CUSTOMER
WHERE Town = 'Manchester' AND Active = TRUE
ORDER BY Name;
- Satu poin untuk setiap bidang yang benar setelah
SELECT; tabel yang benar setelahFROM;WHEREdengan kedua kondisi dan string dalam tanda kutip tunggal;ORDER BY Name. Gunakan nama tabel dan bidang yang persis seperti yang diberikan soal.
Susun klausa-klausa dalam pernyataan SELECT sesuai urutan penulisannya.
Field, tabel, filter, urut. ORDER BY selalu terakhir, dan pernyataan diakhiri dengan titik koma.
Dua tabel: INNER JOIN
SELECT CUSTOMER.Name, ORDERS.OrderDate
FROM CUSTOMER INNER JOIN ORDERS
ON CUSTOMER.CustomerID = ORDERS.CustomerID
WHERE ORDERS.OrderDate >= '2024-01-01';
- INNER JOIN menggabungkan baris dari dua tabel di mana kunci asing di satu tabel cocok dengan kunci utama di tabel lainnya, yang disebutkan dalam klausa
ON. - Berikan awalan bidang dengan nama tabelnya ketika nama yang sama muncul di kedua tabel. Silabus meminta kueri untuk paling banyak dua tabel.
Menggabungkan dua tabel dengan INNER JOIN
Penggabungan (join) mencocokkan baris di mana kunci asing sama dengan kunci utama — di sini Orders.CustomerID = Customer.CustomerID — dan menggabungkan setiap pasangan yang cocok menjadi satu baris yang lebih lebar.
INNER JOIN digunakan untuk:
JOIN menggabungkan dua tabel berdasarkan relasi (biasanya foreign key yang cocok dengan primary key).
Fungsi Agregat dan GROUP BY
SELECT CustomerID, COUNT(*) AS NumOrders
FROM ORDERS
GROUP BY CustomerID;
SELECT AVG(Price) FROM PRODUCT;
SELECT SUM(Quantity) FROM ORDER_LINE WHERE OrderID = 1042;
- Fungsi agregat merangkum banyak baris menjadi satu nilai:
COUNTmenghitung baris,SUMjumlah total,AVGrata-rata. GROUP BYmembuat satu baris ringkasan per nilai bidang: jumlah pesanan per pelanggan. Tanpa itu, fungsi agregat meringkas seluruh tabel.
Apa yang dikembalikan oleh COUNT(*)?
COUNT(*) menghitung baris; SUM/AVG/MIN/MAX adalah fungsi agregat lainnya.
Untuk menampilkan jumlah pesanan yang dibuat oleh setiap pelanggan, query memerlukan: pilih semua yang berlaku.
Hitung baris, satu grup per pelanggan, dari tabel pesanan. Pengurutan bersifat opsional.
Mengubah data: INSERT, UPDATE, DELETE
INSERT INTO CUSTOMER (CustomerID, Name, Town, Joined, Active)
VALUES (101, 'Ada Lovelace', 'London', '2024-03-01', TRUE);
UPDATE CUSTOMER SET Town = 'Bristol' WHERE CustomerID = 101;
DELETE FROM CUSTOMER WHERE CustomerID = 101;
INSERT INTO … VALUESmenambahkan baris: daftar bidangnya, lalu nilainya dalam urutan yang sama.UPDATE … SET … WHEREmengubah baris yang sesuai.DELETE FROM … WHEREmenghapusnya.- Selalu berikan
UPDATEdanDELETEklausaWHERE, atau perubahan akan memengaruhi setiap baris di tabel.
Apa yang terjadi jika Anda menjalankan UPDATE atau DELETE tanpa klausa WHERE?
Tanpa WHERE, operasi mempengaruhi semua baris — kesalahan umum dan berbahaya.
Cocokkan setiap pernyataan DML dengan apa yang dilakukannya.
SELECT membaca; INSERT menambah; UPDATE mengubah; DELETE menghapus — empat kata kerja inti DML.
Contoh terpecahkan: baca pernyataan
SELECT Name
FROM CUSTOMER INNER JOIN ORDERS
ON CUSTOMER.CustomerID = ORDERS.CustomerID
WHERE OrderDate = '2024-05-01'
ORDER BY Name DESC;
- Nyatakan apa yang dihasilkan skrip ini. Nama setiap pelanggan yang melakukan pemesanan pada 1 Mei 2024, satu baris per pemesanan seperti itu, dalam urutan alfabet terbalik.
- Bacalah dalam urutan eksekusi: gabungkan tabel berdasarkan ID pelanggan, simpan baris untuk tanggal tersebut, outputkan nama, urutkan menurun. Pelanggan dengan dua pesanan pada hari itu muncul dua kali.
⟦⟧ Nilai yang sering terlewat
- String dalam tanda kutip tunggal, angka tanpa tanda:
Town = 'London',CustomerID = 101. ORDER BYdatang setelahWHERE; sebuah join memerlukan klausaON; setiap statement diakhiri dengan titik koma.COUNT(*)menghitung baris, bukan nilai unik; pertanyaan per-kelompok memerlukanGROUP BY.CREATE,ALTERdanPRIMARY KEYadalah DDL;SELECT,INSERT,UPDATE,DELETEadalah DML. Gunakan nama persis seperti yang diberikan soal.
Anda telah memahaminya
- DDL membuat dan mengubah struktur:
CREATE DATABASE,CREATE TABLEdengan atribut bertipe,PRIMARY KEY,FOREIGN KEY … REFERENCES,ALTER TABLE … ADD· DML bekerja dengan data - Jenis:
CHARACTER,VARCHAR(n),BOOLEAN,INTEGER,REAL,DATE,TIME SELECT fields FROM table WHERE condition ORDER BY field;INNER JOIN … ONuntuk dua tabel;COUNT,SUM,AVGdenganGROUP BYuntuk satu baris per kelompokINSERT INTO … VALUES,UPDATE … SET … WHERE,DELETE FROM … WHERE: tidak pernah ada update atau delete tanpaWHERE