SQLite Creați, modificați, aruncați un tabel cu exemple

⚡ Rezumat inteligent

SQLite Gestionarea tabelelor se bazează pe trei comenzi de definire a datelor: CREATE TABLE pentru a defini un tabel, ALTER TABLE pentru a-l redenumi sau a adăuga și modifica coloane și DROP TABLE pentru a-l elimina complet din baza de date.

  • 📐 Creați tabele: Instrucțiunea CREATE TABLE definește numele unui tabel și coloanele sale, iar fiecare coloană necesită un nume și un tip de date.
  • 🛡️ Evitați erorile: Adăugarea comenzii IF NOT EXISTS la CREATE TABLE sau IF EXISTS la DROP TABLE previne erorile atunci când un tabel există deja sau lipsește.
  • ✏️ Modificați tabelele: ALTER TABLE redenumește un tabel, adaugă o coloană și, în limbajul de programare modern SQLite redenumește sau elimină o singură coloană.
  • 🗑️ Tabele de abandon: Comanda DROP TABLE elimină definitiv un tabel și fiecare rând și index care îi aparține.
  • 📑 Copiați tabelele: CREATE TABLE AS SELECT construiește un tabel nou din coloanele și rândurile returnate de o interogare.
  • 🤖 Asistență AI: Asistenții text-SQL utilizați de inteligență artificială și GitHub Copilot generează instrucțiuni CREATE, ALTER și DROP din prompturi în limba engleză simplă.

SQLite Creați tabelul Alter Drop

Secțiunile de mai jos arată cum se creează tabele, se modifică structura acestora și se plasează tabele în SQLite3 cu exemple, care acoperă comenzile CREATE TABLE, ALTER TABLE și DROP TABLE.

SQLite Creați tabel

Sintaxă

Mai jos este sintaxa instrucțiunii CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Pentru a crea un tabel, trebuie să utilizați interogarea „CREATE TABLE” după cum urmează:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

În cele două paranteze după numele tabelului, definiți coloanele tabelelor, fiecare coloană ar trebui să aibă următoarele proprietăți:

  • Un nume, numele coloanei ar trebui să fie unic printre coloanele tabelului.
  • Un tip de date – tipul de date coloană.
  • Restricții opționale pe coloane, așa cum vom explica în secțiunile ulterioare ale acestui tutorial.

SQLite CREARE TABEL DACĂ NU EXISTĂ

Când un script rulează de mai multe ori, o instrucțiune CREATE TABLE simplă eșuează dacă tabelul există deja și se oprește cu o eroare. SQLite rezolvă această problemă cu clauza opțională IF NOT EXISTS, care creează tabelul doar atunci când acesta lipsește și nu face nimic când acesta există deja.

CREATE TABLE IF NOT EXISTS guru99 (
  Id Int,
  Name Varchar
);

Instrucțiunea de mai sus nu generează niciodată eroarea „tabelul există deja”, ceea ce face ca acesta să fie păstrat în siguranță în partea de sus a unui script de configurare sau migrare.

Aceeași idee funcționează invers atunci când eliminați un tabel. Adăugarea comenzii IF EXISTS la DROP TABLE evită o eroare atunci când tabelul a dispărut deja:

DROP TABLE IF EXISTS guru99;

Ambele clauze sunt comune în scripturile automate, deoarece permit aceluiași fișier să ruleze în mod repetat fără curățare manuală între rulări.

Aruncă masa

Pentru a elimina un tabel, utilizați comanda „DROP TABLE” urmată de numele tabelului, după cum urmează:

DROP TABLE guru99;

Schimbați masa

Puteți folosi comanda „ALTER TABLE” pentru a redenumi un tabel după cum urmează:

ALTER TABLE guru99 RENAME TO guru100;

Pentru a verifica dacă numele tabelului a fost modificat, puteți utiliza comanda „.tables” pentru a afișa lista de tabele, iar numele tabelului ar trebui modificat după cum urmează:

SQLite Rezultatul fișierului .tables arată tabelul redenumit de la guru99 la guru100

După cum puteți vedea, numele tabelului „guru99” este schimbat în „guru100” după comanda „alter table”.

SQLite adăugați coloane - Folosind comanda ALTER TABLE

De asemenea, puteți utiliza comanda „ALTER TABLE” pentru a adăuga coloane:

ALTER TABLE guru100 ADD COLUMN Age INT;

Aceasta va modifica tabelul „guru100” și va adăuga o nouă coloană, Vârstă.

Dacă nu ați văzut nicio ieșire, înseamnă că instrucțiunea a avut succes și coloana a fost adăugată. Fără ieșire înseamnă că cursorul va fi poziționat după „sqlite>” fără text după acesta, astfel:

SQLite linia de comandă nu afișează nicio ieșire după o ALTER TABLE ADD COLUMN reușită

Totuși, pentru a verifica dacă coloana a fost adăugată, putem folosi comanda „.schema guru100”. Aceasta vă va oferi definiția tabelului și ar trebui să vedeți noua coloană pe care tocmai am adăugat-o:

SQLite Rezultatul .schema guru100 arată noua coloană Age adăugată în tabel

SQLite ALTER TABLE: Redenumiți și eliminați o coloană

Dincolo de adăugarea unei coloane, versiunile moderne ale SQLite poate redenumi o singură coloană și elimina una. Redenumirea unei coloane este disponibilă de la SQLite 3.25 și actualizează numele din definiția tabelului, precum și în fiecare index, declanșator și vizualizare care face referire la coloană.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Pentru a elimina o coloană, SQLite Versiunea 3.35 și versiunile ulterioare acceptă o clauză DROP COLUMN directă:

ALTER TABLE guru100 DROP COLUMN Age;

O coloană nu poate fi eliminată atunci când face parte dintr-o cheie primară, o constrângere unică sau un index. Pe versiunile mai vechi SQLite În versiunile cărora le lipsește comanda DROP COLUMN, soluția clasică este să creați un tabel nou cu coloanele dorite, să copiați rândurile, să eliminați tabelul vechi și, în final, să redenumiți cel nou.

Cum se copiază un tabel în SQLite Utilizarea comenzii CREATE TABLE AS SELECT

Uneori aveți nevoie de o copie a unui tabel, fie ca o copie de rezervă înainte de o modificare riscantă, fie ca punct de plecare pentru un tabel nou. SQLite construiește acest lucru într-un singur pas cu CREATE TABLE AS SELECT, care creează un tabel nou ale cărui coloane provin dintr-o interogare și îl umple cu rândurile returnate de interogare.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

Noul tabel „guru100_backup” primește aceleași coloane și fiecare rând de la „guru100”. Pentru a copia doar câteva rânduri, adăugați o clauză WHERE la SELECT:

CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;

Un aspect de reținut este că CREATE TABLE AS SELECT copiază numele coloanelor, tipurile și datele, dar nu copiază cheile primare, alte constrângeri sau indexuri. Trebuie să le adăugați personal în noul tabel dacă copia trebuie să aplice aceleași reguli ca și originalul.

SQLite Inserați valoarea într-un tabel

Pentru a insera valori într-un tabel, folosim instrucțiunea „INSERT INTO” după cum urmează:

INSERT INTO Tablename(colname1, colname2, ….) VALUES(valu1, value2, ….);

Puteți omite numele coloanelor după numele tabelului și îl puteți scrie după cum urmează:

INSERT INTO Tablename VALUES(value1, value2, ….);

În acest caz, când omiteți numele coloanelor din tabele, numărul de valori introduse trebuie să fie același număr exact al coloanelor din tabel. Apoi fiecare valoare va fi inserată în coloana de corespondență. De exemplu, pentru următoarea declarație de inserare:

INSERT INTO guru100 VALUES(1, 'Mike', 25);

Rezultatul acestei afirmații va fi următorul:

SQLite Instrucțiunea INSERT INTO care adaugă un rând de valori în tabelul guru100

  • Valoarea 1 va fi inserată în coloana „id”.
  • Valoarea „Mike” va fi inserată în coloana „Nume” și
  • Valoarea 25 va fi inserată în coloana „Vârstă”.

Instrucțiunea INSERT … DEFAULT VALUES

Puteți completa tabelul cu valorile implicite pentru coloane simultan, după cum urmează:

INSERT INTO Tablename DEFAULT VALUES;

Dacă o coloană nu permite nici o valoare nulă, nici o valoare implicită, veți primi o eroare care spune „Constrângerea NOT NULL a eșuat” pentru acea coloană. După cum urmează:

SQLite Eroare de eroare la constrângerea NOT NULL din INSERT DEFAULT VALUES

Întrebări frecvente

Nu. SQLite nu are comanda TRUNCATE TABLE. Pentru a goli un tabel, executați DELETE FROM nume_tabelă fără o clauză WHERE, apoi utilizați VACUUM pentru a recupera spațiul eliberat pe disc. Structura tabelului și coloanele sale rămân la locul lor.

Funcția DELETE elimină rânduri dintr-un tabel, dar menține tabelul, coloanele și structura acestuia pregătite pentru date noi. Funcția DROP TABLE elimină întregul tabel, inclusiv definiția, indexurile și declanșatoarele sale, astfel încât tabelul nu mai există în baza de date.

De la SQLite În linia de comandă, comanda .tables dot afișează fiecare nume de tabel. Din SQL, interogați tabelul de schemă încorporat cu SELECT name FROM sqlite_master WHERE type = 'table'; care funcționează și din orice aplicație conectată la baza de date.

Un tabel temporar este creat cu CREATE TEMP TABLE sau CREATE TEMPORARY TABLE. Acesta este vizibil doar conexiunii la baza de date care l-a creat și este întrerupt automat când acea conexiune se închide, ceea ce îl face util pentru stocarea rezultatelor interogărilor intermediare.

Da. O cheie primară este opțională în SQLiteCând omiteți unul, SQLite păstrează în continuare un rowid ascuns pe 64 de biți care identifică fiecare rând. Restricțiile de coloană, cum ar fi PRIMARY KEY, UNIQUE și NOT NULL, sunt opționale atunci când definiți un tabel.

În mod implicit, nu. SQLite folosește ty dinamicping cu afinitate de tip, deci o coloană acceptă valori de aproape orice tip, indiferent de tipul declarat. Pentru a impune verificarea strictă, creați tabelul ca tabel STRICT, adăugat în SQLite 3.37.

Da. Asistenții text-SQL utilizați de inteligența artificială transformă o descriere simplă a datelor în instrucțiuni CREATE TABLE cu coloane, tipuri de date și chei. Precizia se îmbunătățește atunci când îi oferiți modelului schema existentă, deoarece acesta reutilizează apoi numele reale ale tabelelor și coloanelor.

Da. Copilotul GitHub sugerează ALTER TABLE, DROP TABLE și altele SQLite instrucțiuni în linie în editori precum VS CodeCitește fișierele de migrare și interogările existente, astfel încât completările sale corespund cu numele reale ale tabelului și coloanelor.

Rezumați această postare cu: