Documente Academic
Documente Profesional
Documente Cultură
SQL Web
SQL Web
Informatic anul II
Matematic-Informatic anul III
Semestrul I
Horea Oros, horea.oros@gmail.com
BAZE DE DATE
Limbajul SQL
SQL este un limbaj standard pentru
Sintaxa SQL
SELECT CompanyName, Country FROM Customers
WHERE Country <> 'USA
Company
Country
Island Trading
UK
Spain
Canada
Paris spcialits
France
Simons bistro
Denmark
Wolski Zajazd
Poland
SQL
SQL este un limbaj standard pentru
RDBMS
Avem nevoie de un sistem de gestiune a
bazelor de date.
Microsoft SQL Server
MySQL
Oracle
IBM DB2
Microsoft Access
LastName
FirstName
Address
Hansen
Ola
Timoteivn 10 Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
City
Instruciuni SQL
Majoritatea operaiilor efectuate asupra
mari i mici
Unele SGBD-uri necesit caracterul ; dup
instruciuni. Astfel se separ instruciunile
SQL pentru ca s se poat executa mai multe
instruciuni una dup alta ntr-un singur batch
ALTER TABLE
DROP TABLE
CREATE INDEX
DROP INDEX
Instruciunea SELECT
Instruciunea SELECT se folosete pentru a
SAU
SELECT * FROM table_name
Exemplu SELECT
SELECT * FROM Persons
P_Id
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
FirstName
Hansen
Ola
Svendson
Tove
Pettersen
Kari
Instruciunea SELECT
DISTINCT
ntr-o tabel, unele coloane pot conine valori
FROM table_name
coloana City
P_Id
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Clauza WHERE
Folosit pentru a filtra nregistrri
Folosit pentru a extrage doar nregistrrile
FROM table_name
WHERE column_name operator value
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
WHERE City='Sandnes'
P_Id
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Ghilimele - apostroafe
SQL folosete apostrof pentru a delimita valorile de tip
text/string
Majoritatea SGBD-urilor accept i ghilimele
Valorile numerice nu se delimiteaz cu
apostroafe/ghilimele
Corect:
Descriere
Egalitate
<>
Inegalitate
>
Mai mare
<
Mai mic
>=
<=
BETWEEN
LIKE
La fel ca un ablon
IN
Operatorii AND i OR
Se folosesc pentru a filtra nregistrrile dup
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
LastName
FirstName
Address
City
Svendson
Tove
Borgvn 23
Sandnes
FirstName='Tove OR FirstName='Ola
P_Id
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
LastName='Svendson'
AND (FirstName='Tove' OR FirstName='Ola')
P_Id
LastName
FirstName
Address
City
Svendson
Tove
Borgvn 23
Sandnes
FROM table_name
ORDER BY column_name(s) ASC | DESC
City
Hansen
Ola
Sandnes
Svendson
Tove
Timoteivn
10
Borgvn 23
Pettersen
Kari
Storgt 20
Stavanger
Nilsen
Tom
Vingvn 23
Stavanger
Sandnes
ORDER BY LastName
P_Id
City
Hansen
Ola
Sandnes
Nilsen
Tom
Timoteivn
10
Vingvn 23
Pettersen
Kari
Storgt 20
Stavanger
Svendson
Tove
Borgvn 23
Sandnes
Stavanger
o tabel
Sintaxa (dou variante)
INSERT INTO table_name
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Nilsen
Johan
Bakken 2
Stavanger
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Nilsen
Johan
Bakken 2
Stavanger
Tjessem
Jakob
Instruciunea UPDATE
Se folosete pentru actualizarea unor date
dintr-o tabel
Sintaxa:
UPDATE table_name
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Nilsen
Johan
Bakken 2
Stavanger
Tjessem
Jakob
UPDATE Persons
Instruciunea UPDATE
exemplu - rezultatul
P_Id
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Nilsen
Johan
Bakken 2
Stavanger
Tjessem
Jakob
Nissestien 67
Sandnes
UPDATE Persons
LastName
FirstName
Address
City
Hansen
Ola
Nissestien 67
Sandnes
Svendson
Tove
Nissestien 67
Sandnes
Pettersen
Kari
Nissestien 67
Sandnes
Nilsen
Johan
Nissestien 67
Sandnes
Tjessem
Jakob
Nissestien 67
Sandnes
Instruciunea DELETE
O folosim pentru a terge nregistrri dintr-o
tabel
Sintaxa:
DELETE FROM table_name
WHERE some_column=some_value
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Nilsen
Johan
Bakken 2
Stavanger
Tjessem
Jakob
Nissestien 67
Sandnes
Instruciunea DELETE
exemplu - rezultatul
P_Id
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Nilsen
Johan
Bakken 2
Stavanger
tergerea tuturor
nregistrrilor
DELETE FROM table_name
SAU
Baze de date
Northwind
Adventure Works
World
Limbaje de modelare
SQL Server Management Studio
Baze de date
Customers - Northwind
CompanyName
ContactName
Address
City
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
Berguvsvgen 8 Lule
Sierras de
Granada 9993
Kirchgasse 6
Mxico
D.F.
Graz
C/ Moralzarzal,
86
Rambla de
Catalua, 23
Madrid
Diego Roel
Eduardo
Saavedra
Barcelona
customers
SELECT * FROM customers WHERE
companyname LIKE 'a%
SELECT CompanyName, ContactName
FROM customers
WHERE CompanyName > 'a
SELECT CompanyName, ContactName
FROM customers
WHERE CompanyName > 'g'
AND ContactName > 'g'
Clauza TOP
Folosit pentru a specifica numrul de
FROM table_name
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
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Nilsen
Tom
Vingvn 23
Stavanger
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Operatorul LIKE
Folosit n clauza WHERE pentru a specifica un
FROM table_name
WHERE column_name LIKE pattern
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
ablon
Caracter
Descriere
[charlist]
[^charlist] sau
[!charlist]
Operatorul IN
Folosit pentru a specifica o list de valori n
clauza WHERE
Sintaxa:
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
Operatorul IN - exemplu
P_Id
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Operatorul BETWEEN
Folosit n clauza WHERE pentru a stabili un
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10 Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
WHERE LastName
BETWEEN 'Hansen' AND 'Pettersen'
P_Id
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10 Sandnes
Alias
Se poate da un nume alias unei tabele sau
unei coloane
Util cnd o tabel sau un cmp are un nume
lung sau complex
Util cnd vrem s dm un nume unei coloane
cu valoare calculat
Interogrile devin mai simplu de scris i de
citit
Alias
Sintaxa pentru tabele
SELECT column_name(s)
FROM table_name
AS alias_name
FROM table_name
Alias - exemple
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
Se folosesc pentru a extrage date ntr-un
Join
Tabela Persons
P_Id
LastName
FirstName
Address
Hansen
Ola
Timoteivn 10 Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Tabela Orders
City
O_Id
OrderNo
P_Id
77895
44678
22456
24562
34764
15
INNER JOIN
Extrage linii cnd este cel puin o potrivire n
ambele tabele
Sintaxa:
SELECT column_name(s)
comenzi
SELECT Persons.LastName, Persons.FirstName,
FirstName
OrderNo
Hansen
Ola
22456
Hansen
Ola
24562
Pettersen
Kari
77895
Pettersen
Kari
44678
LEFT JOIN
Extrage toate nregistrrile din table din
JOIN
FirstName
OrderNo
Hansen
Ola
22456
Hansen
Ola
24562
Pettersen
Kari
77895
Pettersen
Kari
44678
Svendson
Tove
RIGHT JOIN
Extrage toate nregistrrile din table din
JOIN
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Tabela Orders
O_Id OrderNo
P_Id
77895
44678
22456
24562
34764
15
corespunztoare
SELECT Persons.LastName, Persons.FirstName,
FirstName
OrderNo
Hansen
Ola
22456
Hansen
Ola
24562
Pettersen
Kari
77895
Pettersen
Kari
44678
34764
FULL JOIN
Extrage nregistrrile pentru care este o
FirstName
OrderNo
Hansen
Ola
22456
Hansen
Ola
24562
Pettersen
Kari
77895
Pettersen
Kari
44678
Svendson
Tove
34764
Operatorul UNION
Folosit pentru a combina dou sau mai multe
instruciuni SELECT
Fiecare instruciune SELECT trebuie s aib
acelai numr de coloane
Coloanele corespunztoare trebuie s aib i
aceleai tipuri
Coloanele trebuie s fie i n aceeai ordine
UNION
SELECT column_name(s) FROM table_name2
UNION ALL
SELECT column_name(s) FROM table_name2
E_Name
01
Hansen, Ola
02
Svendson, Tove
03
Svendson, Stephen
04
Pettersen, Kari
Employees_USA
E_ID
E_Name
01
Turner, Sally
02
Kent, Clark
03
Svendson, Stephen
04
Scott, Stephen
UNION
SELECT E_Name FROM Employees_USA
E_Name
Hansen, Ola
Svendson, Tove
Svendson, Stephen
Pettersen, Kari
Turner, Sally
Kent, Clark
Scott, Stephen
SELECT INTO
Folosit pentru a crea copii backup ale
tabelelor
Sintaxa:
SELECT *
FROM Persons
din date
SELECT LastName,Firstname
INTO Persons_Backup
FROM Persons WHERE City='Sandnes'
INTO Persons_Order_Backup
FROM Persons INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
CREATE DATABASE
Folosit pentru a crea o nou baz de date
Sintaxa:
CREATE DATABASE database_name
Exemplu:
CREATE DATABASE my_db
CREATE TABLE
Folosit pentru a crea tabele
Sintaxa:
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....
)
Descriere
Stocare
n
Descriere
Stocare
Descriere
bit
binary(n)
Stocare
fix. Maxim
variabil.
variabil.
variabil.
Descriere
tinyint
smallint
int
bigint
Stocare
2 octei
4 octei
8 octei
Descriere
Stocare
decimal(p,s)
numeric(p,s)
Stocare
4 octei
8 octei
4 sau 8
octei
4 octei
Descriere
Stocare
8 octei
6-8 octei
4 octei
3 octei
3-5 octei
8-10
octei
Descriere
timestamp
Stocare
Descriere
sql_variant
uniqueidentifier
xml
cursor
table
(
P_Id int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
P_Id
City
Constrngeri
Se folosesc pentru a limita tipul datelor care pot
ajunge n tabel
Se pot specifica la crearea tabelei (n
instruciunea CREATE TABLE) sau dup ce a fost
creat tabela (cu instruciunea ALTER TABLE)
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
Constrngerea UNIQUE
Folosit asupra unei coloane n care nu se vor
(
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)
)
Constrngerea UNIQUE cu
ALTER TABLE
Definirea unei constrngeri de unicitate dup
tabel
Cheia primar trebuie s conin valori unice
Nu poate conine valoarea NULL
Fiecare tabel trebuie s aib o cheie primar
i numai una
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
(
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)
)
primar
MySQL
ALTER TABLE Persons
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Tabela Orders
O_Id
OrderNo
P_Id
77895
44678
22456
24562
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES
Persons(P_Id)
)
Constrngerea CHECK
Folosit pentru a limita intervalul de valori ce
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
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
Pentru a stabili un nume pentru o
Constrngerea CHECK
Stabilirea unei constrngeri dup crearea
tabelei
ALTER TABLE Persons
Constrngerea CHECK
Eliminarea unei constrngeri
SQL Server / Oracle / MS Access
ALTER TABLE Persons
Constrngerea DEFAULT
Folosit pentru a insera o valoare implicit
ntr-o coloan
Valoarea implicit va fi adugat la toate
nregistrrile noi, dac nu se specific o alt
valoare
Poate fi folosit i pentru a insera valori
sistem obinute prin apelul unor funcii
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
OrderDate date DEFAULT GETDATE()
)
Constrngerea DEFAULT
Adugarea unei constrngeri de valoarea
Constrngerea DEFAULT
Eliminarea unei constrngeri de valoare
implicit
MySQL
ALTER TABLE Persons
ON table_name (column_name)
sunt permise
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
ON Persons (LastName)
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
DROP TABLE - terge o tabel
DROP TABLE table_name
dintr-o tabel
TRUNCATE TABLE table_name
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
DateOfBirth
Auto increment
Permite generarea automat a unui numr
Auto increment
Sintaxa MySQL
CREATE TABLE Persons(
Auto increment
Dac vrem s adugm o nou nregistrare n
Auto increment
Sintaxa SQL Server
CREATE TABLE Persons(
VALUES ('Lars','Monsen')
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
Un view este o tabel virtual bazat pe
VIEW
Sintaxa pentru creare VIEW
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
actualizate
Motorul bazei de date va recrea datele
folosind instruciunea SELECT de fiecare dat
cnd un view este interogat
VIEW - exemplu
Northwind
CREATE VIEW [Current Product List] AS
Interogarea
SELECT * FROM [Current Product List]
VIEW - exemplu
Northwind
CREATE VIEW [Products Above Average Price] AS
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]
VIEW - actualizare
Actualizarea unui view
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
Exemplu
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No
VIEW - tergere
DROP VIEW view_name
Date calendaristice
Forma datei pe care ncercm s o inserm
Descriere
NOW()
CURDATE()
Data curent
CURTIME()
Ora curent
DATE()
EXTRACT()
DATE_ADD()
DATE_SUB()
DATEDIFF()
DATE_FORMAT()
Descriere
GETDATE()
DATEPART()
DATEADD()
DATEDIFF()
CONVERT()
NULL
Reprezint date lips/necunoscute/inaplicabile
Implicit o coloan poate conine valoarea NULL
Operatori pentru NULL:
IS NULL
IS NOT NULL
NULL
Valoarea NULL este tratat diferit fa de
restul valorilor
Se folosete ca un marcator pentru date
necunoscute/inaplicabile
NULL i 0 (zero) nu sunt echivalente sau
comparabile
NULL
Tabela Persons
P_Id
LastName
FirstName Address
City
Hansen
Ola
Sandnes
Svendson
Tove
Pettersen
Kari
Borgvn 23
Sandnes
Stavanger
Persons
WHERE Address IS NULL
Rezultatul
LastName
FirstName Address
Hansen
Ola
Pettersen
Kari
Persons
WHERE Address IS NOT NULL
Rezultatul
LastName
FirstName Address
Svendson
Tove
Borgvn 23
UnitPrice
UnitsInStock
UnitsOnOrder
Jarlsberg
10.45
16
15
Mascarpone
32.56
23
Gorgonzola
15.67
20
SELECT ProductName,
UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products
fi NULL
UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products
UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
COALESCE(UnitsOnOrder,0))
FROM Products
Funcii SQL
SQL are multe funcii pentru a efectua calcule
asupra datelor
Funcii de agregare calculeaz o valoare pe
baza valorilor din coloanele tabelei
Funcii SQL
Funcii scalare calculeaz o singur valoare pe
Funcia AVG()
Calculeaz valoarea medie pe o coloan
Sintaxa
SELECT AVG(column_name) FROM table_name
Orders
O_Id
2008/11/12 1000
Hansen
2008/10/23 1600
Nilsen
2008/09/02 700
Hansen
2008/09/03 300
Hansen
2008/08/30 2000
Jensen
2008/10/04 100
Nilsen
OrderAverage
950
Funcia COUNT()
Calculeaz numrul de nregistrri care
table_name
tabel
SELECT COUNT(*) FROM table_name
Funcia COUNT()
Numrul de valori distincte dintr-o coloan se
calculeaz astfel:
SELECT COUNT(DISTINCT column_name) FROM
table_name
OrderDate
OrderPrice
Customer
2008/11/12
1000
Hansen
2008/10/23
1600
Nilsen
2008/09/02
700
Hansen
2008/09/03
300
Hansen
2008/08/30
2000
Jensen
2008/10/04
100
Nilsen
FROM Orders
WHERE Customer='Nilsen'
CustomerNilsen
2
gsim astfel:
SELECT COUNT(*) AS NumberOfOrders FROM
Orders
NumberOfOrders
6
tabel
Funcia COUNT(DISTINCT)
exemplu
Vrem s gsim numrul de clieni unici
SELECT COUNT(DISTINCT Customer) AS
Funcia FIRST()
ntoarce prima valoare din coloana indicat
Sintaxa
SELECT FIRST(column_name) FROM table_name
Tabela Orders
O_Id
2008/11/12 1000
Hansen
2008/10/23 1600
Nilsen
2008/09/02 700
Hansen
2008/09/03 300
Hansen
2008/08/30 2000
Jensen
2008/10/04 100
Nilsen
FROM Orders
Funcia LAST()
ntoarce ultima valoare din coloana indicat
Sintaxa
SELECT LAST(column_name) FROM table_name
O_Id
2008/11/12 1000
Hansen
2008/10/23 1600
Nilsen
2008/09/02 700
Hansen
2008/09/03 300
Hansen
2008/08/30 2000
Jensen
2008/10/04 100
Nilsen
Funcia LAST()
Dac SGBD-ul nu are aceast funcie
SELECT OrderPrice FROM Orders ORDER BY O_Id
DESC LIMIT 1
Rezultatul
FirstOrderPrice
1000
Funcia MAX()
Determin cea mai mare valoare dintr-o
coloan
Sintaxa:
SELECT MAX(column_name) FROM table_name
Exemplu
SELECT MAX(OrderPrice) AS LargestOrderPrice
FROM Orders
LargestOrderPrice
2000
Funcia MIN()
Determin cea mai mic valoare dintr-o
coloan
Sintaxa:
SELECT MIN(column_name) FROM table_name
Exemplu
SELECT MIN(OrderPrice) AS
Funcia SUM()
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
De cele mai multe ori funciile de agregare
aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
fiecare client
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
Customer SUM(OrderPrice)
Hansen
2000
Nilsen
1700
Jensen
2000
SUM(OrderPrice)
Hansen
5700
Nilsen
5700
Hansen
5700
Hansen
5700
Jensen
5700
Nilsen
5700
FROM Orders
GROUP BY Customer, OrderDate
Clauza HAVING
E nevoie de aceast clauz pentru ca WHERE
aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name)
operator value
mici de 2000
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000
Customer
SUM(OrderPrice)
Nilsen
1700
WHERE Customer='Hansen' OR
Customer='Jensen'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500
Customer
SUM(OrderPrice)
Hansen
2000
Jensen
2000
Funcia UCASE()
Convertete n litere mari
Sintaxa
SELECT UCASE(column_name) FROM
table_name
table_name
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
SELECT UCASE(LastName) as
Ola
SVENDSON Tove
PETTERSEN Kari
Funcia LCASE()
Convertete n litere mici
Sintaxa
SELECT LCASE(column_name) FROM
table_name
table_name
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
SELECT LCASE(LastName) as
Ola
svendson
Tove
pettersen
Kari
Funcia MID()
Folosit pentru a extrage caractere dintr-un
table_name
Parametru
Descriere
column_name
start
length
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Funcia LEN()
Calculeaz lungimea unui cmp de tip text
Sintaxa
SELECT LEN(column_name) FROM table_name
Exemplu
SELECT LEN(Address) as LengthOfAddress FROM
Persons
LengthOfAddress
12
9
9
Funcia ROUND()
Folosit pentru a rotunji un numr la numrul
de zecimale specificat
Sintaxa
SELECT ROUND(column_name,decimals) FROM
table_name
Parametru
Descriere
column_name
decimals
ProductName
Unit
UnitPrice
Jarlsberg
1000 g
10.45
Mascarpone
1000 g
32.56
Gorgonzola
1000 g
15.67
ProductName
UnitPrice
Jarlsberg
10
Mascarpone
33
Gorgonzola
16
Funcia NOW()
ntoarce data i ora curent a sistemului
Sintaxa
SELECT NOW() FROM table_name
Prod_Id
ProductName
Unit
UnitPrice
Jarlsberg
1000 g
10.45
Mascarpone
1000 g
32.56
Gorgonzola
1000 g
15.67
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()
Folosit pentru a stabili modul n care este
afiat un cmp
Sintaxa
SELECT FORMAT(column_name, format) FROM
table_name
ProductName
Unit
UnitPrice
Jarlsberg
1000 g
10.45
Mascarpone
1000 g
32.56
Gorgonzola
1000 g
15.67
FORMAT(Now(),'YYYY-MM-DD') as PerDate
FROM Products
ProductName
UnitPrice
PerDate
Jarlsberg
10.45
2008-10-07
Mascarpone
32.56
2008-10-07
Gorgonzola
15.67
2008-10-07
SQL QUIZ
1. Ce reprezint SQL?
a) Structured Question Language
b) Structured Query Language
c) Strong Question Language
c) SELECT DIFFERENT
'Jackson')
b) INSERT ('Jimmy', 'Jackson') INTO Persons
c) INSERT VALUES ('Jimmy', 'Jackson') INTO
Persons
LastName
b) INSERT ('Olsen') INTO Persons (LastName)
c) INSERT INTO Persons (LastName) VALUES
('Olsen')
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'