Modulul sqlite - Lucrul cu baza de date

Ușor încorporat bază relațională date. Printre caracteristici: nu folosește paradigma client-server,
suportă aproape toate set standard Instrucțiuni SQL, motorul SQLite este o bibliotecă (sqlite3.dll), adică nu este
un proces care rulează separat, oferă funcții apelabile (API) ca protocol de schimb.
Pentru platforma Win32 (precompilat pentru Windows) pe site-ul oficial - sqlite.org - puteți descărca direct biblioteca în sine - sqlite3.dll
(sqlite - dll - win32), precum și funcțional parte client- sqlite3.exe (sqlite - shell - win32). Cea mai recentă versiune disponibilă este v.3.7.10
Shell-ul client sqlite3.exe vă permite să lucrați direct cu baza de date prin consolă.
Înainte de a începe, trebuie să faceți câteva manipulări minore: 1) fontul consolei trebuie să fie transferat în Consola Lucida
(clic dreapta pe consolă -> Proprietăți -> Font), 2) traduce pagina de coduriîn 1251 folosind comanda „chcp 1251”, pagina de cod implicită este 866.
Acest lucru este necesar pentru inserarea corectă a datelor text în tabelele bazei de date.

Mai jos este o listă a tuturor comenzilor speciale și o scurtă descriere a acestora.

Echipa Scurtă descriere
.databases Afișează o listă cu numele tuturor bazelor de date conectate în sesiunea curentă și fișierele corespunzătoare.
.dump ?TABLES?: Eliminați toate instrucțiunile SQL folosite pentru a crea baza de date sau masa separataîn format text
.echo ON|OFF ON | OFF ecou comenzile introduse
.exit Ieșiți din program
.explain ON|OFF Controlează modul de ieșire al comenzilor mașinii virtuale. Folosit la executarea unei interogări SQL EXPLAIN.
.header(e) ON|OFF ON | OFF afișează antetele coloanelor
.import FIȘIER TABEL Importați date din fisier FILE la tabelul TABLE
.indices TABLE Afișează numele tuturor indicilor dintr-un tabel
.mode MODE Setarea modului de ieșire: linii, coloane, inserare, listă, html și altele
.nullvalue STRING Tipărește șirul STRING în loc de date NULL atunci când scoate o interogare SQL SELECT
.output FILENAME Trimite toate ieșirile în fișierul FILENAME
.output stdout Trimite toate ieșirile pe ecran
.promt MAIN COTINUE Schimbați șirul de prompt implicit
.quit Ieșiți din programul lor
.read FILENAME Executați instrucțiuni SQL din fișierul FILENAME
.schema ?TABEL?
.separator STRING Schimbați șirul separator de coloane, utilizat în ieșirea interogărilor SQL SELECT și a comenzilor .import
.show Afișați valorile variabilelor setate
.mesele ?PATTERN?
Afișarea unei liste de nume de tabele bazei de date (posibil folosind un șablon)
.timeout MS Blochează deschiderea tabelelor pentru un număr de milisecunde MS

.width NUM NUM: Setați lățimea coloanelor la ieșire în modul coloană Să aruncăm o privire mai atentă la unele dintre aceste comenzi. Să creăm mai întâi o bază de date pe care ne vom uita echipe speciale . Din linie de comandă alerga programul consolei

„sqlite3.exe” introducând următoarele:
examen sqlite3.db
SQLite versiunea 3.1.3
Introduceți „.help” pentru instrucțiuni Unde este numele examen.db bază creată

date. Să creăm un tabel tbl1, cu folosind SQL

CREATE TABLE instrucțiuni.
sqlite> CREATE TABLE tbl1 (un INTEGER PRIMARY KEY AUTOINCREMENT,

două VARCHAR(50), trei REALE); Să inserăm mai multe înregistrări în acest tabel. Observ că în instrucțiunile de creare a tabelului pentru fiecare câmp am specificat un tip de date pentru valorile acestuia, acest tip de date este ignorat de programul SQLite. Sistemul de management al bazei de date „SQLite” este destul de liberal în definirea tipurilor de date, ceea ce nu este tipic pentru standard Limbajul SQL

. Tastarea datelor în „SQLite” se bazează pe așa-numitul principiu „fără tip”, ceea ce înseamnă că informațiile despre tipul de date din definiția coloanelor tabelului sunt ignorate atunci când sunt create folosind instrucțiunea CREATE TABLE. Cu toate acestea, este mai bine să includeți numele tipurilor de coloane atunci când declarați tabele, acest lucru va crește portabilitatea bazei de date. Există o excepție de la principiul „fără tip” - o coloană de tip INTEGER PRYMARY KEY (INTEGER nu este INT; INT PRIMARY KEY - satisface principiul „fără tip”). O coloană cu tipul INTEGER PRIMARY KEY trebuie să conţină un număr întreg de 32 de biţi. Încercarea de a scrie date de orice alt tip într-o coloană de acest tip va avea ca rezultat o eroare. Acest tip este de obicei folosit înaintea specificatorului de coloană AUTOINCREMENT, o coloană cu tip INTEGER PRIMARY KEY AUTOINCREMENT este o coloană cheie a tabelului, valorile sale sunt generate automat.
sqlite> INSERT INTO tbl1 VALUES(NULL, „bună”, 3.10);
sqlite> INSERT INTO tbl1 VALUES(NULL, „este”, 5.34);

sqlite> INSERT INTO tbl1 VALUES(NULL, „de la”, NULL);
sqlite> CREATE TABLE tbl2 (ikey INTEGER PRIMARY KEY, nm VARCHAR(50));
sqlite>

sqlite>

Comanda.dump

Vă permite să obțineți un dump complet (listare) a tuturor instrucțiunilor SQL utilizate pentru a crea o bază de date sau un anumit tabel.

Sintaxă:
unde TABLE este numele opțional al tabelului pentru care doriți să descărcați instrucțiunile SQL.

sqlite>.dump
ÎNCEPE TRANZACȚIA;
CREATE TABLE tbl1 (autoincrementare automată a unei chei primare întregi, două varchar(50),
trei reale);
INSERT INTO "tbl1" VALUES(1, "bună ziua", 3.1);
INSERT INTO "tbl1" VALUES(2, "este", 5,34);
INSERT INTO "tbl1" VALUES(3, "de la", NULL);
DELETE FROM sqlite_sequence;
INSERT INTO "sqlite_sequence" VALUES ("tbl1", 3);

CREAȚI INDEX UNIC itbl2 pe tbl2(ikey);
COMIT;
sqlite>

Această comandă poate fi utilizată pentru a exporta o bază de date creată în SQLite într-un alt program de bază de date. Pentru a face acest lucru, trebuie să salvați un dump complet de instrucțiuni SQL într-un fișier.

sqlite> .output exam.sql --redirecționează ieșirea către fișier
sqlite>.dump

Command.header(e)

Activează/dezactivează afișarea numelor antetului coloanei.

Vă permite să obțineți un dump complet (listare) a tuturor instrucțiunilor SQL utilizate pentru a crea o bază de date sau un anumit tabel.

Antet(e) ON | OFF
Unde,

ON - activați afișarea numelor antetului coloanei
OFF - dezactivează afișarea numelor antetului coloanei
Exemplu:

sqlite>.header ON
sqlite> SELECT * FROM tbl1;
unu|doi|trei
1|bună ziua|3.1
2|este|5.34
3|din|
sqlite>.header OFF
sqlite> SELECT * FROM tbl1;
1|bună ziua|3.1
2|este|5.34
3|din|
sqlite>

Comanda.import

Folosind această comandă, este posibil să importați date dintr-un fișier text. Datele din fișierul text trebuie separate printr-o linie de separare, această linie de separare este determinată de comanda .separator. Caracterul separator implicit este caracterul pipe „|”. Această comandă introdus în versiunea 3.

Vă permite să obțineți un dump complet (listare) a tuturor instrucțiunilor SQL utilizate pentru a crea o bază de date sau un anumit tabel.

Import FILE TABLE
Unde,

FILE - numele fișierului de testare de intrare cu date
TABLE - numele tabelului în care sunt introduse datele
Exemplu:

Să pregătim următoarele date în fișierul exam.txt

1;Roy
2;Ted
3; Sam
4;Bob
Să inserăm aceste date în tabelul tbl2 executând următoarele comenzi:

sqlite> .separator ";" -- setați caracterul separator la punct și virgulă
sqlite> .import exam.txt tbl2 -- import de date
sqlite> SELECT * FROM tbl2;
1; Roy
2; Ted
3; Sam
4; Bob

Mod.comandă

Această comandă modifică formatul de ieșire al unui tabel SQL cu o interogare SELECT. „SQLite” poate scoate rezultatele interogării în următoarele formate: csv, coloană, html, insert, line, list, tabs, tcl. Acceptat doar pentru versiunea 2.8 următoarele formate: rând(e), coloană(e), inserare, listă, html. Să le privim în ordine.

modul csv. În acest format, coloanele înregistrărilor din tabel sunt separate prin virgule.

sqlite>.mode csv
sqlite> SELECT * FROM tbl1;
1,„bună ziua”, 3.1
2,"este",5,34
3,"de la",
sqlite>

Modul este convenabil pentru exportarea tabelelor către programe de la terți, De exemplu acest format, înțelege Excel.

Modul coloană. În acest mod, rezultatul este aliniat la marginea stângă a coloanelor de înregistrare a tabelului.

sqlite> coloane .mode
sqlite> SELECT * FROM tbl1;
1 salut 3.1
2 este 5,34
3 din
sqlite>

Consultați și comanda .width pentru a seta lățimea coloanelor.

Modul HTML. Ieșirea în acest mod se face în stilul de definire a tabelului limbaj html. Convenabil pentru includerea unui tabel pe pagina unui site web.

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

1
Roy

2
Ted

3
Sam

4
Bob

sqlite>

modul de inserare. ÎN acest mod generate de SQL INSERT interogări pentru tabelul al cărui nume este specificat ca al treilea parametru din comandă.

Vă permite să obțineți un dump complet (listare) a tuturor instrucțiunilor SQL utilizate pentru a crea o bază de date sau un anumit tabel.

Modul de inserare TABLE
unde TABLE este numele tabelului pentru care sunt generate instrucțiunile INSERT

sqlite> .mode insert tbl3
sqlite> SELECT * FROM tbl1;
INSERT INTO tbl3 VALUES(1,"bună",3.1);
INSERT INTO tbl3 VALUES(2,"este",5.34);
INSERT INTO tbl3 VALUES(3,"de la", NULL);
sqlite>

Modul linie. Aici, fiecare coloană este afișată pe o linie separată în formatul nume_coloană = valoare. Intrările sunt separate printr-o linie goală.

Exemplu:

sqlite>.mode line
sqlite> SELECT * FROM tbl1;
unu = 1
doi = salut
trei = 3,1

unu = 2
doi = este
trei = 5,34

unu = 3
doi = din
trei =
sqlite>

Modul listă. Acesta este modul implicit. Fiecare intrare din tabel este afișată pe o linie separată, cu coloane separate printr-un caracter delimitator. Caracterul separator este definit de comanda .separator și, implicit, este egal cu slash „|”.

sqlite>.mode listă
sqlite> SELECT * FROM tbl1;
1|bună ziua|3.1
2|este|5.34
3|din|
sqlite>

modul file. În acest mod, coloanele de înregistrări de tabel sunt separate una de cealaltă printr-un caracter tabulator.

sqlite>.file de mod
sqlite> SELECT * FROM tbl1;
1 salut 3.1
2 este 5,34
3 din
sqlite>

Modul TCL. Ieșirea este în formatul de element de listă TCL.

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

Comandă.ieșire

Această comandă redirecționează rezultatul către un fișier sau înapoi la ecran.

Vă permite să obțineți un dump complet (listare) a tuturor instrucțiunilor SQL utilizate pentru a crea o bază de date sau un anumit tabel.

Ieșire FILENAME
.ieșire stdout
Unde,

FILENAME - numele fișierului unde este trimisă ieșirea
stdout - ieșire directă pe ecran
Comandă.citeşte

Citește și execută instrucțiuni SQL dintr-un fișier.

Vă permite să obțineți un dump complet (listare) a tuturor instrucțiunilor SQL utilizate pentru a crea o bază de date sau un anumit tabel.

Citiți FILENAME
unde FILENAME este numele fișierului care conține instrucțiunile SQL

Crea fișier text conţinând următoarele interogări SQL:

ÎNCEPE TRANZACȚIA;

INSERT INTO tbl3 VALUES ("Jim", "Verde", 1653);
INSERT INTO tbl3 VALUES ("Ann", "Folkin", 1891);
INSERT INTO tbl3 VALUES ("Fredy", "Donovan", 2345);
COMIT;

Să denumim fișierul creat exam.sql și să rulăm următoarele comenzi:

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

Comandă.schemă

Această comandă va tipări toate instrucțiunile SQL CREATE TABLE și CREATE INDEX utilizate pentru a crea tabelele și indecșii din baza de date curentă. Este posibil să specificați numele unui anumit tabel pentru care doriți să îl afișați Declarație SQL crearea acestuia.

Vă permite să obțineți un dump complet (listare) a tuturor instrucțiunilor SQL utilizate pentru a crea o bază de date sau un anumit tabel.

Schema ?TABLE?
unde, ?MASUL? - opțional numele tabelului

sqlite>.schema
CREATE TABLE sqlite_sequence(nume,seq);
CREATE TABLE tbl1 (o cheie primară întreagă autoincrement, două varchar(50), trei reale);
CREATE TABLE tbl2 (cheie primară ikey integer integer, nm VARCHAR(20));
CREATE TABLE tbl3 (nume VARCHAR(30), prenume VARCHAR(50), num INT);
CREAȚI INDEX UNIC itbl2 pe tbl2(ikey);
sqlite>

Tabelele de comandă

Comanda va afișa o listă de nume de tabel create în baza de date curentă. Este posibil să utilizați o definiție de șablon pentru a returna numele de tabel la un șablon potrivit. Sintaxa modelului este aceeași cu definiția modelului din clauza LIKE.

Vă permite să obțineți un dump complet (listare) a tuturor instrucțiunilor SQL utilizate pentru a crea o bază de date sau un anumit tabel.

Mesele ?PATTERN?
unde?PATERN? - definiție opțională a modelului de căutare

Exemplu:

sqlite>.tables
sqlite_sequence tbl1 tbl2 tbl3
sqlite> .tables %tb% "cu șablon
tbl1 tbl2 tbl3
sqlite>

Comanda.latime

Folosit pentru a seta lățimea coloanelor când formatul de ieșire este setat la coloană.

Vă permite să obțineți un dump complet (listare) a tuturor instrucțiunilor SQL utilizate pentru a crea o bază de date sau un anumit tabel.

Lățimea NUM NUM:
unde NUM este lățimea coloanei corespunzătoare în caractere.

sqlite> coloana .mode
sqlite>.latime 3 10 7
sqlite> SELECT * FROM tbl1;
1 salut 3.1
2 este 5,34
3 din
sqlite>

CREAȚI TABEL

sql-command::=

CREATE TABLE nume-tabel (

Coloan-def [, coloan-def]*

[, constrângere]*

sql-command::=

CREATE TABLE nume-tabel AS instrucțiune-selectare

coloana-def::=

nume [constrângere-coloană]*

tip::=

nume de tip |

nume tip(număr) |

typename(număr, număr)

coloană-constrângere::=

NOT NULL [ clauză-conflict ] |

CHEIE PRIMARĂ [ clauză-conflict ] |

UNIQUE [clauză-conflict] |

VERIFICARE (exr) |

Valoarea implicită |

COLLATE colation-name

constrângere::=

CHEIE PRIMARĂ (listă-coloană) [ clauză-conflict ] |

UNIQUE (listă-coloană) [ clauză-conflict ] |

VERIFICARE (expr)

clauză-conflict::=

ON CONFLICT conflict-algoritm

Într-o comandă CREATE TABLE, cuvântul cheie „CREATE TABLE” este de obicei urmat de numele tabelului și de o listă de definiții de câmp și condiții. Numele tabelului poate fi fie un identificator, fie un șir. Numele care încep cu „sqlite_” sunt rezervate pentru utilizarea motorului.

Fiecare definiție de câmp de tabel constă din numele, tipul și unul sau mai multe conditii suplimentare. Tipul de date pentru câmp nu limitează plasarea datelor în acesta. Pentru mai multe informații, consultați Tipuri de date în SQLite Versiunea 3. Constrângerea UNIQUE determină crearea unui index pe câmpurile specificate. Operatorul COLLATE specifică funcția de comparare care va fi utilizată pentru acest câmp. În mod implicit, este utilizată funcția BINARY încorporată.

Clauza DEFAULT specifică valoarea implicită care este utilizată în timpul unei INSERT. Valoarea poate fi NULL, constantă de șir sau număr. Începând cu versiunea 3.1.0, valoarea implicită poate accepta și cuvintele cheie speciale CURRENT_TIME, CURRENT_DATE sau CURRENT_TIMESTAMP. Dacă valoarea este NULL, șir sau număr, aceasta este inserată neschimbată în câmp, cu excepția cazului în care comanda INSERT specifică o valoare pentru acel câmp. Dacă valoarea este CURRENT_TIME, CURRENT_DATE sau CURRENT_TIMESTAMP, atunci data și/sau ora curentă UTC sunt inserate în câmpuri. Pentru CURRENT_TIME, formatul este HH:MM:SS. Pentru CURRENT_DATE, AAAA-LL-ZZ. Formatul pentru CURRENT_TIMESTAMP este „AAAA-LL-ZZ HH:MM:SS”.

Definiția PRIMARY KEY de obicei creează pur și simplu un index UNIC pe câmpurile date. Cu toate acestea, dacă cheie primară pe o coloană are tastați INTEGER, atunci această coloană va fi folosită intern ca cheie reală pentru tabelul B-Tree. Aceasta înseamnă că câmpul poate conține doar o valoare întreagă unică. (O excepție este aceea că SQLite ignoră tipurile de date de câmp și permite stocarea datelor de orice tip, indiferent de descrierea acestuia.) Dacă tabelul nu are un câmp cu o CHEIE PRIMARĂ INTEGER, atunci va fi creată întreaga cheie B-Tree automat. Cheia unei înregistrări B-Tree poate fi întotdeauna accesată folosind numele speciale „ROWID”, „OID” sau „_ROWID_”. Acest lucru este adevărat, indiferent de prezența CHEIEI PRIMARIA INTEGER. După INTEGER PRIMARY KEY poate conține și cuvânt cheie AUTOINCREMENTARE. Cuvântul cheie AUTOINCREMENT schimbă modul generare automată B-Tree. Informații suplimentare informațiile despre generarea automată a B-Tree sunt disponibile separat.

Conform Standardul SQL, CHEIA PRIMARĂ implică NOT NULL. Din păcate, din cauza unei neglijeri de lungă durată, acesta nu este cazul cu SQLite. SQLite permite Valori NULLîn coloanele PRIMARY KEY. Putem schimba SQLite pentru a se conforma standardului (și poate face acest lucru în viitor), dar SQLite a devenit atât de larg adoptat de-a lungul anilor încât ne temem să nu facem codul care este corect în prezent greșit dacă remediam problema. Deci acum am decis să permitem NULL în coloanele PRIMARY KEY. Dezvoltatorii ar trebui să-și amintească că putem schimba SQLite pentru a se conforma standardului SQL în viitor și ar trebui să dezvolte noi programe care să se conformeze acestuia.

Dacă cuvintele cheie „TEMP” sau „TEMPORARY” sunt folosite între „CREATE” și „TABLE”, atunci tabelul este creat doar ca parte a unei conexiuni la baza de date și este șters automat când conexiunea este închisă. Orice index creat pe un tabel temporar sunt de asemenea temporari. Tabelele și indecșii temporari sunt stocați cu dosar separat, diferit de fișierul principal al bazei de date.

Dacă este definit, apoi tabelul este creat în baza de date specificată. Este o greșeală să le indicați pe ambele în același timp iar cuvântul cheie TEMP dacă nu „temp”. Dacă numele bazei de date nu este specificat și cuvântul cheie TEMP nu este utilizat, tabelul este creat în baza de date curentă.

Este posibil să specificați un operator de rezolvare a conflictelor pentru fiecare condiție dacă doriți să specificați un algoritm alternativ. Algoritmul implicit este ABORT. Conditii diverseîntr-un singur tabel poate avea diverși algoritmi implicit pentru a rezolva problemele. Dacă în comenzi COPY, INSERT sau UPDATE, sunt definiți algoritmi distincti de rezolvare a conflictelor, apoi vor anticipa algoritmii specificați în interogarea CREATE TABLE. Pentru informatii detaliate vezi DESPRE CONFLICT.

Constrângerea CHECK a fost acceptată începând cu versiunea 3.3.0. Înainte de versiunea 3.3.0, CHECK putea fi specificat, dar nu a fost aplicat.

Nu există restricții explicite privind numărul de câmpuri sau numărul de constrângeri dintr-un tabel. Dimensiunea totală a datelor per înregistrare este limitată la aproximativ 1 MB în versiunea 2.8. În versiunea 3.0 nu există o limită strictă a cantității de date dintr-o înregistrare.

Formularul de definire a tabelului CREATE TABLE AS creează un tabel din rezultatul unei interogări. Numele câmpurilor de tabel sunt preluate din numele câmpurilor din rezultatul interogării.

Textul exact al fiecărei instrucțiuni CREATE TABLE este stocat în tabelul sqlite_master. De fiecare dată când baza de date este deschisă, toate interogările CREATE TABLE sunt citite din tabelul sqlite_master și utilizate pentru a genera reprezentare internă SQLite. Dacă comanda inițială a fost CREATE TABLE AS, atunci echivalentul său CREATE TABLE este creat și stocat în sqlite_master în loc de interogarea originală. Textul CREATE TEMPORARY TABLE este stocat în tabelul sqlite_temp_master.

Dacă este specificată instrucțiunea opțională IF NOT EXISTS și există deja un alt tabel cu același nume, atunci comanda nu este executată.

Aceasta este o bibliotecă scrisă în limbaj C care oferă lucru cu SQL. Acest instrument aparține sistemelor de management al bazelor de date relaționale. Majoritatea bazelor de date SQL funcționează pe bază de client/server. Să luăm MySQL de exemplu. În timpul procesului de lucru, datele sunt preluate de la Servere MySQLși sunt trimise ca răspuns la cerere. În cazul utilizării SQLite, datele vor fi preluate direct de pe disc, adică. nu va fi nevoie să contactați serverul.

Instalare

Vom interacționa cu baza de date prin interfața de linie de comandă sqlite3(CLI) pe Linux. Lucrul cu sqlite3 CLI pe MAC OS și Windows se face în același mod, totuși vă recomand să petreceți 5 minute pentru a instala mașină virtuală pentru a nu aglomera computerul cu software inutil.

Pentru a instala sqlite3 pe Linux, rulați comanda:

sudo apt-get install sqlite3 libsqlite3-dev

Ca rezultat, mașina dvs. va avea sqlite3. Pentru a instala a acestui instrument pe alt sistem de operare urmați instrucțiunile. Pentru a porni sqlite, rulați comanda sqlite3 în consolă. Rezultatul ar trebui să fie așa:

A doua linie conține un indiciu conform căruia, pentru a obține ajutor, trebuie să rulați comanda.help . Să facem asta. Ca rezultat vom vedea Meta Comenzi si descrierea acestora.

Meta Comenzi

Meta Comenzi- conceput pentru generarea de tabele și alte operațiuni administrative. Toate se termină punct. Să trecem prin lista de comenzi care ar putea fi utile:

Comenzi standard

Acum să trecem prin listă comenzi standard sqlite3, care sunt concepute pentru a interacționa cu baza de date. Comenzi standard pot fi clasificate în trei grupe:

  • Limbajul de descriere a datelor DDL: Comenzi pentru crearea unui tabel, modificarea și ștergerea bazelor de date, tabele și multe altele.
  • Limbajul de gestionare a datelor DML: permite utilizatorului să manipuleze datele (adăugați/modificați/ștergeți).
  • Limbajul de interogare DQL: Permite preluarea datelor.
  • Nota: SQLite acceptă, de asemenea, multe alte comenzi, a căror listă poate fi găsită. Din moment ce această lecție este destinat începătorilor, ne vom limita la setul de comenzi enumerat.

    Fișiere baze de date Date SQLite sunt multiplatformă. Ele pot fi amplasate pe diverse feluri dispozitive.

    • E-mail
    • Comentariu

    Dintre toate aceste câmpuri, doar adresa site-ului poate fi goală. Putem introduce și o coloană pentru numerotarea comentariilor. Să-i spunem post_id.

    Acum să definim tipurile de date pentru fiecare dintre coloane:

    Atribut Tip de date
    post_id ÎNTREG
    nume TEXT
    e-mail TEXT
    website_url TEXT
    comentariu TEXT

    Veți putea găsi toate tipurile de date acceptate în SQLite3.

    De asemenea, trebuie remarcat faptul că în SQLite3, datele inserate într-o coloană pot diferi de tipul specificat. Acest lucru nu va funcționa în MySQL.

    Acum să creăm baza de date. Dacă încă sunteți în interfața sqlite3, atunci tastați command.quit pentru a ieși. Acum introduceți:

    sqlite3 comment_section.db

    Ca urmare, în directorul curent vom avea un fișier comment_section.db.

    Nota: Dacă nu specificați un nume de fișier, sqlite3 va crea o bază de date temporară.

    Crearea unui tabel

    Pentru a stoca comentariile trebuie să creăm un tabel. Să-i spunem comentarii. Executăm comanda:

    CREATE TABLE comentarii (post_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL, website_url TEXT NULL, comment TEXT NOT NULL);

    NOT NULL se va asigura că celula nu va conține valoare goală. PRIMARY KEY și AUTOINCREMENT extind capacitățile domeniului post_id.

    Pentru a verifica dacă tabelul a fost creat, rulați comanda meta .tables. Ca rezultat, vedem tabelul nostru de comentarii.

    Nota: Pentru a obține structura tabelului, tastați .schema comments

    Acum putem introduce date în tabel.

    INSERARE RANDURI

    Să presupunem că trebuie să facem următoarea intrare:

    Nume: Shivam Mamgain Email: [email protected] Site: shivammg.blogspot.com Comentariu: tutorial excelent pentru începători.

    Pentru a introduce vom folosi comanda INTRODUCE.

    INSERT INTO comments (name, email, website_url, comment) VALUES ("Shivam Mamgain", " [email protected]", "shivammg.blogspot.com", "Super tutorial pentru începători.");

    Nu este nevoie să specificați o valoare pentru post_id deoarece va fi generat automat datorită setării AUTOINCREMENT.

    Pentru a vă umple mâna, puteți introduce câteva rânduri.

    EŞANTION

    Pentru a prelua date vom folosi comanda SELECTA.

    SELECTează post_id, nume, e-mail, website_url, comentariu FROM comentarii;

    Aceeași cerere ar putea arăta astfel:

    SELECTAȚI * DIN comentarii;

    Ca rezultat, toate rândurile vor fi extrase din tabel. Rezultatul poate apărea fără delimitare coloane și fără antet. Pentru a remedia acest lucru facem:

    Pentru a afișa antetul, introduceți .headers ON .

    Pentru a afișa coloane, executați comanda .mode column .

    Realizam SELECTA cerere din nou.

    Nota: Tipul de afișare poate fi modificat folosind comanda meta .mode.

    UPDATE

    Să presupunem că câmpul e-mail pentru utilizatorul „Shivam Mamgain” trebuie schimbat în „ [email protected]’. Executăm următoarea comandă:

    Ca urmare, intrarea va fi modificată.

    Nota: Valoarea coloanei nume poate să nu fie unic, deci mai mult de un rând poate fi afectat de comandă. Pentru toți utilizatorii în care valoarea nume= „Shivam Mamgain”, câmp e-mail va fi schimbat în „ [email protected]’. Pentru a schimba unele linie specifică ar trebui urmărit pe câmp post_id. Am definit-o ca fiind CHEIE PRIMARĂ, care asigură unicitatea valorii.

    • Serghei Savenkov

      un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva