2017 m. spalio 18 d., trečiadienis

Įvadas į DBVS ir SQL kalbą

Duomenų bazės, DBVS

Duomenų bazė (DB) - tarpusavyje susijusių duomenų rinkinys, kuriems apdoroti pasitelkiamas kompiuteris. Tokia DB yra panaši į elektroninę kartoteką.

Panašios DB vartotojai atlieka operacijas:
  • naujo įrašo (naujos kortelės) įtraukimas;
  • esamo įrašo (kortelės duomenų) keitimas;
  • esamo įrašo (kortelės) šalinimas;
  • duomenų paieška duomenų bazėje (kartotekoje).
Kompiuterinė sistema, kurioje atliekama panašios operacijos, vadinama duomenų bazės sistema (DBS).
PĮ, suteikianti DB vartotojui galimybę dirbti su DB neatsižvelgiant į technines detales, vadinama duomenų bazių valdymo sistema (DBVS).


DBVS leidžia vartotojui žiūrėti į DB kaip į žymiai aukštesnio lygio objektą, negu į įrašų bylą – tai pagrindinė paskirtis.
DBVS atlieka vartotojo sąsajos (interfeiso) su DB vaidmenį.
Vartotojai operuoja DB naudojant formalią kalbą, pvz. SQL.


 Reliacinės (sąryšinės) ir kitokios DB

DBVS suteikia vartotojui galimybę vartoti logines sąvokas. Sąvokų rinkinys ir jų vartojimo taisyklės - modelis. Dauguma DBVS naudoja reliacinį duomenų modelį – 1970 m. E.F. Kodas (E.F. Codd), IBM. DB, kurios apibrėžiamos naudojant reliacinį modelį, vadinamos reliacinėmis duomenų bazėmis (RDB). Atitinkamos jų valdymo sistemos - reliacinėmis duomenų bazių valdymo sistemomis (RDBVS).

Pagrindinės reliacinio modelio sąvokos:
  • lentelė(table)
  • eilutė (row)
  • stulpelis (column) 
Reliacinė sistema remiasi šiais pagrindiniais principais: 
  1. duomenys vartotojui pateikiami lentelėmis ir niekaip kitaip; 
  2. vartotojui pateikiami operatoriai, leidžiantys iš esamų lentelių gauti naujas.
RDB - tai DB, kurią vartotojai priima kaip lentelių rinkinį.
  • Lentelės eilutė aprašo vieną objektą.
  • Stulpelis - objekto charakteristiką.
  • Eilutės ir stulpelio sankirta – reikšmė (laukas) (value).

Šiuo metu vienos labiausiai paplitusių ir išvystytų RDBVS:
  • IBM DBVS DB2
  • Oracle DBVS ORACLE
  • Microsoft DBVS SQL Server
  • Sybase Inc. DBVS – SYBASE
  • PostgreSQL – atvirojo kodo
  • MySQL – atvirojo kodo
SQL
Vartotojo sąsajai su DB (užklausoms formuluoti) yra naudojama formalizuota kalba. 
Reliacinėse sistemose - SQL (Structured Query Language) SQL sukurta IBM 1970-jų m. pr. 1-oji realizacija - RDBVS IBM System R. 1986 – SQL-86 (1-as ANSI/ISO standartas) 1992 – SQL-92 (SQL2) 1999 – SQL:1999 (SQL3) 2008 – SQL:2008

SQL yra neprocedūrinė (deklaratyvi) programavimo kalba. Kalboje išskiriama trys sakinių grupės:
  • duomenų apibrėžimo sakiniai (kalba) (DDL, Data Definition Language),
  • manipuliavimo duomenimis sakiniai (DML, Data Manipulation Language),
  • duomenų valdymo sakiniai (DCL, Data Control Language). SQL = DDL + DML + DCL

DDL sakiniais kuriamos DB ir lentelės. Kuriant DB yra nurodoma jos vardas (pavadinimas), fizinė vieta ir kt. Kuriant lentelę - lentelės vardas, stulpelių vardai ir jų tipai.
SQL duomenų rūšys: tekstiniai duomenys, skaičiai, dvejetainiai duomenys, datos ir laikai. 
Kiekviena rūšis su fizinėmis realizacijos savybėmis yra duomenų tipas.
Kiekviename duomenų tipe yra spec. reikšmė NULL, žyminti, kad duomenys yra nežinomi, dar neįvesti, jau pašalinti...
DML sakiniais formuojamos užklausos (query) duomenims surasti, šalinti ir įterpti.
DCL sakiniais koordinuojamas vartotojų darbas su DB.

Duomenų išrinkimas
SELECT sakinys naudojamas įrašams iš vienos ar daugiau lentelų atrinkti. FROM sakinyje nurodomos lentelės, iš kurių reikia išrinkti eilutes (sąryšiai gali būti nurodomi skirtingais JOIN variantais). WHERE sakinyje nurodoma sąlyga, kurią turi tenkinti grąžinamos eilutės. GROUP BY sąlygoje nurodoma, kad reikia grupuoti tam tikras eilutes. Grupuojant eilutes, dažniausiai naudojamos agregatinės funkcijos maksimalioms, vidutinėms ir panašioms reikšmėms išrinkti iš grupuotų eilučių. ORDER BY sakiniu nurodoma viena ar daugiau rikiavimo sąlygų. HAVING sakinyje nurodomas kriterijus, taikomas grupuojamoms eilutėms; šis raktinis žodis gali būti naudojamas tik tais atvejais, jeigu užklausoje yra GROUP BY sakinys.

Duomenų valdymas
INSERT vartojamas naujų įrašų įterpimui į lentelę. 
DELETE leidžia ištrinti įrašus iš lentelės. 
UPDATE naudojamas pakeisti vieno ar daugiau įrašų reikšmes.

SQL Select sakinys
Duomenų atrinkimui iš duomenų bazės naudojamas SELECT sakinys. 
Rezultatai grąžinami lentelės pavidalu, kuri vadinama “Result-Set”.
SELECT sakinio sintaksė:
SELECT laukai FROM lentelės_pavadinimas; 
SELECT * FROM lentelės_pavadinimas;

Duomenų išrinkimas panaudojant DISTINCT.
DISTINCT - skirtingų reikšmių pasirinkimas Jei žinote, kad jūsų sakinys pasirinks perteklinius duomenis, ir norite matyti tik skirtingas reikšmes, savo sąlygoje SELECT galite naudoti raktinį žodį DISTINCT. 
Pavyzdžiui, tarkime, kad kiekvienas iš jūsų klientų atstovauja keliems skirtingiems interesams, ir kai kurie iš jų naudoja tą patį telefono numerį. Norėdami užtikrinti, kad kiekvieną telefono numerį matytumėte tik kartą, jūsų sąlyga SELECT atrodys taip:
SELECT DISTINCT telefonoNumeris FROM klientai

Duomenų išrinkimas panaudojant WHERE.
Duomenų išrinkimui pagal užduotą sąlygą formuojama užklausa, naudojant paragrafą WHERE. Sąlygoje gali būti nurodyti stulpelių vardai, kuriems yra taikoma sąlyga ir ši sąlyga yra tikrinama kiekvienai lentelės eilutei, formuojant užklausos rezultatą.
WHERE - stulpelio vardas; sąlyga; kito stulpelio vardas arba konstanta ar reikšmių sąrašas taip formuojama sąlyga duomenų atrinkimui.
SELECT Ename,Job,Deptno FROM EMP WHERE Job=’CLERK’;

Pateiks rezultate tik darbuotojus su nurodyta specialybe. Sąlygoje svarbu pateikti lyginimui skirtus duomenis reikiamam formate (dešinėj pusėj raidžių dydis, datos formatas ir kt.)

DML-DARBAS SU DUOMENIMIS.
Duomenų manipuliavimo komandos leidžia įterpti duomenis į duomenų bazę arba pašalinti juos iš ten. Be to galima duomenis pataisyti ir ten pat juos palikti. Yra trys pagrindinės operacijos su duomenimis, kuriuos gali atlikti vartotojas, jei tam jam suteikti įgaliojimai.
  • INSERT
  • UPDATE
  • DELETE

UPDATE leidžia pakeisti duomenis lentelėje.
UPDATE Lentelės vardas SET Stulpelis1=reikšmė1[,Stulpelis2=reikšmė2 ...] [WHERE sąlyga];

Galima iš karto atnaujinti kelias eilutes pagal nurodytą sąlygą. Stulpelis1, Stulpelis2... Stulpelių vardai, kurių reikšmes reikia pakeisti naujomis Reikšmė1, Reikšmė2 atitinkamos naujos stulpelių reikšmės. WHERE užduoda sąlygą, kuriai esant patenkintai tos eilutės yra atnaujinamos. 
Sąlyga yra nebūtina, bet jei ji nenurodyta, pakeitimas atliekamas visoms eilutėms lentelėje.

UPDATE Emp SET DEPTNO=20 WHERE EMPNO=7782

Bus pakeista stulpelio DEPTNO reikšmė eilutei, kur EMPNO=7782, t.y. darbuotojas pervedamas į kitą departamentą.

UPDATE Emp SET DEPTNO=20; 

Visoms eilutėms lentelėje Emp pakeičiamas departamento numeris. Visi darbuotojai taps to paties departamento pareigūnais.

INSERT leidžia įterpti vieną eilutę į lentelę.
INSERT INTO Lentelės_vardas[(stulpelis1[,stulpelis2, ...])] VALUES(reikšmė1[, reikšmė2, ...]);

Komanda įterps reikšmę1 į stulpelį1, reikšmę2 į stulpelį2 ir t.t. Stulpelių sąrašas yra nebūtinas, bet jei sąrašas nenurodytas, tai komanda nebus užbaigta tol, kol nebus įvesta tiek duomenų, kiek numatyta lentelės struktūroje. Simboliniai duomenys ir datos tipo duomenys visada nurodomi tarp viengubų kabučių.

INSERT INTO Dept(Deptno,Dname,Loc) VALUES(50,’DEVELOPMENT’,’DETROIT’); 

Galima įvedimo metu taip pat suformuoti ir tuščias laukų reikšmes, Dėl to reikia norimą palikti neužpildytą stulpelį neįtraukti į sąrašą.

INSERT INTO Dept(Deptno,Dname) VALUES(60,’MIS’); 

Tą patį galima padaryti ir kitaip

INSERT INTO Dept VALUES(70,’FINANCE’,NUL);


DELETE galima pašalinti įrašus iš lentelės.

DELETE FROM Lentelės_vardas [WHERE sąlyga]; Iš lentelės nurodytu vardu bus pašalintas įrašas, kuris patenkina sąlygą.

DELETE FROM Dept WHERE Dname=’DEVELOPMENT’; 

Jei sąlyga nenurodyta, panaikinamos visos eilutės.

DELETE FROM Dept;

Kaip paprastai įrašų panaikinimui galima pasinaudoti užklausa pateikiančia duomenis iš kitos lentelės

DELETE FROM EMPLOE WHERE Deptno=(SELECT Deptno FROM Dept WHERE Dname=’SALES’);

Iš lentelės EMPLYE pašalins visus darbuotojus, kurių pareigos nurodytos sąlygoje.
Pašalinti visus įrašus galima taip pat ir su komanda

  • TRUNCATE TABLE lentelės_vardas; Ši komanda įrašus šalina fiziškai ir atstatyti jų neįmanoma.
  • DROP pašalina viską: duomenis kartu su struktūra.
  • DROP TABLE lentelės_vardas;

Komentarų nėra:

Rašyti komentarą

Etiketės