Ringkasan :dalam tutorial ini, Anda akan belajar bagaimana menggunakan SQLite REPLACE
pernyataan untuk menyisipkan atau mengganti baris yang ada dalam tabel.
Pengantar SQLite REPLACE
pernyataan
Ide dari REPLACE
pernyataan adalah bahwa ketika UNIQUE
atau PRIMARY KEY
pelanggaran kendala terjadi, ia melakukan hal berikut:
- Pertama, hapus baris yang ada yang menyebabkan pelanggaran batasan.
- Kedua, masukkan baris baru.
Pada langkah kedua, jika ada pelanggaran batasan mis., NOT NULL
kendala terjadi, REPLACE
pernyataan akan membatalkan tindakan dan mengembalikan transaksi.
Berikut ini mengilustrasikan sintaks REPLACE
pernyataan.
INSERT OR REPLACE INTO table(column_list)
VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
Atau dalam bentuk singkat:
REPLACE INTO table(column_list)
VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
Mari kita lihat beberapa contoh penggunaan SQLite REPLACE
pernyataan untuk memahami cara kerjanya.
SQLite REPLACE
contoh pernyataan
Pertama, buat tabel baru bernama positions
dengan struktur berikut.
CREATE TABLE IF NOT EXISTS positions (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
min_salary NUMERIC
);
Code language: SQL (Structured Query Language) (sql)
Cobalah
Kedua, masukkan beberapa baris ke dalam positions
tabel.
INSERT INTO positions (title, min_salary)
VALUES ('DBA', 120000),
('Developer', 100000),
('Architect', 150000);
Code language: SQL (Structured Query Language) (sql)
Cobalah
Ketiga, verifikasi sisipan menggunakan SELECT
berikut pernyataan.
SELECT * FROM positions;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Pernyataan berikut membuat indeks unik pada title
kolom positions
tabel untuk memastikan tidak ada duplikat judul posisi:
CREATE UNIQUE INDEX idx_positions_title
ON positions (title);
Code language: SQL (Structured Query Language) (sql)
Cobalah
Misalkan, Anda ingin menambahkan posisi ke dalam positions
tabel jika tidak ada, jika posisinya ada, perbarui yang sekarang.
Berikut REPLACE
pernyataan menyisipkan baris baru ke dalam positions
tabel karena posisi judul Full Stack Developer
tidak dalam positions
tabel.
REPLACE INTO positions (title, min_salary)
VALUES('Full Stack Developer', 140000);
Code language: SQL (Structured Query Language) (sql)
Cobalah
Anda dapat memverifikasi REPLACE
operasi menggunakan SELECT
pernyataan.
SELECT
id,title,min_salary
FROM
positions;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Lihat pernyataan berikut.
REPLACE INTO positions (title, min_salary)
VALUES('DBA', 170000);
Code language: SQL (Structured Query Language) (sql)
Cobalah
Pertama, SQLite memeriksa UNIQUE
kendala.
Kedua, karena pernyataan ini melanggar UNIQUE
kendala dengan mencoba menambahkan DBA
judul yang sudah ada, SQLite menghapus baris yang ada.
Ketiga, SQLite menyisipkan baris baru dengan data yang disediakan oleh REPLACE
pernyataan.
Perhatikan bahwa REPLACE
pernyataan berarti INSERT
atau REPLACE
, bukan INSERT
atau UPDATE
.
Lihat pernyataan berikut.
REPLACE INTO positions (id, min_salary)
VALUES(2, 110000);
Code language: SQL (Structured Query Language) (sql)
Cobalah
Apa yang coba dilakukan oleh pernyataan itu adalah memperbarui min_salary
untuk posisi dengan id 2 yaitu developer.
Pertama, posisi dengan id 2 sudah ada, REPLACE
pernyataan menghapusnya.
Kemudian, SQLite mencoba menyisipkan baris baru dengan dua kolom:( id
, min_salary
). Namun, itu melanggar NOT NULL
batasan kolom judul. Oleh karena itu, SQLite membatalkan transaksi.
Jika title
kolom tidak memiliki NOT NULL
kendala, REPLACE
pernyataan akan menyisipkan baris baru dengan kolom judul NULL
.
Dalam tutorial ini, kami telah menunjukkan cara menggunakan SQLite REPLACE
pernyataan untuk menyisipkan atau mengganti baris dalam tabel.