CATEGORII DOCUMENTE |
Arhitectura | Auto | Casa gradina | Constructii | Instalatii | Pomicultura | Silvicultura |
Cadastru |
ELEMENTE SQL FOLOSITE LA INTEROGAREA BAZELOR DE DATE CADASTRALE
Rezumat Limbajul SQL permite o comunicare complexa si rapida a utilizatorului cu bazele de date, in functie de cerintele si restrictiile acestuia. Pe langa manipularea si regasirea datelor, se efectueaza si operatii complexe privind actualizarea si administrarea bazei de date. Lucrarea de fata trateaza elementele primare ale limbajului SQL ce pot fi folosite la interogarea bazelor de date cadastrale.
Abstract The SQL language allows the user to communicate fast and complex with the database, varying with his requirements and restrictions. Apart from manipulation and finding again the data, other complex operations can be done concerning the maintaining and administration of database. This article studies the primary elements of SQL language that can be used in querying the cadastral database.
Introducere
Istoria SQL incepe in laboratoarele IBM din San Jose, unde limbajul a fost dezvoltat in ultimii ani ai deceniului 8 ai secolului trecut. Initialele provin de la Structured Query Language.
Structured Query Language (SQL - limbajul structurat de interogare) este limbajul standard de facto folosit pentru manipularea si regasirea datelor din bazele de date relationale. Prin SQL, un programator sau un administrator de baze de date poate face urmatoarele lucruri:
sa modifice structura unei baze de date;
sa schimbe valorile de configurare pentru securitatea sistemului;
sa adauge drepturi utilizatorilor asupra bazelor de date sau tabelelor;
sa interogheze o baza de date asupra unor informatii;
sa actualizeze continutul unei baze de date.
SQL s-a impus ca tentativa de standardizare a limbajelor de descriere (DDL: Data Description Language) si de manipulare (DML: Data Manipulation Language) a bazelor de date.
Tot mai larga raspandire a SQL se explica prin avantajele sale, dintre care cele mai importante sunt:
Este un limbaj complet, in sensul ca implementeaza marea majoritate a cerintelor teoretice impuse de modelul relational;
Este un limbaj simplu si usor de invatat. Vocabularul SQL include circa 30 de comenzi, flexibilitatea limbajului permitand totusi efectuarea de operatiuni dintre cele mai complexe;
Este un limbaj declarativ, adica instructiunile sale spun calculatorului ce sa faca, lasand in sarcina acestuia sa aleaga cum sa faca ceea ce i s-a cerut. Din acest punct de vedere, SQL se deosebeste fundamental de limbajele de nivel inalt (COBOL, FORTRAN, Pascal, C, etc.) care cer utilizatorului sa descrie prin program modul de regasire si manipulare a informatiei.
In functie de rolul lor in manipularea datelor si tranzactiilor, instructiunile SQL pot fi grupate astfel:
instructiuni de definire a datelor care permit descrierea structurii bazei de date;
instructiuni de manipulare a datelor in sensul adaugarii, modificarii si stergerii inregistrarilor;
instructiuni de selectie a datelor care permit consultarea bazei de date;
instructiuni de procesare a tranzactiilor care privesc unitatile logice de prelucrare si constituie in fapt, operatii multiple de manipulare a datelor;
instructiuni de control al cursorului;
instructiuni privind controlul accesului la date.
Se va folosi pe tot parcursul exemplelor diagrama conceptuala referitoare la o baza de date topo-cadastrala, conform specificatiilor tehnice elaborate de ONCGC relativ la bazele de date textuale.
1. Blocurile componente ale operatiei de regasire a datelor: select si from
Cel mai des folosite cuvinte din vocabularul SQL sunt: SELECT si FROM.
Folosirea comenzii SELECT in tabelul TITLURI_L18:
SINTAXA: SELECT <nume de coloana>
Intrare SQL: select * from titluri_L18
Iesire:
nr_titlu no_titlu tip_titlu data_titlu aria_reconst aria_constit pdf_titlu parcels_no
Tabelul 1.
Interogare |
|||||||
Nr_titlu |
no_titlu |
tip_titlu |
data_titlu |
aria_reconst |
aria_constit |
pdf_titlu |
parcels_no |
T-012001.pdf | |||||||
T-012002.pdf | |||||||
T-012003.pdf |
Semnul (*) transmite bazei de date comanda de a va returna toate coloanele asociate cu tabelul dat descris in clauza FROM. Ele sunt returnate intr-o ordine hotarata de baza de date.
Selectarea coloanelor individuale
In cazul in care se doreste obtinerea numai a unei perechi de coloane, comanda este:
Intrare SQL: SELECT nr_titlu, pdf_titlu from titluri_L18;
Iesire : nr_titlu pdf-titlu
Tabelul 2
Interogare |
|
Nr_titlu |
pdf_titlu |
T-012001.pdf |
|
T-012002.pdf |
|
T-012003.pdf |
Se observa folosirea atat a literelor mari cat si mici in interogare. Acestea nu au nici un efect asupra rezultatului.
1.2. Interogari distincte
In unele tabele este posibil ca unele date se repete, spre exemplu data de emitere a titlului de proprietate din tabelul TITLURI_L18.
Pentru a vedea toate datele de emitere a titlurilor de proprietate fara ca acestea sa se repete, trebuie selectate toate elementele diferite existente intr-o coloana.
Intrare SQL: select DISTINCT data_titlu from titluri_L18
Iesire: data_titlu
Tabelul 3
Interogare |
data_titlu |
Se observa ca data 8/24/1992 nu mai apare de exemplu de 5 ori, corespunzator fiecarui titlu emis la data respectiva. Deoarece am specificat DISTINCT, este afisata numai o aparitie a datei specificata mai sus.
1.3. Expresii
Definitia unei expresii este simpla: aceasta returneaza o valoare. De asemenea, este un termen foarte larg, deoarece poate trata tipuri diferite, cum ar fi date de tip sir, numeric sau logic.
De fapt, aproape orice urmeaza o clauza ( de exemplu, SELECT sau FROM ) este o expresie, deci am folosit deja expresii.
In instructiunea :
SELECT (owner_lastname + ' ' + owner_firstname ) from owner
fraza (owner_lastname + ' ' + owner_firstname ) este o expresie care returneaza numele complet din tabelul owner. O completare utila pentru aceasta ar putea fi
where owner_lastname = 'MITU' care este mai interesanta. Contine conditia nume='MITU', care este un exemplu de expresie logica (nume='MITU' va fi falsa sau adevarata in functie de conditia =).
2. Conditii
Pentru gasirea unui anumit element sau un grup de elemente in baza date, este necesara folosirea uneia sau mai multor conditii (de asemenea clauza WHERE). In exemplul anterior , conditia este owner_lastname = 'MITU'
Intrare SQL: SELECT DISTINCT (owner_lastname + ' ' + owner_firstname ) from owner where owner_lastname = 'MITU'
Iesire:
Tabelul 4
Interogare |
Expr1000 |
MITU ISTRATE |
MITU ANICA |
MITU CONSTANTIN |
MITU ECATERINA |
MITU ELENA |
O alta problema este legata de gasirea tuturor persoanelor din tabelul OWNER care au numele mai mare decat 'MITU'. Conditia ar fi:
owner_lastname > 'MITU'
Intrare SQL: SELECT DISTINCT (owner_lastname + ' ' + owner_firstname ) from owner where owner_lastname > 'MITU'
Iesire:
Tabelul 5
Interogare |
Expr1000 |
MIU GHEORGHE |
MIU ION |
MIU VASILICA |
MIZILEANU DANIELA |
MIZILEANU DUMITRU |
Conditiile fac posibile interogarile selective. In cea mai obisnuita forma a lor, ele se compun dintr-o variabila, o constanta si un operator de comparare. In primul exemplu, variabila este owner_lastname, constanta este 'MITU' si operatorul de comparare =. In al doilea exemplu, variabila este owner_lastname, constanta este 'MITU' si operatorul de comparare este >. Pentru crearea interogarilor conditionale este necesara si clauza WHERE.
2.1. Clauza where
Sintaxa clauzei WHERE este: WHERE <conditie de cautare>
Impreuna cu SELECT si FROM, WHERE este cea mai folosita clauza in SQL. Aceasta clauza va face interogarile mai selective, intr-un mod simplu. Fara clauza WHERE, cel mai util lucru pe care il puteti face cu o interogare este sa afisati baza de date.
In exemplul anterior am interogat baza de date cu privire la aflarea tuturor persoanelor care au numele de MITU.
Daca se doreste interogarea bazei de date dupa o anume persoana pentru afisarea tuturor inregistrarilor acesteia in baza de date din tabelul owner, comanda ar fi:
Intrare SQL: SELECT * from owner where owner_lastname = 'MITU' and owner_firstname = 'STEFAN'
Iesire:
Tabelul 6
Owner_id |
owner_firstname |
owner_lastname |
owner_initial |
owner_cnp |
owner_sirues |
owner_address_id |
STEFAN |
MITU |
B | ||||
STEFAN |
MITU |
B | ||||
STEFAN |
MITU |
B | ||||
STEFAN |
MITU |
B |
Pentru afisarea tuturor titlurilor de proprietate emise in aceeasi zi, spre exemplu: 8/24/1992 se poate folosi comanda:
Intrare SQL: SELECT * FROM titluri_L18 where data_titlu = #8/24/1992#
Iesire:
nr_titlu no_titlu tip_titlu data_titlu aria_reconst aria_constit pdf_titlu parcels_no
Tabelul 7
Interogare |
|||||||
nr_titlu |
no_titlu |
tip_titlu |
data_titlu |
aria_reconst |
aria_constit |
pdf_titlu |
parcels_no |
T-012002.pdf | |||||||
T-012003.pdf | |||||||
T-012004.pdf | |||||||
T-012005.pdf | |||||||
T-012006.pdf |
Trebuie facuta observatia ca in aceasta interogare constanta, respectiv data de emitere a titlurilor aleasa a fost incadrata de semnul diez (#) si nu de apostrof ('), ca la interogarile precedente. De asemenea data a fost scrisa in formatul american "ll/zz/aaaa". Aceste doua conditii sunt cerute de "Microsoft Jet database engine", "motorul" bazei de date la toate versiunile Microsoft Access.
3. Operatori
Operatorii se folosesc in interiorul conditiei unei expresii pentru a specifica exact ceea ce se doreste din baza de date. Operatorii se impart in sase grupe distincte: aritmetici, de comparare, caracter, logici, pentru multimi si alti operatori.
3.1. Operatori aritmetici
Operatorii aritmetici sunt plus(+), minus(-), impartire(/), inmultire(*) si modulo(%). Primii patru sunt descrisi chiar prin numele lor. Ultimul, modulo, returneaza restul intreg al unei impartiri. De exemplu: 5 % 2 = 1 sau 6 % 2 = 0
Operatorul modulo nu accepta tipuri de date care contin zecimale, ca de exemplu, tipul real sau number. Ordinea tratarii operatorilor aritmetici intr-o expresie fara paranteze, este:urmatoarea: inmultire, impartire, modulo, adunare si apoi scadere.
In continuare este prezentat un exemplu pentru operatorul plus(+).
Intrare:SQL: SELECT parcel_property_id, (parcel_property_id+1000) AS parcel_property_new_id, FROM parcel
Iesire:
parcel_property_id parcel_property_new_id
Tabelul 8
Interogare |
|
parcel_property_id |
parcel_property_new_id |
Ultima coloana nu face parte din tabelul original. SQL va permite crearea unor coloane virtuale sau derivate prin combinarea sau modificarea coloanelor existente. In acest exemplu s-a creat o noua coloana care aduna intregul 1000 la valorile din coloana parcel_property_id, numele noii coloane fiind legat la aceste valori prin "AS". Aceste coloane virtuale se numesc alias-uri si vor fi folositoare la scrierea unui generator de rapoarte.
3.2. Operatori de comparatie
Dupa cum semnifica si numele lor, operatorii de comparatie compara expresiile si returneaza una din urmatoarele trei valori: TRUE (Adevarat), FALSE (Fals) sau UnKnown (Necunoscut). In termenii folositi pentru baze de date, NULL semnifica absenta datelor dintr-un camp. Nu inseamna ca o coloana contine o valoare zero sau spatiu. Un zero sau spatiu sunt valori. NULL inseamna ca in campul respectiv nu se gaseste nimic. Daca faceti o comparatie de genul Field = 9 si Field este NULL, comparatia va returna UnKnown.
Tabelul locality are toate valorile NULL in campul locality_postal_code (s-a renuntat pentru moment la introducerea codurile postale pentru fiecare localitate, acestea fiind definite de codul SIRUTA al localitatii).
Pentru gasirea unei erori logice de programare este important sa nu se incerce compararea unei valori NULL.
Intrare SQL: SELECT * from locality where locality_postal_code = null
Iesire:
Nici o linie selectata.
Nu s-a gasit nimic deoarece comparatia locality_postal_code = null returneaza valoarea false datorita faptului ca rezultatul este necunoscut. Acesta este un bun loc de folosire a unei valori "is null", modificand instructiunea where in WHERE locality_postal_code is null. In acest caz se va primi ca raspuns al comenzii toate liniile in care exista o valoare NULL.
Intrare:SQL: SELECT * from locality where locality_postal_code is null
Iesire:
Tabelul 9
Interogare |
||||
locality_id |
locality_name |
locality_admin_id |
locality_code |
locality_postal_code |
NECUNOSCUTA | ||||
ALBA IULIA | ||||
BARABANT | ||||
|
MICESTI | |||
OARDA | ||||
PACLISA | ||||
CIUGUD | ||||
DRAMBAR | ||||
DUMBRAVA | ||||
HAPRIA . |
3.2.1.Operatorul LIKE
Pentru selectarea unei parti a unei baze de date care se potrivesc unui model se poate folosi operatorul "like". In urmatorul exemplu sunt solicitate numele si prenumele tuturor proprietarilor care incep cu litera M.
Intrare SQL: SELECT DISTINCT (owner_lastname + ' ' + owner_firstname ) AS nume_proprietari FROM owner WHERE owner_lastname LIKE 'M*'
Iesire:
Tabelul 10
Interogare |
nume_proprietari |
MALCOV MIHAELA |
MALCOV MIHAILA |
MALEANU NEAGU |
Daca am folosi in cadrul unei interogari expresia Like
'P[A-F]###', aceasta ar
returna datele care incep cu litera P
urmate de oricare litera intre A si F si apoi de 3 cifre. Urmatorul tabel arata
cum poate fi folosit LIKE pentru a obtine diferite rezultate din baza de date
pe baza unor "modele":
|
|
Se potriveste cu modelul |
Nu se potriveste cu modelul |
Caractere |
a*a |
aa, aBa, aBBBa |
aBC |
Multiple |
*ab* |
abc, AABB, Xab |
aZb, bac |
Caracter special |
a[*]a |
a*a |
Aaa |
Caractere multiple |
ab* |
abcdefg, abc |
cab, aab |
Caracter unic |
a?a |
aaa, a3a, aBa |
aBBBa |
Cifra unica |
a#a |
a0a, a1a, a2a |
aaa, a10a |
Domeniu de caractere |
[a-z] |
f, p, j |
2, & |
In afara domeniului |
[!a-z] |
9, &, % |
b, a |
Care nu sunt cifre |
A, a, &, ~ | ||
Combinate |
a[!b-m]# |
An9, az0, a99 |
abc, aj0 |
Alti operatori SQL ce mai pot fi folositi in interogarile bazelor de date cadastrale sunt operatorii logici, de concatenare, operatorii IN si BETWEEN.
4. Concluzii
Inregistrarea datelor in tabele se face de regula fara a tine seama de anumite criterii de ordonare. Consultarea datelor are in vedere anumite cerinte informationale. In acest scop inregistrarile din tabele sunt ordonate dupa anumite criterii impuse de natura prelucrarilor. Folosirea limbajului SQL la interogarea bazelor de date, implicit cele cadastrale are numai avantaje, permitand gasirea datelor pe baza unor instructiuni bine definite. Dupa insusirea comenzilor SQL, care nu sunt multe, se pot efectua interogari complexe, obtinand intr-un timp foarte scurt informatiile dorite, indiferent de marimea bazei de date.
BIBLIOGRAFIE
[1]. Didulescu C., Savulescu C., Sisteme informatice de evidenta cadastrala, 2004, Vol.II, Editura Conspress, Bucuresti
Florescu V., Anica Popa L. Bases de donnes & SGBD, 2001, Editura ASE, Bucuresti
[3]. ISO, Database language SQL, 1992
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1306
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved