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: