SQLite Stvorite, promijenite, ispustite tablicu s primjerima

⚡ Pametni sažetak

SQLite Upravljanje tablicama oslanja se na tri naredbe za definiranje podataka: CREATE TABLE za definiranje tablice, ALTER TABLE za njezino preimenovanje ili dodavanje i promjenu stupaca i DROP TABLE za njezino potpuno uklanjanje iz baze podataka.

  • 📐 Izradi tablice: Naredba CREATE TABLE definira naziv tablice i njezine stupce, a svaki stupac treba naziv i tip podataka.
  • 🛡️ Izbjegavajte pogreške: Dodavanje naredbe IF NOT EXISTS u CREATE TABLE ili IF EXISTS u DROP TABLE sprječava greške kada tablica već postoji ili nedostaje.
  • ✏️ Promijeni tablice: ALTER TABLE preimenuje tablicu, dodaje stupac, a u modernom SQLite preimenuje ili izostavi jedan stupac.
  • 🗑️ Ispuštanje tablica: Naredba DROP TABLE trajno uklanja tablicu i svaki redak i indeks koji joj pripada.
  • 📑 Kopiraj tablice: CREATE TABLE AS SELECT gradi novu tablicu iz stupaca i redaka koje vraća upit.
  • 🤖 AI pomoć: AI tekstualni SQL asistenti i GitHub Copilot generiraju naredbe CREATE, ALTER i DROP iz jednostavnih engleskih upita.

SQLite Stvori tablicu za promjenu i ispuštanje

U donjim odjeljcima prikazano je kako stvoriti tablice, izmijeniti njihovu strukturu i ubaciti tablice u SQLite3 s primjerima, koji pokrivaju naredbe CREATE TABLE, ALTER TABLE i DROP TABLE.

SQLite Izradi tablicu

Sintaksa

Ispod je sintaksa naredbe CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Za izradu tablice trebate koristiti upit "KREIRAJ TABLICU" na sljedeći način:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

Unutar dvije zagrade iza naziva tablice, definirate stupce tablice, svaki stupac treba imati sljedeća svojstva:

  • Naziv, naziv stupca trebao bi biti jedinstven među stupcima tablice.
  • Tip podataka – tip podataka stupca.
  • Neobavezna ograničenja stupaca kao što ćemo objasniti u kasnijim odjeljcima ovog vodiča.

SQLite KREIRAJ TABLICU AKO NE POSTOJI

Kada se skripta izvršava više puta, obična naredba CREATE TABLE ne uspijeva ako tablica već postoji i zaustavlja se s greškom. SQLite rješava to opcionalnom klauzulom IF NOT EXISTS, koja stvara tablicu samo kada ona nedostaje i ne radi ništa kada je već tamo.

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

Gornja izjava nikada ne izaziva grešku „tablica već postoji“, što je čini sigurnom za korištenje na vrhu skripte za postavljanje ili migraciju.

Ista ideja funkcionira obrnuto kada uklanjate tablicu. Dodavanjem naredbe IF EXISTS naredbi DROP TABLE izbjegava se greška kada tablica već nestane:

DROP TABLE IF EXISTS guru99;

Obje klauzule su uobičajene u automatiziranim skriptama jer omogućuju ponovljeno izvršavanje iste datoteke bez ručnog čišćenja između izvršavanja.

Spusti stol

Za brisanje tablice koristite naredbu "DROP TABLE" nakon koje slijedi naziv tablice na sljedeći način:

DROP TABLE guru99;

Izmijeni stol

Naredbom "ALTER TABLE" možete preimenovati tablicu na sljedeći način:

ALTER TABLE guru99 RENAME TO guru100;

Da biste provjerili je li naziv tablice promijenjen, možete upotrijebiti naredbu „.tables“ za prikaz popisa tablica, a naziv tablice sada bi trebao biti promijenjen na sljedeći način:

SQLite Izlaz .tables koji prikazuje tablicu preimenovanu iz guru99 u guru100

Kao što vidite, naziv tablice „guru99“ mijenja se u „guru100“ nakon naredbe „alter table“.

SQLite dodajte stupce- Koristeći naredbu ALTER TABLE

Također možete koristiti naredbu "ALTER TABLE" za dodavanje stupaca:

ALTER TABLE guru100 ADD COLUMN Age INT;

Ovo će izmijeniti tablicu „guru100“ i dodati joj novi stupac Dob.

Ako niste vidjeli nikakav izlaz, to znači da je naredba bila uspješna i da je stupac dodan. Bez izlaza znači da će kursor biti pozicioniran nakon "sqlite>" bez teksta nakon njega, ovako:

SQLite Naredbeni redak ne prikazuje nikakav izlaz nakon uspješne naredbe ALTER TABLE ADD COLUMN

Međutim, da bismo provjerili je li stupac dodan, možemo upotrijebiti naredbu „.schema guru100“. To će vam dati definiciju tablice i trebali biste vidjeti novi stupac koji smo upravo dodali:

SQLite Izlaz .schema guru100 koji prikazuje novi stupac Dob dodan u tablicu

SQLite IZMJENA TABLICE: Preimenovanje i brisanje stupca

Osim dodavanja stupca, moderne verzije SQLite također može preimenovati jedan stupac i ukloniti jedan. Preimenovanje stupca dostupno je od SQLite 3.25 i ažurira naziv unutar definicije tablice kao i u svakom indeksu, okidaču i pogledu koji referencira stupac.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Za uklanjanje stupca, SQLite 3.35 i noviji podržavaju izravnu klauzulu DROP COLUMN:

ALTER TABLE guru100 DROP COLUMN Age;

Stupac se ne može ukloniti ako je dio primarnog ključa, jedinstvenog ograničenja ili indeksa. Na starijim verzijama SQLite Za verzije kojima nedostaje naredba DROP COLUMN, klasično rješenje je stvaranje nove tablice sa željenim stupcima, kopiranje redaka, uklanjanje stare tablice i na kraju preimenovanje nove.

Kako kopirati tablicu u SQLite Korištenje naredbe CREATE TABLE AS SELECT

Ponekad vam je potrebna kopija tablice, bilo kao sigurnosna kopija prije rizične promjene ili kao početna točka za novu tablicu. SQLite gradi ovo u jednom koraku s naredbom CREATE TABLE AS SELECT, koja stvara novu tablicu čiji stupci dolaze iz upita i popunjava je retcima koje upit vraća.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

Nova tablica „guru100_backup“ prima iste stupce i svaki redak iz „guru100“. Za kopiranje samo nekih redaka, dodajte WHERE klauzulu u SELECT:

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

Jedna stvar koju treba zapamtiti je da CREATE TABLE AS SELECT kopira nazive stupaca, tipove i podatke, ali ne kopira primarne ključeve, druga ograničenja ili indekse. Morate ih sami dodati u novu tablicu ako kopija mora provoditi ista pravila kao i original.

SQLite Umetnite vrijednost u tablicu

Za umetanje vrijednosti u tablicu koristimo naredbu "INSERT INTO" na sljedeći način:

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

Možete izostaviti nazive stupaca iza naziva tablice i napisati ga na sljedeći način:

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

U tom slučaju, kada izostavljate nazive stupaca iz tablica, broj umetnutih vrijednosti mora biti isti točan broj stupaca tablice. Tada će svaka vrijednost biti umetnuta u stupac korespondencije. Na primjer, za sljedeću izjavu umetanja:

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

Rezultat ove izjave bit će sljedeći:

SQLite Naredba INSERT INTO dodaje red vrijednosti u tablicu guru100

  • Vrijednost 1 bit će umetnuta u stupac „id“.
  • Vrijednost 'Mike' bit će umetnuta u stupac „Ime“ i
  • Vrijednost 25 bit će umetnuta u stupac „Dob“.

INSERT … DEFAULT VALUES izjava

Tablicu možete popuniti zadanim vrijednostima za stupce odjednom na sljedeći način:

INSERT INTO Tablename DEFAULT VALUES;

Ako stupac ne dopušta null vrijednost niti zadanu vrijednost, dobit ćete grešku "NOT NULL constraint failed" za taj stupac. Kao što slijedi:

SQLite Ograničenje NOT NULL nije uspjelo zbog pogreške UMETANJA ZADANIH VRIJEDNOSTI

Pitanja i odgovori

Ne. SQLite Nema naredbu TRUNCATE TABLE. Za ispraznjenje tablice pokrenite naredbu DELETE FROM table_name bez klauzule WHERE, a zatim upotrijebite naredbu VACUUM za vraćanje oslobođenog prostora na disku. Struktura tablice i njezini stupci ostaju na mjestu.

Naredba DELETE uklanja retke iz tablice, ali tablicu, njezine stupce i strukturu održava spremnima za nove podatke. Naredba DROP TABLE uklanja cijelu tablicu, uključujući njezinu definiciju, indekse i okidače, tako da tablica više ne postoji u bazi podataka.

Na SQLite U naredbenom retku, naredba .tables dot ispisuje svako ime tablice. Iz SQL-a, upitajte ugrađenu tablicu sheme s SELECT name FROM sqlite_master WHERE type = 'table'; što također radi iz bilo koje aplikacije povezane s bazom podataka.

Privremena tablica se stvara pomoću naredbi CREATE TEMP TABLE ili CREATE TEMPORARY TABLE. Vidljiva je samo vezi s bazom podataka koja ju je stvorila i automatski se briše kada se ta veza zatvori, što je čini korisnom za čuvanje međurezultata upita.

Da. Primarni ključ nije obavezan u SQLiteKada izostavite jedan, SQLite i dalje zadržava skriveni 64-bitni rowid koji identificira svaki redak. Ograničenja stupaca kao što su PRIMARY KEY, UNIQUE i NOT NULL su opcionalna kada definirate tablicu.

Prema zadanim postavkama ne. SQLite koristi dinamički typing s afinitetom tipa, tako da stupac prihvaća vrijednosti gotovo bilo kojeg tipa bez obzira na deklarirani tip. Za provedbu stroge provjere, stvorite tablicu kao STRICT tablicu, dodanu u SQLite 3.37.

Da. AI tekstualni SQL asistenti pretvaraju jednostavan opis vaših podataka u naredbe CREATE TABLE sa stupcima, tipovima podataka i ključevima. Točnost se poboljšava kada modelu date svoju postojeću shemu, jer on tada ponovno koristi stvarne nazive tablica i stupaca.

Da. GitHub kopilot predlaže ALTER TABLE, DROP TABLE i ostalo SQLite izjave ugrađene u editore kao što su VS CodeČita vaše migracijske datoteke i postojeće upite, tako da se njegovi dovršeci podudaraju sa stvarnim nazivima vaših tablica i stupaca.

Sažmite ovu objavu uz: