MySQL Alias si functii

Alias

Un alias este creat folosing termenul AS urmat de un nume case-sensitive. Se foloseste in interogari SELECT pentru a da unei coloane un nume diferit in rezultatele returnate.
  - Exemplu:
In exemplele din aceasta lectie se foloseste urmatorul tabel, denumit "sites":

idsitenrreg_date
1 www.marplo.net 5 2011-03-28 07:56:53
2 www.coursesweb.net 8 2011-03-28 07:57:40

Acest exemplu selecteaza inregistrarile din coloana "site" si le returneaza intr-un alias numit "st".
// conecteaza la baza de date "tests"
$conn = new mysqli('localhost', 'root', '', 'tests');

// verifica conexiunea
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}

// interogare sql 
$sql = "SELECT `site` AS st FROM `sites`";

// executa interogarea si retine rezultatele
$result = $conn->query($sql);

// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
  // afisaza datele din fiecare rand din $result
  while($row = $result->fetch_assoc()) {
    echo '<br />';
    print_r($row);
  }
}
else {
  echo '0 rezultate';
}

$conn->close();
?>
In resultatele obtinute, valorile coloanei "site" vor fi returnate intr-un alt nume de coloana, denumita 'st'.
Afiseaza:
Array ( [st] => www.marplo.net )
Array ( [st] => www.coursesweb.net )

Se pot folosi mai multe aliasuri intr-o interogare SELECT, cate unul pentru fiecare coloana:
                    SELECT coloana1 AS nume1, coloana2 AS nume2 FROM nume_tabel

Aliasurile sunt de obicei folosite cu functii, pentru a returna rezultatul unei functii asociat cu un nume (dupa cum vedeti in exemplu de mai jos).
- In mod standard, SQL nu suporta folosirea de aliasuri in interogari care au conditionala WHERE.

Functii MySQL

Cele mai multe din functiile MySQL sunt folosite cu interogarea SELECT pentru a formata datele returnate, dar puteti folosi functii MySQL si cu alte tipuri de interogari.
Pentru a aplica o functie intr-o instructiune SELECT, la valoarea unei coloane, interogarea va arata astfel:

  - Sintaxa:
SELECT coloana1, FUNCTIE(coloana2), coloana3 FROM nume_tabel
Nu trebuie sa lasati spatii intre numele functiei si parateza ei.

Functii pentru Text

Functiile pentru text sunt folosite cand se lucreaza cu siruri, pot fi aplicate fie cu numele coloanelor fie cu valori specifice.
Tabelul de mai jos contine cateva din cele mai utilizate functii MySQL pentru lucru cu text ("t", poate fi text sau numele unei coloane).

FunctieReturneaza
CONCAT(t1, t2, ...) Un nou sir de forma "t1t2".
CONCAT_WS(S, t1, t2, ...) Un nou sir de forma t1St2S... (ignora coloanele care nu au valori)
LENGTH(t) Numarul de caractere din "t".
LEFT(t, y) Caracterul "y" cel mai aproape de partea stanga din "t".
RIGHT(t, x) Caracterul "x" cel mai aproape de partea deapta din "t".
TRIM(t) "t" cu spatiile de la capete sterse.
UPPER(t) "t" cu litere mari.
LOWER(t) "t" cu litere mici.
SUBSTRING(t, x, y) caracterele "y" din "t", incepand de la index "x" (indexat de le 0).
expr REGEXP patern Executa o cautare in "expr", dupa o expresie regulata specificata la "patern".

  - In urmatorul exemplu vom folosi functia CONCAT() pentru a uni intr-un singur sir valorile a doua coloane ("site" si "nr"), separate de o liniuta. Acest sir va fi returnat cu un titlu de alias numit "str":
<?php
// conecteaza la baza de date "tests" 
$conn = new mysqli('localhost', 'root', '', 'tests');

// verifica in caz de eroare la conectare
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}

// interogare sql
$sql = "SELECT CONCAT(`site`, ' - ', `nr`) AS str FROM `sites`";

// executa interogarea si stocheaza rezultatele
$result = $conn->query($sql);

// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
  // afisaza datele pentru fiecare rand din $result
  while($row = $result->fetch_assoc()) {
    echo '<br />'. $row['str'];
  }
}
else {
  echo '0 rezultate';
}

$conn->close();
?>
Aliasul "str" este cheia in array ce contine valorile returnate.
Codul de mai sus va returna:
www.marplo.net - 5
www.coursesweb.net - 8

• Pentru lista completa cu functiile MySQL pt. text, vedeti manualul MySQL: Functii pentru siruri.

Functii numerice

Functiile numerice sunt folosite in lucrul cu numere, pentru a efectua operatii matematice. Ca si celelalte functii, ele pot fi utilizate fie cu numele coloanelor fie cu valori specifice.
In tabelul urmator sunt prezentate cateva din functiile numerice MySQL ("n", poate fi un numar sau numele unei coloane).

FunctiaReturneaza
ABS(n) Valoarea absoluta a lui "n".
AVG(col) Valoarea mijlocie (medie) a coloanei specificate.
CEILING(n) Urmatorul cel mai mare numar intreag dupa "n".
FLOOR(n) Valoarea intreaga a lui "n".
FORMAT(n1, n2) "n1" formatat ca un numar cu "n2" zecimale si cu virgula la fiecare 3 spatii.
MIN(col) Valoarea minima din coloana specificata.
MAX(col) Valoarea maxima din coloana specificata.
MOD(n1, n2) Resultatul impartirii lui "n1" la "n2". La fel ca si expresia cu simbolul procent (n1%n2)
POW(n1, n2) "n1" la puterea "n2"
RAND() Un numar aleatoriu intre 0 si 1.0
ROUND(n1, n2) "n1" rotunjit la "n2" zecimale.
SQRT(n) Radical din "n".
SUM(col) Suma valorilor din coloana specificata.

  - In urmatorul exemplu vom selecta coloana "nr", cu functia POW() aplicata ei, urmata de un alias care va contine valoarea returnata de functia POW():
<?php
// conecteaza la baza de date "tests" 
$conn = new mysqli('localhost', 'root', '', 'tests');

// verifica conexiunea
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}

// interogare sql
$sql = "SELECT `nr`, POW(`nr`, 3) AS pow3 FROM `sites` ORDER BY pow3";

// executa interogarea si stocheaza rezultatele
$result = $conn->query($sql);

// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
  // afiseaza datele din fiecare rand din $result
  while($row = $result->fetch_assoc()) {
    echo '<br /> POW('. $row['nr']. ', 3) - '. $row['pow3'];
  }
}
else {
  echo '0 rezultate';
}

$conn->close();
?>
Afiseaza:
POW(5, 3) - 125
POW(8, 3) - 512

- Functia RAND() poate fi folosita pentru a returna randurile intr-o ordine aleatorie:
                    SELECT * FROM nume_tabel ORDER BY RAND()

• Pentru lista completa cu functii numerice MySQL, vedeti manualul MySQL: Functii numerice si operatori

Functii pentru Data si Ora

Coloanele specifice pt. Data si Ora din MySQL sunt destul de flexibile.
Daca vreti sa faceti calcule bazate pe o anume data sau sa returnati numai numele zilei din saptamana, MySQL are o functie pentru aproape fiecare scop de lucru cu Data si Ora.
Tabelul urmator contine cateva din cele mai utilizate functii MySQL pt. lucru cu data si ora. Ele pot fi aplicate fie cu numele coloanelor, fie cu valori specifice ("dt", poate fi o valoare sau numele unei coloane).

FunctieReturneaza
HOUR(dt) Ora din "dt".
MINUTE(dt) Minutul din "dt".
SECOND(dt) Secundele din "dt".
DAYNAME(dt) Numele zilei din saptaana a datei din "dt".
DAYOFMONTH(dt) Numarul zilei din luna a datei din "dt".
MONTHNAME(dt) Numele lunii din an a datei din "dt".
MONTH(dt) Valoarea numerica a lunii din an, a datei din "dt".
YEAR(dt) Anul din "dt".
CURDATE() Data curenta.
CURTIME() Ora curent.
NOW() Data si ora curenta.
UNIX_TIMESTAMP(dt) Timpul Unix (numarul de secunde trecute de la "1 Ianuarie 1970 00:00:00 GMT" pana la momentul curent sau pana la data specificata).

  - Urmatorul exemplu afiseaza numele zilei din saptamana cand ultimul site a fost inregistrat:
<?php
// conecteaza la baza de date "tests"
$conn = new mysqli('localhost', 'root', '', 'tests');

// verifica conexiunea
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}

// interogare sql
$sql = "SELECT `id`, `site`, DAYNAME(`reg_date`) AS weekday FROM `sites` ORDER BY `reg_date` DESC LIMIT 1";

// executa interogarea si stocheaza rezultatele
$result = $conn->query($sql);

// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
  // parcurge si afiseaza datele din fiecare rand din $result
  while($row = $result->fetch_assoc()) {
    echo 'Ultimul site web: '. $row['site']. ' , id: '. $row['id']. ' - a fost inregistrat intr-o zi de '. $row['weekday'];
  }
}
else {
  echo '0 results';
}

$conn->close();
?>
Afiseaza:
Ultimul site web: www.coursesweb.net , id: 2 - a fost inregistrata intr-o zi de luni

Daca doriti sa preluati timpul UNIX dintr-o coloana de tip "Data si Timp", folositi urmatoarea formula:
                    SELECT UNIX_TIMESTAMP(coloana_data) AS nume_alias FROM nume_tabel

• Exista multe alte functii pt. data si ora, puteti vedea lista completa in manualul MySQL: Functii pentru Data si Ora.
PHP MySQL - DELETE <<-- Anterior ----------- Urmator -->> PHP PDO Introducere Conectari ...

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag creaza un text ingrosat?
<q> <strong> <em>
<p>Adresa: <strong>http://CoursesWeb.net/</strong> - Tutoriale.</p>
Care din aceste coduri CSS afiseaza textul ingrosat?
text-size: 18px; font-style: italic; font-weight: 800;
#id {
  font-weight: 800;
}
Ce functie JavaScript apeleaza o alta functie, in mod repetat, la un anumit interval de timp?
setInterval() setTimeout() push()
function someFunction() { alert("CoursesWeb.net"); }
setInterval("someFunction()", 2000);
Clic pe variabila definita corect in PHP.
var vname = 8; $vname = 8; $vname == 8;
$vname = 8;
echo $vname;
Care din urmatoarele forme ale verbului "travel" (a calatori) e la timpul Prezent Perfect?
have traveled shall travel had traveled
We have traveled in space.
- Noi am calatorit (deja) in spatiu.
Care din urmatoarele forme ale verbului "pintar" (a picta) se foloseste la Trecutul Imperfect?
ir a pintar pintaba pintó
La niña pintaba un arco iris.
- Fetita picta un curcubeu.
MySQL Alias si functii - Tutoriale PHP