SQLite mendukung subset standar SQL ALTER TABLE
. standar SQL penyataan.
Dalam SQLite, ALTER TABLE
perintah memungkinkan pengguna untuk mengganti nama tabel atau menambahkan kolom baru ke tabel yang ada.
Tambahkan Kolom
ADD COLUMN
sintaks digunakan untuk menambahkan kolom baru ke tabel yang ada.
Mari tambahkan kolom ke Artis tabel:
ALTER TABLE Artists ADD COLUMN Bio TEXT;
Dan kemudian periksa tabel dengan .schema
perintah:
sqlite> .schema Artists CREATE TABLE Artists( ArtistId INTEGER PRIMARY KEY, ArtistName TEXT NOT NULL , Bio TEXT);
Pembatasan berikut berlaku saat menggunakan ADD COLUMN
sintaks dalam SQLite:
- Kolom tidak boleh memiliki
PRIMARY KEY
atauUNIQUE
kendala. - Kolom mungkin tidak memiliki nilai default
CURRENT_TIME
,CURRENT_DATE
,CURRENT_TIMESTAMP
, atau ekspresi dalam tanda kurung. - Jika
NOT NULL
batasan ditentukan, maka kolom harus memiliki nilai default selainNULL
. - Jika batasan kunci asing diaktifkan dan kolom dengan
REFERENCES
klausa ditambahkan, kolom harus memiliki nilai default NULL .
Mengganti Nama Tabel
RENAME TO
sintaks memungkinkan Anda untuk mengubah nama tabel.
Mari kita ganti nama salah satu tabel kita:
ALTER TABLE Albums RENAME TO Albums1;
Dan periksa dengan .tables
perintah:
sqlite> .tables Albums1 Artists
Sekarang, setiap operasi lebih lanjut perlu menggunakan nama tabel yang baru. Jadi kita bisa memilih data seperti ini:
SELECT AlbumName, Year FROM Artists AS a INNER JOIN Albums1 AS r ON a.ArtistId = r.ArtistId WHERE a.ArtistName = 'Joe Satriani';
AlbumName Year -------------------- -------------------------------------------------- Surfing with the Ali 1987 Flying in a Blue Dre 1989 Black Swans and Worm 2010
Memperbarui atau Menghapus Kolom
SQLite tidak mendukung klausa seperti DROP COLUMN
, ALTER COLUMN
, dan ADD CONSTRAINT
, yang merupakan bagian dari standar SQL.
Namun, ada cara lain untuk melakukan hal ini dengan SQLite.
Mengubah Kolom
Katakanlah kita ingin mengubah nama
Tahun
kolom ke
Tanggal Rilis
. Juga, kami ingin menghapus NOT NULL
pembatasan.
Untuk melakukannya, Anda dapat membuat tabel baru (dengan definisi kolom baru), mengisi tabel dengan data dari tabel lama, lalu setelah selesai, hapus tabel lama dan ganti nama tabel baru agar sesuai dengan nama aslinya.
Buat Tabel Baru
Pertama, buat tabel baru (perhatikan ReleaseDate
bukannya Year
).
CREATE TABLE Albums( AlbumId INTEGER PRIMARY KEY, AlbumName TEXT NOT NULL, ReleaseDate TEXT, ArtistId INTEGER NOT NULL, FOREIGN KEY(ArtistId) REFERENCES Artists(ArtistId) );
Jadi kita sekarang memiliki tabel berikut di database kita:
sqlite> .tables Albums Albums1 Artists
Sisipkan Data
Kemudian masukkan data dari tabel lama.
Gunakan INSERT
pernyataan yang memilih data dari tabel lama dan memasukkannya ke tabel baru. Seperti ini:
INSERT INTO Albums (AlbumId, AlbumName, ReleaseDate, ArtistId) SELECT AlbumId, AlbumName, Year, ArtistId FROM Albums1;
Verifikasi bahwa data telah dimasukkan ke dalam tabel baru:
sqlite> SELECT * FROM Albums; AlbumId AlbumName ReleaseDate ArtistId -------- ------------------------------- ----------- ---------- 1 Killers 1981 7 2 Powerslave 1984 7 3 Surfing with the Alien 1987 1 4 Heavy as a Really Heavy Thing 1995 11 5 Yummy Yummy 1994 17 6 Out of the Loop 2007 6 7 Suck on This 1989 13 8 Pork Soda 1993 13 9 Sailing the Seas of Cheese 1991 13 10 Flying in a Blue Dream 1989 1 11 Black Swans and Wormhole Wizard 2010 1 12 Somewhere in Time 1986 7 13 Big Red Car 1995 17
Jatuhkan Meja Lama
Sekarang tabel baru telah dibuat dan diisi dengan data, kita memiliki pilihan untuk menghapus tabel lama, memodifikasinya, atau membiarkannya apa adanya.
Biarkan saja untuk saat ini, kami akan menghapusnya nanti.
Lepaskan Kolom
Untuk menjatuhkan kolom, Anda dapat membuat tabel dari SELECT
penyataan. Dalam SELECT
pernyataan, hilangkan kolom yang ingin Anda hapus — SQLite hanya akan membuat kolom yang disertakan dalam SELECT
pernyataan.
CREATE TABLE Albums2 AS SELECT AlbumId, AlbumName, ArtistId FROM Albums1;
Dan kemudian periksa untuk melihat bahwa data telah berhasil dimasukkan ke dalam tabel baru:
sqlite> select * from Albums2; AlbumId AlbumName ArtistId -------- ------------------------------- ---------- 1 Killers 7 2 Powerslave 7 3 Surfing with the Alien 1 4 Heavy as a Really Heavy Thing 11 5 Yummy Yummy 17 6 Out of the Loop 6 7 Suck on This 13 8 Pork Soda 13 9 Sailing the Seas of Cheese 13 10 Flying in a Blue Dream 1 11 Black Swans and Wormhole Wizard 1 12 Somewhere in Time 7 13 Big Red Car 17
Jadi kita sekarang memiliki tabel berikut di database kita:
sqlite> .tables Albums Albums1 Albums2 Artists