sqlite-moduuli - Työskentely tietokannan kanssa. Alkaen SQLite3:sta – Peruskomennot

Kevyt sisäänrakennettu suhteellinen perusta tiedot. Ominaisuuksien joukossa: se ei käytä asiakas-palvelin-paradigmaa,
tukee melkein kaikkia standardi setti SQL-ohjeet, SQLite-moottori on kirjasto (sqlite3.dll), eli se ei ole
erikseen käynnissä oleva prosessi, tarjoaa kutsuttavia toimintoja (API) vaihtoprotokollana.
Win32-alustalle (esikäännetty Windowsille) virallisella verkkosivustolla - sqlite.org - voit ladata itse kirjaston suoraan - sqlite3.dll
(sqlite - dll - win32), sekä toimiva asiakasosa - sqlite3.exe (sqlite - shell - win32). Viimeisin saatavilla oleva versio on v.3.7.10
Sqlite3.exe-asiakaskuoren avulla voit työskennellä suoraan tietokannan kanssa konsolin kautta.
Ennen kuin aloitat, sinun on tehtävä joitain pieniä manipulaatioita: 1) konsolin kirjasin on siirrettävä Lucida Consoleen
(napsauta hiiren kakkospainikkeella konsolia -> Properties -> Font), 2) muuta koodisivuksi 1251 komennolla "chcp 1251", oletuskoodisivu on 866.
Tämä on tarpeen tekstitietojen oikeaan lisäämiseen tietokantataulukoihin.

Alla on luettelo kaikista erikoiskomennoista ja lyhyt kuvaus niistä.

Tiimi Lyhyt kuvaus
.databases Näyttää luettelon kaikkien nykyisessä istunnossa yhdistettyjen tietokantojen nimistä ja niitä vastaavista tiedostoista.
.dump ?TAULUKOT?: Poista kaikki SQL-käskyt, joita käytetään tietokannan tai erillisen taulukon luomiseen tekstimuodossa
.echo ON|OFF ON | OFF echo syötetyt komennot
.exit Poistu ohjelmasta
.explain ON|OFF Ohjaa virtuaalikoneen komentojen tulostustilaa. Käytetään suoritettaessa EXPLAIN SQL -kyselyä.
.header(s) ON|OFF ON | OFF näyttää sarakkeiden otsikot
.import TIEDOSTOTAULUKKO Tuo tiedot kohteesta tiedosto FILE TABLE-taulukkoon
.indexes TABLE Näyttää kaikkien taulukon indeksien nimet
.mode MODE Tulostustilan asettaminen: rivi(t), sarake(t), lisäys, luettelo, html ja muut
.nullvalue STRING Tulostaa merkkijono STRING NULL-tietojen sijaan tulostettaessa SQL SELECT -kyselyä
.output FILENAME Lähetä kaikki tulosteet tiedostoon FILENAME
.output stdout Lähetä kaikki tulosteet näytölle
.promt PÄÄJATKO Muutos tavallinen merkkijono vinkkejä
.quit Poistu heidän ohjelmastaan
.read FILENAME Suorita SQL-käskyt tiedostosta FILENAME
.schema ?TAULUKKO? Näyttää CREATE-käskyn SQL-tekstin kaikille taulukoille tai määritetylle taulukolle
.separator STRING Muuta sarakkeiden erotinmerkkijonoa, jota käytetään SQL SELECT -kyselyn ja .import-komennon tulostuksessa
.show Näytä asetettujen muuttujien arvot
.taulukot ?KUVIO? Tietokantataulukoiden nimien luettelon näyttäminen (mahdollisesti mallin avulla)
.timeout MS Estää taulukoiden avaamisen useiden millisekuntien ajaksi MS
.width NUM NUM: Aseta sarakkeiden leveys tulostettaessa saraketilassa

Tarkastellaanpa joitain näistä komennoista tarkemmin. Luodaan ensin tietokanta, jota tarkastelemme erikoisjoukkueet. From komentorivi Suorita konsoliohjelma "sqlite3.exe" kirjoittamalla seuraava:

sqlite3 tentti.db
SQLite versio 3.1.3
Kirjoita ".help" saadaksesi ohjeet
Missä on tentti.db nimi luotu pohja tiedot.

Luodaan taulukko tbl1, kanssa SQL:n avulla CREATE TABLE -lausekkeet.

sqlite> CREATE TABLE tbl1 (yksi KOKONAISLUKU PRIMARY KEY AUTOM. LISÄYS,
kaksi VARCHAR(50), kolme REAL);

Lisätään joitakin tietueita tämä pöytä. Huomautan, että taulukon luomisohjeissa kullekin kentälle määritimme sen arvoille tietotyypin. SQLite-ohjelma jättää tämän tietotyypin huomiotta. SQLite-tietokannan hallintajärjestelmä on melko löysä tietotyyppien määrittelyssä, mikä ei ole standardille tyypillistä SQL-kieli. Tietojen kirjoittaminen "SQLite":ssä perustuu ns. "typeless" -periaatteeseen, mikä tarkoittaa, että tieto taulukon sarakkeiden määrittelyssä olevasta tietotyypistä jätetään huomioimatta, kun se luodaan CREATE TABLE -käskyllä. On kuitenkin parasta sisällyttää saraketyyppien nimet taulukoiden ilmoittamiseen tietokannan siirrettävyyden parantamiseksi. "typeless" -periaatteeseen on yksi poikkeus - sarake, jonka tyyppi on INTEGER PRYMARY KEY (INTEGER ei ole INT; INT PRIMARY KEY - täyttää "typeless" -periaatteen). Sarakkeen, jonka tyyppi on INTEGER PRIMARY KEY, on sisällettävä 32-bittinen kokonaisluku, jos tämän tyyppiseen sarakkeeseen yritetään kirjoittaa minkä tahansa tyyppisiä tietoja, seurauksena on virhe. Tätä tyyppiä käytetään yleensä ennen AUTOINCREMENT-sarakemäärittelijää, sarake, jonka tyyppi on INTEGER PRIMARY KEY AUTOINCREMENT, on taulukon avainsarake, jonka arvot luodaan automaattisesti.

sqlite> INSERT INTO tbl1 VALUES(NULL, "hei", 3.10);
sqlite> INSERT INTO tbl1 ARVOT(NULL, "on", 5.34);
sqlite> INSERT INTO tbl1 ARVOT(NULL, "alkaen", NULL);

sqlite> CREATE TABLE tbl2 (ikey INTEGER PRIMARY KEY, nm VARCHAR(50));
sqlite>
sqlite>

Command.dump

Voit saada täydellisen vedoksen (luettelon) kaikista SQL-käskyistä, joita käytetään tietokannan tai tietyn taulukon luomiseen.

Syntaksi:

Dump ?TAULUKKO?
missä TABLE - valinnainen nimi taulukko, jolle haluat vedota SQL-käskyt.

sqlite>.dump
ALOITA TAPAHTUMA;
CREATE TABLE tbl1 (yksi kokonaisluku ensisijaisen avaimen automaattinen lisäys, kaksi varchar(50),
kolme todellista);
INSERT INTO "tbl1" ARVOT(1, "hei", 3.1);
INSERT INTO "tbl1" ARVOT(2, "on", 5.34);
INSERT INTO "tbl1" ARVOT(3, "from", NULL);
POISTA sqlite_sequence;
INSERT INTO "sqlite_sequence" VALUES("tbl1", 3);

LUO AINUTLAATUINEN HAKEMISTO itbl2 tbl2:ssa(ikey);
TEHDÄ;
sqlite>

Tällä komennolla voidaan viedä SQLitessä luotu tietokanta toiseen tietokantaohjelmaan. Tätä varten sinun on tallennettava tiedostoon täydellinen vedos SQL-käskyjä.

sqlite> .output exam.sql --ohjaa tulosteen tiedostoon
sqlite>.dump

Command.header(s)

Ottaa käyttöön/poistaa käytöstä sarakeotsikoiden nimien näyttämisen.

Syntaksi:

Otsikko(t) PÄÄLLÄ | VINOSSA
Missä,

PÄÄLLÄ - ota käyttöön sarakeotsikoiden nimien näyttö
OFF - poista sarakeotsikoiden nimien näyttäminen käytöstä
Esimerkki:

sqlite>.header PÄÄLLÄ
sqlite> SELECT * FROM tbl1;
yksi|kaksi|kolme
1|hei|3.1
2|on|5,34
3|alkaen|
sqlite>.header OFF
sqlite> SELECT * FROM tbl1;
1|hei|3.1
2|on|5,34
3|alkaen|
sqlite>

Command.import

Tällä komennolla on mahdollista tuoda tietoja tekstitiedostosta. Tekstitiedoston tiedot on erotettava erotinrivillä, tämä erotinrivi määräytyy .separator-komennolla. Oletuserotinmerkki on putkimerkki "|". Tämä komento esitelty versiossa 3.

Syntaksi:

Tuo TIEDOSTOTAULUKKO
Missä,

FILE - syötetyn testitiedoston nimi datan kanssa
TABLE - sen taulukon nimi, johon tiedot lisätään
Esimerkki:

Valmistetaan seuraavat tiedot exam.txt-tiedostoon

1; Roy
2; Ted
3; Sam
4; Bob
Lisätään nämä tiedot tbl2-taulukkoon suorittamalla seuraavat komennot:

sqlite> .separator ";" -- aseta erotinmerkki puolipisteeksi
sqlite> .import exam.txt tbl2 -- tietojen tuonti
sqlite> SELECT * FROM tbl2;
1; Roy
2; Ted
3; Sam
4; Bob

Komentotila

Tämä komento muuttaa tulostusmuotoa SQL-taulukot SELECT-kyselyllä. "SQLite" voi tulostaa kyselytuloksia seuraavissa muodoissa: csv, sarake, html, insert, rivi, luettelo, välilehdet, tcl. Versio 2.8 tukee vain seuraavia muotoja: rivi(t), sarake(t), insertti, luettelo, html. Katsotaanpa niitä järjestyksessä.

csv-tila. Tässä muodossa taulukon tietueen sarakkeet erotetaan pilkuilla.

sqlite>.mode csv
sqlite> SELECT * FROM tbl1;
1"hei",3.1
2"on",5.34
3"alkaen",
sqlite>

Tila on kätevä taulukoiden viemiseen kolmannen osapuolen ohjelmia, Esimerkiksi tämä muoto, ymmärtää Excelin.

Saraketila. Tässä tilassa tulos on tasattu taulukon tietuesarakkeiden vasempaan reunaan.

sqlite> .mode sarakkeita
sqlite> SELECT * FROM tbl1;
1 hei 3.1
2 on 5,34
3 alkaen
sqlite>

Katso myös .width-komento asettaaksesi sarakkeiden leveyden.

HTML-tila. Tulostus tässä tilassa tehdään taulukon määritelmätyyliin html kieli. Kätevä sisällyttää taulukko verkkosivuston sivulle.

sqlite>.mode html
sqlite> SELECT * FROM tbl2;

1
Roy

2
Ted

3
Sam

4
Bob

sqlite>

lisäystila. SISÄÄN tämä tila syntyy SQL-kyselyt INSERT taulukolle, jonka nimi on määritetty komennon kolmanneksi parametriksi.

Syntaksi:

Tila lisää TABLE
jossa TABLE on sen taulukon nimi, jolle INSERT-käskyt luodaan

sqlite> .mode insert tbl3
sqlite> SELECT * FROM tbl1;
INSERT INTO tbl3 ARVOT(1,"hei",3.1);
INSERT INTO tbl3 ARVOT(2,"on",5.34);
INSERT INTO tbl3 ARVOT(3,"from",NULL);
sqlite>

Linjatila. Tässä jokainen sarake tulostetaan sisään erillinen rivi muodossa sarakkeen_nimi = arvo. Merkinnät erotetaan tyhjällä rivillä.

Esimerkki:

sqlite>.mode rivillä
sqlite> SELECT * FROM tbl1;
yksi = 1
kaksi = hei
kolme = 3.1

yksi = 2
kaksi = on
kolme = 5,34

yksi = 3
kaksi = alkaen
kolme =
sqlite>

luettelotila Tämä on oletustila. Jokainen taulukkotietue näytetään erillisellä rivillä, ja sarakkeet on erotettu erotinmerkillä. Erotinmerkki määritellään .separator-komennolla, ja se on oletuksena yhtä suuri kuin vinoviiva "|".

sqlite> .mode luettelo
sqlite> SELECT * FROM tbl1;
1|hei|3.1
2|on|5,34
3|alkaen|
sqlite>

välilehdet-tila. Tässä tilassa taulukkotietueiden sarakkeet erotetaan toisistaan ​​sarkainmerkillä.

sqlite>.mode-välilehdet
sqlite> SELECT * FROM tbl1;
1 hei 3.1
2 on 5,34
3 alkaen
sqlite>

TCL-tila Tulos on TCL-luetteloelementtimuodossa.

sqlite>.mode tcl
sqlite> SELECT * FROM tbl2;
"1" "Roy\r"
"2" "Ted\r"
"3" "Sam\r"
"4" "Bob\r"
sqlite>

Command.output

Tämä komento ohjaa tulosteen tiedostoon tai takaisin näyttöön.

Syntaksi:

Tulosta FILENAME
.output stdout
Missä,

FILENAME - sen tiedoston nimi, johon tuloste lähetetään
stdout - suora lähtö näytölle
Komento.lue

Lukee ja suorittaa SQL-käskyjä tiedostosta.

Syntaksi:

Lue FILENAME
jossa FILENAME on SQL-käskyt sisältävän tiedoston nimi

Luoda tekstitiedosto joka sisältää seuraavat SQL-kyselyt:

ALOITA TAPAHTUMA;

INSERT INTO tbl3 VALUES ("Jim", "Green", 1653);
INSERT INTO tbl3 VALUES ("Ann", "Folkin", 1891);
INSERT INTO tbl3 VALUES ("Fredy", "Donovan", 2345);
TEHDÄ;

Nimetään luotu tiedosto exam.sql ja suoritetaan seuraavat komennot:

sqlite> .read exam.sql
sqlite> SELECT * FROM tbl3;
Jim|Green|1653
Ann|Folkin|1891
Fredy|Donovan|2345
sqlite>

Command.schema

Tämä komento tulostaa kaikki SQL CREATE TABLE- ja CREATE INDEX -käskyt, joita käytetään taulukoiden ja indeksien luomiseen nykyisessä tietokannassa. On mahdollista määrittää tietyn taulukon nimi, jonka haluat näyttää SQL-lause sen luominen.

Syntaksi:

Kaavio ?TAULUKKO?
missä, ?TAULUKKO? - valinnainen taulukon nimi

sqlite>.schema
CREATE TABLE sqlite_sequence(nimi,seq);
CREATE TABLE tbl1 (yksi kokonaisluku ensisijaisen avaimen automaattinen lisäys, kaksi varchar(50), kolme real);
LUO TAULUKKO tbl2 (ikey integer integer ensisijainen avain, nm VARCHAR(20));
LUO TAULUKKO tbl3 (nimi VARCHAR(30), sukunimi VARCHAR(50), numero INT);
LUO AINUTLAATUINEN HAKEMISTO itbl2 tbl2:ssa(ikey);
sqlite>

Komento.taulukot

Komento näyttää luettelon taulukoiden nimistä, jotka on luotu nykyinen tukikohta tiedot. On mahdollista käyttää mallin määritelmää palauttamaan taulukoiden nimet vastaavaan malliin. Kuvion syntaksi on sama kuin kuvion määritelmä LIKE-lauseessa.

Syntaksi:

Taulukot ?PATTERN?
missä?ISÄ? - valinnainen hakukuvion määritelmä

Esimerkki:

sqlite>.taulukot
sqlite_sequence tbl1 tbl2 tbl3
sqlite> .tables %tb% "mallilla
tbl1 tbl2 tbl3
sqlite>

Command.width

Käytetään sarakkeiden leveyden asettamiseen, kun tulostusmuodoksi on asetettu sarake.

Syntaksi:

Leveys NUM NUM:
jossa NUM on vastaavan sarakkeen leveys merkeissä.

sqlite> .mode-sarakkeessa
sqlite>.width 3 10 7
sqlite> SELECT * FROM tbl1;
1 hei 3.1
2 on 5,34
3 alkaen
sqlite>

SQLite– on itsenäinen, palvelimeton tietokannan tapahtumamekanismi SQL-tiedot. Python sai sqlite3-moduulin versiossa 2.5, mikä tarkoittaa, että voit luoda tietokannan SQLite-tiedot missä tahansa Pythonin todellisessa versiossa ilman lisätyökalujen lataamista. Mozilla käyttää SQLite-tietokantoja suosituissa Firefox selain kirjanmerkkien ja muiden tallentamiseen erilaisia ​​tietoja. Tässä artikkelissa käsittelemme seuraavia asioita:

  • Miten luoda SQLite-tietokanta
  • Kuinka lisätä tietoja taulukkoon
  • Kuinka muokata tietoja
  • Kuinka poistaa tietoja
  • SQL-peruskyselyt

Toisin sanoen itse moduulin kokoamisen sijaan käymme suoraan läpi sen käytön.
Jos haluat tarkistaa tietokantasi visuaalisesti, voit käyttää laajennusta SQLite Manager Firefoxissa (suosittelemme googlea Tämä kysymys), tai jos haluat käyttää komentoriviä, voit käyttää komentoriviltä.

Kuinka luoda tietokanta ja lisätä erilaisia ​​tietoja

Tietokannan luominen SQLitessä on hyvin yksinkertaista, mutta prosessi edellyttää, että ymmärrät hieman mitä SQL on. Katsotaanpa koodia, joka luo tallennettavan tietokannan musiikkialbumit:

Python

import sqlite3 conn = sqlite3.connect("mydatabase.db") # tai :memory: tallentaa RAM-muistiin cursor = conn.cursor() # Luo taulukko cursor.execute("""LUO TABLE-albumit (nimiteksti, artistin teksti , release_date text, publisher text, media_type text) """)

Ensin tarvitsemme moduulin sqlite3 ja luo yhteys tietokantaan. Voit välittää tiedoston nimen tai käyttää vain erityistä merkkijonoa " :muisti:” luodaksesi muistissa olevan tietokannan. Meidän tapauksessamme luomme sen levylle tiedostoon nimeltä oma tietokanta.db.

Seuraavaksi luomme objektin kohdistin, jonka avulla voimme olla vuorovaikutuksessa tietokannan kanssa ja lisätä tietueita mm. Täällä käytämme SQL-syntaksi luodaksesi albumit-nimisen taulukon, jossa on seuraavat viisi kenttää: nimi, esittäjä, julkaisupäivä, julkaisija ja mediatyyppi. SQLite tukee vain viittä tietotyyppiä: tyhjä, kokonaisluku, todellinen, teksti Ja möykky. Kirjoitetaan tämä koodi ja lisätään tietoja omaan uusi pöytä. Muista, jos suoritat komennon LUO TAULU, ja tietokanta on jo olemassa, saat virheilmoituksen.

Python

# Lisää tiedot taulukkoon cursor.execute("""INSERT INTO albums VALUES ("Glow", "Andy Hunter", "7/24/2012", "Xplore Records", "MP3")""") # Tallenna muutokset conn.commit() # Lisää taulukkoon paljon tietoa turvallisella "?"-menetelmällä albumit = [("Exodus", "Andy Hunter", "7/9/2002", "Sparrow Records", "CD"), ("Until We Have Faces", "Red", "2/1/2011" , "Essential Records", "CD"), ("The End is Where We Begin", "Thousand Foot Krutch", "4/17/2012", "TFKmusic", "CD"), ("The Good Life" , "Trip Lee", "4/10/2012", "Reach Records", "CD")] cursor.executemany("INSERT INTO albums VALUES (?,?,?,?,?)", albums) conn. tehdä()

# Lisää tiedot taulukkoon

kohdistin. execute("""INSERT INTO albumeihin

ARVOT ("Glow", "Andy Hunter", "7/24/2012",

"Xplore Records", "MP3")"""

# Tallenna muutokset

yhteys tehdä()

# Lisää taulukkoon paljon tietoa turvallisella "?"-menetelmällä

albumit = [ ("Exodus" , "Andy Hunter" , "7/9/2002" , "Sparrow Records" , "CD" ) ,

("Until We Have Faces", "Red", "2/1/2011", "Essential Records", "CD"),

("The Good Life", "Trip Lee", "4/10/2012", "Reach Records", "CD")]

kohdistin. executemany( "INSERT INTO albums VALUES (?,?,?,?,?)", albumit)

yhteys tehdä()

INSERT INTO SQL lisätäksesi tietueen tietokantaamme. Huomaa, että jokainen esine on sisällä yksittäisiä lainauksia. Tämä voi vaikeuttaa asioita, jos sinun on lisättävä rivejä, jotka sisältävät yksittäisiä lainausmerkkejä. Joka tapauksessa, jotta voimme tallentaa tietueen tietokantaan, meidän on luotava se. Seuraava koodinpätkä näyttää kuinka lisätä useita tietueita kerralla käyttämällä kohdistinmenetelmää. Huomaa, että käytämme kysymysmerkkejä ( ? ), korvausmerkkijonojen (%) sijaan arvojen lisäämiseksi. Huomaa, että korvaavan merkkijonon käyttäminen ei ole turvallista, koska se voi aiheuttaa hyökkäyksen SQL-injektio. Kysymysmerkin käyttäminen on paljon parempi ja sen käyttö SQLAlchemy varsinkin kun se tekee kaiken tarvittavan suojellakseen sinua sisäänrakennetulta muokkaukselta yksittäisiä lainauksia mitä SQLite pystyy hyväksymään.

Merkintöjen muokkaaminen ja poistaminen

Tilaisuus päivittää tietueita tietokannassasi, tämä on avain tietojesi pitämiseen siistinä ja kunnossa. Jos et voi muokata tietoja, tukiasemasi muuttuu hyödyttömäksi tarpeeksi pian. Joskus sinun on myös poistettava rivejä. Tarkastelemme molempia kysymyksiä Tämä alue. Ensin tehdään pieni virkistys.

Python

Tässä käytimme komentoa SQL PÄIVITYS päivittääksesi albumitaulukon. Täällä voit käyttää komentoa ASETA muuttaaksesi kenttää, joten meidän tapauksessamme vaihdamme artistin nimeksi John Doe jokaisessa merkinnässä, jossa artistikenttä on Andy Hunterille. Aika yksinkertaista, eikö? Huomaa, että jos et vahvista muutoksia, niitä ei lisätä tietokantaan. Tiimi POISTAA yhtä yksinkertaista. Katsotaanpa.

Python

Poistaminen on jopa helpompaa kuin päivittäminen. SQL:ssä se kestää vain kaksi riviä. SISÄÄN tässä tapauksessa, meidän tarvitsee vain määrittää SQLite, mistä taulukosta poistetaan (albumit) ja mikä tietue käyttää kohdetta MISSÄ. Niinpä haettiin levyä, jonka artistikentässä oli nimi ”John Doe”, ja sitten näitä tiedot on poistettu.

SQLite-peruskyselyt

Tiedustelut osoitteeseen SQLite ovat hyvin samankaltaisia ​​kuin ne, joita käytät muissa tietokannoissa, kuten MySQL tai Postgres. Käytämme yksinkertaisesti normaalia SQL-syntaksia kyselyjen suorittamiseen, ja sitten kohdistinobjekti suorittaa SQL:n. Tässä on joitain esimerkkejä:

Python

import sqlite3 conn = sqlite3.connect("mydatabase.db") #conn.row_factory = sqlite3.Rivikursori = conn.cursor() sql = "VALITSE * albumeista WHERE artist=?" cursor.execute(sql, [("Punainen")]) print(cursor.fetchall()) # tai käytä fetchone() print("Tässä" on luettelo kaikista taulukon tietueista:") kohdistimen riville. execute("SELECT rivi, * FROM albumeista ORDER BY artist"): print(row) print("Tulokset LIKE-kyselystä:") sql = "SELECT * FROM albumeista WHERE title LIKE "%"" cursor.execute(sql ) tulosta(kursori.haku())

Tämä on C-kielellä kirjoitettu kirjasto, joka toimii SQL:n kanssa. Tämä työkalu kuuluu Relational Database Management Systemsiin. Useimmat SQL-tietokannat toimivat asiakas/palvelinpohjaisesti. Otetaan esimerkiksi MySQL. Työprosessin aikana tiedot otetaan MySQL-palvelimet ja lähetetään vastauksena pyyntöön. Kun SQLiten avulla, tiedot otetaan suoraan levyltä, ts. palvelimeen ei tarvitse ottaa yhteyttä.

Asennus

Olemme vuorovaikutuksessa tietokannan kanssa komentoriviliittymän kautta sqlite3(CLI) Linuxissa. Työskennellä sqlite3 CLI MAC OS:ssä ja Windowsissa tehdään samalla tavalla, mutta suosittelen, että käytät 5 minuuttia asennukseen virtuaalikone jotta tietokoneesi ei tukkeutuisi tarpeettomilla ohjelmistoilla.

Asenna sqlite3 Linuxiin suorittamalla komento:

sudo apt-get install sqlite3 libsqlite3-dev

Tämän seurauksena se asennetaan koneellesi sqlite3. Asennusta varten tästä instrumentista muissa käyttöjärjestelmissä noudata ohjeita. Käynnistä sqlite suorittamalla sqlite3-komento konsolissa. Tuloksen pitäisi olla tällainen:

Toisella rivillä on vihje, että saadaksesi apua sinun on suoritettava komento command.help . Tehdään niin. Tuloksena tulemme näkemään Meta komennot ja niiden kuvaus.

Meta komennot

Meta komennot- suunniteltu luomaan taulukoita ja muita hallinnollisia toimintoja. Ne kaikki loppuvat piste. Käydään läpi luettelo komennoista, joista voi olla hyötyä:

Vakiokomennot

Käydään nyt lista läpi vakiokomennot sqlite3, jotka on suunniteltu olemaan vuorovaikutuksessa tietokannan kanssa. Vakiokomennot voidaan jakaa kolmeen ryhmään:

  • Tietojen kuvaus Kieli DDL: Komennot luoda taulukko, muokata ja poistaa tietokantoja, taulukoita ja paljon muuta.
  • DML-tiedonhallintakieli: salli käyttäjän käsitellä tietoja (lisää/muuta/poista).
  • DQL-kyselykieli: Mahdollistaa tietojen haun.
  • Muistilappu: SQLite tukee myös monia muita komentoja, joista löytyy luettelo. Koska tämä oppitunti on tarkoitettu aloittelijoille, rajoitamme lueteltuihin komentosarjaan.

    SQLite-tietokantatiedostot ovat cross-platform. Ne voivat sijaita erityyppisissä laitteissa.

    • Sähköposti
    • Kommentti

    Kaikista näistä kentistä vain sivuston osoite voi olla tyhjä. Voimme myös ottaa käyttöön sarakkeen kommenttien numerointia varten. Kutsutaan sitä post_id:ksi.

    Määritetään nyt kunkin sarakkeen tietotyypit:

    Attribuutti Tietotyyppi
    post_id KOKONAISLUKU
    nimi TEKSTI
    sähköposti TEKSTI
    Nettisivun URL TEKSTI
    kommentti TEKSTI

    Löydät kaikki SQLite3:ssa tuetut tietotyypit.

    On myös huomattava, että SQLite3:ssa sarakkeeseen lisätyt tiedot voivat poiketa määritetystä tyypistä. Tämä ei toimi MySQL:ssä.

    Luodaan nyt tietokanta. Jos olet edelleen sqlite3-käyttöliittymässä, kirjoita komento command.quit poistuaksesi. Kirjoita nyt:

    sqlite3 comment_section.db

    Tämän seurauksena sisään nykyinen hakemisto meillä on tiedosto kommentti_osio.db.

    Muistilappu: Jos et määritä tiedostonimeä, sqlite3 luo väliaikaisen tietokannan.

    Taulukon luominen

    Kommenttien tallentamiseksi meidän on luotava taulukko. Kutsutaan sitä kommenteiksi. Suoritamme komennon:

    LUO TAULUKON kommentit (post_id INTEGER NOT NULL PRIMARY KEY AUTOM. LISÄYS, nimi TEKSTI EI NULL, sähköposti TEKSTI EI NULL, website_url TEKSTI NULL, kommentti TEKSTI EI NULL);

    NOT NULL varmistaa, että solu ei sisällä tyhjä arvo. PRIMARY KEY ja AUTOINCREMENT laajentavat kentän ominaisuuksia post_id.

    Varmista, että taulukko on luotu, suorittamalla .tables-metakomento. Tämän seurauksena näemme kommenttitaulukkomme.

    Muistilappu: Saat taulukon rakenteen kirjoittamalla .schema comments

    Nyt voimme syöttää tiedot taulukkoon.

    RIVIEN LISÄÄMINEN

    Oletetaan, että meidän on tehtävä seuraava merkintä:

    Nimi: Shivam Mamgain Sähköposti: [sähköposti suojattu] Verkkosivusto: shivammg.blogspot.com Kommentti: Loistava opetusohjelma aloittelijoille.

    Lisäämiseen käytämme komentoa LISÄÄ.

    INSERT INTO kommentteihin (nimi, sähköpostiosoite, verkkosivun_osoite, kommentti) ARVOT ("Shivam Mamgain", " [sähköposti suojattu]", "shivammg.blogspot.com", "Loistava opetusohjelma aloittelijoille.");

    Post_id-arvoa ei tarvitse määrittää, koska se luodaan automaattisesti AUTOINCREMENT-asetuksen ansiosta.

    Voit täyttää kätesi lisäämällä muutaman rivin lisää.

    NÄYTE

    Käytämme komentoa tietojen hakemiseen VALITSE.

    SELECT post_id, nimi, sähköpostiosoite, website_url, kommentti kommenteista;

    Sama pyyntö saattaa näyttää tältä:

    SELECT * FROM kommenteista;

    Tämän seurauksena kaikki rivit poimitaan taulukosta. Tulos saattaa näkyä ilman sarakerajoja ja ilman otsikkoa. Tämän korjaamiseksi teemme:

    Näytä otsikko kirjoittamalla .headers ON .

    Voit näyttää sarakkeet suorittamalla komennon .mode sarake .

    Me toteutamme VALITSE pyytää uudelleen.

    Muistilappu: Näyttötyyppiä voidaan muuttaa .mode meta-komennolla.

    PÄIVITTÄÄ

    Oletetaan, että kenttä sähköposti käyttäjälle "Shivam Mamgain" on vaihdettava muotoon " [sähköposti suojattu]'. Suoritamme seuraavan komennon:

    Tämän seurauksena merkintä muuttuu.

    Muistilappu: Sarakkeen arvo nimi ei saa olla yksilöllinen, joten komento voi vaikuttaa useampaan kuin yhteen riviin. Kaikille käyttäjille, joilla on arvo nimi= 'Shivam Mamgain', kenttä sähköposti muutetaan muotoon " [sähköposti suojattu]'. Jos haluat muuttaa tiettyä riviä, sinun on seurattava sitä kentän avulla post_id. Määritimme sen PRIMARY KEY:ksi, joka varmistaa arvon ainutlaatuisuuden.

    LUO TAULU

    sql-komento::=

    CREATE TABLE taulukon nimi (

    Column-def [, column-def]*

    [, rajoite]*

    sql-komento::=

    CREATE TABLE taulukon nimi Select-lauseena

    column-def::=

    nimi [sarakerajoitus]*

    tyyppi::=

    tyyppinimi |

    tyyppinimi(numero) |

    tyypin nimi (numero, numero)

    sarakerajoitus::=

    NOT NULL [ konfliktilauseke ] |

    ENSISIJAINEN AVAIN [ ristiriitalauseke ] |

    AINUTLAATUINEN [ristiriitalauseke] |

    TARKISTA (expr) |

    OLETUSarvo |

    COLLATE lajittelun nimi

    rajoitus::=

    PRIMARY KEY (sarake-luettelo) [ ristiriitalause ] |

    UNIQUE (sarake-luettelo) [ ristiriitalauseke ] |

    TARKISTA (expr)

    ristiriitalauseke::=

    ON CONFLICT konflikti-algoritmi

    CREATE TABLE -komennossa CREATE TABLE -avainsanaa seuraa yleensä taulukon nimi sekä luettelo kenttien ja ehtojen määritelmistä. Taulukon nimi voi olla joko tunniste tai merkkijono. "sqlite_"-alkuiset nimet on varattu moottorikäyttöön.

    Jokainen taulukkokentän määritelmä koostuu sen nimestä, tyypistä ja yhdestä tai useammasta lisäehdot. Kentän tietotyyppi ei rajoita tietojen sijoittamista siihen. Lisätietoja on kohdassa Tietotyypit SQLite-versiossa 3. AINUTLAATUINEN rajoitus aiheuttaa indeksin luomisen annetuille kentille. COLLATE-operaattori määrittää vertailutoiminnon, jota käytetään tässä kentässä. Oletuksena käytetään sisäänrakennettua BINARY-toimintoa.

    OLETUSehto määrittää oletusarvon, jota käytetään, kun LISÄÄ. Arvo voi olla NULL, merkkijonovakio tai luku. Versiosta 3.1.0 alkaen oletusarvo voi olla myös erikoisavainsanat CURRENT_TIME, CURRENT_DATE tai CURRENT_TIMESTAMP. Jos arvo on NULL, merkkijono tai numero, se lisätään muuttumattomana kenttään, ellei INSERT-komento määritä arvoa tälle kentälle. Jos arvo on CURRENT_TIME, CURRENT_DATE tai CURRENT_TIMESTAMP, nykyinen UTC-päivämäärä ja/tai -aika lisätään kenttiin. Ajanjaksolla CURRENT_TIME muoto on HH:MM:SS. CURRENT_DATE, VVVV-KK-PP. Ajan CURRENT_TIMESTAMP muoto on "VVVV-KK-PP HH:MM:SS".

    PRIMARY KEY -määritelmä luo yleensä yksinkertaisesti AINOASTAAN indeksin annetuille kenttiin. Kuitenkin jos pääavain toisessa sarakkeessa on tyyppiä INTEGER, tätä saraketta käytetään sisäisesti B-Tree-taulukon oikeana avaimena. Tämä tarkoittaa, että kenttä voi sisältää vain ainutlaatuisen kokonaisluvun. (Yksi poikkeus on, että SQLite jättää huomioimatta kenttätietotyypit ja sallii minkä tahansa tyyppisten tietojen tallentamisen niiden kuvauksesta riippumatta.) Jos taulukossa ei ole kenttää, jossa on INTEGER PRIMARY KEY, luodaan koko B-Tree-avain. automaattisesti. B-Tree-tallennusavainta voidaan aina käyttää erityisillä nimillä "ROWID", "OID" tai "_ROWID_". Tämä on totta riippumatta INTEGER PRIMARY KEY -avaimen olemassaolosta. Kokonaisluvun jälkeen PRIMARY KEY voi sisältää myös avainsana AUTOMAATTINEN LISÄYS. AUTOINCREMENT-avainsana muuttaa tapaa automaattinen sukupolvi B-puu. Lisätietoja automaattisesta B-Tree-luonnosta on saatavana erikseen.

    SQL-standardin mukaan PRIMARY KEY tarkoittaa EI NULLA. Valitettavasti tämä ei pidä paikkaansa SQLiten pitkään jatkuneen laiminlyönnin vuoksi. SQLite sallii NULL arvot PRIMARY KEY -sarakkeissa. Voimme muuttaa SQLiten standardin mukaiseksi (ja voimme tehdä niin tulevaisuudessa), mutta SQLite on tullut niin laajalti käyttöön vuosien varrella, että pelkäämme tehdä tällä hetkellä oikeaa koodia väärin, jos korjaamme ongelman. Joten nyt olemme päättäneet sallia NULL-arvon PRIMARY KEY -sarakkeissa. Kehittäjien tulee muistaa, että saatamme muuttaa SQLiten SQL-standardin mukaiseksi tulevaisuudessa ja kehittää uusia ohjelmia sen mukaisiksi.

    Jos avainsanoja "TEMP" tai "TEMPORARY" käytetään "CREATE" ja "TABLE" välissä, taulukko luodaan vain osana tietokantayhteyttä ja poistetaan automaattisesti, kun yhteys suljetaan. Kaikki väliaikaiseen taulukkoon luodut indeksit ovat myös väliaikaisia. Väliaikaiset taulukot ja indeksit tallennetaan erillinen tiedosto, eroaa päätietokantatiedostosta.

    Jos määritelty, taulukko luodaan määritettyyn tietokantaan. On virhe ilmoittaa molemmat samaan aikaan ja TEMP-avainsana if ei "lämpö". Jos tietokannan nimeä ei ole määritetty eikä TEMP-avainsanaa käytetä, taulukko luodaan nykyiseen tietokantaan.

    Kullekin ehdolle on mahdollista määrittää konfliktinratkaisuoperaattori, jos haluat määrittää vaihtoehtoisen algoritmin. Oletusalgoritmi on ABORT. Erilaisia ​​ehtoja yhdessä taulukossa voi olla erilaisia ​​algoritmeja oletuksena ongelmien ratkaisemiseksi. Jos COPY-, INSERT- tai UPDATE-komennoissa on määritetty erilaisia ​​ristiriitojen ratkaisualgoritmeja, ne ohittavat CREATE TABLE -kyselyssä määritetyt algoritmit. varten yksityiskohtainen tieto katso CONFLICT.

    CHECK-rajoitusta on tuettu versiosta 3.3.0 lähtien. Ennen versiota 3.3.0 CHECK voitiin määrittää, mutta sitä ei pakotettu.

    Taulukon kenttien määrälle tai rajoitusten määrälle ei ole mitään erityisiä rajoituksia. Tietueen tietojen kokonaiskoko on rajoitettu noin 1 megatavuun versiossa 2.8. Versiossa 3.0 tietueen datamäärällä ei ole kovaa rajoitusta.

    CREATE TABLE AS -taulukkomäärityslomake luo taulukon kyselyn tuloksesta. Taulukon kenttien nimet on otettu kyselyn tuloksen kenttien nimistä.

    Jokaisen CREATE TABLE -käskyn tarkka teksti on tallennettu taulukkoon sqlite_master. Joka kerta kun tietokanta avataan, kaikki CREATE TABLE -kyselyt luetaan sqlite_master-taulukosta ja niitä käytetään sisäisen SQLite-näkymän luomiseen. Jos alkuperäinen komento oli CREATE TABLE AS, sen vastaava CREATE TABLE luodaan ja tallennetaan kansioon sqlite_master alkuperäisen kyselyn sijaan. Teksti CREATE TEMPORARY TABLE on tallennettu taulukkoon sqlite_temp_master.

    Jos valinnainen IF NOT EXISTS -käsky on määritetty ja toinen samanniminen taulukko on jo olemassa, komentoa ei suoriteta.