SQLite
 sql >> Baza danych >  >> RDS >> SQLite

SQLite ALTER TABELA

Podsumowanie :w tym samouczku dowiesz się, jak korzystać z SQLite ALTER TABLE oświadczenie, aby zmienić strukturę istniejącej tabeli.

W przeciwieństwie do standardu SQL i innych systemów baz danych, SQLite obsługuje bardzo ograniczoną funkcjonalność ALTER TABLE oświadczenie.

Używając SQLite ALTER TABLE oświadczenie, możesz wykonać dwie czynności:

  1. Zmień nazwę tabeli.
  2. Dodaj nową kolumnę do tabeli.
  3. Zmień nazwę kolumny (dodane obsługiwane w wersji 3.20.0)

Używanie SQLite ALTER TABLE do zmiany nazwy tabeli

Aby zmienić nazwę tabeli, użyj następującego ALTER TABLE RENAME TO oświadczenie:

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

Oto ważne punkty, o których powinieneś wiedzieć przed zmianą nazwy tabeli:

  • ALTER TABLE zmienia tylko nazwę tabeli w bazie danych. Nie możesz go użyć do przeniesienia tabeli między dołączonymi bazami danych.
  • Obiekty bazy danych, takie jak indeksy i wyzwalacze powiązane z tabelą, zostaną powiązane z nową tabelą.
  • Jeśli do tabeli odwołują się widoki lub instrukcje w wyzwalaczach, musisz ręcznie zmienić definicję widoków i wyzwalaczy.

Weźmy przykład zmiany nazwy tabeli.

Najpierw utwórz tabelę o nazwie devices który ma trzy kolumny:name, model , serial; i wstaw nowy wiersz do devices tabela.

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)

Wypróbuj

Po drugie, użyj ALTER TABLE RENAME TO instrukcja zmiany devices tabela do equipment tabela w następujący sposób:

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

Wypróbuj

Po trzecie, zapytaj o dane z equipment tabela do weryfikacji RENAME operacja.

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

Wypróbuj

Korzystanie z SQLite ALTER TABLE do dodania nowej kolumny do tabeli

Możesz użyć SQLite ALTER TABLE oświadczenie, aby dodać nową kolumnę do istniejącej tabeli. W tym scenariuszu SQLite dołącza nową kolumnę na końcu istniejącej listy kolumn.

Poniżej przedstawiono składnię ALTER TABLE ADD COLUMN oświadczenie:

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

Nowa kolumna ma pewne ograniczenia:

  • Nowa kolumna nie może mieć UNIQUE lub PRIMARY KEY ograniczenie.
  • Jeśli nowa kolumna ma NOT NULL ograniczenia, musisz określić domyślną wartość dla kolumny inną niż NULL wartość.
  • Nowa kolumna nie może mieć wartości domyślnej CURRENT_TIMESTAMP , CURRENT_DATE i CURRENT_TIME lub wyrażenie.
  • Jeśli nowa kolumna jest kluczem obcym i włączono sprawdzanie ograniczenia klucza obcego, nowa kolumna musi akceptować wartość domyślną NULL .

Na przykład możesz dodać nową kolumnę o nazwie location do equipment tabela:

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

Wypróbuj

Korzystanie z SQLite ALTER TABLE do zmiany nazwy kolumny

SQLite dodał obsługę zmiany nazwy kolumny za pomocą ALTER TABLE RENAME COLUMN oświadczenie w wersji 3.20.0

Poniżej przedstawiono składnię kolumny ALTER TABLE RENAME COLUMN oświadczenie:

ALTER TABLE table_name
RENAME COLUMN current_name TO new_name;

Aby uzyskać więcej informacji na temat zmiany nazwy kolumny, zapoznaj się z samouczkiem zmiany nazwy kolumny.

Korzystanie z SQLite ALTER TABLE do innych działań

Jeśli chcesz wykonać inne czynności, np. upuścić kolumnę, wykonaj następujące czynności:

Poniższy skrypt ilustruje powyższe kroki:

-- 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 przykład

SQLite nie obsługuje ALTER TABLE DROP COLUMN oświadczenie. Aby usunąć kolumnę, musisz wykonać powyższe kroki.

Poniższy skrypt tworzy dwie tabele users i favorites i wstawiaj dane do tych tabel:

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)

Poniższa instrukcja zwraca dane od users tabela:

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

A następująca instrukcja zwraca dane z favorites tabela:

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

Załóżmy, że chcesz usunąć kolumnę phone users tabela.

Najpierw wyłącz sprawdzanie ograniczenia klucza obcego:

PRAGMA foreign_keys=off;

Po drugie, rozpocznij nową transakcję:

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

Po trzecie, utwórz nową tabelę do przechowywania danych users tabela z wyjątkiem phone kolumna:

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)

Po czwarte, skopiuj dane od users do persons tabela:

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

Po piąte, upuść users tabela:

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

Po szóste, zmień nazwy persons tabela do users tabela:

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

Po siódme, zatwierdź transakcję:

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

Po ósme, włącz sprawdzanie ograniczeń klucza obcego:

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

Oto users tabela po upuszczeniu phone kolumna:

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

Podsumowanie

  • Użyj ALTER TABLE instrukcja do modyfikacji struktury istniejącej tabeli.
  • Użyj ALTER TABLE table_name RENAME TO new_name oświadczenie, aby zmienić nazwę tabeli.
  • Użyj ALTER TABLE table_name ADD COLUMN column_definition oświadczenie, aby dodać kolumnę do tabeli.
  • Użyj ALTER TABLE table_name RENAME COLUMN current_name TO new_name zmienić nazwę kolumny.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak naprawić adres URL dostawcy treści, którego nie znaleziono w dostawcy treści na Androida?

  2. SQLite wprowadza funkcję UNIXEPOCH()

  3. Jak pobrać i zainstalować narzędzia SQLite

  4. 2 sposoby na zwrócenie dnia juliańskiego w SQLite

  5. Jak wyświetlić bieżące ustawienia poleceń kropki w SQLite?