Beruflich Dokumente
Kultur Dokumente
com
BAZE DE DATE
Limbajul SQL
SQL este un limbaj standard pentru
accesarea bazelor de date MySQL, SQL Server, Access, Oracle, Sybase, DB2
Sintaxa SQL
SELECT CompanyName, Country FROM Customers WHERE Country <> 'USA
Company Island Trading Galera del gastrnomo Laughing Bacchus Wine Cellars Paris spcialits Simons bistro Wolski Zajazd Country UK Spain Canada France Denmark Poland
SQL
SQL este un limbaj standard pentru
accesarea i manipularea bazelor de date SQL Structured Query Language SQL este un standard ANSI (American National Standards Institute)
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
mai multe versiuni ale limbajului SQL Totui, cel puin comenzile principale (SELECT, UPDATE, INSERT, DELETE) sunt permise ntr-un mod aproape unitar de toate implementrile, pentru compatibilitate
RDBMS
Avem nevoie de un sistem de gestiune a
bazelor de date.
Microsoft SQL Server MySQL Oracle IBM DB2 Microsoft Access
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
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
pentru creare/modificare baz de date, tabele, indeci, stabilire legturi ntre tabele, constrngeri
ALTER TABLE
DROP TABLE
Instruciunea SELECT
Instruciunea SELECT se folosete pentru a
extrage date din baza de date Rezultatul este stocat ntr-un tabel-rezultat numit result-set Sintaxa
SELECT column_name(s) FROM table_name
Exemplu SELECT
SELECT * FROM Persons
P_Id 1 2 3 LastName Hansen Svendson Pettersen FirstName Ola Tove Kari Address Timoteivn 10 Borgvn 23 Storgt 20 City Sandnes Sandnes Stavanger
duplicate. Asta nu e o problem, totui, uneori vrem s listm doar valorile diferite (distincte) din tabel. Cuvntul cheie DISTINCT poate fi folosit pentru aceasta. Sintaxa
SELECT DISTINCT column_name(s)
FROM table_name
coloana City
P_Id 1 2 3 LastName Hansen Svendson Pettersen FirstName Ola Tove Kari Address Timoteivn 10 Borgvn 23 Storgt 20 City Sandnes Sandnes Stavanger
Clauza WHERE
Folosit pentru a filtra nregistrri Folosit pentru a extrage doar nregistrrile
WHERE City='Sandnes'
P_Id 1 2 LastName Hansen Svendson FirstName Ola Tove Address Timoteivn 10 Borgvn 23 City Sandnes 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:
SELECT * FROM Persons WHERE FirstName='Tove SELECT * FROM Persons WHERE Year=1965 Greit:
SELECT * FROM Persons WHERE FirstName=Tove SELECT * FROM Persons WHERE Year='1965'
Operatorii AND i OR
Se folosesc pentru a filtra nregistrrile dup
FirstName='Tove OR FirstName='Ola
P_Id 1 2 LastName Hansen Svendson FirstName Ola Tove Address Timoteivn 10 Borgvn 23 City Sandnes Sandnes
a sorta rezultatul dup o anumit coloan sau coloane Ordonarea/sortarea se face n mod implicit cresctor Ordonarea descresctoare DESC Sintaxa:
SELECT column_name(s)
ORDER BY LastName
P_Id 1 4 3 2 LastName FirstName Address Hansen Nilsen Pettersen Svendson Ola Tom Kari Tove Timoteivn 10 Vingvn 23 Storgt 20 Borgvn 23 City Sandnes Stavanger Stavanger Sandnes
VALUES (value1, value2, value3,...) INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
Instruciunea UPDATE
Se folosete pentru actualizarea unor date
UPDATE Persons
UPDATE Persons
Instruciunea DELETE
O folosim pentru a terge nregistrri dintr-o
tabel Sintaxa:
DELETE FROM table_name
WHERE some_column=some_value
Baze de date
Northwind Adventure Works World
Limbaje de modelare
SQL Server Management Studio
Baze de date
Customers - Northwind
CompanyName Alfreds Futterkiste ContactName Maria Anders Address Obere Str. 57 City Berlin
Berglunds snabbkp Christina Berglund Centro comercial Francisco Chang Moctezuma Ernst Handel Roland Mendel FISSA Fabrica Inter. Salchichas S.A. Galera del gastrnomo Diego Roel Eduardo Saavedra
Berguvsvgen 8 Lule Sierras de Granada 9993 Kirchgasse 6 C/ Moralzarzal, 86 Rambla de Catalua, 23 Mxico D.F. Graz Madrid 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
nregistrri 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
Oracle
SELECT column_name(s)
Operatorul LIKE
Folosit n clauza WHERE pentru a specifica un
ablon
Caracter % _ [charlist] [^charlist] sau [!charlist] Descriere nlocuiete zero sau mai multe caractere nlocuiete un singur caracter Orice caracter din list Orice caracter care nu este n list
WHERE City LIKE '%nes% SELECT * FROM Persons WHERE FirstName LIKE '_la SELECT * FROM Persons WHERE LastName LIKE 'S_end_on SELECT * FROM Persons WHERE LastName LIKE '[bsp]% SELECT * FROM Persons WHERE LastName LIKE '[!bsp]%'
Operatorul IN
Folosit pentru a specifica o list de valori n
Operatorul IN - exemplu
P_Id 1 2 3 LastName Hansen Svendson Pettersen FirstName Ola Tove Kari Address Timoteivn 10 Borgvn 23 Storgt 20 City Sandnes Sandnes Stavanger
Operatorul BETWEEN
Folosit n clauza WHERE pentru a stabili un
interval de valori dup care se va face filtrarea datelor Capetele intervalului pot fi numere, text sau date calendaristice Sintaxa:
SELECT column_name(s)
SGBD-ul pe care l folosii SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Hansen' AND 'Pettersen'
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
Alias - exemple
Cu alias
SELECT po.OrderID, p.LastName, p.FirstName
Fr alias
SELECT Product_Orders.OrderID, Persons.LastName,
Join
Se folosesc pentru a extrage date ntr-un
result-set din dou sau mai multe tabele, pe baza unei relaii ntre anumite coloane din aceste tabele Cheia primar = o coloan (sau o combinaie de coloane) cu valori unice n fiecare nregistrare. Scopul este de a lega datele din mai multe tabele, fr a repeta datele din fiecare tabel
Join
Tabela Persons
P_Id 1 2 3 LastName Hansen Svendson Pettersen FirstName Ola Tove Kari Address Borgvn 23 Storgt 20 City Sandnes Stavanger Timoteivn 10 Sandnes
Tabela Orders
O_Id 1 2 3 4 5
P_Id 3 3 1 1 15
puin o potrivire n ambele tabele LEFT JOIN: Extrage toate liniile din tabela din stnga, chiar dac nu au potriviri n tabela din dreapta RIGHT JOIN: Extrage toate liniile din tabela din dreapta, chiar dac nu au potriviri n tabela din stnga FULL JOIN: Combinaie ntre LEFT i RIGHT
INNER JOIN
Extrage linii cnd este cel puin o potrivire n
comenzi
SELECT Persons.LastName, Persons.FirstName,
LEFT JOIN
Extrage toate nregistrrile din table din
stnga, chiar i atunci cnd nu sunt potriviri n tabela din dreapta Sintaxa:
SELECT column_name(s)
JOIN
RIGHT JOIN
Extrage toate nregistrrile din table din
dreapta, chiar i cele pentru care nu sunt potriviri n tabela din stnga Sintaxa:
SELECT column_name(s) FROM table_name1
JOIN
Tabela Orders
O_Id OrderNo 1 2 3 4 5 77895 44678 22456 24562 34764 P_Id 3 3 1 1 15
corespunztoare
SELECT Persons.LastName, Persons.FirstName,
FULL JOIN
Extrage nregistrrile pentru care este o
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
Employees_USA
E_ID 01 02 03 04 E_Name Turner, Sally Kent, Clark Svendson, Stephen Scott, Stephen
SELECT INTO
Folosit pentru a crea copii backup ale
tabelelor Sintaxa:
SELECT *
INTO new_table_name [IN externaldatabase] FROM old_tablename SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename
FROM Persons
din date
SELECT LastName,Firstname
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
Date binare de lungime 8000 octei varbinary(n) Date binare de lungime Maxim 8000 octei varbinary(max) Date binare de lungime Maxim 2GB image Date binare de lungime Maxim 2GB
4 sau 8 octei
4 octei
( P_Id int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )
P_Id LastName FirstName Address 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)
sale valori NULL NOT NULL va determina ca aceast valoare s nu fie acceptat n coloana asupra creia se aplic constrngerea Cu aceast constrngere nu se vor putea aduga nregistrri sau nu se vor putea actualiza fr a specifica o valoarea pentru cmpul respectiv
( 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
permite date duplicate UNIQUE i PRIMARY KEY ofer garania de unicitate pentru o coloan sau mulime de coloane O constrngere de tip PRIMARY KEY are ntotdeauna definit i o constrngere UNIQUE Putem avea mai multe constrngeri UNIQUE dar o singur constrngere PRIMARY KEY
P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), UNIQUE (P_Id) )
P_Id int NOT NULL UNIQUE, 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 uc_PersonID UNIQUE (P_Id,LastName) )
ADD UNIQUE (P_Id) ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
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) )
permite o cheie primar format din mai multe cmpuri folosim sintaxa:
( 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 trebuie s fi fost definite anterior astfel nct s nu accepte valoarea NULL
primar MySQL
ALTER TABLE Persons
LastName
Hansen
FirstName
Ola
Address
Timoteivn 10
City
Sandnes
2 3
Svendson Pettersen
Tove Kari
Borgvn 23 Storgt 20
Sandnes Stavanger
Tabela Orders
O_Id 1 2 3
4
P_Id 3 3 2
1
coloana P_id din tabela Persons Coloana P_id din tabela Orders este FOREIGN KEY Coloana P_id din tabela Persons este PRIMARY KEY Constrngerea de tip FOREIGN KEY este folosit pentru 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
( 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) )
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 CHECK
Folosit pentru a limita intervalul de valori ce
pot fi introduse ntr-o coloan Se poate defini pe o coloan caz n care se limiteaz valorile ce pot fi introduse n coloana respectiv Se poate defini pe ntreaga tabel caz n care se pot limita valorile ce se introduce ntr-o coloan pe baza valorilor din alte coloane
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
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 AND City='Sandnes) )
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
rapid i eficient a datelor, fr a citi ntreg tabelul Actualizarea unei tabele ce conine indeci este mai lent pentru c trebuie actualizai i indecii Indecii trebuie creai doar pentru coloane pe care se vor face cutri frecvente
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
FirstName Ola
Tove
Address Timoteivn 10
Borgvn 23
City Sandnes
Sandnes
DateOfBirth
Hansen
Svendson
Pettersen
Kari
Storgt 20
Stavanger
Auto increment
Permite generarea automat a unui numr
unic atunci cnd se insereaz o nou nregistrare n tabel De regul cnd cheia primar este de tip numeric i e format dintr-un singur cmp, are acest atribut
Auto increment
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))
Auto increment
Dac vrem s adugm o nou nregistrare n
tabel nu mai trebuie s specificm cmpul ce are atribut AUTO_INCREMENT Se va genera o valoare unic automat
INSERT INTO Persons (FirstName,LastName)
Auto increment
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) )
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
result-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 i JOIN i s prezentm datele ca i cum ar veni dintr-o singur tabel
VIEW
Sintaxa pentru creare VIEW
CREATE VIEW view_name AS
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
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]
VIEW - actualizare
Actualizarea unui view
CREATE OR REPLACE VIEW view_name AS
Exemplu
CREATE VIEW [Current Product List] AS
VIEW - tergere
DROP VIEW view_name
Date calendaristice
Forma datei pe care ncercm s o inserm
trebuie s se potriveasc cu formatul coloanei de tip dat din tabel Atunci cnd apare i partea de timp/or lucrurile se complic Exist o serie de funcii predefinite pentru procesarea informaiile legate de dat/or
NULL
Reprezint date lips/necunoscute/inaplicabile Implicit o coloan poate conine valoarea NULL Operatori pentru NULL:
IS NULL IS NOT NULL
putem aduga o nregistrare sau o putem actualiza fr a specifica o valoare pentru coloana respectiv n acest caz se va salva valoarea 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 1 2 3 LastName Hansen Svendson Pettersen FirstName Address Ola Tove Kari Borgvn 23 City Sandnes Sandnes Stavanger
Coloana Address este opional Se va salva NULL dac nu specificm o adres Nu putem folosi operatorii relaionali sau de
Rezultatul
LastName Hansen Pettersen FirstName Address Ola Kari
Rezultatul
LastName Svendson FirstName Address Tove Borgvn 23
UnitPrice 10.45
32.56
UnitsInStock 16
23
UnitsOnOrder 15 20
Jarlsberg
Mascarpone
Gorgonzola
15.67
SELECT ProductName,
fi NULL
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,
Funcii SQL
SQL are multe funcii pentru a efectua calcule
asupra datelor Funcii de agregare calculeaz o valoare pe baza 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
Funcii scalare calculeaz o singur valoare pe
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()
Calculeaz valoarea medie pe o coloan Sintaxa
SELECT AVG(column_name) FROM table_name
Orders
O_Id 1 2 3 4 5 6 OrderDate OrderPrice Customer 2008/11/12 1000 2008/10/23 1600 2008/09/02 700 2008/09/03 300 2008/08/30 2000 2008/10/04 100 Hansen Nilsen Hansen Hansen Jensen 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
4 5 6
gsim astfel:
SELECT COUNT(*) AS NumberOfOrders FROM
Orders
NumberOfOrders 6
tabel
Funcia FIRST()
ntoarce prima valoare din coloana indicat Sintaxa
SELECT FIRST(column_name) FROM table_name
Tabela Orders
O_Id 1 2 3 4 5 6
OrderDate OrderPrice Customer 2008/11/12 1000 2008/10/23 1600 2008/09/02 700 2008/09/03 300 2008/08/30 2000 2008/10/04 100 Hansen Nilsen Hansen Hansen Jensen Nilsen
FROM Orders
Funcia LAST()
ntoarce ultima valoare din coloana indicat Sintaxa
SELECT LAST(column_name) FROM table_name
O_Id 1 2 3 4 5 6 OrderDate OrderPrice Customer 2008/11/12 1000 2008/10/23 1600 2008/09/02 700 2008/09/03 300 2008/08/30 2000 2008/10/04 100 Hansen Nilsen Hansen Hansen Jensen 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
folosesc clauza GROUP BY Ar e rolul de a grupa datele dintr-una sau mai multe coloane Sintaxa:
SELECT column_name,
fiecare client
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
Customer SUM(OrderPrice) Hansen Nilsen Jensen 2000 1700 2000
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
Funcia UCASE()
Convertete n litere mari Sintaxa
SELECT UCASE(column_name) FROM
table_name
table_name
SELECT UCASE(LastName) as
Funcia LCASE()
Convertete n litere mici Sintaxa
SELECT LCASE(column_name) FROM
table_name
table_name
SELECT LCASE(LastName) as
Funcia MID()
Folosit pentru a extrage caractere dintr-un
table_name
Parametru column_name start length Descriere Obligatoriu. Cmpul din care se extrag caractere Obligatoriu. Specific poziia de pornire (indexat de la 1) Opional. Numrul de caractere ce vor fi extrase. Dac lipsete, funcia extrage toate caracterele rmase
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
table_name
Parametru column_name decimals Descriere Obligatoriu. Cmpul care va fi rotujnit. Obligatoriu. Numrul de zecimale la care se face rotunjirea.
Mascarpone Gorgonzola
33 16
Funcia NOW()
ntoarce data i ora curent a sistemului Sintaxa
SELECT NOW() FROM table_name
Prod_Id 1 2 3 ProductName Jarlsberg Mascarpone Gorgonzola Unit 1000 g 1000 g 1000 g UnitPrice 10.45 32.56 15.67
Funcia FORMAT()
Folosit pentru a stabili modul n care este
table_name
1 2 3
SQL QUIZ
1. Ce reprezint SQL?
a) Structured Question Language b) Structured Query Language c) Strong Question Language
2. Care instruciune SQL este folosit pentru a extrage date dintr-o baz de date?
a) EXTRACT
b) GET c) SELECT d) OPEN
3. Care instruciune SQL este folosit pentru a actualiza date n baza de date?
a) UPDATE b) SAVE c) SAVE AS d) MODIFY
4. Care instruciune SQL este folosit pentru a terge date n baza de date?
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
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
11. Cum se extrag toate coloanele dintr-o tabel cu numele Persons pentru care LastName este alfabetic cuprins (inclusiv) ntre Hansen i Pettersen?
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'
a) SELECT * FROM Persons
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
'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')
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