Download - BD1 SQL web
-
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