sql >> Database teknologi >  >> RDS >> SQLite

SQLite ÆNDRINGSTABEL

Oversigt :i denne øvelse lærer du, hvordan du bruger SQLite ALTER TABLE sætning for at ændre strukturen af ​​en eksisterende tabel.

I modsætning til SQL-standard og andre databasesystemer, understøtter SQLite en meget begrænset funktionalitet af ALTER TABLE erklæring.

Ved at bruge en SQLite ALTER TABLE sætning, kan du udføre to handlinger:

  1. Omdøb en tabel.
  2. Tilføj en ny kolonne til en tabel.
  3. Omdøb en kolonne (tilføjet understøttet i version 3.20.0)

Brug af SQLite ALTER TABLE til at omdøbe en tabel

For at omdøbe en tabel, bruger du følgende ALTER TABLE RENAME TO erklæring:

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

Dette er vigtige punkter, du bør vide, før du omdøber en tabel:

  • ALTERTABEL omdøber kun en tabel i en database. Du kan ikke bruge den til at flytte tabellen mellem de vedhæftede databaser.
  • Databaseobjekterne, såsom indekser og triggere, der er knyttet til tabellen, vil blive knyttet til den nye tabel.
  • Hvis en tabel refereres af visninger eller udsagn i triggere, skal du manuelt ændre definitionen af ​​visninger og triggere.

Lad os tage et eksempel på at omdøbe en tabel.

Først skal du oprette en tabel med navnet enheder der har tre kolonner:navn, model , seriel; og indsæt en ny række i enhederne 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)

Prøv det

For det andet skal du bruge ALTER TABLE RENAME TO sætning for at ændre enhederne tabel til udstyr tabel som følger:

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

Prøv det

For det tredje, forespørg data fra udstyret tabel for at bekræfte RENAME operation.

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

Prøv det

Brug af SQLite ALTER TABLE til at tilføje en ny kolonne til en tabel

Du kan bruge SQLite ALTER TABLE sætning for at tilføje en ny kolonne til en eksisterende tabel. I dette scenarie tilføjer SQLite den nye kolonne i slutningen af ​​den eksisterende kolonneliste.

Det følgende illustrerer syntaksen for ALTER TABLE ADD COLUMN erklæring:

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

Der er nogle begrænsninger for den nye kolonne:

  • Den nye kolonne kan ikke have en UNIQUE eller PRIMÆR NØGLE begrænsning.
  • Hvis den nye kolonne har en NOT NULL begrænsning, skal du angive en anden standardværdi for kolonnen end en NULL værdi.
  • Den nye kolonne kan ikke have en standard på CURRENT_TIMESTAMP , CURRENT_DATE og CURRENT_TIME , eller et udtryk.
  • Hvis den nye kolonne er en fremmednøgle, og kontrollen med fremmednøglebegrænsning er aktiveret, skal den nye kolonne acceptere en standardværdi NULL .

For eksempel kan du tilføje en ny kolonne med navnet placering til udstyret tabel:

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

Prøv det

Brug af SQLite ALTER TABLE til at omdøbe en kolonne

SQLite tilføjede understøttelse af omdøbning af en kolonne ved hjælp af ALTER TABLE RENAME COLUMN erklæring i version 3.20.0

Det følgende viser syntaksen for ALTER TABLE RENAME COLUMN erklæring:

ALTER TABLE table_name
RENAME COLUMN current_name TO new_name;

For mere information om, hvordan du omdøber en kolonne, kan du se selvstudiet om omdøbning af kolonnen.

Brug af SQLite ALTER TABLE til andre handlinger

Hvis du vil udføre andre handlinger, f.eks. slippe en kolonne, skal du bruge følgende trin:

Følgende script illustrerer trinene ovenfor:

-- 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 eksempel

SQLite understøtter ikke ALTER TABLE DROP COLUMN udmelding. For at slippe en kolonne skal du bruge trinene ovenfor.

Følgende script opretter to tabeller brugere og favoritter , og indsæt data i disse tabeller:

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)

Følgende sætning returnerer data fra brugerne tabel:

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

Og følgende sætning returnerer data fra favoritterne tabel:

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

Antag, at du vil slette kolonnen telefon af brugerne tabel.

Først skal du deaktivere kontrol af fremmednøglebegrænsning:

PRAGMA foreign_keys=off;

For det andet, start en ny transaktion:

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

For det tredje skal du oprette en ny tabel til at indeholde data fra brugerne tabel med undtagelse af telefonen kolonne:

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)

For det fjerde, kopier data fra brugerne til personer tabel:

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

For det femte skal du slippe brugere tabel:

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

For det sjette, omdøb personerne tabel til brugere tabel:

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

For det syvende, begå transaktionen:

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

For det ottende, aktiver kontrollen af ​​fremmednøglebegrænsning:

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

Her er brugerne tabel efter at have droppet telefonen kolonne:

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

Oversigt

  • Brug ALTER TABLE sætning for at ændre strukturen af ​​en eksisterende tabel.
  • Brug ALTER TABLE table_name RENAME TO new_name sætning for at omdøbe en tabel.
  • Brug ALTER TABLE table_name ADD COLUMN column_definition sætning for at tilføje en kolonne til en tabel.
  • Brug ALTER TABLE table_name RENAME COLUMN current_name TO new_name for at omdøbe en kolonne.

  1. Oracle sql til at tælle forekomster af forskellige værdier i en enkelt kolonne

  2. Oracle SQL-udvikler:Vis REFCURSOR-resultater i gitter?

  3. Native Library sqljdbc_auth.dll er allerede indlæst i en anden klasseindlæser

  4. Forståelse af tegnsæt og samlinger i MySQL