FoRuM MxC - TuToriale CounTer StriKe, DC++ & OtheR
Doriti să reactionati la acest mesaj? Creati un cont în câteva clickuri sau conectati-vă pentru a continua.

Tutorial WEB - Introducere In SQLite

In jos

Tutorial WEB - Introducere In SQLite Empty Tutorial WEB - Introducere In SQLite

Mesaj  Admin Joi Ian 10, 2008 6:13 pm

SQLite este un sistem de gestiune al bazelor de date. Chiar dacă unii dintre voi v-ați putea gândi că piața este deja plină în această zonă, s-ar putea ca citind acest articol să vă răzgândiți. Sigur că SQLite nu se va putea "pune" probabil niciodată cu "granzii" bazelor de date dar citiți până la capăt fraza următoare și pun pariu că veți deveni curioși:
SQLite se constituie dintr-un singur fișier, cam 250KB (ridicol nu?!), el nu trebuie instalat ci doar copiat pe calculatorul unde se dorește, nu ai nimic de administrat la el, nu necesită nici un driver sau mai știu eu ce altceva adițional, implementează cam tot standardul SQL92, lucrează cu tranzacții (ACID), baza de date este stocată într-un singur fișier și culmea, mai poate fi și "sharată" între mai multe mașini, la final vă mai spun că testele indică pentru operațiile comune, ca SQLite este de cel puțin 10 ori mai rapid decât PostgreSQL și de cel puțin 2 ori decât MySQL.
Mai sunteți aici? Atunci vă dau și vestea cea mai importantă: da, PHP poate să lucreze cu SQLite (și o face chiar bine). Acum, pentru că sunt sigur că nu mai plecați o să vă dau și veștile proaste: nu implementează conceptul de "FOREIGN KEY constraints", nu știe RIGHT OUTER JOIN și nici FULL OUTER JOIN, view-urile sunt doar read-only (aici cred că exagerez un pic, parcă n-ar fi un lucru așa rșu) și da, așa este, nu există noțiunea de "user" deci comenzile GRANT sau REVOKE le puteți uita când lucrați cu SQLite.
Ce altceva nu mai știe: dacă vrei să faci un ALTER TABLE atunci nu poți decât cu un ADD COLUMN (DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT nu sunt implementate). Vă mai zic una (poate lucrul cel mai...) și apoi intrăm în miezul problemei: SQLite nu implementează nici un tip de dată. Așa că exceptând coloanele declarate ca fiind INTEGER PRIMARY KEY, putem insera orice oriunde. Altfel zis, orice coloană este capabilă să rețina un string.
Pentru a alunga confuzia haideți să trecem la un exemplu concret:
prietenii lui Bill să facă click pe http://www.sqlite.org/sqlite3-3.3.7.bin.gz
în vreme ce inamicii lui să facă click pe http://www.sqlite.org/sqlite-2_8_17.zip
Extrageți, și unii și alții, singurul fișier din arhiva pe care tocmai ați salvat-o pe calculator. Acest fișier o să-l denumesc de acum înainte sqlite.exe (sub linux el se cheamă în realitate sqlite3-3.3.7.bin ). Din prompt scrieți

sqlite.exe test.db

(nu, sigur nu se va instala vre-un virus). În momentul de față e posibil să fiți fericiții posesori ai unei baze de date ce se cheamă test.db și al unui sistem capabil să o gestioneze, ce se cheamă sqlite.exe.
În sqlite promptul este sqlite>. Cine nu vede acest prompt să o ia de la început, ceilalți continuăm, deci haideți să facem o tabelă, scrieți comanda

create table personal(marca,nume,salariu) ;

nu uitați de ; căci SQLite nu va interpreta comanda până nu scrieți acest ;
Acum scrieți:

insert into personal values(123,’RADU VASILE’,1500) ;
insert into personal values(456,’POPESCU ION’,1400) ;


În momentul de față avem o tabelă ce se chemă personal și care conține 2 înregistrări. Convingeți-vă scriind comanda (nu uitați de tasta Enter):

select * from personal ;

Acum că v-ați convins, ați remarcat că nu am declarat tipul coloanelor atunci când am creat tabela. Am fi putut scrie și

create table personal(marca integer,nume character, salariu integer) ;

dar am fi putut scrie și

create table personal(marca,nume “pana la 50 de caractere”,salariu “intreg pozitiv nu mai mare de 100000 ca ne ia Bodu la ochi”) ;

Căci practic, declarația care urmează după numele coloanei este doar o descriere, așa cum am mai spus SQLite nu implementează tipuri de data. Asta nu-l împiedică sa returneze valoare 2900 la comanda:

select sum(salariu) from personal;

După cum vedeți e o valoare corectă, deci chiar ne putem bizui pe SQLite.

Atenție, am fi putut scrie comanda

insert into personal values(678,1400,’RADU ION’) ;

SQLite nu se supără (pentru el nu există tip de data). În schimb, un sum pe coloana salariu ne va returna tot valoarea 2900, ceea ce este iarăși bine.
Tabela noastra are (măcar) o hibă: putem introduce persoane diferite cu aceeași marca. SQLite ne poate ajuta în acest sens așa că haideți să ștergem tabela, deci scrieți:

drop table personal;

și să o recream astfel:

create table personal(marca unique,nume character, salariu integer) ;

Încercarea de a introduce 2 înregistrări cu aceeași marcă va fi pedepsită acum de SQLite. În afară de comenzile standard SQL există si un set de așa numite comenzi speciale ce nu au nevoie de separatorul ; și pe care le gasiți la http://www.sqlite.org/sqlite.html
Acum scrieți comanda

.quit

Întrucât mi-am propus să vă stârnesc curiozitatea și nu să prezint întregul sistem SQLite, mă opresc aici.

Aștept comentarii ...în funcție de ele poate voi reveni cu o continuare.
Admin
Admin
FonDaToR FoRuM
FonDaToR FoRuM

masculin Numarul mesajelor : 96
Varsta : 32
Localizare : Bucuresti
Stare de spirit : Foarte Buna
Data de inscriere : 08/01/2008

http://WwW.MxC-NeTwoRk.FoRuMeR.Ro

Sus In jos

Sus

- Subiecte similare

 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum