Samenvatting :in deze tutorial leer je hoe je SQLite ALTER TABLE gebruikt statement om de structuur van een bestaande tabel te wijzigen.
In tegenstelling tot SQL-standaard en andere databasesystemen, ondersteunt SQLite een zeer beperkte functionaliteit van de ALTER TABLE verklaring.
Door een SQLite ALTER TABLE . te gebruiken statement, kunt u twee acties uitvoeren:
- De naam van een tabel wijzigen.
- Voeg een nieuwe kolom toe aan een tabel.
- De naam van een kolom wijzigen (toegevoegd ondersteund in versie 3.20.0)
SQLite ALTER TABLE gebruiken om een tabel te hernoemen
Om een tabel te hernoemen, gebruik je de volgende ALTER TABLE RENAME TO verklaring:
ALTER TABLE existing_table
RENAME TO new_table;Code language: SQL (Structured Query Language) (sql) Dit zijn belangrijke punten die u moet weten voordat u de naam van een tabel wijzigt:
- De
ALTER TABLEhernoemt alleen een tabel binnen een database. U kunt het niet gebruiken om de tabel tussen de bijgevoegde databases te verplaatsen. - De database-objecten zoals indexen en triggers die aan de tabel zijn gekoppeld, worden aan de nieuwe tabel gekoppeld.
- Als naar een tabel wordt verwezen door views of instructies in triggers, moet u de definitie van views en triggers handmatig wijzigen.
Laten we een voorbeeld nemen van het hernoemen van een tabel.
Maak eerst een tabel met de naam devices die drie kolommen heeft:name, model , serial; en voeg een nieuwe rij toe aan de devices tafel.
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) Probeer het
Ten tweede, gebruik de ALTER TABLE RENAME TO statement om de devices . te wijzigen tafel naar equipment tabel als volgt:
ALTER TABLE devices
RENAME TO equipment;Code language: SQL (Structured Query Language) (sql) Probeer het
Ten derde, gegevens opvragen van de equipment tabel om de RENAME . te verifiëren bediening.
SELECT
name,
model,
serial
FROM
equipment;Code language: SQL (Structured Query Language) (sql) Probeer het
SQLite ALTER TABLE gebruiken om een nieuwe kolom aan een tabel toe te voegen
U kunt de SQLite ALTER TABLE . gebruiken statement om een nieuwe kolom aan een bestaande tabel toe te voegen. In dit scenario voegt SQLite de nieuwe kolom toe aan het einde van de bestaande kolomlijst.
Het volgende illustreert de syntaxis van ALTER TABLE ADD COLUMN verklaring:
ALTER TABLE table_name
ADD COLUMN column_definition;Code language: SQL (Structured Query Language) (sql) Er zijn enkele beperkingen voor de nieuwe kolom:
- De nieuwe kolom mag geen
UNIQUE. hebben ofPRIMARY KEYbeperking. - Als de nieuwe kolom een
NOT NULLheeft beperking, moet u een andere standaardwaarde voor de kolom opgeven dan eenNULLwaarde. - De nieuwe kolom mag geen standaard
CURRENT_TIMESTAMP. hebben ,CURRENT_DATE, enCURRENT_TIME, of een uitdrukking. - Als de nieuwe kolom een externe sleutel is en de beperkingscontrole van de externe sleutel is ingeschakeld, moet de nieuwe kolom een standaardwaarde accepteren
NULL.
U kunt bijvoorbeeld een nieuwe kolom toevoegen met de naam location naar de equipment tafel:
ALTER TABLE equipment
ADD COLUMN location text;Code language: SQL (Structured Query Language) (sql) Probeer het
SQLite ALTER TABLE gebruiken om een kolom te hernoemen
SQLite heeft ondersteuning toegevoegd voor het hernoemen van een kolom met behulp van ALTER TABLE RENAME COLUMN verklaring in versie 3.20.0
Het volgende toont de syntaxis van de ALTER TABLE RENAME COLUMN verklaring:
ALTER TABLE table_name
RENAME COLUMN current_name TO new_name; Raadpleeg de tutorial over het hernoemen van kolommen voor meer informatie over het hernoemen van een kolom.
SQLite ALTER TABLE gebruiken voor andere acties
Als u andere acties wilt uitvoeren, bijvoorbeeld een kolom neerzetten, gebruikt u de volgende stappen:
Het volgende script illustreert de bovenstaande stappen:
-- 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 voorbeeld
SQLite biedt geen ondersteuning voor ALTER TABLE DROP COLUMN uitspraak. Om een kolom neer te zetten, moet je de bovenstaande stappen volgen.
Het volgende script maakt twee tabellen users en favorites , en voeg gegevens in deze tabellen in:
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','john.doe@example.com','408-234-3456');
INSERT INTO favorites(UserId, PlaylistId)
VALUES(1,1);Code language: SQL (Structured Query Language) (sql)
De volgende instructie retourneert gegevens van de users tafel:
SELECT * FROM users;Code language: SQL (Structured Query Language) (sql)
En de volgende instructie retourneert de gegevens van de favorites tafel:
SELECT * FROM favorites;Code language: SQL (Structured Query Language) (sql)
Stel dat u de kolom phone . wilt laten vallen van de users tafel.
Schakel eerst de beperkingscontrole van de refererende sleutel uit:
PRAGMA foreign_keys=off; Ten tweede, start een nieuwe transactie:
BEGIN TRANSACTION;Code language: SQL (Structured Query Language) (sql)
Ten derde, maak een nieuwe tabel om de gegevens van de users te bevatten tabel behalve de 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)
Ten vierde, kopieer gegevens van de users aan persons tafel:
INSERT INTO persons(UserId, FirstName, LastName, Email)
SELECT UserId, FirstName, LastName, Email
FROM users;
Code language: SQL (Structured Query Language) (sql)
Ten vijfde, laat de users vallen tafel:
DROP TABLE users;Code language: SQL (Structured Query Language) (sql)
Ten zesde, hernoem de persons tabel aan users tafel:
ALTER TABLE persons RENAME TO users;Code language: SQL (Structured Query Language) (sql) Ten zevende, voer de transactie uit:
COMMIT;Code language: SQL (Structured Query Language) (sql) Ten achtste, schakel de beperking van de externe sleutel in:
PRAGMA foreign_keys=on;Code language: SQL (Structured Query Language) (sql)
Hier zijn de users tafel na het laten vallen van de phone kolom:
SELECT * FROM users;Code language: SQL (Structured Query Language) (sql)
Samenvatting
- Gebruik de
ALTER TABLEstatement om de structuur van een bestaande tabel te wijzigen. - Gebruik
ALTER TABLE table_name RENAME TO new_namestatement om de naam van een tabel te wijzigen. - Gebruik
ALTER TABLE table_name ADD COLUMN column_definitionstatement om een kolom aan een tabel toe te voegen. - Gebruik
ALTER TABLE table_name RENAME COLUMN current_name TO new_nameom een kolom te hernoemen.