SQLite Hozzon létre, módosítson, dobjon el táblázatot példákkal

⚡ Okos összefoglaló

SQLite A táblakezelés három adatdefiníciós parancsra támaszkodik: a CREATE TABLE parancsra a tábla definiálására, az ALTER TABLE parancsra az átnevezésére vagy oszlopok hozzáadására és módosítására, valamint a DROP TABLE parancsra a tábla adatbázisból való teljes eltávolítására.

  • 📐 Táblázatok létrehozása: A CREATE TABLE utasítás definiálja a tábla nevét és oszlopait, és minden oszlopnak szüksége van egy névre és egy adattípusra.
  • 🛡️ Kerülje a hibákat: Az IF NOT EXISTS hozzáadása a CREATE TABLE utasításhoz, vagy az IF EXISTS hozzáadása a DROP TABLE utasításhoz megakadályozza a hibákat, ha egy tábla már létezik vagy hiányzik.
  • ✏️ Táblázatok módosítása: Az ALTER TABLE parancs átnevezi a táblázatot, hozzáad egy oszlopot, és modern SQLite átnevezi vagy elveti egyetlen oszlopot.
  • 🗑️ Ledobható asztalok: A DROP TABLE parancs véglegesen eltávolít egy táblát és minden hozzá tartozó sort és indexet.
  • 📑 Táblázatok másolása: A CREATE TABLE AS SELECT egy új táblát hoz létre a lekérdezés által visszaadott oszlopokból és sorokból.
  • 🤖 AI segítség: A mesterséges intelligenciával működő szöveg-SQL asszisztensek és a GitHub Copilot egyszerű angol promptokból generál CREATE, ALTER és DROP utasításokat.

SQLite Alter Drop tábla létrehozása

Az alábbi szakaszok bemutatják, hogyan hozhat létre táblázatokat, hogyan módosíthatja azok szerkezetét, és hogyan szüntethet meg táblázatokat a SQLite3. oldal példákkal, amelyek a CREATE TABLE, ALTER TABLE és DROP TABLE parancsokat ismertetik.

SQLite Táblázat létrehozása

Szintaxis

Az alábbiakban a CREATE TABLE utasítás szintaxisa látható.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Tábla létrehozásához a „CREATE TABLE” lekérdezést kell használnia az alábbiak szerint:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

A tábla neve utáni két zárójelben határozza meg a táblázatok oszlopait, minden oszlopnak a következő tulajdonságokkal kell rendelkeznie:

  • Egy név, az oszlopnévnek egyedinek kell lennie a tábla oszlopai között.
  • Egy adattípus – az oszlop adattípusa.
  • Opcionális oszlopkorlátozások, amint azt a bemutató későbbi szakaszaiban ismertetjük.

SQLite TÁBLÁZAT LÉTREHOZÁSA, HA NEM LÉTEZIK

Amikor egy szkript többször fut, egy egyszerű CREATE TABLE utasítás meghiúsul, ha a tábla már létezik, és hibával áll le. SQLite Ezt az opcionális IF NOT EXISTS záradékkal oldja meg, amely csak akkor hozza létre a táblát, ha az hiányzik, és nem tesz semmit, ha már létezik.

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

A fenti utasítás soha nem okozza a „tábla már létezik” hibát, így biztonságosan a telepítő vagy migrációs szkript tetején tartható.

Ugyanez az elv fordítva működik, amikor egy táblát eltávolítunk. Az IF EXISTS hozzáadása a DROP TABLE függvénnyel elkerüli a hibát, ha a tábla már eltűnt:

DROP TABLE IF EXISTS guru99;

Mindkét záradék gyakori az automatizált szkriptekben, mivel lehetővé teszik ugyanazon fájl ismételt futtatását anélkül, hogy manuálisan törölni kellene a futtatások között.

Drop asztal

Egy tábla törléséhez használd a „DROP TABLE” parancsot, majd a tábla nevét az alábbiak szerint:

DROP TABLE guru99;

Alter táblázat

Az „ALTER TABLE” paranccsal a következőképpen nevezhet át egy táblát:

ALTER TABLE guru99 RENAME TO guru100;

A tábla nevének változásának ellenőrzéséhez a „.tables” parancs segítségével jelenítse meg a táblák listáját, és a tábla nevét most a következőképpen kell megváltoztatni:

SQLite A .tables kimenete, amelyen a guru99-ről guru100-ra átnevezett tábla látható

Amint látható, a „guru99” tábla neve „guru100”-ra változik az „alter table” parancs után.

SQLite oszlopok hozzáadása – Az ALTER TABLE parancs használatával

Az „ALTER TABLE” parancsot is használhatod oszlopok hozzáadásához:

ALTER TABLE guru100 ADD COLUMN Age INT;

Ez módosítja a „guru100” táblát, és hozzáad egy új, „Age” oszlopot.

Ha nem láttál kimenetet, az azt jelenti, hogy az utasítás sikeres volt, és az oszlop hozzáadódott. A kimenet hiánya azt jelenti, hogy a kurzor az „sqlite>” után fog elhelyezkedni, és nem lesz utána szöveg, így:

SQLite A parancssor nem mutat kimenetet sikeres ALTER TABLE ADD COLUMN parancs után

Azonban annak ellenőrzésére, hogy az oszlop hozzá lett-e adva, használhatjuk a „.schema guru100” parancsot. Ez megadja a tábla definícióját, és látnia kell az imént hozzáadott új oszlopot:

SQLite A .schema guru100 kimenete, amelyen látható a táblázathoz hozzáadott új Kor oszlop

SQLite ALTER TABLE: Oszlop átnevezése és törlése

Egy oszlop hozzáadásán túl a modern verziók SQLite át is nevezhet egyetlen oszlopot, és eltávolíthat egyet. Az oszlopok átnevezése a következő óta lehetséges: SQLite 3.25-ös verzióban, és frissíti a nevet a tábladefiníción belül, valamint minden olyan indexben, triggerben és nézetben, amely az oszlopra hivatkozik.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Egy oszlop eltávolításához SQLite A 3.35-ös és újabb verziók támogatják a közvetlen DROP COLUMN záradékot:

ALTER TABLE guru100 DROP COLUMN Age;

Egy oszlop nem dobható el, ha az egy elsődleges kulcs, egy egyedi megszorítás vagy egy index része. Régebbi verziókon SQLite Azokban a verziókban, amelyekből hiányzik a DROP COLUMN utasítás, a klasszikus megoldás egy új tábla létrehozása a kívánt oszlopokkal, a sorok átmásolása, a régi tábla elvetése, majd az új átnevezése.

Hogyan másoljunk egy táblázatot SQLite A CREATE TABLE AS SELECT használata

Néha szükség van egy táblázat másolatára, akár biztonsági mentésként egy kockázatos módosítás előtt, akár egy új táblázat kiindulópontjaként. SQLite Ezt egy lépésben felépíti a CREATE TABLE AS SELECT paranccsal, amely egy új táblát hoz létre, amelynek oszlopai egy lekérdezésből származnak, és kitölti azt a lekérdezés által visszaadott sorokkal.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

Az új „guru100_backup” tábla ugyanazokat az oszlopokat és minden sort kap a „guru100” táblától. Ha csak néhány sort szeretne másolni, adjon hozzá egy WHERE záradékot a SELECT-hez:

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

Fontos megjegyezni, hogy a CREATE TABLE AS SELECT parancs átmásolja az oszlopneveket, típusokat és adatokat, de nem másolja az elsődleges kulcsokat, egyéb korlátozásokat vagy indexeket. Ezeket Önnek kell hozzáadnia az új táblához, ha a másolatnak ugyanazokat a szabályokat kell érvényesítenie, mint az eredetinek.

SQLite Szúrjon be értéket egy táblázatba

Értékek táblázatba való beszúrásához az „INSERT INTO” utasítást használjuk az alábbiak szerint:

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

A táblázat neve után elhagyhatja az oszlopneveket, és a következőképpen írhatja be:

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

Ebben az esetben, ha kihagyja az oszlopneveket a táblákból, a beszúrt értékek számának pontosan meg kell egyeznie a táblázat oszlopainak számával. Ezután minden érték bekerül a megfelelési oszlopba. Például a következő beillesztési utasításhoz:

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

Ennek a nyilatkozatnak az eredménye a következő lesz:

SQLite INSERT INTO utasítás, amely egy sornyi értéket ad hozzá a guru100 táblához

  • Az 1-es érték az „id” oszlopba kerül beszúrásra.
  • A „Mike” érték bekerül a „Név” oszlopba, és
  • A 25-ös érték a „Kor” oszlopba kerül beszúrásra.

INSERT … DEFAULT VALUES utasítás

A táblázatot egyszerre töltheti fel az oszlopok alapértelmezett értékeivel az alábbiak szerint:

INSERT INTO Tablename DEFAULT VALUES;

Ha egy oszlop nem engedélyez sem null, sem alapértelmezett értéket, akkor a „NOT NULL megszorítás sikertelen” hibaüzenetet kapja az adott oszlopra vonatkozóan. Az alábbiak szerint:

SQLite NOT NULL megszorítás sikertelen hiba az INSERT DEFAULT VALUES parancsból

GYIK

Nem. SQLite nincs TRUNCATE TABLE parancsa. Egy tábla kiürítéséhez futtassa a DELETE FROM table_name parancsot WHERE záradék nélkül, majd a VACUUM paranccsal szabadítsa fel a felszabadult lemezterületet. A tábla szerkezete és oszlopai a helyükön maradnak.

A DELETE parancs törli a sorokat a táblából, de a táblát, annak oszlopait és szerkezetét megőrzi az új adatok fogadására. A DROP TABLE parancs eltávolítja a teljes táblát, beleértve a definícióját, az indexeit és a triggereit, így a tábla már nem létezik az adatbázisban.

A SQLite Parancssorban a .tables dot parancs kinyomtatja az összes tábla nevét. SQL-ből kérdezd le a beépített sématáblát a SELECT name FROM sqlite_master WHERE type = 'table' paranccsal; ami az adatbázishoz csatlakoztatott bármely alkalmazásból működik.

Egy ideiglenes tábla a CREATE TEMP TABLE vagy a CREATE TEMPORARY TABLE paranccsal hozható létre. Csak az azt létrehozó adatbázis-kapcsolat számára látható, és automatikusan törlődik, amikor a kapcsolat bezárul, ami hasznossá teszi a köztes lekérdezési eredmények tárolására.

Igen. Az elsődleges kulcs megadása opcionális. SQLiteHa kihagysz egyet, SQLite továbbra is megőrzi a sorok azonosítóját rejtett 64 bites sorazonosítóként. Az oszlopkorlátozások, mint például a PRIMARY KEY, UNIQUE és NOT NULL, mind opcionálisak egy tábla definiálásakor.

Alapértelmezés szerint nem. SQLite dinamikus ty-t használping típusaffinitással, így egy oszlop szinte bármilyen típusú értéket elfogad, függetlenül a deklarált típusától. A szigorú ellenőrzés kikényszerítéséhez hozza létre a táblázatot STRICT táblaként, és adja hozzá a következőhöz: SQLite 3.37.

Igen. A mesterséges intelligencián alapuló szöveg-SQL asszisztensek az adatok egyszerű angol leírását CREATE TABLE utasításokká alakítják, oszlopokkal, adattípusokkal és kulcsokkal. A pontosság javul, ha a modellnek a meglévő sémát adjuk meg, mivel az ezután valódi tábla- és oszlopneveket használ fel újra.

Igen. GitHub másodpilóta az ALTER TABLE, DROP TABLE és más parancsokat javasolja SQLite szerkesztőkbe ágyazott utasítások, például VS CodeBeolvassa a migrációs fájlokat és a meglévő lekérdezéseket, így a kiegészítései megegyeznek a valódi tábla- és oszlopnevekkel.

Foglald össze ezt a bejegyzést a következőképpen: