Memo MySQL

Realizare diferente intre o valoare si cea anterioara (de ex. de la o lună la alta)

Ranking

Calculare subtotaluri pe coloana

Update View

Update pentru duplicare INSERT

Poate fi util ca, pe lângă cheia primară, să fie, de regulă, un câmp cu valori unicat.

În cazul în care INSERT-ul s-ar face doar pentru câmpuri de tip cheie primară compusă (cum ar fi tabelele copil) şi am presupune că unul din câmpurile cheii primare ar exista şi ar trebui introdus doar celălalt, putem folosi INSERT... ON DUPLICATE KEY... astfel:

Astfel, această interogare este folosită când introducem un nou eveniment şi există posibilitatea ca această combinaţie deja să existe.

Inserare dată şi timp curent la update-ul înregistrărilor

Ar fi de dorit ca orice tabelă să conţină înregistrarea timpului când a fost făcută înregistrarea sau, chiar, timpul când s-a făcut modificarea. Astfel, dacă pentru data curentă, câmpul va avea ca valoarea implicită CURRENT_TIMESTAMP, la modificarea unei înregistrări putem folosi clauza ON UPDATE la câmpul respectiv. Redăm mai joi cele trei situaţii în care am putea influenţa câmpul de update (la crearea tabelei, la adăugarea câmpului după crearea tabelei sau la modificarea câmpului nedefinit iniţial cu clauza de update.

La crearea tabelei
Adăugarea ulterioară a câmpului
Modificarea câmpului existent

Cheie străină

Exemplificare

După cum este şi firesc (se remarcă şi din scriptul de mai sus) întâi trebuie să existe tabela părinte, pentru a putea crea cheia străină. Dacă se doreşte vizualizarea constrângerii, în phpMyAdmin, este necesar să ne asigurăm că Storage Engine este InnoDB, accesabil din tab-ul Operations.

Modificare Collation

La nivelul bazei de date

La nivelul tabelei

La nivelul câmpului

Folosind PHP-ul., se poate realiza schimbarea collaţionării, pentru fiecare câmp în parte, astfel:

  1. Sursa: StackOverflow.com

Creare câmpuri matriciale

Dacă se doreşte ca, de exemplu, dintr-o coloană conţinând sexul (M/F), se doreşte crearea a două coloane distincte (sex_M, respectiv, sex_F), se poate folosi fie funcţia SUM, fie COUNT.

Varianta 1 – SUM

Varianta 2 – COUNT

Se observă că diferenţa este la argumentul ELSE, unde pentru a nu însuma, se foloseşte valoarea 0, iar la numărare, pentru a nu fi contorizat, se inserează NULL. Cum este de aşteptat, în ambele situaţii rezultatul este acelaşi.

Rezultat

sex sex_M sex_F
F 0 26
M 8 0

Afisare lista de procese MySQL

Informaţii despre o tabelă

(posibil să nu funcţioneze pe tabele InnoDB) sau

Surse: MySQL.com, StackOverflow.com