Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
ArhitecturaAutoCasa gradinaConstructiiInstalatiiPomiculturaSilvicultura

Cadastru

ELEMENTE SQL FOLOSITE LA INTEROGAREA BAZELOR DE DATE CADASTRALE

Cadastru



+ Font mai mare | - Font mai mic



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":

Tabelul 11


Tip de optiune


Model

Se potriveste cu modelul
(intoarce True)

Nu se potriveste cu modelul
(intoarce False)

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1323
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved