Sunteți pe pagina 1din 18

Cap 3.

Instructiuni de
manipulare a datelor

Operatii de manipulare a datelor


1. Adaugarea de noi inregistrari

INSERT (REPLACE)

2. Extragerea de informatii

SELECT

3. Stergerea de inregistrari

DELETE

4. Modificarea de informatii

UPDATE

InfoAcademy MySQL 2015

Instructiunea INSERT
Forme ale instructiunii:
Instructiunea confera flexibilitate sub urmtoarele aspecte:
- cu aceeai instruciune INSERT pot fi introduse una sau mai
multe inregistrari;
- in cadrul instruciunii INSERT putem specifica setul complet de
valori pentru fiecare inregistrare (cate o valoare pentru fiecare
coloana din definiia tabelei) sau putem preciza valoarea doar
pentru un set de coloane, celelalte rmnnd cu valoarea lor
default;
- putem introduce inregistrari noi fara a specifica nicio valoare
pentru coloane, in aceste condiii toate coloanele rmnnd cu
valorile default;
- pot fi introduse intr-o tabela inregistrarile ce constituie rezultatul
InfoAcademy
MySQL 2015
3
unei interogri de tip
SELECT.

Introducerea unei inregistrari prin specificarea setului


complet de valori
INSERT INTO NumeTabela VALUES(val1,val2,...,valN);
Caracteristici:
- trebuie specificate valori pentru toate coloanele tabelei si in
ordinea in care apar ele in definiia tabelei;
- numrul de valori specificat trebuie sa fie intotdeauna egal cu
numrul de coloane ale tabelei;
- daca se terge sau se adaug o coloana, instruciunea INSERT
trebuie ajustata;
- daca se schimba ordinea coloanelor in tabela, instruciunea
INSERT trebuie de asemenea modificata
Exemplul 3.1.: o tabela cu 2 coloane, insert, adaugare coloana, ce
InfoAcademy MySQL 2015
4
se intampla?

Specificarea valorilor pentru o parte a coloanelor


INSERT INTO NumeTabela (col1, col 4, col7...colx)
VALUES(val1,val4, val7,...,valx);
Caracteristici:
- permite sa populam doar anumite coloane;
- permite coloane ale caror valori sunt generate automat
(AUTO_INCREMENT);
- numarul de coloane trebuie sa coincida cu cel de valori;
- daca se schimba ordinea coloanelor/se adauga coloane,
instruciunea INSERT nu trebuie modificata;
Exemplul 3.2.
Alternativa a instructiunii insert care permite specificarea
valorilor pentru o parte a coloanelor sau pentru toate:
InfoAcademy
MySQL 2015
INSERT INTO NumeTabela
SET
col1=val1, col2=val2,

Inserarea unei inregistrari cu valori DEFAULT


INSERT INTO NumeTabela VALUES();
Caracteristici:
- Inregistrarea va avea valorile default ale tuturor coloanelor.
Exemplul 3.4.
Inserarea mai multor inregistrari cu o singura
instructiune
INSERT INTO NumeTabela VALUES(...), (...), (...);
sau
INSERT INTO NumeTabela(col1, col3,...colx) VALUES(val1, val3,...,
valx), (val1, val3,..., Exemplul 3.5.
valx), (val1,
val3,..., valx);
InfoAcademy MySQL 2015

- La aparitia unei erori inregistrarile introduce deja raman in baza

Inserarea inregistrarilor returnate de o interogare


SELECT
INSERT INTO NumeTabelaNoua SELECT * FROM TabelaVeche;
Exemplul 3.6.
Caracteristici:
- Nu specificam lista coloanelor implicit le selectam pe toate;
- Numarul de coloane returnat de SELECT trebuie sa fie identic cu
al tabelei noi;
- Tipurile de date sa fie compatibile;
sau
INSERT INTO NumeTabelaNoua(col1, col2...) SELECT (colx, coly...)
FROMTabelaVeche;
InfoAcademy MySQL 2015

Modul de lucru al serverului si operatiile de INSERT


SET sql_mode=traditional

- Modul strict

Caracteristici:
- In cazul coloanelor NOT NULL si fara valori DEFAULT va genera o
eroare fiind obligatorie specificarea valorii, pe aceasta coloana, la
fiecare inregistrare;
- In cazul introducerii unei valori invalide ca format sau in afara
domeniului posibil pentru tipul de date va genera o eroare;
SET sql_mode=

- Modul Non-strict

Caracteristici:
- In cazul coloanelor NOT NULL si fara valori DEFAULT, MySQL alege
automat o valoare implicita in functie de tipul de date;
- In cazul introducerii unei
InfoAcademy
MySQL
2015
valori
invalide
ca format sau in afara8

RECAPITULARE
- Cate modalitati de introducere a datelor exista?
- Serverul MySQL functioneaza in modul non-strict. Ce se intampla
daca introducem o valoare eronata? Dar daca este in afara
limitelor de valori ale tipului de date?
- Serverul MySQL functioneaza in modul strict. Ce se intampla daca
introducem o valoare in afara limitelor de valori ale tipului de
date?
- Serverul MySQL functioneaza in modul non-strict. Ce se intampla
daca nu introducem valori pe o coloana care nu permite NULL si
nu are valori default?
- Nume de coloane / tipuri de date;

InfoAcademy MySQL 2015

Operatii de manipulare a datelor


1. Adaugarea de noi inregistrari INSERT (REPLACE)
2. Extragerea de informatii

SELECT

3. Stergerea de inregistrari

DELETE

4. Modificarea de informatii

UPDATE

InfoAcademy MySQL 2015

10

Instructiunea SELECT
Caracteristici:
- rezultatul interogarii SELECT (result set) seaman cu o tabela, dar
este efemer;
- result set este un ansamblu de randuri si coloane, fiecare coloana
are o denumire data de server sau aleasa de catre noi;
- datele provin din una sau mai multe tabele, total sau partial,
astfel:
- Toate inregistrarile dintr-o tabela;
- O parte din coloanele unei tabele;
- O parte din randurile tabelei (inregistrari complete);
- Prelucrarea aplicata informatiilor din coloane (aplicare
diferite functii);
SELECT Expresie1, expresie2,...; <DISTINCT>
InfoAcademy MySQL 2015
NumeTabela>

<FROM
11

Specificarea valorilor/numelor coloanelor returnate


1. Exclusiv constante sau expresii compuse din constante si functii
predefinite;
SELECT 1,2+2, CURDATE();
Exemplul 3.8.
2. Nume de coloane de tabele;
SELECT Nume,Prenume FROM Angajai;
SELECT * FROM Angajai;

Exemplul 3.8.

3. Combinatii de constante si nume de coloane din tabele;


SELECT CONCAT(Nume, ,Prenume), YEAR(CURDATE())AnulAngajarii AS
Vechime FROM Angajati;
SELECT *, salariu*12 AS Sal_anual FROM Angajai; Exemplul 3.8.
ALIAS-urile se folosesc cand denumirea coloanei ar fi prea lunga
InfoAcademy
MySQL 2015
12
sau ar crea confuzie dubland
nume
de coloane existente. Cuvantul

Filtrarea inregistrarilor returnate: clauza WHERE


SELECT lista_coloane FROM tabela WHERE criterii;
Caracteristici:
- Spre deosebire de coloane, inregistrarile nu au nume, filtrarea lor
se face cu clauza WHERE;
- criteriile constau in expresii folosind constante, operatori, functii,
nume de coloane;
- fiecare inregistrare este evaluata prin prisma criteriilor stabilite;
- sunt pastrate doar inregistrarile care respecta criteriile;
- putem aplica mai multe criterii utilizand operatorii logici AND si
OR;
- daca exista valori NULL si dorim sa le selectam sau nu utilizam IS
(NOT) NULL;
- in cadrul clauzei WHERE nu putem folosi alias-uri de coloane,
2015
deoarece acestea aparInfoAcademy
dupa MySQL
evaluarea
conditiilor din clauza; 13

Limitarea numarului de inregistrari returnate: clauza


LIMIT
SELECT * FROM Angajai WHERE Salariu > 1000 LIMIT 3;
3.9.

Exemplul

SELECT * FROM Angajai WHERE AnulAngajarii = 2005 LIMIT 2,4;


Ordonarea inregistrarilor: clauza ORDER BY
SELECT * FROM Angajai ORDER BY Salariu LIMIT 3;

Exemplul 3.9.

SELECT * FROM Angajai ORDER BY nume, prenume DESC LIMIT 10;


SELECT * FROM Angajai ORDER BY RAND() LIMIT 1; - raspuns
aleator
InfoAcademy MySQL 2015
14
Combinarea rezultatelor
mai multor interogari SELECT

Operatii de manipulare a datelor


1. Adaugarea de noi inregistrari INSERT (REPLACE)
2. Extragerea de informatii

SELECT

3. Stergerea de inregistrari
4. Modificarea de informatii

DELETE
UPDATE

InfoAcademy MySQL 2015

15

Instructiunea DELETE
Instruciunea DELETE permite tergerea controlata a inregistrarilor
dintr-una sau mai multe tabele SQL. Sintaxa sa generala este:

DELETE FROM tabela <WHERE conditii> <ORDER BY criterii>


<LIMIT limite>

Clauzele WHERE, ORDER BY si LIMIT sunt opionale. Atunci cand nu


este specificata niciuna dintre ele, instruciunea DELETE terge
toate inregistrarile tabelei, inregistrare cu inregistrare, ceea ce ar
putea dura foarte mult in cazul multor inregistrari. Acest lucru poate
fi insa realizat mai eficient folosind TRUNCATE.
DELETE FROM Angajai ORDER BY Salariu DESC LIMIT 1
Exemplul 3.11.

InfoAcademy MySQL 2015

16

Operatii de manipulare a datelor


1. Adaugarea de noi inregistrari INSERT (REPLACE)
2. Extragerea de informatii

SELECT

3. Stergerea de inregistrari

DELETE

4. Modificarea de informatii

InfoAcademy MySQL 2015

UPDATE

17

Instructiunea UPDATE
Instruciunea UPDATE permite modificarea valorilor inregistrarilor
deja coninute in tabele. Sintaxa sa generala este:

UPDATE NumeTabela SET coloana1= expresie1, <coloana2 =


expresie2, ....> <WHERE conditii><ORDER BY><LIMIT...>

Cu o singura instruciune pot fi operate modificri pe una sau mai


multe coloane. Clauza WHERE poate lipsi insa, in aceste condiii, vor
fi modificate toate inregistrarile tabelei.
UPDATE Angajai SET Salariu=Salariu*1.1;
UPDATE Angajai SET Nume=Popescu,Prenume=Ion WHERE
Nume=popescu AND Prenume=ion;
InfoAcademy MySQL 2015
18
Exemplul 3.12.