SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

SQLite - Ubah Tabel

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 atau UNIQUE 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 selain NULL .
  • 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite ALTER TABLE

  2. Apa itu Kolom yang Dihasilkan?

  3. Jumlahkan nilai berdasarkan bulan dalam milidetik

  4. 3 Cara Mengekstrak Nilai dari Dokumen JSON di SQLite

  5. Cara menginstal versi terbaru dari Sqlite aar saat menggunakan Room Di Android