Documente Academic
Documente Profesional
Documente Cultură
Baze de Date PDF
Baze de Date PDF
Informatic anul II
Matematic-Informatic anul III
Semestrul I
Horea Oros, horea.oros@gmail.com
BAZE DE DATE
Limbajul SQL
Island Trading UK
Greit:
SELECT * FROM Persons WHERE FirstName=Tove
SELECT * FROM Persons WHERE Year='1965'
Operatori pentru clauza
WHERE
Operator Descriere
= Egalitate
<> Inegalitate
> Mai mare
< Mai mic
>= Mai mare sau egal
<= Mai mic sau egal
BETWEEN ntr-un interval nchis
LIKE La fel ca un ablon
IN O mulime enumerat explicit
Operatorii AND i OR
UPDATE Persons
SET 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
Instruciunea DELETE
Northwind
Adventure Works
World
Limbaje de modelare
SQL Server Management Studio
Diagrame pentru baze de date
IDEF1X
Baze de date
Customers - Northwind
CompanyName ContactName Address City
Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin
Berglunds snabbkp Christina Berguvsvgen 8 Lule
Berglund
Centro comercial Francisco Chang Sierras de Mxico
Moctezuma Granada 9993 D.F.
Ernst Handel Roland Mendel Kirchgasse 6 Graz
FISSA Fabrica Inter. Diego Roel C/ Moralzarzal, Madrid
Salchichas S.A. 86
Galera del Eduardo Rambla de Barcelona
gastrnomo Saavedra Catalua, 23
Baze de date - interogri
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 <= number
SELECT * FROM Persons WHERE ROWNUM <=5
Clauza TOP - Exemplu
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 Tom Vingvn 23 Stavanger
Cu alias
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p,
Product_Orders AS po
WHERE p.LastName='Hansen' AND p.FirstName='Ola
Fr alias
SELECT Product_Orders.OrderID, Persons.LastName,
Persons.FirstName
FROM Persons,
Product_Orders
WHERE Persons.LastName='Hansen' AND
Persons.FirstName='Ola'
Join
Tabela 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
Tabela Orders
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Join mai multe tipuri
Tabela Orders
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
RIGHT JOIN - exemplu
Employees_USA
E_ID E_Name
01 Turner, Sally
02 Kent, Clark
03 Svendson, Stephen
04 Scott, Stephen
Operatorul UNION - exemplu
iruri de caractere
Tip de date Descriere Stocare
char(n) ir de caractere de dimensiune fix. n
Maxim 8000 de caractere
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
Tipuri de date MSSQL
Tipuri binare
Tip de date Descriere Stocare
bit Permite 0, 1, sau NULL
binary(n) Date binare de lungime fix. Maxim
8000 octei
varbinary(n) Date binare de lungime variabil.
Maxim 8000 octei
varbinary(max) Date binare de lungime variabil.
Maxim 2GB
image Date binare de lungime variabil.
Maxim 2GB
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,768 2 octei
la 32,767
int Permite numere ntregi de la - 4 octei
2,147,483,648 la2,147,483,647
bigint Permite numere ntregi de la - 8 octei
9,223,372,036,854,775,808 la
9,223,372,036,854,775,807
Tipuri de date MSSQL
Tipuri numerice
Tip de date Descriere Stocare
decimal(p,s) Numere cu precizie i magnitudine 5-17
numeric(p,s) fix. Permite numere de la -10^38 +1 octei
la 10^38 1.
Parametrul p indic numrul maxim
de cifre ce pot fi stocate (att n
partea stng ct i n partea dreapt
a punctului zecimal). p trebuie s fie
ntre 1 i 38. Implicit este 18.
Parametrul s indic numrul maxim de
cifre stocate n dreapta punctului
zecimal. s trebuie s fie de la 0 la p.
Implicit este 0.
Tipuri de date MSSQL
Tipuri numerice
Tip de date Descriere Stocare
smallmoney Date monetare de la -214,748.3648 la 4 octei
214,748.3647
money Date monetare de la - 8 octei
922,337,203,685,477.5808
tla922,337,203,685,477.5807
float(n) Date numerice n virgul mobil de la - 4 sau 8
1.79E+308 la 1.79E+308. Parametrul n octei
indic numrul de octei 4 sau 8.
float(24) cmp de 4 octei, iar float(53)
cmp de 8 octei. Valoarea implicit
pentru n este 53.
real Date numerice n virgul mobil de la - 4 octei
3.40E + 38 la 3.40E + 38
Tipuri de date MSSQL
MySQL
ALTER TABLE Persons
DROP INDEX uc_PersonID
SQL Server / Oracle / MS Access
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID
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
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
Tabela Orders
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 2
4 24562 1
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
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
Sintaxa:
CREATE INDEX index_name
ON table_name (column_name)
Aici se permit valori duplicate
Creare de indeci unici valorile duplicate nu
sunt permise
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
Sintaxa poate diferi ntre SGBD-uri
Instruciunea CREATE INDEX
Exemplu
CREATE INDEX PIndex
ON Persons (LastName)
Creare de index pe o combinaie de coloane
CREATE INDEX PIndex
ON Persons (LastName, FirstName)
Instruciunea DROP
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
Sintaxa Oracle
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
INSERT INTO Persons
(P_Id,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
VIEW
Northwind
CREATE VIEW [Current Product List] AS
SELECT ProductID, ProductName
FROM Products
WHERE Discontinued=No
Interogarea
SELECT * FROM [Current Product List]
VIEW - exemplu
Northwind
CREATE VIEW [Products Above Average Price] AS
SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM
Products)
Interogarea
SELECT * FROM [Products Above Average Price]
VIEW - exemplu
Northwind
CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT
CategoryName,Sum(ProductSales) AS
CategorySales
FROM [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
Tabela Persons
P_Id LastName FirstName Address City
1 Hansen Ola Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Stavanger
SELECT ProductName,
UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products
Dac UnitsOnOrder este NULL rezultatul va
fi NULL
Funciile ISNULL(), NVL(),
IFNULL() i COALESCE()
Funcia ISNULL() (Microsoft) ne permite s
specificm modul n care dorim s tratm
valorile NULL
NVL(), IFNULL(), COALESCE() pot fi folosite
pentru a realiza acelai obiectiv
n interogarea precedent vrem ca valorile NULL
s fie tratate ca zero
SQL Server / MS Access
SELECT ProductName,
UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
Funciile ISNULL(), NVL(),
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 funcioneaz
puin diferit. Putem folosi IFNULL()
SELECT ProductName,
UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
Funciile ISNULL(), NVL(),
IFNULL() i COALESCE()
MSSQL Coalesce
SELECT ProductName, UnitPrice*(UnitsInStock+
COALESCE(UnitsOnOrder,0))
FROM Products
Funcii SQL
OrderAverage
950
Funcia AVG() - Exemplu
NumberOfCustomers
3
Funcia FIRST()
FirstOrderPrice
1000
Funcia LAST()
OrderTotal
5700
Clauza GROUP BY
Customer SUM(OrderPrice)
Nilsen 1700
Clauza HAVING - exemplu
Customer SUM(OrderPrice)
Hansen 2000
Jensen 2000
Funcia UCASE()
Tabela 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
SELECT UCASE(LastName) as
LastName,FirstName FROM Persons
LastName FirstName
HANSEN Ola
SVENDSON Tove
PETTERSEN Kari
Funcia LCASE()
Tabela 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
SELECT LCASE(LastName) as
LastName,FirstName FROM Persons
LastName FirstName
hansen Ola
svendson Tove
pettersen Kari
Funcia MID()
Tabela 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
SmallCity
Sand
Sand
Stav
Funcia LEN()
a) REMOVE
b) COLLAPSE
c) DELETE
5. Care instruciune SQL
este folosit pentru a
insera date noi n baza de
date?
a) ADD NEW
b) INSERT INTO
c) ADD RECORD
d) INSERT NEW
6. n SQL, cum se extrage o
coloan numit FirstName
dintr-o tabel numit
Persons?
a) SELECT Persons.FirstName
b) SELECT FirstName FROM Persons
c) EXTRACT FirstName FROM Persons
7. Cum se extrag toate
coloanele dintr-o tabel cu
numele Persons?
a) SELECT * FROM Persons
b) SELECT [all] FROM Persons
c) SELECT PersonsSELECT *.Persons
8. Cum se extrag toate
coloanele dintr-o tabel cu
numele Personspentru care
valoarea coloanei FirstName
este Peter?
a) SELECT * FROM Persons
WHERE FirstName = 'Peter
b) SELECT [all] FROM Persons
WHERE FirstName LIKE 'Peter
c) SELECT * FROM Persons
WHERE FirstName<>'Peter
d) SELECT [all] FROM Persons
WHERE FirstName='Peter'
9. Cum se extrag toate
coloanele dintr-o tabel cu
numele Persons pentru care
valoarea coloanei FirstName
ncepe cu a?
a) SELECT * FROM Persons WHERE FirstName='a
b) 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 afieaz
nregistrrile pentru care
oricare din condiii este
adevrat. Operatorul AND
afieaz nregistrrile pentru
care toate condiiile sunt
adevrate.
a) Adevrat
b) Fals
11. Cum se extrag toate coloanele
dintr-o tabel cu numele Persons
pentru care valoarea coloanei
FirstName este Peter i
valoarea coloanei LastName este
Jackson?
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
pentru care LastName este
alfabetic cuprins (inclusiv) ntre
Hansen i Pettersen?
a) SELECT * FROM Persons
WHERE LastName BETWEEN 'Hansen' AND
'Pettersen
b) SELECT LastName>'Hansen' AND
LastName<'Pettersen' FROM Persons
c) SELECT * FROM Persons
WHERE LastName>'Hansen' AND
LastName<'Pettersen'
12. Care instruciune SQL
este folosit pentru a
extrage doar valori
distincte?
a) SELECT DISTINCT
b) SELECT UNIQUE
c) SELECT DIFFERENT
14. Care cuvnt cheie SQL
este folosit pentru a sorta
rezultatul?
a) ORDER BY
b) SORT
c) ORDER
d) SORT BY
15. Cum se pot extrage toate
nregistrrile din tabela
Persons ordonate descresctor
dup FirstName?
a) SELECT * FROM Persons
SORT BY 'FirstName' DESC
b) SELECT * FROM Persons
ORDER FirstName DESC
c) SELECT * FROM Persons
SORT 'FirstName' DESC
d) SELECT * FROM Persons
ORDER BY FirstName DESC
16. Cum se poate insera o
nou nregistrare n tabela
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
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 numele
Hansen n Nilsen n
coloana LastName a tabelei
Persons?
a) UPDATE Persons SET LastName='Hansen' INTO
LastName='Nilsen
b) MODIFY Persons SET LastName='Nilsen'
WHERE LastName='Hansen
c) MODIFY Persons SET LastName='Hansen' INTO
LastName='Nilsen
d) UPDATE Persons SET LastName='Nilsen'
WHERE LastName='Hansen'
19. Cum se pot terge
nregistrrile pentru care
FirstName este Peter n
tabela 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 obine
numrul de nregistrri din
tabela Persons?
a) SELECT COUNT() FROM Persons
b) SELECT COLUMNS() FROM Persons
c) SELECT COLUMNS(*) FROM Persons
d) SELECT COUNT(*) FROM Persons