PowerPoint Presentation

Documente similare
PowerPoint Presentation

PHP (II)

Microsoft Word - Curs_07.doc

Laborator02

Managementul Resurselor Umane

Microsoft Word - Curs 11 - PHP.doc

Baze de date - Anul 2 Laborator 8 Limbajul de definire a datelor (LDD) (partea I) În general, instrucţiunile LDD sunt utilizate pentru definirea struc

Baze de date

proiectarea bazelor de date

ADRIAN TRIF BAZE DE DATE APLICAŢII ACCESS UTPRESS Cluj-Napoca, 2019 ISBN

Baze de date-Anul 2 (semestrul 2)

Mai multe despre optimizare

Proceduri stocate Syntax: CREATE PROCEDURE <Name> type1,...] AS -- secventa de comenzi SQL GO O procedura stocata se ruleaza cu EXEC: EXEC <N

Aggregating Data

RZOLVARE EXERCITIU ZODII declare cursor distributie_zodie is select nume_zodie, count(*) distributie from zodiac z join utilizatori u on to_date(to_ch

PowerPoint Presentation

Laborator5_SQL_an2

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

Laborator 8: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea II - functii) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de bloc

PowerPoint Presentation

Database Management Systems Cap 2. Structured Query Language (1)

Laborator 7: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea I - proceduri) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de blo

Addendum Syllabus 6 Microsoft Access 2016 REF Syllabus 6.0 Cunoașterea domeniilor în care se utilizează bazele de date Datorită potenţialului ma

PowerPoint Presentation

Utilizare Internet

Prezentarea calculatorului

Microsoft Word - lab_access.doc

Microsoft Word - Fisa disciplinei BD_I_IE doc

Microsoft® Access®

Paradigme de Programare

EXCEL FĂRĂ SECRETE Grafice şi diagrame

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

PowerPoint Presentation

Prezentarea calculatorului

Utilizarea Internetului in Afaceri FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 4. Dezvoltarea site-urilor si blog-uri

Utilizare Internet

Baze de date Anul 2 Teorie Examen 1. Diagrama entitate/relatie si diagrama conceptuala (curs 2-5) 2. Arbore algebric si expresie algebrica (curs 6-10)

Baze de date - Anul 2 Laborator 9 Limbajul de definire a datelor (LDD) - II : Definirea vizualizărilor, secvenţelor, indecşilor, sinonimelor, tabelelo

Laborator 3

Poo Laboratoare 1 Contents Laborator7 2 1 Colecţii de obiecte în Java Interfaţa Iterator Interfaţa C

PowerPoint Presentation

Microsoft Word - Laborator 6 - Expresii Regulate IV.doc

Microsoft Word - O problema cu bits.doc

EVALEDIT - EDITOR ON-LINE DE TESTE GRILA Cristea BOBOILĂ * EvalEdit reprezintă o aplicaţie tip Internet al cărei scop este evaluarea on-line şi editar

Declararea variabilelor

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

Microsoft Word - Curs_10.doc

CL2009R0976RO bi_cp 1..1

Paradigme de programare

Microsoft Word - Curs_08.doc

Utilizarea îmbinării corespondenței pentru crearea şi imprimarea scrisorilor şi a altor documente Dacă utilizați îmbinarea corespondenței când doriți

aplicatii java

Sistemul de Gestiune a Bazelor de Date Access

Introducere în limbajul JavaScript

Diapositive 1

OPTICS User Manual v1.3.1

PROIECT DIDACTIC Clasa a VII-a Informatică și TIC

Platforma 5. 1 Introducere in MSSQL Introducere Pe parcursul ultimilor ani, se poate observa o cuplare a limbajelor de programare majore cu tipuri de

Elemente de Web design

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Subiectul 1

Metode API - integrare FGO v.2.5 Cuprins ISTORIC VERSIUNI... 2 INTRODUCERE... 2 APELARE... 4 NOMENCLATOARE... 4 FACTURA... 5 EMITERE... 5 PRINT... 6 S

Informație și comunicare

Anexa nr. 2 FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior UNIVERSITATEA DE VEST TIMISOARA 1.2 Facultatea FIZICA 1.3 De

B

Microsoft Word - CarteC.doc

Addendum Syllabus 6 Microsoft Word 2016 REF Syllabus 6.0 Crearea unui document nou pe baza unor șabloane disponibile local sau online Microsoft

Programarea şi utilizarea calculatoarelor

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Laborator - Configurarea Rutelor IPv4 Statice și Implicite Topologie Tabela de Adresare Echipame nt Interfață Adresă IP Masca de subreţea Default Gate

CURS

Microsoft Word - Excel_3.DOC

Web Social FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 2. Dezvoltarea blogurilor prin intermediul WordPress.com PREZE

Microsoft Word - Catalin Vrabie_Elemente de IT paginat VOL. II.doc

1 Lucrarea nr. 8 - Structuri de date de tip liste sortate O listă sortată reprezintă un aranjament al înregistrărilor din cadrul listei în funcţie de

Metode API - integrare FGO v.2.8 Cuprins ISTORIC VERSIUNI... 2 INTRODUCERE... 2 APELARE... 4 NOMENCLATOARE... 4 FACTURA... 4 EMITERE... 4 PRINT... 6 S

Evaluarea unităţilor de dializă publice si private

Carrier Pidgeon Protocol

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax:

Manual de utilizare Room Booking System

Logică și structuri discrete Mulțimi Casandra Holotescu

Информационная система персонализации, печати и учета документов об образовании

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Microsoft Word _POO_Lab_1_Modificari_v01.htm

aplicatii java

Tema laborator TS.NET 2019 Vom simula (partial, in scop didactic) activitatea unui service auto. Pentru aceasta vom considera urmatoarele tipuri: Clie

Inserarea culorilor in tabele

Windows 7

Programarea şi utilizarea calculatoarelor

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Transcriere:

2 Structured Query Language SQL

Interogare SQL simplă SELECT [DISTINCT]target-list FROM relation-list WHERE qualification relation-list - lista de nume de relaţii/tabele. target-list - listă de attribute ale relaţiilor din relation-list qualification - comparaţii logice (Attr op const sau Attr1 op Attr2, unde op is one of <, >, =,,, ) combinate cu AND, OR sau NOT. DISTINCT (optional) - indică faptul că rezultatul final nu conţine duplicate.

Clauza WHERE Operatori care pot fi folosiți în clauza WHERE: Operator Descriere = Egalitate <>,!= Inegalitate > Mai mare < Mai mic <= Mai mic sau egal >= Mai mare sau egal!< Nu mai mic decât!> Nu mai mare decât

Clauza WHERE Operatori care pot fi folosiți în clauza WHERE: Operator IN NOT IN BETWEEN Descriere Într-o mulțime enumerată explicit În afara unei mulțimi enumerate explicit Într-un interval închis NOT BETWEEN În afara unui interval închis LIKE NOT LIKE Ca un șablon Diferit de un șablon

Clauza WHERE Operatorul LIKE este folosit în clauza WHERE pentru a specifica un șablon de căutare într-o coloană Sintaxa: SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern; Exemple: SELECT * FROM Persons WHERE City LIKE '%s'; SELECT * FROM Persons WHERE City LIKE 'S%'; SELECT * FROM Persons WHERE City NOT LIKE 'M%';

Clauza WHERE (SQL Server!) Putem folosi următoarele caractere pentru șablon: Caracter Descriere _ Înlocuiește un singur caracter % Înlocuiește zero sau mai multe caractere [charlist] Orice caracter din listă [^charlist] Orice caracter care nu este în listă

Clauza WHERE Exemple de interogări care conțin clauza WHERE: SELECT ContactName, CompanyName FROM Customers WHERE ContactName LIKE '%b ; SELECT ContactName, CompanyName FROM Customers WHERE ContactName BETWEEN 'g' AND p ; SELECT ContactName, Country FROM Customers WHERE Country IN ('Germany', 'Mexico');

Clauza WHERE Exemple de interogări care conțin clauza WHERE: SELECT * FROM Customers WHERE City LIKE 'Ma%'; SELECT * FROM Customers WHERE City LIKE '%ne%'; SELECT * FROM Customers WHERE Country LIKE '_SA'; SELECT * FROM Customers WHERE City LIKE '[bsp]%'; SELECT * FROM Customers WHERE City LIKE '[^bsp]%';

Expresii şi string-uri Obţine triplete (cu vârsta studenţilor + alte două expresii) pentru studenţii al căror nume începe şi se termină cu B şi conţine cel puţin trei caractere. SELECT S.age, age1=s.age-5, 2*S.age AS age2 FROM Students S WHERE S.name LIKE B_%B AS şi = sunt două moduri de redenumire a câmpurilor în rezultat. LIKE e folosit pentru comparații pe șiruri de caractere. `_ reprezintă orice caracter și `% reprezintă 0 sau mai multe caractere arbitrare.

INNER JOIN SELECT S.name, C.cname FROM Students S, Enrolled E, Courses C WHERE S.sid = E.sid AND E.cid = C.cid SELECT S.name, C.cname FROM Students S INNER JOIN Enrolled E ON S.sid = E.sid, INNER JOIN Courses C ON E.cid = C.cid Students sid name email age gr 1234 John j@cs.ro 21 331 1235 Smith s@cs.ro 22 331 1236 Anne a@cs.ro 21 332 Courses cid cname credits Alg1 Algorithms1 7 DB1 Databases1 6 DB2 Databases2 6 Enrolled sid cid grade 1234 Alg1 9 1235 Alg1 10 1237 DB2 9 name John Smith cname Algorithms1 Algorithms1

LEFT OUTER JOIN Daca dorim sa regasim şi studentii fără nici o notă la vreun curs: SELECT S.name, C.cname FROM Students S LEFT OUTER JOIN Enrolled E ON S.sid = E.sid, LEFT OUTER JOIN Courses C ON E.cid = C.cid Students sid name email age gr 1234 John j@cs.ro 21 331 1235 Smith s@cs.ro 22 331 1236 Anne a@cs.ro 21 332 Courses cid cname credits Alg1 Algorithms1 7 DB1 Databases1 6 DB2 Databases2 6 Enrolled sid cid grade 1234 Alg1 9 1235 Alg1 10 1237 DB2 9 name John Smith Anne cname Algorithms1 Algorithms1 NULL

RIGHT OUTER JOIN Pentru a gasi notele asignate unor studenti inexistenti: SELECT S.name, C.cname FROM Students S RIGHT OUTER JOIN Enrolled E ON S.sid = E.sid, INNER JOIN Courses C ON E.cid = C.cid Students sid name email age gr 1234 John j@cs.ro 21 331 1235 Smith s@cs.ro 22 331 1236 Anne a@cs.ro 21 332 Courses cid cname credits Alg1 Algorithms1 7 DB1 Databases1 6 DB2 Databases2 6 Enrolled sid cid grade 1234 Alg1 9 1235 Alg1 10 1237 DB2 9 name John Smith NULL cname Algorithms1 Algorithms1 Databases2

FULL OUTER JOIN LEFT+RIGHT OUTER JOIN In majoritatea SGBD OUTER e optional SELECT S.name, C.cname FROM Students S FULL OUTER JOIN Enrolled E ON S.sid = E.sid, FULL OUTER JOIN Courses C ON E.cid = C.cid Students sid name email age gr 1234 John j@cs.ro 21 331 1235 Smith s@cs.ro 22 331 1236 Anne a@cs.ro 21 332 Courses cid cname credits Alg1 Algorithms1 7 DB1 Databases1 6 DB2 Databases2 6 name cname sid cid grade John Algorithms1 Enrolled 1234 Alg1 9 1235 Alg1 10 Smith NULL Algorithms1 Databases2 1237 DB2 9 NULL Databases1 Anne NULL

A SQL query walks into a bar. He approaches two tables and says: "Mind if I join you?"

Valoarea NULL În anumite situații valorile particulare ale unor attribute (câmpuri) pot fi necunoscute sau inaplicabile temporar. SQL permite utilizarea unei valori speciale null pentru astfel de situații. Prezența valorii null implică unele probleme suplimentare: E necesară implementarea unei logici cu 3 valori: true, false și null (de exemplu o condiție de tipul rating>8 va fi intotdeauna evaluată cu false daca valoarea câmpului rating este null) E necesară adaugarea unui operator special IS NULL / IS NOT NULL.

Operatori de agregare SELECT COUNT (*) FROM Students S COUNT (*) COUNT ( [DISTINCT] A) SUM ( [DISTINCT] A) AVG ( [DISTINCT] A) MAX (A) MIN (A) atribut SELECT AVG (S.age) FROM Students S WHERE S.gr=921 SELECT COUNT (DISTINCT S.gr) FROM Students S WHERE S.name= Bob SELECT S.name FROM Students S WHERE S.age = ANY (SELECT MAX(S2.age) FROM Students S2)

GROUP BY / HAVING For i = 221,222,223,224...: SELECT MIN(S.age) FROM Students S WHERE S.gr = i

GROUP BY / HAVING SELECT [DISTINCT] target-list FROM relation-list WHERE qualification GROUP BY grouping-list HAVING group-qualification

Numarul studentilor cu nota la cursurile cu 6 credite si media notelor acestora SELECT C.cid, COUNT (*) AS scount, AVG(grade) FROM Enrolled E, Courses C WHERE E.cid=C.cid AND C.credits=6 GROUP BY C.cid Courses cid cname credits Alg1 Algorithms1 7 DB1 Databases1 6 DB2 Databases2 6 Students sid name email age gr 1234 John j@cs.ro 21 331 1235 Smith s@cs.ro 22 331 1236 Anne a@cs.ro 21 332 Enrolled sid cid grade 1234 Alg1 9 1235 Alg1 10 1234 DB1 10 1234 DB2 9 1236 DB1 7

Enrolled sid cid grade 1234 Alg1 9 1234 Alg1 9 1234 Alg1 9 1235 Alg1 10 1235 Alg1 10 1235 Alg1 10 1234 DB1 10 1234 DB1 10 1234 DB1 10 1234 DB2 9 1234 DB2 9 1234 DB2 9 1236 DB1 7 1236 DB1 7 1236 DB1 7 Courses cid cname credits Alg1 Algorithms1 7 DB1 Databases1 6 DB2 Databases2 6 Alg1 Algorithms1 7 DB1 Databases1 6 DB2 Databases2 6 Alg1 Algorithms1 7 DB1 Databases1 6 DB2 Databases2 6 Alg1 Algorithms1 7 DB1 Databases1 6 DB2 Databases2 6 Alg1 Algorithms1 7 DB1 Databases1 6 DB2 Databases2 6 SELECT C.cid, COUNT(*)AS scount, AVG(grade)AS average FROM Enrolled E, Courses C WHERE E.cid=C.cid AND C.credits=6 GROUP BY C.cid

Enrolled Courses sid cid grade cid cname credits 1234 Alg1 9 Alg1 Algoritmics 1 7 1235 Alg1 10 Alg1 Algoritmics 1 7 1234 DB1 10 DB1 Databases1 6 1234 DB2 9 DB2 Databases2 6 1236 DB1 7 DB1 Databases1 6 SELECT C.cid, COUNT(*)AS scount, AVG(grade)AS average FROM Enrolled E, Courses C WHERE E.cid=C.cid AND C.credits=6 GROUP BY C.cid

sid cid grade 1234 DB1 10 1234 DB2 9 1236 DB1 7 cid cname credits DB1 Databases1 6 DB2 Databases2 6 DB1 Databases1 6 cid scount average SELECT C.cid, COUNT(*)AS scount, AVG(grade)AS average FROM Enrolled E, Courses C WHERE E.cid=C.cid AND C.credits=6 GROUP BY C.cid DB1 DB2 2 1 8.5 9 HAVING MAX(grade) = 10

Sortarea rezultatului interogarilor ORDER BY column [ ASC DESC] [,...] SELECT cname, sname, grade FROM Courses C INNER JOIN Enrolled E ON C.cid = E.cid INNER JOIN Students S ON E.sid = S.sid ORDER BY cname, grade DESC, sname

Sortarea rezultatului interogarilor Rezultatul e sortat după orice câmp din clauza SELECT, inclusiv expresii sau agregări: SELECT gr, Count(*) as StudNo FROM Students C GROUP BY gr ORDER BY StudNo

Subinterogări O subinterogare este o interogare încorporată într-o altă interogare Se poate folosi o subinterogare în clauza WHERE a inlocui un JOIN Exemplu: Dorim să găsim toți clienții care au plasat o comandă Varianta cu subinterogare: SELECT CustomerID, AccountNumber FROM Sales.Customer WHERE CustomerID IN (SELECT CustomerID FROM Sales.SalesOrderHeader);

Subinterogări Varianta cu JOIN: SELECT DISTINCT C.CustomerID, C.AccountNumber FROM Sales.Customer C INNER JOIN Sales.SalesOrderHeader O ON C.CustomerID = O.CustomerID;

Subinterogări O subinterogare în clauza WHERE poate fi folosită și pentru a găsi înregistrările din primul tabel care nu au potriviri în cel de-al doilea tabel (în acest caz, se va folosi operatorul NOT IN sau NOT EXISTS) Exemplu: SELECT CustomerID, AccountNumber FROM Sales.Customer WHERE CustomerID NOT IN (SELECT CustomerID FROM Sales.SalesOrderHeader); SAU SELECT C.CustomerID, C.AccountNumber FROM Sales.Customer C WHERE NOT EXISTS (SELECT * FROM Sales.SalesOrderHeader O WHERE O.CustomerID = C.CustomerID);

ANY Dorim să afișăm toate produsele care au prețul mai mare decât prețul maxim de produs al cel puțin unei categorii oarecare de produse: SELECT name, price FROM Products WHERE price > ANY (SELECT MAX(price) FROM Products GROUP BY id_category); Dorim să afișăm toate produsele care au prețul egal cu prețul minim de produs al cel puțin unei categorii de produse: SELECT name, price FROM Products WHERE price = ANY (SELECT MIN(price) FROM Products GROUP BY id_category); SAU SELECT name, price FROM Products WHERE price IN (SELECT MIN(price) FROM Products GROUP BY id_category);

ALL Dorim să afișăm toate produsele care au prețul mai mare decât prețul minim al tuturor categoriilor de produse: SELECT name, price FROM Products WHERE price > ALL (SELECT MIN(price) FROM Products GROUP BY id_category); Dorim să afișăm toate produsele care au prețul mai mic decât prețul maxim al tuturor categoriilor de produse: SELECT name, price FROM Products WHERE price < ALL (SELECT MAX(price) FROM Products GROUP BY id_category);

Reuniune, intersecție și diferență UNION (reuniune) se folosește pentru a îmbina rezultatele a două sau mai multe interogări întrun singur result-set Sintaxa: SELECT <col1>, <col2>, <col3> FROM table1 UNION [ALL] SELECT <col4>, <col5>, <col6> FROM table2; Fiecare interogare trebuie să conțină același număr de coloane, iar tipurile coloanelor trebuie să fie compatibile

Reuniune, intersecție și diferență UNION ALL va include înregistrări duplicate Exemplu (cu duplicate): SELECT nume FROM Clienți UNION ALL SELECT nume FROM Angajați; Exemplu (fără duplicate): SELECT nume FROM Clienți UNION SELECT nume FROM Angajați;

Reuniune, intersecție și diferență INTERSECT (intersecție) este folosit pentru a returna într-un singur result-set acele înregistrări care apar atât în result-set-ul interogării din partea dreaptă cât și în cel al interogării din partea stângă Sintaxa: SELECT <col1>, <col2>, <col3> FROM table1 INTERSECT SELECT <col4>, <col5>, <col6> FROM table2;

Reuniune, intersecție și diferență Exemplu: SELECT nume, prenume FROM Clienți INTERSECT SELECT nume, prenume FROM Angajați INTERSECT SELECT nume, prenume FROM Furnizori;

Reuniune, intersecție și diferență EXCEPT (diferență) este folosit pentru a returna acele înregistrări care apar în result-set-ul interogării din partea stângă dar nu apar în result-set-ul interogării din partea dreaptă Sintaxa: SELECT <col1>, <col2>, <col3> FROM table1 EXCEPT SELECT <col4>, <col5>, <col6> FROM table2;

Reuniune, intersecție și diferență Exemplu: SELECT nume, prenume FROM Clienți EXCEPT SELECT nume, prenume FROM Angajați; Exemplu: SELECT id_client FROM Clienți EXCEPT SELECT id_client FROM Comenzi;

Limbajul SQL: DML DML = Data Manipulation Language (Limbaj de manipulare a datelor) - conține instrucțiuni pentru inserare, actualizare, ștergere și interogare a datelor stocate întro bază de date relațională Cele mai folosite instrucțiuni DML sunt: INSERT inserează înregistrări noi UPDATE actualizează înregistrări DELETE șterge înregistrări SELECT extrage înregistrări

Limbajul SQL: DML Instrucțiunea INSERT INTO se folosește pentru a insera noi înregistrări într-un tabel Sintaxa: INSERT INTO table_name VALUES (value1, value2, ); SAU INSERT INTO table_name (column_name1, column_name2, column_name3, ) VALUES (value1, value2, value3, );

Limbajul SQL: DML Specificarea coloanelor după numele tabelului este opțională Prin specificarea coloanelor controlăm asocierile coloană-valoare, deci nu ne bazăm pe ordinea în care apar coloanele atunci când a fost creat tabelul sau când structura tabelului a fost modificată ultima dată Dacă nu specificăm o valoare pentru o coloană, SGBD-ul va verifica dacă există o valoare implicită pentru coloana respectivă iar dacă nu există și coloana nu permite NULL atunci inserarea nu va avea loc

Limbajul SQL: DML Exemplu de inserare a unei noi înregistrări în tabelul Clienți: INSERT INTO Clienți (IDClient, Nume, Prenume, Localitate) VALUES (1, 'Pop', 'Anda', 'Sibiu'); SAU INSERT INTO Clienți VALUES (1, 'Pop', 'Anda', 'Sibiu');

Limbajul SQL: DML Instrucțiunea UPDATE se folosește pentru a actualiza înregistrări într-un tabel Sintaxa: UPDATE table_name SET column1=value1, column2=value2, WHERE some_column=some_value; Omiterea clauzei WHERE va rezulta în actualizarea tuturor înregistrărilor din tabel

Limbajul SQL: DML Exemplu de actualizare a unei înregistrări dintr-un tabel: UPDATE Clienți SET Localitate='Cluj-Napoca' WHERE Nume='Pop' AND Prenume='Anda';

Limbajul SQL: DML Instrucțiunea DELETE se folosește pentru a șterge înregistrări dintr-un tabel Sintaxa: DELETE FROM table_name WHERE some_column=some_value; Omiterea clauzei WHERE va rezulta în ștergerea tuturor înregistrărilor din tabel

Limbajul SQL: DML Exemplu de ștergere a tuturor înregistrărilor din tabelul Clienți pentru care coloana Localitate are valoarea Sibiu : DELETE FROM Clienți WHERE Localitate='Sibiu'; Exemplu de ștergere a tuturor înregistrărilor din tabelul Clienți: DELETE FROM Clienți;

Limbajul SQL: DDL Instrucțiunea CREATE TABLE se folosește pentru a crea un tabel într-o bază de date Sintaxa: CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, );

Limbajul SQL: DDL Dorim să creăm un tabel numit Persoane care conține câmpurile id, nume, prenume, localitate CREATE TABLE Persoane ( id INT, nume VARCHAR(30), prenume VARCHAR(30), localitate VARCHAR(30) );

Limbajul SQL: DDL Instrucțiunea ALTER TABLE se folosește pentru a modifica structura unui tabel Sintaxa instrucțiunii pentru adăugarea unei coloane într-un tabel: ALTER TABLE table_name ADD column_name datatype; Exemplu de adăugare a unei coloane într-un tabel: ALTER TABLE Persoane ADD data_nașterii DATE;

Limbajul SQL: DDL Sintaxa instrucțiunii pentru schimbarea tipului de date al unei coloane dintr-un tabel: ALTER TABLE table_name ALTER COLUMN column_name datatype; Exemplu de schimbare a tipului de date al unei coloane dintr-un tabel: ALTER TABLE Persoane ALTER COLUMN data_nașterii DATETIME;

Limbajul SQL: DDL Sintaxa instrucțiunii pentru ștergerea unei coloane dintr-un tabel: ALTER TABLE table_name DROP COLUMN column_name; Exemplu de ștergere a unei coloane dintr-un tabel: ALTER TABLE Persoane DROP COLUMN data_nașterii;

Limbajul SQL: DDL Instrucțiunea DROP TABLE se folosește pentru a șterge un tabel dintr-o bază de date Sintaxa: DROP TABLE table_name; Exemplu: DROP TABLE Persoane;

Limbajul SQL: DDL În limbajul SQL fiecare coloană, variabilă locală, expresie sau parametru are un tip de date Un tip de date este un atribut care specifică ce fel de valori pot fi stocate în obiectul respectiv Exemple: int, tinyint, smallint, bigint, decimal, float, real, money, nchar, varchar, datetime, date, time

Limbajul SQL: DDL Constrângerile de integritate se pot specifica la crearea tabelului (în instrucțiunea CREATE TABLE), dar și după ce tabelul a fost creat (cu ajutorul instrucțiunii ALTER TABLE)

Limbajul SQL: DDL Constrângeri: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT

Limbajul SQL: DDL În mod implicit un tabel permite inserarea de valori NULL Dacă nu dorim să permitem introducerea de valori NULL pentru o coloană, aplicăm constrângerea NOT NULL pe coloana respectivă Ca rezultat, nu vom putea insera sau actualiza înregistrări care nu specifică o valoare pentru coloana respectivă

Limbajul SQL: DDL Exemplu de definire a unei constrângeri NOT NULL la crearea unui tabel: CREATE TABLE Studenți ( cod_s INT NOT NULL, nume VARCHAR(50), prenume VARCHAR(50), oraș VARCHAR(50) );

Limbajul SQL: DDL Constrângerea UNIQUE se definește pe coloanele în care nu dorim să permitem valori duplicate Se pot defini mai multe constrângeri UNIQUE în același tabel Se poate defini pe una sau mai multe coloane În cazul în care o constrângere UNIQUE este definită pe mai multe coloane, combinația de valori din coloanele respective trebuie să fie unică la nivel de înregistrare

Limbajul SQL: DDL Exemplu de definire a unei constrângeri UNIQUE pe o coloană la crearea unui tabel: CREATE TABLE Studenți ( cod_s INT UNIQUE, nume VARCHAR(50), prenume VARCHAR(50), oraș VARCHAR(50) );

Limbajul SQL: DDL Exemplu de definire a unei constrângeri UNIQUE pe mai multe coloane la crearea unui tabel: CREATE TABLE Studenți ( cod_s INT NOT NULL, nume VARCHAR(50), prenume VARCHAR(50), oraș VARCHAR(50), CONSTRAINT uc_studentid UNIQUE (cod_s, nume) );

Limbajul SQL: DDL Definirea unei constrângeri UNIQUE după ce tabelul a fost creat se face cu ajutorul instrucțiunii ALTER TABLE Exemplu de definire a unei constrângeri UNIQUE pe o singură coloană: ALTER TABLE Studenți ADD UNIQUE(cod_s); Exemplu de definire a unei constrângeri UNIQUE pe mai multe coloane: ALTER TABLE Studenți ADD CONSTRAINT uc_studentid UNIQUE(cod_s, nume);

Limbajul SQL: DDL O constrângere poate fi eliminată cu ajutorul instrucțiunii DROP CONSTRAINT Sintaxa: ALTER TABLE table_name DROP CONSTRAINT constraint_name; Exemplu: ALTER TABLE Studenți DROP CONSTRAINT uc_studentid;

Limbajul SQL: DDL Exemplu de definire a unei constrângeri PRIMARY KEY la crearea unui tabel: CREATE TABLE Studenți ( ); cod_s INT PRIMARY KEY, nume VARCHAR(50), prenume VARCHAR(50), oraș VARCHAR(50)

Limbajul SQL: DDL Exemplu de definire a unei constrângeri PRIMARY KEY pe mai multe coloane la crearea unui tabel: CREATE TABLE Studenți ( ); cod_s INT, nume VARCHAR(30), prenume VARCHAR(50), oraș VARCHAR(50), CONSTRAINT pk_student PRIMARY KEY (cod_s, nume)

Limbajul SQL: DDL Pentru a putea crea o cheie primară după crearea tabelului, coloana sau coloanele pe care dorim să le includem în cheia primară trebuie să aibă definită o constrângere NOT NULL Exemplu de definire a unei constrângeri PRIMARY KEY după crearea tabelului: ALTER TABLE Studenți ADD CONSTRAINT pk_student PRIMARY KEY(cod_s, nume); Exemplu de eliminare a unei constrângeri PRIMARY KEY: ALTER TABLE Studenți DROP CONSTRAINT pk_student;

Limbajul SQL: DDL Un foreign key (cheie străină) pointează la un primary key (cheie primară) dintr-un alt tabel Tabelul Clienți IDClient Nume Prenume Localitate 1 Pop Oana Cluj-Napoca 2 Rus Andrei Sibiu Tabelul Comenzi IDCom NrCom IDClient 1 3455 2 2 3456 1

Limbajul SQL: DDL Exemplu de definire a unei constrângeri FOREIGN KEY la crearea unui tabel: CREATE TABLE Comenzi ( IDCom INT PRIMARY KEY, NrCom INT, IDClient INT FOREIGN KEY REFERENCES Clienți(IDClient) );

Limbajul SQL: DDL Exemplu de definire a unei constrângeri FOREIGN KEY cu numele fk_client la crearea unui tabel: CREATE TABLE Comenzi ( IDCom INT PRIMARY KEY, NrCom INT, IDClient INT, CONSTRAINT fk_client FOREIGN KEY (IDClient) REFERENCES Clienți(IDClient) );

Limbajul SQL: DDL Exemplu de definire a unei constrângeri FOREIGN KEY după crearea tabelului: SAU ALTER TABLE Comenzi ADD FOREIGN KEY (IDClient) REFERENCES Clienți(IDClient); ALTER TABLE Comenzi ADD CONSTRAINT fk_client FOREIGN KEY (IDClient) REFERENCES Clienți(IDClient);

Limbajul SQL: DDL Se pot specifica acțiuni care vor fi efectuate în cazul în care un utilizator încearcă să șteargă sau să modifice un key spre care pointează un foreign key Următoarele acțiuni pot fi specificate în acest caz: NO ACTION CASCADE SET NULL SET DEFAULT

Limbajul SQL: DDL Exemplu de definire a unei constrângeri FOREIGN KEY cu acțiuni care au loc în caz de modificare sau ștergere: CREATE TABLE Comenzi ( IDCom INT PRIMARY KEY, NrCOm INT, IDClient INT FOREIGN KEY REFERENCES Clienți(IDClient) ON DELETE CASCADE ON UPDATE CASCADE ) ;

Limbajul SQL: DDL Constrângerea CHECK se folosește pentru a limita intervalul de valori ce se pot introduce pentru o anumită coloană Se poate defini pe o coloană, iar în acest caz limitează valorile ce pot fi introduse pentru coloana respectivă Se poate defini pe mai multe coloane

Limbajul SQL: DDL Exemplu de definire a unei constrângeri CHECK pe o coloană la crearea tabelului: CREATE TABLE Clienți ( IDClient INT PRIMARY KEY CHECK(IDClient>0), Nume VARCHAR(50) NOT NULL, Prenume VARCHAR(50), Localitate VARCHAR(50) );

Limbajul SQL: DDL Exemplu de constrângere CHECK definită pe mai multe coloane la crearea unui tabel: CREATE TABLE Clienți ( IDClient INT PRIMARY KEY, Nume VARCHAR(50) NOT NULL, Prenume VARCHAR(50), Localitate VARCHAR(50), CONSTRAINT ck_idclient CHECK(IDClient>0 AND Localitate IN ('Cluj-Napoca', 'Sibiu')) );

Limbajul SQL: DDL Exemplu de adăugare a unei constrângeri CHECK după crearea tabelului: ALTER TABLE Clienți ADD CHECK (IDClient>0); Exemplu de adăugare și stabilire a unui nume pentru o constrângere CHECK după crearea tabelului: ALTER TABLE Clienți ADD CONSTRAINT ck_client CHECK (IDClient>0 AND Localitate IN ('Cluj-Napoca', 'Sibiu'));

Limbajul SQL: DDL Constrângerea DEFAULT se folosește pentru a insera o valoare implicită într-o coloană Valoarea implicită va fi adăugată pentru toate înregistrările noi dacă nu se specifică o altă valoare Se poate folosi și pentru a insera valori sistem obținute prin apelul unor funcții Exemplu de definire a unei constrângeri DEFAULT după crearea unui tabel: ALTER TABLE Clienți ADD CONSTRAINT d_localitate DEFAULT 'Cluj-Napoca' FOR Localitate; Eliminarea unei constrângeri DEFAULT ALTER TABLE Clienți DROP CONSTRAINT d_localitate;

Limbajul SQL: DDL Exemplu de definire a unei constrângeri DEFAULT la crearea unui tabel: CREATE TABLE Comenzi ( IDCom INT PRIMARY KEY, NrCOm INT NOT NULL, IDClient INT, DataCom DATE DEFAULT GETDATE() );