În MySQL, expresiile sunt alcătuite din operatori, date constante, valori din coloane și funcții. Tipurile de date și tipurile de coloane au fost descrise în articolul Tipuri de date. Articolul curent descrie operatorii și funcțiile MySQL.
Operatori MySQL
Operatorii MySQL pot fi: aritmetici, relaționali, logici și pe biți.
Operatori aritmetici
+
(adunare)-
(scădere)*
(înmulțire)/
(împărțire). Împărțirea la zero are rezultatulNULL
.
mysql> select (10+5)*4; +----------+ | (10+5)*4 | +----------+ | 60 | +----------+ 1 row in set (0.00 sec) mysql>
Operatori relaționali
Rezultatul operatorilor relaționali este 1
(TRUE
), 0
(FALSE
) sau NULL
. Pot fi comparate atât date de tip numeric, cât și date de tip șir de caractere sau dată calendaristică.
Operatori relaționali MySQL sunt:
=
(egalitate)!=
sau<>
(neegalitate)<
(mai mic)<=
(mai mic sau egal)>
(mai mare)>=
(mai mare sau egal)<=>
(egalitate. Acceptă ca operanzi valoriNULL
)IS NULL
(verifică dacă o valoare esteNULL
)IS NOT NULL
(verifică dacă o valoare esteNULL
)expresie BETWEEN min AND max
(verifică dacă valoarea expresiei este din intervalul[min,max]
).
mysql> select 'Gigel' between 'gelu' and 'grigore'; +--------------------------------------+ | 'Gigel' between 'gelu' and 'grigore' | +--------------------------------------+ | 1 | +--------------------------------------+ 1 row in set (0.05 sec) mysql>
Compararea șirurilor de caractere se face case sensitive sau nu, după cum expresia este un șir binar (BLOB
) sau nu.
expresie IN (val
1
, val
2
,...,val
n
)
(verifică dacă expresie are valoarea în lista de valori situate între paranteze)
mysql> select 5 in (0,4,3,7,5,9); +--------------------+ | 5 in (0,4,3,7,5,9) | +--------------------+ | 1 | +--------------------+ 1 row in set (0.00 sec) mysql>
Operația este foarte rapidă dacă valorile sunt constante și ordonate, caz în care se folosește căutarea binară.
expresie NOT IN (val
1
, val
2
,...,val
n
)
(verifică dacă expresie nu are valoarea în lista de valori situate între paranteze)sir1 LIKE sir2
– verifică dacăsir1
se potrivește cu modelulșir2
.sir2
poate conține caractere de înlocuire:%
– oricâte caractere, eventual0
_
– exact un caracter
mysql> select "mat" like "m_t"; +------------------+ | "mat" like "m_t" | +------------------+ | 1 | +------------------+ 1 row in set (0.00 sec) mysql> select "mat" like "%at%"; +-------------------+ | "mat" like "%at%" | +-------------------+ | 1 | +-------------------+ 1 row in set (0.00 sec) mysql>
Operatori logici
!
sauNOT
– negare||
sauOR
– disjuncție&&
sauAND
– conjuncție
Funcții MySQL
MySQL dispune de un număr mare de funcții predefinite. La apelul unei funcții MySQL, argumentele se trec între paranteze rotunde, separate prin virgule. Între numele funcției și paranteza deschisă nu se pune spațiu.
În continuare, prezentăm o (foarte mică) parte din funcțiile MySQL.
Funcții pentru șiruri de caractere
CONCAT(sir1, sir2, ...)
– returnează șirul obținut prin concatenarea argumentelor.LENGTH(sir)
– returnează lungimea șirului transmis ca argument.LOWER(sir)
– returnează șirul obținut prin convertirea argumentului la litere mici.UPPER(sir)
– returnează șirul obținut prin convertirea argumentului la litere mari.LTRIM(sir)
– returnează șirul obținut prin eliminarea spațiilor inițiale din argument.RTRIM(sir)
– returnează șirul obținut prin eliminarea spațiilor finale din argument.TRIM(sir)
– returnează șirul obținut prin eliminarea spațiilor inițiale și finale din argument.
Funcții numerice
ABS(x)
– calculează valoarea absolută a argumentului.FLOOR(x)
– calculează partea întreagă a argumentului.MOD(a,b)
– calculează restul împărțirii lui a la b.RAND()
– returnează un număr aleator din intervalul[0,1)
.ROUND(x)
– returnează valoarea luix
rotunjită la cel mai apropiat întreg.ROUND(x,n)
– returnează valoarea luix
rotunjită la un număr cun
zecimale.
Funcții de tip dată și oră
CURDATE()
– data curentă, în format'AAAA-LL-ZZ'
.CURTIME()
– ora curentă, în format'hh:mm:ss'
.NOW()
– data și ora curentă, în format'AAAA-LL-ZZ hh:mm:ss'
.