SQLite Looge, muutke, pukseerige tabel näidetega

⚡ Nutikas kokkuvõte

SQLite Tabelihaldus tugineb kolmele andmemääratluskäsule: CREATE TABLE tabeli defineerimiseks, ALTER TABLE selle ümbernimetamiseks või veergude lisamiseks ja muutmiseks ning DROP TABLE selle andmebaasist täielikuks eemaldamiseks.

  • 📐 Loo tabelid: CREATE TABLE käsk defineerib tabeli nime ja selle veerud ning igal veerul on vaja nime ja andmetüüpi.
  • 🛡️ Väldi vigu: Käsu IF NOT EXISTS lisamine käsule CREATE TABLE või IF EXISTS käsule DROP TABLE hoiab ära tõrked, kui tabel on juba olemas või puudub.
  • ✏️ Muuda tabeleid: ALTER TABLE nimetab tabeli ümber, lisab veeru ja tänapäevastes versioonides SQLite nimetab ühe veeru ümber või eemaldab selle.
  • 🗑️ Langetavad lauad: Käsk DROP TABLE eemaldab jäädavalt tabeli ja kõik sellele kuuluvad read ja indeksi.
  • 📑 Kopeeri tabelid: CREATE TABLE AS SELECT loob päringu tagastatud veergude ja ridade põhjal uue tabeli.
  • 🤖 AI abi: Tehisintellekti abilised tekstist SQL-iks teisendamisel ja GitHub Copilot genereerivad lihtsatest ingliskeelsetest viipadest CREATE-, ALTER- ja DROP-lauseid.

SQLite Loo Alter Drop tabel

Allolevad jaotised näitavad, kuidas tabeleid luua, nende struktuuri muuta ja tabeleid sinna lisada. SQLite3 koos näidetega, mis hõlmavad käske CREATE TABLE, ALTER TABLE ja DROP TABLE.

SQLite Loo tabel

Süntaks

Allpool on lause CREATE TABLE süntaks.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Tabeli loomiseks peaksite kasutama päringut „CREATE TABLE” järgmiselt:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

Tabeli nime järel olevates kahes sulgudes määrate tabelite veerud, igal veerul peaksid olema järgmised atribuudid:

  • Nimi, veeru nimi, see peaks olema tabeli veergude hulgas ainulaadne.
  • Andmetüüp – veeru andmetüüp.
  • Valikulised veerupiirangud, nagu me selle õpetuse hilisemates osades selgitame.

SQLite Loo tabel, kui seda pole olemas

Kui skript käivitub mitu korda, siis tavaline CREATE TABLE käsk ebaõnnestub, kui tabel on juba olemas, ja peatub veaga. SQLite lahendab selle valikulise IF NOT EXISTS klausliga, mis loob tabeli ainult siis, kui see puudub, ja ei tee midagi, kui see on juba olemas.

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

Ülaltoodud lause ei tekita kunagi viga „tabel on juba olemas”, mistõttu on seda ohutu installi- või migreerimisskripti alguses hoida.

Sama idee toimib vastupidiselt tabeli eemaldamisel. IF EXISTS lisamine DROP TABLE-le väldib viga, kui tabel on juba kadunud:

DROP TABLE IF EXISTS guru99;

Mõlemad klauslid on automatiseeritud skriptides levinud, kuna need lasevad samal failil korduvalt käivituda ilma käsitsi puhastamiseta käivituste vahel.

Kukkumislaud

Tabeli kustutamiseks kasutage käsku „DROP TABLE”, millele järgneb tabeli nimi järgmiselt:

DROP TABLE guru99;

Muuda tabelit

Tabeli ümbernimetamiseks käsuga „ALTER TABLE” saate teha järgmist:

ALTER TABLE guru99 RENAME TO guru100;

Tabeli nime muutmise kontrollimiseks saate käsuga „.tables” kuvada tabelite loendi ja tabeli nimi peaks nüüd muutuma järgmiselt:

SQLite .tables väljund, mis näitab tabeli ümbernimetamist guru99-lt guru100-le

Nagu näete, muudetakse tabeli nimi „guru99” pärast käsku „alter table” nimeks „guru100”.

SQLite veergude lisamine – käsu ALTER TABLE kasutamine

Veergude lisamiseks võite kasutada ka käsku „ALTER TABLE”:

ALTER TABLE guru100 ADD COLUMN Age INT;

See muudab tabelit „guru100” ja lisab sinna uue veeru „Vanus”.

Kui väljundit ei nähtud, tähendab see, et lause lisamine õnnestus ja veerg lisati. Väljundi puudumine tähendab, et kursor paigutatakse „sqlite>” järele ilma tekstita, näiteks:

SQLite Käsurida ei näita pärast edukat ALTER TABLE ADD COLUMN käsku väljundit

Veergude lisamise kontrollimiseks võime aga kasutada käsku „.schema guru100“. See annab teile tabeli definitsiooni ja peaksite nägema äsja lisatud uut veergu:

SQLite .schema guru100 väljund, mis näitab tabelisse lisatud uut vanuse veergu

SQLite ALTER TABLE: Veeru ümbernimetamine ja kustutamine

Lisaks veeru lisamisele on tänapäevased versioonid SQLite saab ka ühe veeru ümber nimetada ja ühe eemaldada. Veeru ümbernimetamine on olnud saadaval alates SQLite 3.25 ja see uuendab nime nii tabeli definitsioonis kui ka igas indeksis, päästikus ja vaates, mis veerule viitab.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Veeru eemaldamiseks SQLite 3.35 ja uuemad versioonid toetavad otsest DROP COLUMN-klauslit:

ALTER TABLE guru100 DROP COLUMN Age;

Veergu ei saa eemaldada, kui see on osa primaarvõtmest, unikaalsest piirangust või indeksist. Vanematel versioonidel SQLite Versioonides, kus puudub DROP COLUMN (eemalda veerg), on klassikaline lahendus luua uus tabel soovitud veergudega, kopeerida read sinna, kustutada vana tabel ja lõpuks uus tabel ümber nimetada.

Kuidas tabelit kopeerida SQLite Kasutades funktsiooni CREATE TABLE AS SELECT

Mõnikord on vaja tabeli koopiat, kas varukoopiana enne riskantset muudatust või uue tabeli lähtepunktina. SQLite Selle loob ühe sammuga käsklusega CREATE TABLE AS SELECT, mis loob uue tabeli, mille veerud pärinevad päringust, ja täidab selle päringu tagastatud ridadega.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

Uus tabel „guru100_backup” saab tabelist „guru100” samad veerud ja kõik read. Ainult mõne rea kopeerimiseks lisage SELECT-ile WHERE-klausel:

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

Üks asi, mida meeles pidada, on see, et CREATE TABLE AS SELECT kopeerib veerunimed, tüübid ja andmed, kuid see ei kopeeri primaarvõtmeid, muid piiranguid ega indekseid. Peate need uude tabelisse ise lisama, kui koopia peab jõustama samu reegleid kui originaal.

SQLite Sisestage väärtus tabelisse

Väärtuste tabelisse sisestamiseks kasutame järgmist käsku „INSERT INTO”:

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

Võite tabeli nime järel veergude nimed välja jätta ja kirjutada selle järgmiselt:

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

Sellisel juhul, kui jätate tabelite veergude nimed välja, peab sisestatavate väärtuste arv olema täpselt sama kui tabeli veergude arv. Seejärel lisatakse iga väärtus vastavuse veergu. Näiteks järgmise lisalause jaoks:

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

Selle avalduse tulemus on järgmine:

SQLite INSERT INTO lause, mis lisab guru100 tabelisse väärtuste rea

  • Väärtus 1 sisestatakse veergu „id“.
  • Väärtus 'Mike' sisestatakse veergu „Nimi“ ja
  • Väärtus 25 sisestatakse veergu „Vanus“.

INSERT … DEFAULT VALUES lause

Saate täita tabeli veergude vaikeväärtustega korraga järgmiselt.

INSERT INTO Tablename DEFAULT VALUES;

Kui veerg ei luba tühiväärtust ega vaikeväärtust, kuvatakse selle veeru puhul tõrge „NOT NULL piirang ebaõnnestus”. Nagu järgnevalt:

SQLite NOT NULL piirangu ebaõnnestumise viga käsust INSERT DEFAULT VALUES

KKK

Ei. SQLite puudub käsk TRUNCATE TABLE. Tabeli tühjendamiseks käivitage DELETE FROM tabeli_nimi ilma WHERE-klauslita ja seejärel kasutage vabanenud kettaruumi taastamiseks käsku VACUUM. Tabeli struktuur ja selle veerud jäävad paika.

Kasutuskäsk DELETE eemaldab tabelist read, kuid hoiab tabeli, selle veerud ja struktuuri uute andmete jaoks valmis. Kasutuskäsk DROP TABLE eemaldab kogu tabeli, sealhulgas selle definitsiooni, indeksid ja päästikud, seega tabelit andmebaasis enam ei eksisteeri.

Kell SQLite Käsureal prindib käsk .tables dot iga tabeli nime. SQL-ist päri sisseehitatud skeemitabelit käsuga SELECT name FROM sqlite_master WHERE type = 'table'; mis töötab ka igast andmebaasiga ühendatud rakendusest.

Ajutine tabel luuakse käsuga CREATE TEMP TABLE või CREATE TEMPORARY TABLE. See on nähtav ainult selle loonud andmebaasiühendusele ja see kustutatakse automaatselt ühenduse sulgumisel, mistõttu on see kasulik vahepealsete päringutulemuste hoidmiseks.

Jah. Primaarvõti on valikuline. SQLiteKui ühe välja jätad, SQLite hoiab endiselt peidetud 64-bitist rea ID-d, mis identifitseerib iga rea. Veerupiirangud, näiteks PRIMARY KEY, UNIQUE ja NOT NULL, on tabeli defineerimisel valikulised.

Vaikimisi ei. SQLite kasutab dünaamilist typing tüübiafiinsusega, seega veerg aktsepteerib peaaegu igat tüüpi väärtusi, olenemata deklareeritud tüübist. Range kontrolli rakendamiseks looge tabel STRICT-tabelina, mis lisatakse SQLite 3.37.

Jah. Tehisintellekti abilised teksti SQL-iks teisendamiseks muudavad teie andmete lihtsa inglise keele kirjelduse CREATE TABLE lauseteks koos veergude, andmetüüpide ja võtmetega. Täpsus paraneb, kui annate mudelile oma olemasoleva skeemi, kuna see taaskasutab seejärel tegelikke tabeli- ja veerunimesid.

Jah. GitHubi koopia soovitab ALTER TABLE'i, DROP TABLE'i ja teisi SQLite redaktorites tekstisisesed laused, näiteks VS CodeSee loeb teie migratsioonifaile ja olemasolevaid päringuid, nii et selle lõpuleviimised vastavad teie tegelikele tabeli- ja veerunimedele.

Võta see postitus kokku järgmiselt: