Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’;...

34
Limbajul SQL jeudi 22 octobre 15

Transcript of Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’;...

Page 1: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Limbajul SQL

jeudi 22 octobre 15

Page 2: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

2/ 21

Principiile SQL

O interogatie se termina prin ;

Instructiunile sunt in majuscule (conventie)

Numele câmpurilor sau a tabelelor - scriere exacta

Numele nu pot depasi 128 caractere

jeudi 22 octobre 15

Page 3: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Gestiunea tabelelor

CREATE TABLE Carti (lista coloane cu tipul asociat);

3/ 21 jeudi 22 octobre 15

Page 4: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Gestiunea tabelelor

CREATE TABLE Carti (lista coloane cu tipul asociat);

INSERT INTO Carti(Titlu, Autor, ISBN, PRET, N_inventar)VALUES (‘Infern’, ‘Dante’, 55525, 15, 100);

3/ 21 jeudi 22 octobre 15

Page 5: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Gestiunea tabelelor

CREATE TABLE Carti (lista coloane cu tipul asociat);

INSERT INTO Carti(Titlu, Autor, ISBN, PRET, N_inventar)VALUES (‘Infern’, ‘Dante’, 55525, 15, 100);

DELETE FROM CartiWHERE Titlu=‘Amintiri din copilarie’;

3/ 21 jeudi 22 octobre 15

Page 6: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Gestiunea tabelelor

CREATE TABLE Carti (lista coloane cu tipul asociat);

INSERT INTO Carti(Titlu, Autor, ISBN, PRET, N_inventar)VALUES (‘Infern’, ‘Dante’, 55525, 15, 100);

DELETE FROM CartiWHERE Titlu=‘Amintiri din copilarie’;

3/ 21

UPDATE CartiSET Titlu=”Amintiri din tinerete”WHERE Autor=”Creanga”

jeudi 22 octobre 15

Page 7: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

4/ 21

Proiectia

SELECT Nume, OrasFROM Persoana;

jeudi 22 octobre 15

Page 8: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

4/ 21

Proiectia

SELECT Nume, OrasFROM Persoana;

Nume OrasNestor ParisIrma LilleHenri ParisJosette LyonJacques Bordeaux

jeudi 22 octobre 15

Page 9: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Proiectia (2)

5/ 21

SELECT *FROM Persoana;

SELECT Oras AS City FROM Persoana;

jeudi 22 octobre 15

Page 10: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Proiectia (2)

5/ 21

SELECT *FROM Persoana;

Toata tabla

SELECT Oras AS City FROM Persoana;

jeudi 22 octobre 15

Page 11: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Proiectia (2)

5/ 21

SELECT *FROM Persoana;

Toata tabla

SELECT Oras AS City FROM Persoana;

CityParisLilleParisLyon

Bordeaux

jeudi 22 octobre 15

Page 12: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Proiectia - valori diferite

6/ 21

SELECT DISTINCT VilleFROM Persoana;

jeudi 22 octobre 15

Page 13: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Proiectia - valori diferite

6/ 21

SELECT DISTINCT VilleFROM Persoana;

Ville

ParisLille

Lyon

Bordeaux

jeudi 22 octobre 15

Page 14: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Operatii

7/ 21

+ Addition- Soustraction* Multiplication/ Division% Modulo

SELECT Pret, N_inventar, (Pret/4.31) AS Pret_EurosFROM Stoc;

jeudi 22 octobre 15

Page 15: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Operatii statistice

8/ 21

COUNT

MAX

MIN

AVG

SUM

SELECT AVG(Pret) AS Pret_MediuFROM Carti;

SELECT COUNT(*) AS Numar_TotalFROM Stoc;

jeudi 22 octobre 15

Page 16: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Selectia - operatori de comparare

9/ 21

=<><>

<=>=

SELECT *FROM VânzariWHERE Pret > 50000;

jeudi 22 octobre 15

Page 17: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Alti operatori de comparare

10/ 21

BETWEEN <val1> AND <val2>In <liste_valeurs>

IS NULLLIKE

Modulo

SELECT *FROM TipografieWHERE Calitate IN (“mediu”, “superior”);

jeudi 22 octobre 15

Page 18: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Conectori

ANDOR

NOT

SELECT *FROM CartiWHERE Titlu =‘Infern’ AND Pret <10;

jeudi 22 octobre 15

Page 19: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Agregate (groupari)

SELECT MarcaFROM MasinaGROUP BY Marca;

jeudi 22 octobre 15

Page 20: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Agregate (groupari)

SELECT MarcaFROM MasinaGROUP BY Marca;

Marca

Citroen

Opel

Peugeot

Renault

jeudi 22 octobre 15

Page 21: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Alt exemplu

SELECT Marca, COUNT(*) AS ContFROM MasinaGROUP BY Marca;

jeudi 22 octobre 15

Page 22: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Alt exemplu

SELECT Marca, COUNT(*) AS ContFROM MasinaGROUP BY Marca;

Marca Cont

Dacia 1

Opel 1

Peugeot 2

Dacia 2

jeudi 22 octobre 15

Page 23: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Alt exercitiu

SELECT Oras, AVG(Varsta) AS Varsta_MedieFROM PersoanaGROUP BY Oras;

jeudi 22 octobre 15

Page 24: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Restrictionarea rezultatului

15/ 21

SELECT Marca, COUNT(*) AS ContFROM MasinaGROUP BY MarcaHAVING Cont >1;

jeudi 22 octobre 15

Page 25: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Restrictionarea rezultatului

15/ 21

SELECT Marca, COUNT(*) AS ContFROM MasinaGROUP BY MarcaHAVING Cont >1;

Marca Cont

Peugeot 2

Renault 2

jeudi 22 octobre 15

Page 26: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Interogatii pe mai multe table

16/ 21

SELECT Carti.Pret, Stoc.CantitateWHERE Stoc.N_Inventar <= 400FROM Librarie;

jeudi 22 octobre 15

Page 27: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Produs cartezian

SELECT *FROM Carti, Stoc;

nbr_coloane_rezultat = nbr_col_1 + nbr_col_2nbr_linii_rezultat = nbr_lin_1 * nbr_lin_2

jeudi 22 octobre 15

Page 28: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Join (simplu)

SELECT Masina.Marca, Masina.Culoare, Vânzari.PretFROM Masina, VânzariWHERE Masina.Numar = Vânzari.Numar;

jeudi 22 octobre 15

Page 29: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Join (simplu)

SELECT Masina.Marca, Masina.Culoare, Vânzari.PretFROM Masina, VânzariWHERE Masina.Numar = Vânzari.Numar;

Optimizare posibila

jeudi 22 octobre 15

Page 30: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Join (simplu)

SELECT Masina.Marca, Masina.Culoare, Vânzari.PretFROM Masina, VânzariWHERE Masina.Numar = Vânzari.Numar;

SELECT Masina.Marca, Masina.Culoare, Vânzari.PretFROM Vânzari JOIN Masina.Numar = Vânzari.Numar;

Optimizare posibila

jeudi 22 octobre 15

Page 31: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Join extern

SELECT Masina.Numar, Vânzari.Numar, Masina.Marca, Masina.Culoare, Vânzari.PretFROM Masina LEFT OUTER JOIN Vânzari ON Masina.Numar = Vânzari.Numar;

jeudi 22 octobre 15

Page 32: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Trierea rezultatului

SELECT Pret, DateVânzareFROM VânzareORDER BY Pret DESC;

jeudi 22 octobre 15

Page 33: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

Trierea rezultatului

SELECT Pret, DateVânzareFROM VânzareORDER BY Pret DESC;

Pret DateVânzare70000 1996-03-3045000 2000-12-0330000 1998-12-0310000 1985-12-03

jeudi 22 octobre 15

Page 34: Limbajul SQL - who.rocq.inria.fr · PDF fileWHERE Titlu=‘Amintiri din copilarie’; 3/ 21 jeudi 22 octobre 15. Gestiunea tabelelor CREATE TABLE Carti (lista coloane cu tipul asociat);

21/ 21

jeudi 22 octobre 15