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.