Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice
Acasa » scoala » informatica » sql
Prezentarea limbajului SQL

Prezentarea limbajului SQL


Prezentarea limbajului SQL

    Standardul SQL3 (SQL '98) defineste modelul obiect-relational de baze de date.
    Structura sintactica: limbajul este compus din instructiuni (comenzi). O comanda SQL este o secventa de elemente componente (token). Elementele componente pot fi: cuvinte cheie, identificatori, caractere speciale si constante (literali).

1. Cuvintele cheie si identificatorii

    Acestia au o structura lexicala identica. Lexical, un cuvant cheie sau un identificator inseamna o secventa de litere si caracterul '_'.
    Din punct de vedere semantic, cuvintele cheie sunt elemente cu semnificatie fixa in limbaj:

nume de comenzi (clauze): SELECT, INSERT, etc;

tipuri de date: integer, numeric, char, varchar, etc.
    Limbajul SQL nu diferentiaza caracterele mari de cele mici: este case insensitive.

    Identificatorii au aceeasi structura lexicala; din punct de vedere semantic reprezinta nume intr-o comanda si pot fi: nume de tabele, de coloane, etc. SQL foloseste termenii de tabel, coloana si linie pentru relatie, atribut si tuplu (cei subliniati sunt cei folositi in definirea matematica a modelului relational).
    Identificatorii sunt:



obisnuiti (simpli): Sectie, ANGAJAT, etc;

delimitati: reprezinta un nume pus intre ghilimele, care poate sa contina orice fel de caractere. Un identificator delimitat este folosit, in general, un nume mai mare de tabel.

    Cuvintele cheie si identificatorii nu pot fi deosebiti intre ei decat daca cunoastem limbajul.

2. Constantele

    Constantele pot fi:

de tip numar intreg: ex 1234 (reprezentate pe 4 octeti);

de tip numar real: ex 12.5, 12e5 (reprezentate de 8 octeti, in formatul double);

de tip sir de caractere: ex "Acesta este un sir";

de tip NULL: constanta speciala, reprezinta lipsa de informatie.

3. Caracterele speciale

operatori (+,-,.);

";" termina o comanda;

punctul zecimal (constante reale, codificari ale coloanelor);

separatorii: blank, TAB, CR ; sunt ceruti uneori intre elemente.

4. Operatori, expresii si functii SQL

    Operatorii SQL: pot fi reprezentati prin unul sau mai multe caractere speciale (+, <,.) sau prin cuvinte cheie (AND, OR, NOT, UNION).
    Operatorii pot fi clasificati:

operatori binari: au nevoie de doi operanzi;

operatori unari: se aplica unui singur operand si pot fi postfixe sau prefixe.
    Operatori:

aritmetici: +, -, <, <=, <> (!=);

logici: AND, OR, NOT.
    Operatorii logici se aplica asupra unor valori ternare (o valoare ce reprezinta un operand ce poate avea valoare TRUE (1), FALSE (0) si NULL (lipsa de informatie)).
    Nu exista tipul de date boolean asupra caruia sa se aplice operatorii logici dar operatorii de comparatie returneaza o valoare booleana.
    Operatorii de comparatie evalueaza orice expresie la o valoare logica (bool): TRUE, FALSE. Tipul boolean exista insa incepand din SQL3. Operatorii de comparatie pot fi:

  • aritmetici: <, >, <=, >=, =, != (<>);
  • relationali
    • A BETWEEN val_min val_max;
    • A LIKE model_sir -> A sir;
    • A IS NULL sau A IS NOT NULL;
    • A IN lista_valori.



    O expresie SQL este o expresie formata din operanzi, operatori si paranteze. Operatorii, in general, sunt nume de coloane (se va folosi valoare atributului definit de acea coloana) sau o constanta.
    Orice expresie se evalueaza la o valoare care poate fi apoi folosita in alte operatii.

    Functiile SQL:

functii totalizatoare (de grupare): calculeaza anumite valori pentru coloane din tabele: SUM, AVE, MIN, MAX, .;

functii matematice: calcule trigonometrice, puteri, logaritmi, rotunjiri;

functii pentru siruri;

functii pentru date calendaristice;

functii pentru conversii.

5. Tipurile de date si domenii de definitie in SQL2:

Tipurile de date(SQL2): sunt destul de putine:

  • tipul intreg : INTEGER, reprezentat pe 4 octeti( SMALLINT pe 2 octeti)
  • tipuri pentru numere reale:
    1. reprezentarea cu aproximatie a numerelor reale folosind virgula flotanta: FLOAT (4 octeti), DOUBLE [PRECISION] (8 octeti);
    2. reprezentate precis (cu o precizie dorita): NUMERIC (DECIMAL) se poate stabili precizia nr de cifre pe care se reprezinta numaruil=p si s= nr de cifre de dupa virgula.

       NUMERIC reprezinta cu o precizie si scala stabilita de implementarea limbajului: Numeric(3)=precizie 3;
       Numeric(7,3)=precizie 7; scala 3;
    Numerele in acest format sunt memorate ca secventa de cifre, iar atunci cand se opereaza cu ele, precizia de calcul este mult mai mare decat la cele in virgula flotanta;

  • tipul sir de caractere: CHAR(n), CHARSET(n) sau VARCHAR(n). Argumentul n reprezinta numarul maxim de caractere al sirului. Diferenta este: pentru VARCHAR se atribuie exact numarul de caractere necesar, pentru CHAR se aloca intotdeauna n caractere, indiferent de marimea sirului.
  • mai exista si tipul TIME si DATE(yyyy:mm:dd).

Domenii de definitie: SQL nu asigura exact notiunea matematica. In SQL2 se folosesc ca domenii ale atributelor tipurile fundamentale ale limbajului. Ceea ce lipseste la o astfel de definitie este semantica (intelesul).

SQL este foarte sarac in precizarea semanticii domeniilor folosite pentru atribute.

6. Comenzi SQL

Exista doua tipuri de comenzi:

  1. Comenzi de creeare a tabelelor, de stergere a tabelelor si de modificare a tabelelor formeaza comenzile de definire a datelor (Limbaj de definire a datelor);
  2. Comenzile de manevrare a datelor (LMD): SELECT (interogarile de baza), INSERT, UPDATE, DELETE.

SQL asigura toate operatiile care se considera necesare intr-o baza de date.

  1. Comenzile de creeare: CREATE TABLE sau CREATE VIEW: in modelul relational, tabelele pot fi:
    • tabele de baza: un tabel care se defineste si este memorat in fisierele bazei de date;
    • vederi: un tablou virtual, ce reprezinta o parte din liniile sau coloanele unuia sau a mai multor tabele. Cand se creeaza o vedere, datele unui tabel-vedere nu se multiplica (datele din vedere sunt chiar cele memorate in tabelele de baza).

Vederile permit restrictionari diferentiate ale drepturilor utilizatorilor. Vederile sunt intotdeauna la zi, o modificare in tabelul de baza se vede si in vedere.

Definirea vederilor reprezinta o imixtiune a nivelului utilizator in nivelul conceptual.

CREATE TABLE nume_tabel(
    nume_col1 tip_date [constrangeri_coloana],
    nume_col2 tip_date [constrangeri_coloana],
    .
    nume_coln tip_date [constrangeri_coloana]);



   Obs:

      • nume_tabel trebuie sa fie unic intr-o baza de date
      • nume_col1, ., nume_coln : identificatori;
      • tip_date: tip SQL.



   Ex:

Sectie (Numar, Nume, Buget);

Angajat(Nume, Prenume, Data Nasterii, Adresa, Functia, Salariul)


    CREATE TABLE sectie(
    Numar integer,
    Nume varchar(20),
    Buget numeric(12,2));

    CREATE TABLE angajat(
    Nume varchar(20),
    Prenume varchar(20),
    DataNasterii DATE,
    Adresa varchar(20),
    Salariul numeric(6,2));

DROP TABLE nume_tabel;


    Sterge complet tabelul

ALTER TABLE nume_tabel..


    Se pot sterge coloane, se pot adauga coloane, etc.

CREATE VIEW nume_vedere AS SELECT..


    Rezultatul selectiei reprezinta vederea respectiva.

DROP VIEW nume_vedere;


    Sterge complet vederea.

  1. Comenzile de manipulare de date

SELECT

, cea mai importanta comanda de manipulare a datelor. Reprezinta comanda de interogare de baza de date. Este o instructiune foarte puternica, folosita si in alte scopuri nu numai pentru interogare.

SELECT [DISTINCT] lista_coloane FROM lista_tabele WHERE conditie [clauze_secundare];


Exista trei clauze (parti) principale ale comenzii:

Clauza SELECT: este urmata de o lista de coloane care vor fi coloanele rezultatului. Rezultatul unei comenzi SELECT este, de regula, un tabel;

Clauza FROM introduce numele unuia sau mai multor tabele. Rezultatul va contine tupluri ale produsului cartezian ale tuturor tabelelor date in clauza FROM, pe coloanele indicate de clauza SELECT care respecta conditia introdusa de clauza WHERE;

Conditia din WHERE evalueaza la o valoare booleana (TRUE, FALSE). In rezultat se admit acele tupluri pentru care conditia este verificata. Clauza WHERE este optionala (!!). Obs:

Suita de tabele trebuie sa fie astfel data incat toate coloanele date in lista sa fie gasite in acele tabele;

Numele coloanelor din lista de coloane trebuie sa fie unice. Daca nu sunt unice, se diferentiaza fie prin denumire, fie prin calificare;

"*" pentru clauza SELECT inseamna toate coloanele posibile.

Ex:
    SELECT * FROM sectie;
    SELECT * FROM sectie, angajat; = corect, desi avem nume de coloane identice, SQL stie sa le diferentieze
    SELECT Nume, Nume, Prenume, Salariu,. ; = eroare
    SELECT sectie.Nume, angajat.Nume, Prenume, Salariu FROM sectie, angajat; = corect
    SELECT Nume, Prenume FROM angajat WHERE Salariu>=1800;





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.