bd1 sql web

Upload: nicoleta-bordeianu

Post on 03-Apr-2018

238 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 BD1 SQL web

    1/204

    BAZE DE DATE

    Curs pentru specializrileInformatic anul IIMatematic-Informatic anul IIISemestrul I, 2011/2012Horea Oros, [email protected]

  • 7/29/2019 BD1 SQL web

    2/204

    Limbajul SQL

    SQL este un limbaj standard pentruaccesarea bazelor de date

    MySQL, SQL Server, Access, Oracle, Sybase,DB2

  • 7/29/2019 BD1 SQL web

    3/204

    Sintaxa SQL

    SELECT CompanyName, Country FROM CustomersWHERE Country 'USA

    Company Country

    Island Trading UK

    Galera del gastrnomo Spain

    Laughing Bacchus Wine Cellars Canada

    Paris spcialits France

    Simons bistro Denmark

    Wolski Zajazd Poland

  • 7/29/2019 BD1 SQL web

    4/204

    SQL

    SQL este un limbaj standard pentruaccesarea i manipularea bazelor de date

    SQL Structured Query Language SQL este un standard ANSI (American

    National Standards Institute)

  • 7/29/2019 BD1 SQL web

    5/204

    Ce poate face SQL

    SQL poate executa interogri la baza de date SQL poate extrage date din baza de date

    SQL poate insera nregistrri n baza de date

    SQL poate actualiza nregistrri n baza de date SQL poate terge nregistrri n baza de date SQL poate crea noi baze de date

    SQL poate crea noi tabele n baza de date

    SQL poate crea proceduri stocate, funcii, triggere SQL poate crea vizualizri n baza de date SQL poate stabili permisiuni asupra entitilor din

    baza de date

  • 7/29/2019 BD1 SQL web

    6/204

    SQL este un standard DAR

    Cu toate c SQL este standard ANSI, existmai multe versiuni ale limbajului SQL

    Totui, cel puin comenzile principale(SELECT, UPDATE, INSERT, DELETE) suntpermise ntr-un mod aproape unitar de toateimplementrile, pentru compatibilitate

  • 7/29/2019 BD1 SQL web

    7/204

    RDBMS

    Avem nevoie de un sistem de gestiune abazelor de date.

    Microsoft SQL Server

    MySQL

    Oracle

    IBM DB2

    Microsoft Access

  • 7/29/2019 BD1 SQL web

    8/204

    Tabele n bazele de date

    O baz de date conine cel puin o tabelidentificat prin nume.

    Tabelele conin nregistrri cu date

    Trei nregistrri, 5 cmpuri (coloane)

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes3 Pettersen Kari Storgt 20 Stavanger

  • 7/29/2019 BD1 SQL web

    9/204

    Instruciuni SQL

    Majoritatea operaiilor efectuate asuprabazelor de date se fac cu comenzi/instruciuniSQL SELECT * FROM Persons

    SQL nu ine cont de diferena dintre literemari i mici

    Unele SGBD-uri necesit caracterul ; dupinstruciuni. Astfel se separ instruciunileSQL pentru ca s se poat executa mai multeinstruciuni una dup alta ntr-un singur batch

  • 7/29/2019 BD1 SQL web

    10/204

    SQL DML i DDL (DCL, TCL)

    DML - Data Manipulation Language comenzile pentru extragere i actualizare SELECT - extrage date din baza de date

    UPDATE - actualizeaz date n baza de date DELETE - terge nregistrri din baza de date INSERT INTO - insereaz date noi n baza de date

    DDL - Data Definition Language comenzipentru creare/modificare baz de date,tabele, indeci, stabilire legturi ntre tabele,constrngeri

  • 7/29/2019 BD1 SQL web

    11/204

    SQL DML i DDL (DCL, TCL)

    cont. CREATE DATABASE

    ALTER DATABASE

    CREATE TABLE

    ALTER TABLE

    DROP TABLE

    CREATE INDEX DROP INDEX

  • 7/29/2019 BD1 SQL web

    12/204

    Instruciunea SELECT

    Instruciunea SELECT se folosete pentru aextrage date din baza de date

    Rezultatul este stocat ntr-un tabel-rezultatnumit result-set

    Sintaxa

    SELECT column_name(s) FROM table_name

    SAU

    SELECT * FROM table_name

  • 7/29/2019 BD1 SQL web

    13/204

    Exemplu SELECT

    SELECT * FROM Persons

    SELECT LastName,FirstName FROM Persons

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    LastName FirstName

    Hansen Ola

    Svendson Tove

    Pettersen Kari

  • 7/29/2019 BD1 SQL web

    14/204

    Instruciunea SELECT

    DISTINCT ntr-o tabel, unele coloane pot conine valori

    duplicate. Asta nu e o problem, totui,uneori vrem s listm doar valorile diferite(distincte) din tabel.

    Cuvntul cheie DISTINCT poate fi folositpentru aceasta.

    Sintaxa

    SELECT DISTINCT column_name(s)FROM table_name

  • 7/29/2019 BD1 SQL web

    15/204

    Exemplu SELECT DISTINCT

    Vrem s selectm valorile distincte dincoloana City

    SELECT DISTINCT City FROM Persons

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    City

    Sandnes

    Stavanger

  • 7/29/2019 BD1 SQL web

    16/204

    Clauza WHERE

    Folosit pentru a filtra nregistrri

    Folosit pentru a extrage doar nregistrrile

    care ndeplinesc un anumit criteriu Sintaxa

    SELECT column_name(s)

    FROM table_name

    WHERE column_name operator value

  • 7/29/2019 BD1 SQL web

    17/204

    Exemplu clauza WHERE

    SELECT * FROM PersonsWHERE City='Sandnes'

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

  • 7/29/2019 BD1 SQL web

    18/204

    Ghilimele - apostroafe

    SQL folosete apostrof pentru a delimita valorile de tiptext/string

    Majoritatea SGBD-urilor accept i ghilimele Valorile numerice nu se delimiteaz cu

    apostroafe/ghilimeleCorect:

    SELECT * FROM Persons WHERE FirstName='ToveSELECT * FROM Persons WHERE Year=1965

    Greit:

    SELECT * FROM Persons WHERE FirstName=Tove

    SELECT * FROM Persons WHERE Year='1965'

  • 7/29/2019 BD1 SQL web

    19/204

    Operatori pentru clauza

    WHEREOperator Descriere= Egalitate

    Inegalitate

    > Mai mare

    < Mai mic

    >= Mai mare sau egal

  • 7/29/2019 BD1 SQL web

    20/204

    Operatorii AND i OR

    Se folosesc pentru a filtra nregistrrile dupmai multe condiii

    SELECT * FROM Persons WHEREFirstName='Tove AND LastName='Svendson

    P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    P_Id LastName FirstName Address City

    2 Svendson Tove Borgvn 23 Sandnes

  • 7/29/2019 BD1 SQL web

    21/204

    Operatorii AND i OR (cont.)

    SELECT * FROM Persons WHEREFirstName='Tove OR FirstName='Ola

    SELECT * FROM Persons WHERELastName='Svendson'AND (FirstName='Tove' OR FirstName='Ola')

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    P_Id LastName FirstName Address City

    2 Svendson Tove Borgvn 23 Sandnes

  • 7/29/2019 BD1 SQL web

    22/204

    Clauza ORDER BY - sortare

    Cuvntul cheie ORDER BY se folosete pentrua sorta rezultatul dup o anumit coloan saucoloane

    Ordonarea/sortarea se face n mod implicitcresctor

    Ordonarea descresctoare DESC

    Sintaxa: SELECT column_name(s)

    FROM table_nameORDER BY column_name(s) ASC | DESC

  • 7/29/2019 BD1 SQL web

    23/204

    Clauza ORDER BY - exemplu

    SELECT * FROM PersonsORDER BY LastName

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn10

    Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    4 Nilsen Tom Vingvn 23 Stavanger

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn10

    Sandnes

    4 Nilsen Tom Vingvn 23 Stavanger

    3 Pettersen Kari Storgt 20 Stavanger

    2 Svendson Tove Borgvn 23 Sandnes

  • 7/29/2019 BD1 SQL web

    24/204

    Instruciunea INSERT INTO

    O folosim pentru a insera noi nregistrri ntr-o tabel

    Sintaxa (dou variante) INSERT INTO table_name

    VALUES (value1, value2, value3,...)

    INSERT INTO table_name (column1, column2,

    column3,...)VALUES (value1, value2, value3,...)

  • 7/29/2019 BD1 SQL web

    25/204

    Exemplu INSERT INTO

    INSERT INTO PersonsVALUES (4,'Nilsen', 'Johan', 'Bakken 2','Stavanger')

    P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    4 Nilsen Johan Bakken 2 Stavanger

  • 7/29/2019 BD1 SQL web

    26/204

    Exemplu INSERT INTO

    Inserare de date doar n anumite coloane INSERT INTO Persons (P_Id, LastName,

    FirstName) VALUES (5, 'Tjessem', 'Jakob')

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    4 Nilsen Johan Bakken 2 Stavanger

    5 Tjessem Jakob

  • 7/29/2019 BD1 SQL web

    27/204

    Instruciunea UPDATE

    Se folosete pentru actualizarea unor datedintr-o tabel

    Sintaxa: UPDATE table_name

    SET column1=value, column2=value2,...WHERE some_column=some_value

    !!! Omiterea clauzei WHERE duce laactualizarea tuturor nregistrrilor din tabel

  • 7/29/2019 BD1 SQL web

    28/204

    Instruciunea UPDATE -

    exemplu

    UPDATE Persons

    SET Address='Nissestien 67', City='Sandnes'WHERE LastName='Tjessem' ANDFirstName='Jakob'

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger4 Nilsen Johan Bakken 2 Stavanger

    5 Tjessem Jakob

  • 7/29/2019 BD1 SQL web

    29/204

    Instruciunea UPDATE

    exemplu - rezultatul

    UPDATE Persons

    SET Address='Nissestien 67', City='Sandnes'WHERE LastName='Tjessem' ANDFirstName='Jakob'

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger4 Nilsen Johan Bakken 2 Stavanger

    5 Tjessem Jakob Nissestien 67 Sandnes

  • 7/29/2019 BD1 SQL web

    30/204

    Instruciunea UPDATE !!!

    UPDATE PersonsSET Address='Nissestien 67', City='Sandnes'

    P_Id LastName FirstName Address City

    1 Hansen Ola Nissestien 67 Sandnes

    2 Svendson Tove Nissestien 67 Sandnes

    3 Pettersen Kari Nissestien 67 Sandnes

    4 Nilsen Johan Nissestien 67 Sandnes

    5 Tjessem Jakob Nissestien 67 Sandnes

  • 7/29/2019 BD1 SQL web

    31/204

    Instruciunea DELETE

    O folosim pentru a terge nregistrri dintr-otabel

    Sintaxa: DELETE FROM table_name

    WHERE some_column=some_value

    !!! Omiterea clauzei WHERE duce la tergerea

    tuturor nregistrrilor din tabel

  • 7/29/2019 BD1 SQL web

    32/204

    Instruciunea DELETE -

    exemplu

    DELETE FROM PersonsWHERE LastName='Tjessem' ANDFirstName='Jakob'

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    4 Nilsen Johan Bakken 2 Stavanger

    5 Tjessem Jakob Nissestien 67 Sandnes

  • 7/29/2019 BD1 SQL web

    33/204

    Instruciunea DELETE

    exemplu - rezultatul

    DELETE FROM PersonsWHERE LastName='Tjessem' ANDFirstName='Jakob'

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    4 Nilsen Johan Bakken 2 Stavanger

  • 7/29/2019 BD1 SQL web

    34/204

    tergerea tuturor

    nregistrrilor DELETE FROM table_name

    SAU

    DELETE * FROM table_name Nu exist UNDO pentru operaia de tergere

  • 7/29/2019 BD1 SQL web

    35/204

    Baze de date

    Northwind

    Adventure Works

    World Limbaje de modelare

    SQL Server Management Studio

    Diagrame pentru baze de date IDEF1X

  • 7/29/2019 BD1 SQL web

    36/204

    Baze de date

    Customers - Northwind

    CompanyName ContactName Address City

    Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin

    Berglunds snabbkp ChristinaBerglund

    Berguvsvgen 8 Lule

    Centro comercialMoctezuma

    Francisco Chang Sierras deGranada 9993

    MxicoD.F.

    Ernst Handel Roland Mendel Kirchgasse 6 Graz

    FISSA Fabrica Inter.Salchichas S.A.

    Diego Roel C/ Moralzarzal,86

    Madrid

    Galera delgastrnomo

    EduardoSaavedra

    Rambla deCatalua, 23

    Barcelona

  • 7/29/2019 BD1 SQL web

    37/204

    Baze de date - interogri

    SELECT * FROM customers

    SELECT CompanyName, ContactName FROMcustomers

    SELECT * FROM customers WHEREcompanyname LIKE 'a% SELECT CompanyName, ContactName

    FROM customersWHERE CompanyName > 'a

    SELECT CompanyName, ContactNameFROM customersWHERE CompanyName > 'g'AND ContactName > 'g'

  • 7/29/2019 BD1 SQL web

    38/204

    Clauza TOP

    Folosit pentru a specifica numrul denregistrri ce se vor returna

    Util cnd tabel are foarte multe nregistrri Returnarea unui numr mare de nregistrri

    poate afecta performana

    Nu este suportat de toate SGBD-urile

    Sintaxa MSSQL

    SELECT TOP number | percent column_name(s)

    FROM table_name

  • 7/29/2019 BD1 SQL web

    39/204

    Clauza TOP - echivalent

    MySQL

    SELECT column_name(s)FROM table_name

    LIMIT number SELECT * FROM Persons LIMIT 5

    Oracle

    SELECT column_name(s)FROM table_name

    WHERE ROWNUM

  • 7/29/2019 BD1 SQL web

    40/204

    Clauza TOP - Exemplu

    SELECT TOP 2 * FROM Persons

    SELECT TOP 50 PERCENT * FROM Persons

    P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    4 Nilsen Tom Vingvn 23 Stavanger

    P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

  • 7/29/2019 BD1 SQL web

    41/204

    Operatorul LIKE

    Folosit n clauza WHERE pentru a specifica unablon de cutare ntr-o coloan

    Sintaxa:

    SELECT column_name(s)

    FROM table_nameWHERE column_name LIKE pattern

  • 7/29/2019 BD1 SQL web

    42/204

    Operatorul LIKE - exemple

    SELECT * FROM PersonsWHERE City LIKE 's% nregistrrile n care City ncepe cu litera s

    SELECT * FROM PersonsWHERE City LIKE '%s nregistrrile n care City se termin cu litera s

    SELECT * FROM Persons

    WHERE City NOT LIKE '%tav%'

    P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

  • 7/29/2019 BD1 SQL web

    43/204

    Operatorul LIKE caractere

    pentru ablon Putem folosi urmtoarele caractere pentru

    ablon

    Caracter Descriere% nlocuiete zero sau mai multe caractere

    _ nlocuiete un singur caracter

    [charlist] Orice caracter din list

    [^charlist] sau

    [!charlist]

    Orice caracter care nu este n list

  • 7/29/2019 BD1 SQL web

    44/204

    Operatorul LIKE Exemple

    SELECT * FROM Persons WHERE City LIKE 'sa% SELECT * FROM Persons

    WHERE City LIKE '%nes%

    SELECT * FROM PersonsWHERE FirstName LIKE '_la SELECT * FROM Persons

    WHERE LastName LIKE 'S_end_on

    SELECT * FROM PersonsWHERE LastName LIKE '[bsp]% SELECT * FROM Persons

    WHERE LastName LIKE '[!bsp]%'

  • 7/29/2019 BD1 SQL web

    45/204

    Operatorul IN

    Folosit pentru a specifica o list de valori nclauza WHERE

    Sintaxa:

    SELECT column_name(s)

    FROM table_nameWHERE column_name IN (value1,value2,...)

  • 7/29/2019 BD1 SQL web

    46/204

    Operatorul IN - exemplu

    SELECT * FROM PersonsWHERE LastName IN ('Hansen','Pettersen')

    P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

  • 7/29/2019 BD1 SQL web

    47/204

    Operatorul BETWEEN

    Folosit n clauza WHERE pentru a stabili uninterval de valori dup care se va face filtrareadatelor

    Capetele intervalului pot fi numere, text saudate calendaristice

    Sintaxa: SELECT column_name(s)

    FROM table_nameWHERE column_nameBETWEEN value1 AND value2

  • 7/29/2019 BD1 SQL web

    48/204

    Operatorul BETWEEN - exemplu

    SELECT * FROM PersonsWHERE LastNameBETWEEN 'Hansen' AND 'Pettersen'

    P_Id LastName FirstName Address City1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

  • 7/29/2019 BD1 SQL web

    49/204

    Operatorul BETWEEN - !!!

    Tratat diferit de diverse SGBD-uri

    (value1, value2)

    [value1, value2]

    [value1, value2)

    Trebuie verificat comportamentul pentruSGBD-ul pe care l folosii

    SELECT * FROM PersonsWHERE LastNameNOT BETWEEN 'Hansen' AND 'Pettersen'

  • 7/29/2019 BD1 SQL web

    50/204

    Alias

    Se poate da un nume alias unei tabele sauunei coloane

    Util cnd o tabel sau un cmp are un numelung sau complex

    Util cnd vrem s dm un nume unei coloanecu valoare calculat

    Interogrile devin mai simplu de scris i decitit

  • 7/29/2019 BD1 SQL web

    51/204

    Alias

    Sintaxa pentru tabele

    SELECT column_name(s)FROM table_name

    AS alias_name

    Sintaxa pentru coloane

    SELECT column_name AS alias_name

    FROM table_name

  • 7/29/2019 BD1 SQL web

    52/204

    Alias - exemple

    Cu alias SELECT po.OrderID, p.LastName, p.FirstName

    FROM Persons AS p,Product_Orders AS poWHERE p.LastName='Hansen' AND p.FirstName='Ola

    Fr alias SELECT Product_Orders.OrderID, Persons.LastName,

    Persons.FirstName

    FROM Persons,Product_OrdersWHERE Persons.LastName='Hansen' ANDPersons.FirstName='Ola'

  • 7/29/2019 BD1 SQL web

    53/204

    Join

    Se folosesc pentru a extrage date ntr-unresult-set din dou sau mai multe tabele, pebaza unei relaii ntre anumite coloane dinaceste tabele

    Cheia primar = o coloan (sau o combinaiede coloane) cu valori unice n fiecare

    nregistrare. Scopul este de a lega datele dinmai multe tabele, fr a repeta datele dinfiecare tabel

  • 7/29/2019 BD1 SQL web

    54/204

    Join

    Tabela Persons

    Tabela Orders

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes3 Pettersen Kari Storgt 20 Stavanger

    O_Id OrderNo P_Id

    1 77895 3

    2 44678 3

    3 22456 1

    4 24562 1

    5 34764 15

  • 7/29/2019 BD1 SQL web

    55/204

    Join mai multe tipuri

    JOIN/INNER JOIN: Extrage linii cnd este celpuin o potrivire n ambele tabele

    LEFT JOIN: Extrage toate liniile din tabela dinstnga, chiar dac nu au potriviri n tabela dindreapta

    RIGHT JOIN: Extrage toate liniile din tabela

    din dreapta, chiar dac nu au potriviri ntabela din stnga

    FULL JOIN: Combinaie ntre LEFT i RIGHT

  • 7/29/2019 BD1 SQL web

    56/204

    INNER JOIN

    Extrage linii cnd este cel puin o potrivire nambele tabele

    Sintaxa: SELECT column_name(s)

    FROM table_name1 INNER JOIN table_name2ON table_name1.column_name =

    table_name2.column_name

    Dac sunt linii n prima tabel care nu aucorespondent n a doua atunci ele nu suntextrase

  • 7/29/2019 BD1 SQL web

    57/204

    INNER JOIN - exemplu

    Vrem s extragem persoanele care aucomenzi

    SELECT Persons.LastName, Persons.FirstName,

    Orders.OrderNo FROM PersonsINNER JOIN Orders ON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName

    LastName FirstName OrderNo

    Hansen Ola 22456

    Hansen Ola 24562

    Pettersen Kari 77895

    Pettersen Kari 44678

  • 7/29/2019 BD1 SQL web

    58/204

    LEFT JOIN

    Extrage toate nregistrrile din table dinstnga, chiar i atunci cnd nu sunt potriviri ntabela din dreapta

    Sintaxa: SELECT column_name(s)

    FROM table_name1 LEFT JOIN table_name2ON table_name1.column_name =

    table_name2.column_name n unele SGBD-uri se numete LEFT OUTER

    JOIN

  • 7/29/2019 BD1 SQL web

    59/204

    LEFT JOIN - exemplu

    Vrem s extragem toate persoaneleindiferent dac au comenzi sau nu SELECT p.LastName, p.FirstName, po.OrderNo

    FROM Persons AS p LEFT JOIN Orders AS poON p.P_Id=po.P_IdORDER BY p.LastName

    LastName FirstName OrderNo

    Hansen Ola 22456

    Hansen Ola 24562

    Pettersen Kari 77895

    Pettersen Kari 44678

    Svendson Tove

  • 7/29/2019 BD1 SQL web

    60/204

    RIGHT JOIN

    Extrage toate nregistrrile din table dindreapta, chiar i cele pentru care nu suntpotriviri n tabela din stnga

    Sintaxa: SELECT column_name(s) FROM table_name1

    RIGHT JOIN table_name2ON table_name1.column_name =

    table_name2.column_name n unele SGBD-uri se numete RIGHT OUTER

    JOIN

  • 7/29/2019 BD1 SQL web

    61/204

    RIGHT JOIN - exemplu

    Tabela Persons

    Tabela Orders

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    O_Id OrderNo P_Id

    1 77895 3

    2 44678 3

    3 22456 1

    4 24562 1

    5 34764 15

  • 7/29/2019 BD1 SQL web

    62/204

    RIGHT JOIN - exemplu

    Extragem toate comenzile cu persoanelecorespunztoare SELECT Persons.LastName, Persons.FirstName,

    Orders.OrderNo FROM PersonsRIGHT JOIN Orders ON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName

    LastName FirstName OrderNo

    Hansen Ola 22456

    Hansen Ola 24562

    Pettersen Kari 77895

    Pettersen Kari 44678

    34764

  • 7/29/2019 BD1 SQL web

    63/204

    FULL JOIN

    Extrage nregistrrile pentru care este opotrivire ntr-una din cele dou tabele

    Sintaxa: SELECT column_name(s) FROM table_name1

    FULL JOIN table_name2ON table_name1.column_name =table_name2.column_name

    Extrage toate nregistrrile din tabela dinstnga i toate nregistrrile din tabela dindreapta

  • 7/29/2019 BD1 SQL web

    64/204

    FULL JOIN - exemplu

    Toate persoanele cu comenzile lor i toatecomenzile cu persoanele corespunztoare SELECT Persons.LastName, Persons.FirstName,

    Orders.OrderNo FROM Persons FULL JOIN Orders

    ON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName

    LastName FirstName OrderNo

    Hansen Ola 22456Hansen Ola 24562

    Pettersen Kari 77895

    Pettersen Kari 44678

    Svendson Tove

    34764

  • 7/29/2019 BD1 SQL web

    65/204

    Operatorul UNION

    Folosit pentru a combina dou sau mai multeinstruciuni SELECT

    Fiecare instruciune SELECT trebuie s aibacelai numr de coloane

    Coloanele corespunztoare trebuie s aib iaceleai tipuri

    Coloanele trebuie s fie i n aceeai ordine

  • 7/29/2019 BD1 SQL web

    66/204

    Operatorul UNION - sintaxa

    Doar valorile distincte SELECT column_name(s) FROM table_name1

    UNION

    SELECT column_name(s) FROM table_name2 Permite valori duplicate

    SELECT column_name(s) FROM table_name1UNION ALL

    SELECT column_name(s) FROM table_name2 Numele coloanelor din result-set vor fi

    numele coloanelor din primul SELECT

  • 7/29/2019 BD1 SQL web

    67/204

    Operatorul UNION - exemplu

    Employees_Norway

    Employees_USA

    E_ID E_Name

    01 Hansen, Ola

    02 Svendson, Tove

    03 Svendson, Stephen04 Pettersen, Kari

    E_ID E_Name01 Turner, Sally

    02 Kent, Clark

    03 Svendson, Stephen

    04 Scott, Stephen

  • 7/29/2019 BD1 SQL web

    68/204

    Operatorul UNION - exemplu

    SELECT E_Name FROM Employees_NorwayUNIONSELECT E_Name FROM Employees_USA

    E_Name

    Hansen, Ola

    Svendson, Tove

    Svendson, Stephen

    Pettersen, Kari

    Turner, Sally

    Kent, Clark

    Scott, Stephen

  • 7/29/2019 BD1 SQL web

    69/204

    SELECT INTO

    Folosit pentru a crea copii backup aletabelelor

    Sintaxa:

    SELECT *

    INTO new_table_name [IN externaldatabase]FROM old_tablename

    SELECT column_name(s)INTO new_table_name [IN externaldatabase]FROM old_tablename

  • 7/29/2019 BD1 SQL web

    70/204

    SELECT INTO - exemplu

    SELECT * INTO Persons_Backup FROM Persons

    Putem folosi clauza IN pentru a copia tabelantr-o alt baz de date SELECT * INTO Persons_Backup IN 'Backup.mdb'

    FROM Persons

    Se poate crea un backup doar pentru o partedin date SELECT LastName,Firstname

    INTO Persons_BackupFROM Persons WHERE City='Sandnes'

  • 7/29/2019 BD1 SQL web

    71/204

    SELECT INTO exemplu 2

    Putem extrage date din dou tabele legate SELECT Persons.LastName,Orders.OrderNo

    INTO Persons_Order_Backup

    FROM Persons INNER JOIN OrdersON Persons.P_Id=Orders.P_Id

  • 7/29/2019 BD1 SQL web

    72/204

    CREATE DATABASE

    Folosit pentru a crea o nou baz de date

    Sintaxa:

    CREATE DATABASE database_name

    Exemplu:

    CREATE DATABASE my_db

    Tabele se vor crea cu CREATE TABLE

  • 7/29/2019 BD1 SQL web

    73/204

    CREATE TABLE

    Folosit pentru a crea tabele

    Sintaxa: CREATE TABLE table_name

    (column_name1 data_type,column_name2 data_type,column_name3 data_type,....

    ) Tipul de date stabilete tipul valorilor pentru

    coloana respectiv (tipuri de date MSMSQL)

  • 7/29/2019 BD1 SQL web

    74/204

    Tipuri de date MSSQL

    iruri de caractere

    Tip de date Descriere Stocare

    char(n) ir de caractere de dimensiunefix.Maxim 8000 de caractere

    n

    varchar(n) ir de caractere de lungime variabil.Maxim 8000 de caractere

    varchar(max) ir de caractere de lungime variabil.Maxim1,073,741,824 de caractere

    text ir de caractere de lungime variabil.Maxim 2GB de date de tip text

  • 7/29/2019 BD1 SQL web

    75/204

    Tipuri de date MSSQL

    iruri de caractere Unicode

    Tip de date Descriere Stocare

    nchar(n) Date Unicode de lungime fix. Maxim4000 caractere

    nvarchar(n) Date Unicode de lungime variabil.Maxim 4000 caractere

    nvarchar (max) Date Unicode de lungime variabil.Maxim 536,870,912 caractere

    ntext Date Unicode de lungime variabil.Maxim 2GB de date text

  • 7/29/2019 BD1 SQL web

    76/204

    Tipuri de date MSSQL

    Tipuri binare

    Tip de date Descriere Stocare

    bit Permite 0, 1, sau NULL

    binary(n) Date binare de lungime fix. Maxim8000 octei

    varbinary(n) Date binare de lungime variabil.Maxim 8000 octei

    varbinary(max) Date binare de lungime variabil.

    Maxim 2GBimage Date binare de lungime variabil.

    Maxim 2GB

  • 7/29/2019 BD1 SQL web

    77/204

    Tipuri de date MSSQL

    Tipuri numerice

    Tip de date Descriere Stocare

    tinyint Permite numere ntregi de la 0 la 255 1 octet

    smallint Permite numere ntregi de la -32,768la 32,767

    2 octei

    int Permite numere ntregi de la -2,147,483,648 la2,147,483,647

    4 octei

    bigint Permite numere ntregi de la -

    9,223,372,036,854,775,808 la9,223,372,036,854,775,807

    8 octei

  • 7/29/2019 BD1 SQL web

    78/204

    Tipuri de date MSSQL

    Tipuri numerice

    Tip de date Descriere Stocare

    decimal(p,s)

    numeric(p,s)

    Numere cu precizie i magnitudine

    fix. Permite numere de la -10^38 +1la 10^38 1.Parametrul p indicnumrul maximde cifre ce pot fi stocate (att npartea stng ct i n partea dreapta punctului zecimal). p trebuie s fie

    ntre 1 i 38. Implicit este 18.Parametrul s indic numrul maxim decifre stocate n dreapta punctuluizecimal. s trebuie s fie de la 0 la p.Implicit este 0.

    5-17

    octei

  • 7/29/2019 BD1 SQL web

    79/204

    Tipuri de date MSSQL

    Tipuri numericeTip de date Descriere Stocare

    smallmoney Date monetare de la -214,748.3648 la214,748.3647

    4 octei

    money Date monetare de la -922,337,203,685,477.5808tla922,337,203,685,477.5807

    8 octei

    float(n) Date numerice n virgul mobil de la -1.79E+308 la 1.79E+308. Parametrul n

    indic numrul de octei 4 sau 8.float(24) cmpde 4 octei, iar float(53)cmpde 8 octei. Valoarea implicitpentru n este 53.

    4 sau 8octei

    real Date numerice n virgul mobil de la -3.40E + 38 la 3.40E + 38

    4 octei

  • 7/29/2019 BD1 SQL web

    80/204

    Tipuri de date MSSQL

    Tipuri pentru dat/orTip de date Descriere Stocare

    datetime January 1, 1753 - December 31, 9999cu acuratee de 3.33 milisecunde

    8 octei

    datetime2 January 1, 0001 - December 31, 9999cu acuratee de 100 nanosecunde

    6-8 octei

    smalldatetime January 1, 1900 - June 6, 2079 cuacuratee de 1 minut

    4 octei

    date Stocheaz doar data.

    January 1, 0001 - December 31, 9999

    3 octei

    time Stocheaz doar ora cu o acuratee de100 nanosecunde

    3-5 octei

    datetimeoffset La fel ca i datetime2 + are adugattime zone offset

    8-10octei

  • 7/29/2019 BD1 SQL web

    81/204

    Tipuri de date MSSQL

    Tipuri pentru dat/orTip de date Descriere Stocare

    timestamp Stocheazun numr unic care esteactualizat de fiecare dat cnd o

    nregistrare se creeaz sau se modific.Valoarea este bazat pe ceasulintern inu are legtur cu ceasul real. Fiecaretabel poate avea un singur cmp deacest tip

    i i

  • 7/29/2019 BD1 SQL web

    82/204

    Tipuri de date MSSQL

    Alte tipuri de dateTip de date Descriere

    sql_variant Stocheaz pn la 8000 de octei de date dediverse tipuri cu excepia text, ntext, itimestamp

    uniqueidentifier Stocheaz un globally unique identifier (GUID)

    xml Stocheaz date n format XML. Maximum 2GB

    cursor Stocheazo referin la un cursor folositpentru operaii cu baza de date

    table Stocheaz un result-set pentru procesareulterioar

    l

  • 7/29/2019 BD1 SQL web

    83/204

    CREATE TABLE - exemplu

    CREATE TABLE Persons

    (P_Id int,

    LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255)

    )P_Id LastName FirstName Address City

    i

  • 7/29/2019 BD1 SQL web

    84/204

    Constrngeri

    Se folosesc pentru a limita tipul datelor care potajunge n tabel

    Se pot specifica la crearea tabelei (n

    instruciunea CREATE TABLE) sau dup ce a fostcreat tabela (cu instruciunea ALTER TABLE) NOT NULL

    UNIQUE

    PRIMARY KEY FOREIGN KEY

    CHECK

    DEFAULT

    C t O

  • 7/29/2019 BD1 SQL web

    85/204

    Constrngerea NOT NULL

    Implicit o tabel poate conine n cmpurilesale valori NULL

    NOT NULL va determina ca aceast valoares nu fie acceptat n coloana asupra creia seaplic constrngerea

    Cu aceast constrngere nu se vor putea

    aduga nregistrri sau nu se vor puteaactualiza fr a specifica o valoarea pentrucmpul respectiv

    C t NOT NULL

  • 7/29/2019 BD1 SQL web

    86/204

    Constrngerea NOT NULL -

    exemplu CREATE TABLE Persons

    (P_Id int NOT NULL,

    LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255)

    )

    C t UNIQUE

  • 7/29/2019 BD1 SQL web

    87/204

    Constrngerea UNIQUE

    Folosit asupra unei coloane n care nu se vorpermite date duplicate

    UNIQUE i PRIMARY KEY ofer garania de

    unicitate pentru o coloan sau mulime decoloane

    O constrngere de tip PRIMARY KEY arentotdeauna definit i o constrngereUNIQUE

    Putem avea mai multe constrngeri UNIQUEdar o singur constrngere PRIMARY KEY

    C t UNIQUE

  • 7/29/2019 BD1 SQL web

    88/204

    Constrngerea UNIQUE -

    exemplu MySQL

    CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,

    FirstName varchar(255),Address varchar(255), City varchar(255),UNIQUE (P_Id) )

    SQL Server / Oracle / MS Access CREATE TABLE Persons(

    P_Id int NOT NULL UNIQUE,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255), City varchar(255) )

    C t UNIQUE

  • 7/29/2019 BD1 SQL web

    89/204

    Constrngerea UNIQUE -

    exemplu Nume pentru o constrngere de unicitate

    definit pe mai multe coloane

    MySQL / SQL Server / Oracle / MS Access

    CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),

    Address varchar(255),City varchar(255),CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName))

    C t UNIQUE

  • 7/29/2019 BD1 SQL web

    90/204

    Constrngerea UNIQUE cu

    ALTER TABLE Definirea unei constrngeri de unicitate dup

    ce tabela a fost creat

    MySQL / SQL Server / Oracle / MS Access

    ALTER TABLE Persons

    ADD UNIQUE (P_Id)

    ALTER TABLE Persons

    ADD CONSTRAINT uc_PersonID UNIQUE(P_Id,LastName)

    Eli i i t i

  • 7/29/2019 BD1 SQL web

    91/204

    Eliminarea unei constrngeri

    MySQL

    ALTER TABLE PersonsDROP INDEX uc_PersonID

    SQL Server / Oracle / MS Access ALTER TABLE Persons

    DROP CONSTRAINT uc_PersonID

    C t PRIMARY KEY

  • 7/29/2019 BD1 SQL web

    92/204

    Constrngerea PRIMARY KEY

    Identific n mod unic fiecare nregistrare dintabel

    Cheia primar trebuie s conin valori unice

    Nu poate conine valoarea NULL

    Fiecare tabel trebuie s aib o cheie primari numai una

    C t PRIMARY KEY

  • 7/29/2019 BD1 SQL web

    93/204

    Constrngerea PRIMARY KEY

    Sintaxa:

    MySQL CREATE TABLE Persons

    (P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),PRIMARY KEY (P_Id))

    Constrngerea PRIMARY KEY

  • 7/29/2019 BD1 SQL web

    94/204

    Constrngerea PRIMARY KEY

    Sintaxa:

    SQL Server / Oracle / MS Access

    CREATE TABLE Persons

    (P_Id int NOT NULL PRIMARY KEY,LastName varchar(255) NOT NULL,

    FirstName varchar(255),

    Address varchar(255),City varchar(255))

    Constrngerea PRIMARY KEY

  • 7/29/2019 BD1 SQL web

    95/204

    Constrngerea PRIMARY KEY

    Pentru a da un nume constrngerii i pentru apermite o cheie primar format din mai multecmpuri folosim sintaxa: CREATE TABLE Persons

    (P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CONSTRAINT pk_PersonID PRIMARY KEY(P_Id,LastName))

    Constrngerea PRIMARY KEY

  • 7/29/2019 BD1 SQL web

    96/204

    Constrngerea PRIMARY KEY

    Crearea unei constrngeri de cheie primardup crearea tabelei ALTER TABLE Persons

    ADD PRIMARY KEY (P_Id)

    n acest caz coloanele ce fac parte din cheiaprimar trebuie s fi fost definite anterior

    astfel nct s nu accepte valoarea NULL

    Constrngerea PRIMARY KEY

  • 7/29/2019 BD1 SQL web

    97/204

    Constrngerea PRIMARY KEY

    Eliminarea unei constrngeri de cheieprimar

    MySQL

    ALTER TABLE Persons

    DROP PRIMARY KEY

    SQL Server / Oracle / MS Access

    ALTER TABLE PersonsDROP CONSTRAINT pk_PersonID

    Constrngerea FOREIGN KEY

  • 7/29/2019 BD1 SQL web

    98/204

    Constrngerea FOREIGN KEY O cheie strin dintr-o tabel pointeaz la o

    cheie primar din alt tabel Tabela Persons

    Tabela Orders

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    O_Id OrderNo P_Id

    1 77895 3

    2 44678 3

    3 22456 2

    4 24562 1

    Constrngerea FOREIGN KEY

  • 7/29/2019 BD1 SQL web

    99/204

    Constrngerea FOREIGN KEY

    Coloana P_id din tabela Orders pointeaz lacoloana P_id din tabela Persons

    Coloana P_id din tabela Orders este FOREIGNKEY

    Coloana P_id din tabela Persons estePRIMARY KEY

    Constrngerea de tip FOREIGN KEY este folositpentru a preveni aciuni care ar distruge

    legturile dintre cele dou tabele De asemenea mpiedic introducerea de date

    invalide ce nu se regsesc n cheia primar

    Constrngerea FOREIGN KEY

  • 7/29/2019 BD1 SQL web

    100/204

    Constrngerea FOREIGN KEY

    Sintaxa - MySQL

    CREATE TABLE Orders(

    O_Id int NOT NULL,OrderNo int NOT NULL,P_Id int,

    PRIMARY KEY (O_Id),

    FOREIGN KEY (P_Id) REFERENCES Persons(P_Id))

    Constrngerea FOREIGN KEY

  • 7/29/2019 BD1 SQL web

    101/204

    Constrngerea FOREIGN KEY

    Sintaxa - SQL Server / Oracle / MS Access

    CREATE TABLE Orders(

    O_Id int NOT NULL PRIMARY KEY,OrderNo int NOT NULL,P_Id int FOREIGN KEY REFERENCES

    Persons(P_Id)

    )

    Constrngerea FOREIGN KEY

  • 7/29/2019 BD1 SQL web

    102/204

    Constrngerea FOREIGN KEY

    Pentru a stabili un nume pentru constrngerei pentru a defini constrngerea pe mai multecoloane

    CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,

    P_Id int,

    PRIMARY KEY (O_Id),CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)REFERENCES Persons(P_Id) )

    Constrngerea FOREIGN KEY

  • 7/29/2019 BD1 SQL web

    103/204

    Constrngerea FOREIGN KEY

    Adugarea constrngerii dup crearea tabelei ALTER TABLE Orders

    ADD FOREIGN KEY (P_Id)

    REFERENCES Persons(P_Id) Stabilirea unui nume pentru constrngere i

    definire constrngere pe mai multe cmpuri

    ALTER TABLE OrdersADD CONSTRAINT fk_PerOrdersFOREIGN KEY (P_Id)

    REFERENCES Persons(P_Id)

    Constrngerea FOREIGN KEY

  • 7/29/2019 BD1 SQL web

    104/204

    Constrngerea FOREIGN KEY

    Eliminarea unei constrngeri

    MySQL

    ALTER TABLE Orders

    DROP FOREIGN KEY fk_PerOrders

    SQL Server / Oracle / MS Access

    ALTER TABLE Orders

    DROP CONSTRAINT fk_PerOrders

    Constrngerea CHECK

  • 7/29/2019 BD1 SQL web

    105/204

    Constrngerea CHECK

    Folosit pentru a limita intervalul de valori cepot fi introduse ntr-o coloan

    Se poate defini pe o coloan caz n care se

    limiteaz valorile ce pot fi introduse ncoloana respectiv

    Se poate defini pe ntreaga tabel caz n care

    se pot limita valorile ce se introduce ntr-ocoloan pe baza valorilor din alte coloane

    Constrngerea CHECK

  • 7/29/2019 BD1 SQL web

    106/204

    Constrngerea CHECK

    MySQL

    CREATE TABLE Persons(

    P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),

    Address varchar(255),

    City varchar(255),CHECK (P_Id>0)

    )

    Constrngerea CHECK

  • 7/29/2019 BD1 SQL web

    107/204

    Constrngerea CHECK

    SQL Server / Oracle / MS Access

    CREATE TABLE Persons(

    P_Id int NOT NULL CHECK (P_Id>0),LastName varchar(255) NOT NULL,FirstName varchar(255),

    Address varchar(255),

    City varchar(255))

    Constrngerea CHECK

  • 7/29/2019 BD1 SQL web

    108/204

    Constrngerea CHECK

    Pentru a stabili un nume pentru oconstrngere i pentru a defini oconstrngere pe mai multe coloane CREATE TABLE Persons(

    P_Id int NOT NULL,LastName varchar(255) NOT NULL,

    FirstName varchar(255),

    Address varchar(255), City varchar(255),CONSTRAINT chk_Person CHECK (P_Id>0 ANDCity='Sandnes) )

    Constrngerea CHECK

  • 7/29/2019 BD1 SQL web

    109/204

    Constrngerea CHECK

    Stabilirea unei constrngeri dup creareatabelei ALTER TABLE Persons

    ADD CHECK (P_Id>0) Stabilirea unui nume pentru constrngere i

    crearea unei constrngeri pe mai multecoloane

    ALTER TABLE PersonsADD CONSTRAINT chk_Person CHECK (P_Id>0AND City='Sandnes')

    Constrngerea CHECK

  • 7/29/2019 BD1 SQL web

    110/204

    Constrngerea CHECK

    Eliminarea unei constrngeri

    SQL Server / Oracle / MS Access

    ALTER TABLE Persons

    DROP CONSTRAINT chk_Person

    Constrngerea DEFAULT

  • 7/29/2019 BD1 SQL web

    111/204

    Constrngerea DEFAULT

    Folosit pentru a insera o valoare implicitntr-o coloan

    Valoarea implicit va fi adugat la toate

    nregistrrile noi, dac nu se specific o altvaloare

    Poate fi folosit i pentru a insera valori

    sistem obinute prin apelul unor funcii

    Constrngerea DEFAULT -

  • 7/29/2019 BD1 SQL web

    112/204

    Constrngerea DEFAULT

    exemplu CREATE TABLE Persons

    (P_Id int NOT NULL,LastName varchar(255) NOT NULL,

    FirstName varchar(255),Address varchar(255),City varchar(255) DEFAULT 'Sandnes'

    )

    Constrngerea DEFAULT -

  • 7/29/2019 BD1 SQL web

    113/204

    Constrngerea DEFAULT

    exemplu CREATE TABLE Orders

    (O_Id int NOT NULL,OrderNo int NOT NULL,

    P_Id int,OrderDate date DEFAULT GETDATE())

    Constrngerea DEFAULT

  • 7/29/2019 BD1 SQL web

    114/204

    Constrngerea DEFAULT

    Adugarea unei constrngeri de valoareaimplicit dup crearea tabelei

    MySQL

    ALTER TABLE PersonsALTER City SET DEFAULT 'SANDNES

    SQL Server / Oracle / MS Access

    ALTER TABLE PersonsALTER COLUMN City SET DEFAULT 'SANDNES'

    Constrngerea DEFAULT

  • 7/29/2019 BD1 SQL web

    115/204

    Constrngerea DEFAULT

    Eliminarea unei constrngeri de valoareimplicit

    MySQL

    ALTER TABLE Persons

    ALTER City DROP DEFAULTSQL

    Server / Oracle / MS Access

    ALTER TABLE PersonsALTER COLUMN City DROP DEFAULT

    Instruciunea CREATE INDEX

  • 7/29/2019 BD1 SQL web

    116/204

    Instruciunea CREATE INDEX

    Folosit pentru a crea indeci pe tabele

    Rolul indecilor este de a permite gsirearapid i eficient a datelor, fr a citi ntreg

    tabelul

    Actualizarea unei tabele ce conine indecieste mai lent pentru c trebuie actualizai i

    indecii Indecii trebuie creai doar pentru coloane pe

    care se vor face cutri frecvente

    Instruciunea CREATE INDEX

  • 7/29/2019 BD1 SQL web

    117/204

    Instruciunea CREATE INDEX

    Sintaxa:

    CREATE INDEX index_nameON table_name (column_name)

    Aici se permit valori duplicate Creare de indeci unici valorile duplicate nu

    sunt permise

    CREATE UNIQUE INDEX index_nameON table_name (column_name)

    Sintaxa poate diferi ntre SGBD-uri

    Instruciunea CREATE INDEX

  • 7/29/2019 BD1 SQL web

    118/204

    Instruciunea CREATE INDEX

    Exemplu

    CREATE INDEX PIndexON Persons (LastName)

    Creare de index pe o combinaie de coloane CREATE INDEX PIndex

    ON Persons (LastName, FirstName)

    Instruciunea DROP

  • 7/29/2019 BD1 SQL web

    119/204

    Instruciunea DROP

    DROP INDEX - terge un index dintr-o tabel

    MS Access

    DROP INDEX index_name ON table_name

    MSSQL DROP INDEX table_name.index_name

    DB2/Oracle

    DROP INDEX index_name MySQL

    ALTER TABLE table_name DROP INDEX index_name

    Instruciunea DROP

  • 7/29/2019 BD1 SQL web

    120/204

    Instruciunea DROP

    DROP TABLE - terge o tabel DROP TABLE table_name

    DROP DATABASE - terge toat baza de date DROP DATABASE database_name

    TRUNCATE TABLE - terge doar nregistrriledintr-o tabel

    TRUNCATE TABLE table_name

    Instruciunea ALTER TABLE

  • 7/29/2019 BD1 SQL web

    121/204

    Instruciunea ALTER TABLE

    Folosit pentru a aduga, modifica, terge,coloane dintr-o tabel

    Adugarea unei coloane

    ALTER TABLE table_nameADD column_name datatype

    tergerea unei coloane ALTER TABLE table_name

    DROP COLUMN column_name

    Schimbarea tipului de date pentru o coloan ALTER TABLE table_name

    ALTER COLUMN column_name datatype

    Instruciunea ALTER TABLE -

  • 7/29/2019 BD1 SQL web

    122/204

    Instruciunea ALTER TABLE

    exemplu

    Vrem s adugm o nou coloan ALTER TABLE Persons

    ADD DateOfBirth date

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    P_Id LastName FirstName Address City DateOfBirth1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    Instruciunea ALTER TABLE -

  • 7/29/2019 BD1 SQL web

    123/204

    exemplu Schimbarea tipului de date pentru coloane

    DateofBirth n tabela Persons ALTER TABLE Persons

    ALTER COLUMN DateOfBirth year Eliminarea coloanei adugate anterior

    ALTER TABLE PersonsDROP COLUMN DateOfBirth

    Auto increment

  • 7/29/2019 BD1 SQL web

    124/204

    Permite generarea automat a unui numrunic atunci cnd se insereaz o nou

    nregistrare n tabel

    De regul cnd cheia primar este de tipnumeric i e format dintr-un singur cmp,are acest atribut

    Auto increment

  • 7/29/2019 BD1 SQL web

    125/204

    Sintaxa MySQL CREATE TABLE Persons(

    P_Id int NOT NULL AUTO_INCREMENT,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255), City varchar(255),PRIMARY KEY (P_Id))

    Implicit pornete de la 1 i crete cu 1

    Altfel ALTER TABLE Persons AUTO_INCREMENT=100

    Auto increment

  • 7/29/2019 BD1 SQL web

    126/204

    Dac vrem s adugm o nou nregistrare ntabel nu mai trebuie s specificm cmpul ceare atribut AUTO_INCREMENT

    Se va genera o valoare unic automat INSERT INTO Persons (FirstName,LastName)

    VALUES ('Lars', 'Monsen')

    Auto increment

  • 7/29/2019 BD1 SQL web

    127/204

    Sintaxa SQL Server CREATE TABLE Persons(

    P_Id int PRIMARY KEY IDENTITY,LastName varchar(255) NOT NULL,FirstName varchar(255), Address varchar(255),City varchar(255) )

    Implicit pornete de la 1 i crete cu 1 Altfel

    IDENTITY(10,5)

    Pentru a aduga o nou nregistrare INSERT INTO Persons (FirstName,LastName)

    VALUES ('Lars','Monsen')

    Auto increment

  • 7/29/2019 BD1 SQL web

    128/204

    Sintaxa Oracle

    CREATE SEQUENCE seq_personMINVALUE 1

    START WITH 1INCREMENT BY 1CACHE 10

    INSERT INTO Persons

    (P_Id,FirstName,LastName)VALUES (seq_person.nextval,'Lars','Monsen')

    VIEW

  • 7/29/2019 BD1 SQL web

    129/204

    Un view este o tabel virtual bazat peresult-set-ul unei interogri

    Conine linii i coloane la fel ca i o tabel

    real Cmpurile unui view sunt cmpurile uneia sau

    a mai multor tabele din baza de date

    Putem aduga funcii SQL, clauza WHERE iJOIN i s prezentm datele ca i cum ar venidintr-o singur tabel

    VIEW

  • 7/29/2019 BD1 SQL web

    130/204

    Sintaxa pentru creare VIEW CREATE VIEW view_name AS

    SELECT column_name(s)FROM table_nameWHERE condition

    Un viewntotdeauna va prezenta dateactualizate

    Motorul bazei de date va recrea datelefolosind instruciunea SELECT de fiecare datcnd un view este interogat

    VIEW - exemplu

  • 7/29/2019 BD1 SQL web

    131/204

    p

    Northwind

    CREATE VIEW [Current Product List] ASSELECT ProductID, ProductName

    FROM ProductsWHERE Discontinued=No

    Interogarea

    SELECT * FROM [Current Product List]

    VIEW - exemplu

  • 7/29/2019 BD1 SQL web

    132/204

    p

    Northwind

    CREATE VIEW [Products Above Average Price] ASSELECT ProductName, UnitPrice

    FROM ProductsWHERE UnitPrice>(SELECT AVG(UnitPrice) FROMProducts)

    Interogarea

    SELECT * FROM [Products Above Average Price]

    VIEW - exemplu

  • 7/29/2019 BD1 SQL web

    133/204

    p

    Northwind CREATE VIEW [Category Sales For 1997] AS

    SELECT DISTINCTCategoryName,Sum(ProductSales) AS

    CategorySalesFROM [Product Sales for 1997]GROUP BY CategoryName

    Interogri SELECT * FROM [Category Sales For 1997]

    SELECT * FROM [Category Sales For 1997]WHERE CategoryName = 'Beverages'

    VIEW - actualizare

  • 7/29/2019 BD1 SQL web

    134/204

    Actualizarea unui view

    CREATE OR REPLACE VIEW view_name ASSELECT column_name(s)

    FROM table_nameWHERE condition

    Exemplu

    CREATE VIEW [Current Product List] AS

    SELECT ProductID,ProductName,CategoryFROM Products

    WHERE Discontinued=No

    VIEW - tergere

  • 7/29/2019 BD1 SQL web

    135/204

    DROP VIEW view_name

    Date calendaristice

  • 7/29/2019 BD1 SQL web

    136/204

    Forma datei pe care ncercm s o insermtrebuie s se potriveasc cu formatul coloaneide tip dat din tabel

    Atunci cnd apare i partea de timp/orlucrurile se complic

    Exist o serie de funcii predefinite pentru

    procesarea informaiile legate de dat/or

    Funcii MySQL pentru

  • 7/29/2019 BD1 SQL web

    137/204

    dat/or

    Funcia Descriere

    NOW() Data i ora curent

    CURDATE() Data curent

    CURTIME() Ora curent

    DATE() Extrage partea de dat dintr-o expresie de tipdat sau dat/or

    EXTRACT() Extrage o singurparte din dat/or

    DATE_ADD() Adaug un anumit interval de timp unei date

    DATE_SUB() Scade un anumit interval de timp dintr-o datDATEDIFF() Calculeaz intervalul dintre dou date

    DATE_FORMAT() Afieaz data/ora n diverse formate

    Funcii SQL Server pentru

    http://w3schools.com/sql/func_now.asphttp://w3schools.com/sql/func_curdate.asphttp://w3schools.com/sql/func_curdate.asphttp://w3schools.com/sql/func_curtime.asphttp://w3schools.com/sql/func_date.asphttp://w3schools.com/sql/func_date_add.asphttp://w3schools.com/sql/func_date_add.asphttp://w3schools.com/sql/func_date_sub.asphttp://w3schools.com/sql/func_datediff_mysql.asphttp://w3schools.com/sql/func_date_format.asphttp://w3schools.com/sql/func_date_format.asphttp://w3schools.com/sql/func_date_format.asphttp://w3schools.com/sql/func_datediff_mysql.asphttp://w3schools.com/sql/func_date_sub.asphttp://w3schools.com/sql/func_date_add.asphttp://w3schools.com/sql/func_extract.asphttp://w3schools.com/sql/func_date.asphttp://w3schools.com/sql/func_curtime.asphttp://w3schools.com/sql/func_curdate.asphttp://w3schools.com/sql/func_now.asp
  • 7/29/2019 BD1 SQL web

    138/204

    dat/orFuncia Descriere

    GETDATE() Obine data i ora curent

    DATEPART() Extrage o singurparte din dat/or

    DATEADD() Adun sau scade un anumit interval dintr-odat/or

    DATEDIFF() Calculeaz timpul dintre dou date/ore

    CONVERT() Afieaz data/ora n diverse formate

    NULL

    http://w3schools.com/sql/func_getdate.asphttp://w3schools.com/sql/func_getdate.asphttp://w3schools.com/sql/func_datepart.asphttp://w3schools.com/sql/func_datepart.asphttp://w3schools.com/sql/func_dateadd.asphttp://w3schools.com/sql/func_convert.asphttp://w3schools.com/sql/func_convert.asphttp://w3schools.com/sql/func_datediff.asphttp://w3schools.com/sql/func_dateadd.asphttp://w3schools.com/sql/func_datepart.asphttp://w3schools.com/sql/func_getdate.asp
  • 7/29/2019 BD1 SQL web

    139/204

    Reprezint date lips/necunoscute/inaplicabile Implicit o coloan poate conine valoarea NULL

    Operatori pentru NULL:

    IS NULL IS NOT NULL

    Cnd valoarea unei coloane este opionalputem aduga o nregistrare sau o putem

    actualiza fr a specifica o valoare pentrucoloana respectiv

    n acest caz se va salva valoarea NULL

    NULL

  • 7/29/2019 BD1 SQL web

    140/204

    Valoarea NULL este tratat diferit fa derestul valorilor

    Se folosete ca un marcator pentru date

    necunoscute/inaplicabile NULL i 0 (zero) nu sunt echivalente sau

    comparabile

    NULL

  • 7/29/2019 BD1 SQL web

    141/204

    Tabela Persons

    Coloana Address este opional

    Se va salva NULL dac nu specificm o adres Nu putem folosi operatorii relaionali sau de

    egalitate pentru a testa valorile NULL

    P_Id LastName FirstName Address City

    1 Hansen Ola Sandnes

    2 Svendson Tove Borgvn 23 Sandnes3 Pettersen Kari Stavanger

    NULL operatorul IS NULL

  • 7/29/2019 BD1 SQL web

    142/204

    Extragem nregistrrile cu adresa NULL SELECT LastName, FirstName, Address FROM

    Persons

    WHERE Address IS NULL Rezultatul

    LastName FirstName Address

    Hansen Ola

    Pettersen Kari

    NULL operatorul IS NOT NULL

  • 7/29/2019 BD1 SQL web

    143/204

    Extragem nregistrrile cu adresa completat SELECT LastName, FirstName, Address FROM

    Persons

    WHERE Address IS NOT NULL Rezultatul

    LastName FirstName Address

    Svendson Tove Borgvn 23

    Funciile ISNULL(), NVL(),

  • 7/29/2019 BD1 SQL web

    144/204

    IFNULL() i COALESCE() Tabela Products

    SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)

    FROM Products Dac UnitsOnOrder este NULL rezultatul va

    fi NULL

    P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder

    1 Jarlsberg 10.45 16 15

    2 Mascarpone 32.56 23

    3 Gorgonzola 15.67 9 20

    Funciile ISNULL(), NVL(),

  • 7/29/2019 BD1 SQL web

    145/204

    IFNULL() i COALESCE() Funcia ISNULL() (Microsoft) ne permite s

    specificm modul n care dorim s tratmvalorile NULL

    NVL(), IFNULL(), COALESCE() pot fi folositepentru a realiza acelai obiectiv

    n interogarea precedent vrem ca valorile NULLs fie tratate ca zero

    SQL Server / MS Access SELECT ProductName,

    UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))FROM Products

    Funciile ISNULL(), NVL(),

  • 7/29/2019 BD1 SQL web

    146/204

    IFNULL() i COALESCE() Oracle nu are funcia ISNULL() Putem folosi funcia NVL()

    SELECT ProductName,

    UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))FROM Products

    MySQL are funcia ISNULL() dar funcioneazpuin diferit. Putem folosi IFNULL()

    SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))FROM Products

    Funciile ISNULL(), NVL(),

  • 7/29/2019 BD1 SQL web

    147/204

    IFNULL() i COALESCE() MSSQL Coalesce

    SELECT ProductName, UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))

    FROM Products

    Funcii SQL

    http://msdn.microsoft.com/en-us/library/ms190349.aspxhttp://msdn.microsoft.com/en-us/library/ms190349.aspxhttp://msdn.microsoft.com/en-us/library/ms190349.aspx
  • 7/29/2019 BD1 SQL web

    148/204

    SQL are multe funcii pentru a efectua calculeasupra datelor

    Funcii de agregare calculeaz o valoare pebaza valorilor din coloanele tabelei AVG() Calculeaz o valoare medie

    COUNT() ntoarce numrul de nregistrri

    FIRST() ntoarce prima valoare

    LAST() ntoarce ultima valoare

    MAX() ntoarce cea mai mare valoare

    MIN() -ntoarce cea mai mic valoare

    SUM() Calculeaz suma

    Funcii SQL

  • 7/29/2019 BD1 SQL web

    149/204

    Funcii scalare calculeaz o singur valoare pebaza unei valori de intrare UCASE() convertete n litere mari

    LCASE() convertete n litere mici

    MID() extrage caractere dintr-un cmp de tip text

    LEN() calculeaz lungimea unui cmp de tip text ROUND() rotunjete un cmp numeric la numrul de

    zecimale specificat

    NOW() ntoarce data i ora curent din sistem FORMAT() stabilete modul n care este afiat un

    cmp

    Funcia AVG()

  • 7/29/2019 BD1 SQL web

    150/204

    Calculeaz valoarea medie pe o coloan

    Sintaxa

    SELECT AVG(column_name) FROM table_name

    Funcia AVG() - Exemplu

  • 7/29/2019 BD1 SQL web

    151/204

    Calculm media pe coloana OrderPrice SELECT AVG(OrderPrice) AS OrderAverage FROM

    OrdersO_Id OrderDate OrderPrice Customer

    1 2008/11/12 1000 Hansen

    2 2008/10/23 1600 Nilsen

    3 2008/09/02 700 Hansen

    4 2008/09/03 300 Hansen

    5 2008/08/30 2000 Jensen

    6 2008/10/04 100 Nilsen

    OrderAverage

    950

    Funcia AVG() - Exemplu

  • 7/29/2019 BD1 SQL web

    152/204

    Vrem s aflm clienii care au valoareaOrderPrice mai mare dect media SELECT Customer FROM Orders

    WHERE OrderPrice> (SELECT AVG(OrderPrice)FROM Orders)

    Customer

    Hansen

    Nilsen

    Jensen

    Funcia COUNT()

  • 7/29/2019 BD1 SQL web

    153/204

    Calculeaz numrul de nregistrri carerespect un anumit criteriu

    Valorile NULL nu vor fi numrate

    Sintaxa SELECT COUNT(column_name) FROM

    table_name

    Pentru a afla numrul de nregistrri dintabel SELECT COUNT(*) FROM table_name

    Funcia COUNT()

  • 7/29/2019 BD1 SQL web

    154/204

    Numrul de valori distincte dintr-o coloan secalculeaz astfel: SELECT COUNT(DISTINCT column_name) FROM

    table_name

    Funcia COUNT() exemplu

  • 7/29/2019 BD1 SQL web

    155/204

    Numrul de comenzi ale clientului Nilsen

    SELECT COUNT(Customer) AS CustomerNilsenFROM OrdersWHERE Customer='Nilsen'

    O_Id OrderDate OrderPrice Customer

    1 2008/11/12 1000 Hansen

    2 2008/10/23 1600 Nilsen

    3 2008/09/02 700 Hansen

    4 2008/09/03 300 Hansen

    5 2008/08/30 2000 Jensen

    6 2008/10/04 100 Nilsen

    CustomerNilsen

    2

    Funcia COUNT(*) exemplu

  • 7/29/2019 BD1 SQL web

    156/204

    Numrul de comenzi din tabela Orders ogsim astfel: SELECT COUNT(*) AS NumberOfOrders FROM

    Orders

    Reprezint numrul total de nregistrri dintabel

    NumberOfOrders

    6

    Funcia COUNT(DISTINCT)

    l

  • 7/29/2019 BD1 SQL web

    157/204

    exemplu Vrem s gsim numrul de clieni unici

    SELECT COUNT(DISTINCT Customer) ASNumberOfCustomers FROM Orders

    NumberOfCustomers

    3

    Funcia FIRST()

  • 7/29/2019 BD1 SQL web

    158/204

    ntoarce prima valoare din coloana indicat

    Sintaxa

    SELECT FIRST(column_name) FROM table_name

    Tabela OrdersO_Id OrderDate OrderPrice Customer

    1 2008/11/12 1000 Hansen

    2 2008/10/23 1600 Nilsen

    3 2008/09/02 700 Hansen4 2008/09/03 300 Hansen

    5 2008/08/30 2000 Jensen

    6 2008/10/04 100 Nilsen

    Funcia FIRST() - exemplu

  • 7/29/2019 BD1 SQL web

    159/204

    Prima valoare din coloana OrderPrice SELECT FIRST(OrderPrice) AS FirstOrderPrice

    FROM Orders

    Dac funcia nu exist n SGBD atunci: SELECT OrderPrice

    FROM Orders ORDER BY O_Id LIMIT 1

    FirstOrderPrice1000

    Funcia LAST()

  • 7/29/2019 BD1 SQL web

    160/204

    ntoarce ultima valoare din coloana indicat

    Sintaxa

    SELECT LAST(column_name) FROM table_name

    O_Id OrderDate OrderPrice Customer

    1 2008/11/12 1000 Hansen

    2 2008/10/23 1600 Nilsen

    3 2008/09/02 700 Hansen4 2008/09/03 300 Hansen

    5 2008/08/30 2000 Jensen

    6 2008/10/04 100 Nilsen

    Funcia LAST()

  • 7/29/2019 BD1 SQL web

    161/204

    Dac SGBD-ul nu are aceast funcie SELECT OrderPrice FROM Orders ORDER BY O_Id

    DESC LIMIT 1

    Rezultatul

    FirstOrderPrice

    1000

    Funcia MAX()

  • 7/29/2019 BD1 SQL web

    162/204

    Determin cea mai mare valoare dintr-ocoloan

    Sintaxa:

    SELECT MAX(column_name) FROM table_name

    Exemplu

    SELECT MAX(OrderPrice) AS LargestOrderPrice

    FROM OrdersLargestOrderPrice

    2000

    Funcia MIN()

  • 7/29/2019 BD1 SQL web

    163/204

    Determin cea mai mic valoare dintr-ocoloan

    Sintaxa:

    SELECT MIN(column_name) FROM table_name

    Exemplu

    SELECT MIN(OrderPrice) AS

    SmallestOrderPrice FROM OrdersSmallestOrderPrice

    100

    Funcia SUM()

  • 7/29/2019 BD1 SQL web

    164/204

    Calculeaz suma pe o coloan numeric

    Sintaxa:

    SELECT SUM(column_name) FROM table_name

    Exemplu SELECT SUM(OrderPrice) AS OrderTotal FROM

    Orders

    OrderTotal

    5700

    Clauza GROUP BY

  • 7/29/2019 BD1 SQL web

    165/204

    De cele mai multe ori funciile de agregarefolosesc clauza GROUP BY

    Ar e rolul de a grupa datele dintr-una sau mai

    multe coloane Sintaxa:

    SELECT column_name,aggregate_function(column_name)

    FROM table_nameWHERE column_name operator valueGROUP BY column_name

    Clauza GROUP BY - exemplu

  • 7/29/2019 BD1 SQL web

    166/204

    Vrem s aflm totalul comenzilor pentrufiecare client

    SELECT Customer,SUM(OrderPrice) FROM Orders

    GROUP BY Customer

    Customer SUM(OrderPrice)

    Hansen 2000

    Nilsen 1700

    Jensen 2000

    Clauza GROUP BY - exemplu

  • 7/29/2019 BD1 SQL web

    167/204

    Dac omitem clauza GROUP BY SELECT Customer,SUM(OrderPrice) FROM Orders

    Nu este ceea ce vrem

    Customer SUM(OrderPrice)

    Hansen 5700

    Nilsen 5700

    Hansen 5700

    Hansen 5700

    Jensen 5700Nilsen 5700

    Clauza GROUP BY - exemplu

  • 7/29/2019 BD1 SQL web

    168/204

    SUM(OrderPrice) - calculeaz o singur valoare Customer va genera ase valori

    Prin urmare nu vom obine rezultatul dorit

    Putem grupa i dup mai multe coloane SELECT Customer, OrderDate, SUM(OrderPrice)

    FROM OrdersGROUP BY Customer, OrderDate

    Clauza HAVING

  • 7/29/2019 BD1 SQL web

    169/204

    E nevoie de aceast clauz pentru ca WHEREnu poate fi folosit cu funciile de agregare

    Sintaxa

    SELECT column_name,aggregate_function(column_name)FROM table_nameWHERE column_name operator value

    GROUP BY column_nameHAVING aggregate_function(column_name)operator value

    Clauza HAVING - exemplu

  • 7/29/2019 BD1 SQL web

    170/204

    Vrem s gsim clienii cu comenzi totale maimici de 2000

    SELECT Customer,SUM(OrderPrice) FROM Orders

    GROUP BY CustomerHAVING SUM(OrderPrice)

  • 7/29/2019 BD1 SQL web

    171/204

    Vrem s aflm dac totalul comenzilor luiHansen sau Jensen este mai mare de 1500 SELECT Customer,SUM(OrderPrice) FROM Orders

    WHERE Customer='Hansen' ORCustomer='Jensen'GROUP BY CustomerHAVING SUM(OrderPrice)>1500

    Customer SUM(OrderPrice)

    Hansen 2000

    Jensen 2000

    Funcia UCASE()

  • 7/29/2019 BD1 SQL web

    172/204

    Convertete n litere mari

    Sintaxa

    SELECT UCASE(column_name) FROM

    table_name Sintaxa pentru MS SQL Server

    SELECT UPPER(column_name) FROM

    table_name

    Funcia UCASE() - exemplu

  • 7/29/2019 BD1 SQL web

    173/204

    Tabela Persons

    SELECT UCASE(LastName) asLastName,FirstName FROM Persons

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    LastName FirstNameHANSEN Ola

    SVENDSON Tove

    PETTERSEN Kari

    Funcia LCASE()

  • 7/29/2019 BD1 SQL web

    174/204

    Convertete n litere mici

    Sintaxa

    SELECT LCASE(column_name) FROM

    table_name Sintaxa pentru MS SQL Server

    SELECT LOWER(column_name) FROM

    table_name

    Funcia LCASE() - exemplu

  • 7/29/2019 BD1 SQL web

    175/204

    Tabela Persons

    SELECT LCASE(LastName) asLastName,FirstName FROM Persons

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    LastName FirstNamehansen Ola

    svendson Tove

    pettersen Kari

    Funcia MID()

  • 7/29/2019 BD1 SQL web

    176/204

    Folosit pentru a extrage caractere dintr-uncmp de tip text

    Sintaxa

    SELECT MID(column_name,start[,length]) FROMtable_name

    Parametru Descriere

    column_name Obligatoriu. Cmpul din care se extragcaractere

    start Obligatoriu. Specific poziia de pornire(indexat de la 1)

    length Opional. Numrul de caractere ce vor fiextrase. Dac lipsete, funcia extrage

    t t t l

    Funcia MID() - exemplu

  • 7/29/2019 BD1 SQL web

    177/204

    Tabela Persons

    SELECT MID(City,1,4) as SmallCity FROM Persons

    P_Id LastName FirstName Address City

    1 Hansen Ola Timoteivn 10 Sandnes

    2 Svendson Tove Borgvn 23 Sandnes

    3 Pettersen Kari Storgt 20 Stavanger

    SmallCitySand

    Sand

    Stav

    Funcia LEN()

  • 7/29/2019 BD1 SQL web

    178/204

    Calculeaz lungimea unui cmp de tip text Sintaxa

    SELECT LEN(column_name) FROM table_name

    Exemplu SELECT LEN(Address) as LengthOfAddress FROM

    Persons

    LengthOfAddress12

    9

    9

    Funcia ROUND()

  • 7/29/2019 BD1 SQL web

    179/204

    Folosit pentru a rotunji un numr la numrulde zecimale specificat

    Sintaxa

    SELECT ROUND(column_name,decimals) FROMtable_name

    Parametru Descriere

    column_name Obligatoriu. Cmpul care va fi rotujnit.

    decimals Obligatoriu. Numrul de zecimale la carese face rotunjirea.

    Funcia ROUND() exemplu

    Tabela Products

  • 7/29/2019 BD1 SQL web

    180/204

    Tabela Products

    Vrem s extragem numele produsului ipreul rotunjit la cel mai apropiat ntreg SELECT ProductName, ROUND(UnitPrice,0) as

    UnitPrice FROM Products

    Prod_Id ProductName Unit UnitPrice

    1 Jarlsberg 1000 g 10.45

    2 Mascarpone 1000 g 32.56

    3 Gorgonzola 1000 g 15.67

    ProductName UnitPrice

    Jarlsberg 10

    Mascarpone 33

    Gorgonzola 16

    Funcia NOW() ntoarce data i ora curent a sistemului

  • 7/29/2019 BD1 SQL web

    181/204

    ntoarce data i ora curent a sistemului

    Sintaxa SELECT NOW() FROM table_name

    SELECT ProductName, UnitPrice, Now() asPerDate FROM Products

    Prod_Id ProductName Unit UnitPrice

    1 Jarlsberg 1000 g 10.45

    2 Mascarpone 1000 g 32.56

    3 Gorgonzola 1000 g 15.67

    ProductName UnitPrice PerDate

    Jarlsberg 10.45 10/7/2008 11:25:02 AM

    Mascarpone 32.56 10/7/2008 11:25:02 AM

    Gorgonzola 15.67 10/7/2008 11:25:02 AM

    Funcia FORMAT()

  • 7/29/2019 BD1 SQL web

    182/204

    Folosit pentru a stabili modul n care esteafiat un cmp

    Sintaxa

    SELECT FORMAT(column_name, format) FROMtable_name

    Funcia FORMAT() - exemplu

  • 7/29/2019 BD1 SQL web

    183/204

    SELECT ProductName, UnitPrice,FORMAT(Now(),'YYYY-MM-DD') as PerDate

    FROM Products

    Prod_Id ProductName Unit UnitPrice

    1 Jarlsberg 1000 g 10.45

    2 Mascarpone 1000 g 32.56

    3 Gorgonzola 1000 g 15.67

    ProductName UnitPrice PerDate

    Jarlsberg 10.45 2008-10-07

    Mascarpone 32.56 2008-10-07

    Gorgonzola 15.67 2008-10-07

  • 7/29/2019 BD1 SQL web

    184/204

    SQL QUIZ

    1. Ce reprezint SQL?

  • 7/29/2019 BD1 SQL web

    185/204

    a) Structured Question Language

    b) Structured Query Language

    c) Strong Question Language

    2. Care instruciune SQLeste folosit pentru a

  • 7/29/2019 BD1 SQL web

    186/204

    este folosit pentru a

    extrage date dintr-o baz dedate?

    a) EXTRACTb) GET

    c) SELECT

    d) OPEN

    3. Care instruciune SQLeste folosit pentru a

  • 7/29/2019 BD1 SQL web

    187/204

    este folosit pentru a

    actualiza date n baza dedate?

    a) UPDATE

    b) SAVE

    c) SAVE AS

    d) MODIFY

    4. Care instruciune SQLeste folosit pentru a

  • 7/29/2019 BD1 SQL web

    188/204

    este folosit pentru a

    terge date n baza de date?

    a) REMOVE

    b) COLLAPSE

    c) DELETE

    5. Care instruciune SQLeste folosit pentru a

  • 7/29/2019 BD1 SQL web

    189/204

    este folosit pentru a

    insera date noi n baza dedate?

    a) ADD NEW

    b) INSERT INTO

    c) ADD RECORD

    d) INSERT NEW

    6. n SQL, cum se extrage ocoloan numit FirstName

  • 7/29/2019 BD1 SQL web

    190/204

    coloan numit FirstName

    dintr-o tabel numitPersons?

    a) SELECT Persons.FirstNameb) SELECT FirstName FROM Persons

    c) EXTRACT FirstName FROM Persons

    7. Cum se extrag toate

    coloanele dintr-o tabel cu

  • 7/29/2019 BD1 SQL web

    191/204

    coloanele dintr o tabel cu

    numele Persons?

    a) SELECT * FROM Persons

    b) SELECT [all] FROM Personsc) SELECT PersonsSELECT *.Persons

    8. Cum se extrag toate

    coloanele dintr-o tabel cu

  • 7/29/2019 BD1 SQL web

    192/204

    numele Personspentru carevaloarea coloanei FirstNameeste Peter?

    a) SELECT * FROM PersonsWHERE FirstName = 'Peter

    b) SELECT [all] FROM PersonsWHERE FirstName LIKE 'Peter

    c) SELECT * FROM PersonsWHERE FirstName'Peter

    d) SELECT [all] FROM PersonsWHERE FirstName='Peter'

    9. Cum se extrag toate

    coloanele dintr-o tabel cu

  • 7/29/2019 BD1 SQL web

    193/204

    numele Persons pentru carevaloarea coloanei FirstNamencepe cu a?

    a) SELECT * FROM Persons WHERE FirstName='ab) SELECT * FROM Persons

    WHERE FirstName LIKE '%a

    c) SELECT * FROM Persons

    WHERE FirstName='%a%d) SELECT * FROM Persons WHERE

    FirstName LIKE 'a%'

    10. Operatorul OR afieaznregistrrile pentru care

  • 7/29/2019 BD1 SQL web

    194/204

    oricare din condiii esteadevrat. Operatorul ANDafieaz nregistrrile pentru

    care toate condiiile suntadevrate.a) Adevrat

    b) Fals

    11. Cum se extrag toate coloanele

    dintr-o tabel cu numele Persons

  • 7/29/2019 BD1 SQL web

    195/204

    pentru care valoarea coloaneiFirstName este Peter ivaloarea coloanei LastName esteJackson?

    a) SELECT FirstName='Peter',LastName='Jackson' FROM Persons

    b) SELECT * FROM Persons WHERE

    FirstName'Peter' AND LastName'Jackson

    c) SELECT * FROM Persons WHERE

    FirstName='Peter' AND LastName='Jackson'

    11. Cum se extrag toate coloanele

    dintr-o tabel cu numele Persons

  • 7/29/2019 BD1 SQL web

    196/204

    pentru care LastName estealfabetic cuprins (inclusiv) ntreHansen i Pettersen?a) SELECT * FROM Persons

    WHERE LastName BETWEEN 'Hansen' AND'Pettersen

    b) SELECT LastName>'Hansen' ANDLastName'Hansen' ANDLastName

  • 7/29/2019 BD1 SQL web

    197/204

    14. Care cuvnt cheie SQLeste folosit pentru a sorta

  • 7/29/2019 BD1 SQL web

    198/204

    p

    rezultatul?a) ORDER BY

    b) SORT

    c) ORDER

    d) SORT BY

    15. Cum se pot extrage toate

    nregistrrile din tabela

  • 7/29/2019 BD1 SQL web

    199/204

    Persons ordonate descresctordup FirstName?a) SELECT * FROM Persons

    SORT BY 'FirstName' DESC

    b) SELECT * FROM PersonsORDER FirstName DESC

    c) SELECT * FROM Persons

    SORT 'FirstName' DESCd) SELECT * FROM Persons

    ORDER BY FirstName DESC

    16. Cum se poate insera o

    nou nregistrare n tabela

  • 7/29/2019 BD1 SQL web

    200/204

    g

    Persons?a) INSERT INTO Persons VALUES ('Jimmy',

    'Jackson')

    b) INSERT ('Jimmy', 'Jackson') INTO Persons

    c) INSERT VALUES ('Jimmy', 'Jackson') INTO

    Persons

    17. Cum se poate insera

    Olsen ca LastName n

  • 7/29/2019 BD1 SQL web

    201/204

    tabela Persons?a) INSERT INTO Persons ('Olsen') INTO

    LastName

    b) INSERT ('Olsen') INTO Persons (LastName)

    c) INSERT INTO Persons (LastName) VALUES

    ('Olsen')

    18. Cum se schimb numeleHansen n Nilsen n

  • 7/29/2019 BD1 SQL web

    202/204

    coloana LastName a tabeleiPersons?a) UPDATE Persons SET LastName='Hansen' INTO

    LastName='Nilsenb) MODIFY Persons SET LastName='Nilsen'

    WHERE LastName='Hansen

    c) MODIFY Persons SET LastName='Hansen' INTOLastName='Nilsen

    d) UPDATE Persons SET LastName='Nilsen'WHERE LastName='Hansen'

    19. Cum se pot tergenregistrrile pentru care

  • 7/29/2019 BD1 SQL web

    203/204

    g p

    FirstName este Peter ntabela Persons?a) DELETE FirstName='Peter' FROM Persons

    b) DELETE FROM Persons

    WHERE FirstName = 'Peter

    c) DELETE ROW FirstName='Peter' FROM

    Persons

    20. Cum se poate obinenumrul de nregistrri din

  • 7/29/2019 BD1 SQL web

    204/204

    g

    tabela Persons?a) SELECT COUNT() FROM Persons

    b) SELECT COLUMNS() FROM Persons

    c) SELECT COLUMNS(*) FROM Persons

    d) SELECT COUNT(*) FROM Persons