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

SQLite ALTER TABLE

Ringkasan :dalam tutorial ini, Anda akan belajar bagaimana menggunakan SQLite ALTER TABLE pernyataan untuk mengubah struktur tabel yang ada.

Tidak seperti standar SQL dan sistem database lainnya, SQLite mendukung fungsionalitas ALTER TABLE yang sangat terbatas. pernyataan.

Dengan menggunakan ALTER TABLE SQLite pernyataan, Anda dapat melakukan dua tindakan:

  1. Mengganti nama tabel.
  2. Menambahkan kolom baru ke tabel.
  3. Ganti nama kolom (ditambahkan didukung di versi 3.20.0)

Menggunakan SQLite ALTER TABLE untuk mengganti nama tabel

Untuk mengganti nama tabel, Anda menggunakan ALTER TABLE RENAME TO berikut ini:pernyataan:

ALTER TABLE existing_table
RENAME TO new_table;Code language: SQL (Structured Query Language) (sql)

Ini adalah poin penting yang harus Anda ketahui sebelum mengganti nama tabel:

  • ALTER TABLE hanya mengganti nama tabel dalam database. Anda tidak dapat menggunakannya untuk memindahkan tabel di antara database terlampir.
  • Objek database seperti indeks dan pemicu yang terkait dengan tabel akan diasosiasikan dengan tabel baru.
  • Jika tabel direferensikan oleh tampilan atau pernyataan di pemicu, Anda harus mengubah definisi tampilan dan pemicu secara manual.

Mari kita ambil contoh mengganti nama tabel.

Pertama, buat tabel bernama devices yang memiliki tiga kolom:name, model , serial; dan masukkan baris baru ke dalam devices tabel.

CREATE TABLE devices (
   name TEXT NOT NULL,
   model TEXT NOT NULL,
   Serial INTEGER NOT NULL UNIQUE
);

INSERT INTO devices (name, model, serial)
VALUES('HP ZBook 17 G3 Mobile Workstation','ZBook','SN-2015');Code language: SQL (Structured Query Language) (sql)

Cobalah

Kedua, gunakan ALTER TABLE RENAME TO pernyataan untuk mengubah devices tabel ke equipment tabel sebagai berikut:

ALTER TABLE devices
RENAME TO equipment;Code language: SQL (Structured Query Language) (sql)

Cobalah

Ketiga, query data dari equipment tabel untuk memverifikasi RENAME operasi.

SELECT
	name,
	model,
	serial
FROM
	equipment;Code language: SQL (Structured Query Language) (sql)

Cobalah

Menggunakan SQLite ALTER TABLE untuk menambahkan kolom baru ke tabel

Anda dapat menggunakan ALTER TABLE SQLite pernyataan untuk menambahkan kolom baru ke tabel yang ada. Dalam skenario ini, SQLite menambahkan kolom baru di akhir daftar kolom yang ada.

Berikut ini ilustrasi sintaks ALTER TABLE ADD COLUMN pernyataan:

ALTER TABLE table_name
ADD COLUMN column_definition;Code language: SQL (Structured Query Language) (sql)

Ada beberapa batasan pada kolom baru:

  • Kolom baru tidak boleh memiliki UNIQUE atau PRIMARY KEY kendala.
  • Jika kolom baru memiliki NOT NULL kendala, Anda harus menentukan nilai default untuk kolom selain NULL nilai.
  • Kolom baru tidak boleh memiliki default CURRENT_TIMESTAMP , CURRENT_DATE , dan CURRENT_TIME , atau ekspresi.
  • Jika kolom baru adalah kunci asing dan pemeriksaan batasan kunci asing diaktifkan, kolom baru harus menerima nilai default NULL .

Misalnya, Anda dapat menambahkan kolom baru bernama location ke equipment tabel:

ALTER TABLE equipment 
ADD COLUMN location text;Code language: SQL (Structured Query Language) (sql)

Cobalah

Menggunakan SQLite ALTER TABLE untuk mengganti nama kolom

SQLite menambahkan dukungan untuk mengganti nama kolom menggunakan ALTER TABLE RENAME COLUMN pernyataan dalam versi 3.20.0

Berikut ini adalah sintaks ALTER TABLE RENAME COLUMN pernyataan:

ALTER TABLE table_name
RENAME COLUMN current_name TO new_name;

Untuk informasi selengkapnya tentang cara mengganti nama kolom, lihat tutorial mengganti nama kolom.

Menggunakan SQLite ALTER TABLE untuk tindakan lain

Jika Anda ingin melakukan tindakan lain, misalnya, menjatuhkan kolom, Anda menggunakan langkah-langkah berikut:

Script berikut mengilustrasikan langkah-langkah di atas:

-- disable foreign key constraint check
PRAGMA foreign_keys=off;

-- start a transaction
BEGIN TRANSACTION;

-- Here you can drop column
CREATE TABLE IF NOT EXISTS new_table( 
   column_definition,
   ...
);
-- copy data from the table to the new_table
INSERT INTO new_table(column_list)
SELECT column_list
FROM table;

-- drop the table
DROP TABLE table;

-- rename the new_table to the table
ALTER TABLE new_table RENAME TO table; 

-- commit the transaction
COMMIT;

-- enable foreign key constraint check
PRAGMA foreign_keys=on;Code language: SQL (Structured Query Language) (sql)

SQLite ALTER TABLE DROP COLUMN contoh

SQLite tidak mendukung ALTER TABLE DROP COLUMN penyataan. Untuk menjatuhkan kolom, Anda perlu menggunakan langkah-langkah di atas.

Skrip berikut membuat dua tabel users dan favorites , dan masukkan data ke dalam tabel berikut:

CREATE TABLE users(
	UserId INTEGER PRIMARY KEY,
	FirstName TEXT NOT NULL,
	LastName TEXT NOT NULL,
	Email TEXT NOT NULL,
	Phone TEXT NOT NULL
);

CREATE TABLE favorites(
	UserId INTEGER,
	PlaylistId INTEGER,
	FOREIGN KEY(UserId) REFERENCES users(UserId),
	FOREIGN KEY(PlaylistId) REFERENCES playlists(PlaylistId)
);

INSERT INTO users(FirstName, LastName, Email, Phone)
VALUES('John','Doe','[email protected]','408-234-3456');

INSERT INTO favorites(UserId, PlaylistId)
VALUES(1,1);Code language: SQL (Structured Query Language) (sql)

Pernyataan berikut mengembalikan data dari users tabel:

SELECT * FROM users;Code language: SQL (Structured Query Language) (sql)

Dan pernyataan berikut mengembalikan data dari favorites tabel:

SELECT * FROM favorites;Code language: SQL (Structured Query Language) (sql)

Misalkan, Anda ingin menjatuhkan kolom phone dari users tabel.

Pertama, nonaktifkan pemeriksaan batasan kunci asing:

PRAGMA foreign_keys=off;

Kedua, mulai transaksi baru:

BEGIN TRANSACTION;Code language: SQL (Structured Query Language) (sql)

Ketiga, buat tabel baru untuk menampung data users tabel kecuali phone kolom:

CREATE TABLE IF NOT EXISTS persons (
	UserId INTEGER PRIMARY KEY,
	FirstName TEXT NOT NULL,
	LastName TEXT NOT NULL,
	Email TEXT NOT NULL
);Code language: SQL (Structured Query Language) (sql)

Keempat, salin data dari users ke persons tabel:

INSERT INTO persons(UserId, FirstName, LastName, Email)
SELECT UserId, FirstName, LastName, Email 
FROM users;
Code language: SQL (Structured Query Language) (sql)

Kelima, lepaskan users tabel:

DROP TABLE users;Code language: SQL (Structured Query Language) (sql)

Keenam, ganti nama persons tabel ke users tabel:

ALTER TABLE persons RENAME TO users;Code language: SQL (Structured Query Language) (sql)

Ketujuh, lakukan transaksi:

COMMIT;Code language: SQL (Structured Query Language) (sql)

Kedelapan, aktifkan pemeriksaan batasan kunci asing:

PRAGMA foreign_keys=on;Code language: SQL (Structured Query Language) (sql)

Berikut adalah users meja setelah menjatuhkan phone kolom:

SELECT * FROM users;Code language: SQL (Structured Query Language) (sql)

Ringkasan

  • Gunakan ALTER TABLE pernyataan untuk mengubah struktur tabel yang ada.
  • Gunakan ALTER TABLE table_name RENAME TO new_name pernyataan untuk mengganti nama tabel.
  • Gunakan ALTER TABLE table_name ADD COLUMN column_definition pernyataan untuk menambahkan kolom ke tabel.
  • Gunakan ALTER TABLE table_name RENAME COLUMN current_name TO new_name untuk mengganti nama kolom.

  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 JSON_SET()

  2. Cara Mengekstrak Hari, Bulan, dan Tahun dari Tanggal di SQLite

  3. Android SQLite SEPERTI escape wildcard

  4. Pastikan Kursor diinisialisasi dengan benar sebelum mengakses data darinya

  5. GALAT:Tidak dapat membaca baris 0, col -1 dari CursorWindow. Pastikan Kursor diinisialisasi dengan benar sebelum mengakses data