SQL - Cap 3 New

Published on January 2017 | Categories: Documents | Downloads: 45 | Comments: 0 | Views: 166
of 18
Download PDF   Embed   Report

Comments

Content

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

2

Instructiunea INSERT
Forme ale instructiunii:
Instructiunea confera flexibilitate sub următoarele aspecte:
- cu aceeaşi instrucţiune INSERT pot fi introduse una sau mai
multe inregistrari;
- in cadrul instrucţiunii INSERT putem specifica setul complet de
valori pentru fiecare inregistrare (cate o valoare pentru fiecare
coloana din definiţia tabelei) sau putem preciza valoarea doar
pentru un set de coloane, celelalte rămânând cu valoarea lor
default;
- putem introduce inregistrari noi fara a specifica nicio valoare
pentru coloane, in aceste condiţii toate coloanele rămânând cu
valorile default;
- pot fi introduse intr-o tabela inregistrarile ce constituie rezultatul
InfoAcademy
MySQL 2015
3
unei interogări 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 definiţia tabelei;
- numărul de valori specificat trebuie sa fie intotdeauna egal cu
numărul de coloane ale tabelei;
- daca se şterge sau se adaugă o coloana, instrucţiunea INSERT
trebuie ajustata;
- daca se schimba ordinea coloanelor in tabela, instrucţiunea
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,
instrucţiunea 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,

5

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

6

- 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

7

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

9

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 Angajaţi;
SELECT * FROM Angajaţi;

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 Angajaţi; 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 Angajaţi WHERE Salariu > 1000 LIMIT 3;
3.9.

Exemplul

SELECT * FROM Angajaţi WHERE AnulAngajarii = 2005 LIMIT 2,4;
Ordonarea inregistrarilor: clauza ORDER BY
SELECT * FROM Angajaţi ORDER BY Salariu LIMIT 3;

Exemplul 3.9.

SELECT * FROM Angajaţi ORDER BY nume, prenume DESC LIMIT 10;
SELECT * FROM Angajaţi 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
Instrucţiunea 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 opţionale. Atunci cand nu
este specificata niciuna dintre ele, instrucţiunea 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 Angajaţi 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
Instrucţiunea UPDATE permite modificarea valorilor inregistrarilor
deja conţinute in tabele. Sintaxa sa generala este:
 
UPDATE NumeTabela SET coloana1= expresie1, <coloana2 =
expresie2, ....> <WHERE conditii><ORDER BY><LIMIT...>
 
Cu o singura instrucţiune pot fi operate modificări pe una sau mai
multe coloane. Clauza WHERE poate lipsi insa, in aceste condiţii, vor
fi modificate toate inregistrarile tabelei.
UPDATE Angajaţi SET Salariu=Salariu*1.1;
UPDATE Angajaţi SET Nume=‘Popescu’,Prenume=‘Ion’ WHERE
Nume=‘popescu’ AND Prenume=‘ion’;
InfoAcademy MySQL 2015
18
Exemplul 3.12.

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close