Curs Php-mysql

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 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] => 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:
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.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag HTML5 defineste un text marcat, evidentiat?
<mark> <embed> <span>
<p>Cursuri graruite: <mark>MarPlo.net</mark> , jocuri, anime.</p>
Ce pseudo-clasa CSS defineste un stil la element cand mouse-ul e deasupra lui?
:focus :hover :active
a:hover {
  font-weight: bold;
  color: #00da01;
}
Clic pe functia ce returneaza un sir cu un numar rotunjit la x decimale.
toPrecision(x) toFixed(x) floor(x)
var num = 12.34567;
num = num.toFixed(2);
alert(num);       // 12.35
Indicati functia PHP care adauga continutul unui fisier intr-un array.
[) file() readfile()
$arr = file("a_file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
var_export($arr);
Clic pe raspunsul potrivit la intrebarea: "What time is it?"
On the 7th of July 1996 It is a quarter to 5. Nice weather.
What time is it? It is a quarter to 5.
- Cat este ora? E 5 fara un sfert.
Indicati raspunsul potrivit la intrebarea: "¿Qué hora es?"
Hace buen tiempo. En el 7 de julio de 1996 Son las tres menos cuarto.
¿Qué hora es? Son las tres menos cuarto.
- Cat este ora? E 3 fara un sfert.
MySQL Alias si functii

Last accessed pages

  1. Parcurgere Array secvential si asociativ (1588)
  2. PHP OOP - Clase, Obiecte, constructor (5102)
  3. Scripturi JavaScript (3639)
  4. Download carti electronice si programe pentru Limba Engleza (43198)
  5. Titluri, Paragrafe, Un nou rand, Linie orizontala (32360)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (767)
  2. Exercitii engleza - English Tests and exercises - Grammar (596)
  3. Prezentul simplu si continuu - Present Tense Simple and Continuous (587)
  4. Gramatica limbii engleze - Prezentare Generala (580)
  5. Prezentul simplu - Exercitii si teste incepatori (504)