Curs Php-mysql

1. Expresii si functii

SQL va permite sa formati expresii folosind valori din coloane, valori literale si functii. Ca si în PHP, puteti controla ordinea de evaluare a expresiilor SQL folosind paranteze pentru a delimita sub-expresiile care trebuie evaluate mai intai.
Tabelele urmatoare rezuma functiile MySQL frecvent folosite

Functii matematice frecvent folosite în MySQL
Functie Descriere
abs(x) - Valoarea absoluta a lui x
atan(x) - Arc tangenta lui x, unde x este dat în radiani
atan2(y,x) - Arc tangenta lui y/x, unde semnele ambelor argumente sunt folosite pentru a determina cadranul cercului trigonometric
ceiling(x) - Cel mai mic întreg care nu este mai mic decât x
cos(x) - Cosinusul lui x, unde x este exprimat în radiani
exp(x) - Baza logaritmilor naturali (e) ridicata la puterea x
floor(x) - Cel mai mare întreg care nu este mai mare decât x
log (x) - Logaritmul natural al lui x
mod(x,y) - Restul împartirii x/y
power(x,y) - x la puterea y
rand(x) - Valoare aleatoare cu virgula, mai mare sau egala cu zero si mai mica decât unu
sign(x) - Valoarea -1, 0 sau 1, dupa cum valoarea lui x este negativa, zero sau pozitiva
sin(x) - Sinusul lui x, unde x este dat în radiani
sqrt(x) - Radacina patrata a lui x
tan(x) - Tangenta lui x, unde x este dat în radiani

\Functii sir frecvent folosite în MySQL
Functie Descriere
ascii(s) - Codul ASCII al octetului celui mai din stânga al sirului s
char(n) - Caracter al carui cod ASCII este n
concat(s1, s2) - Concatenarea sirurilor s1 si s2; cu alte cuvinte, s2 atasat la s1
lcase(s) - Sirul s, unde toate majusculele au fost transformate în minuscule
left(s,n) - Primii n octeti ai sirului s, de la stânga la dreapta
length(s) - Numarul octetilor din sirul s
locate(s1, s2) - Pozitia primei aparitii a lui s1 în s2, respectiv zero daca s1 nu se gaseste în s2
ltrim(s) - Sirul s, cu eliminarea spatiilor de început
right(s,n) - Primii n octeti din sirul s, de la dreapta la stânga
rpad(s1,n,s2) - Sirul s1, completat la dreapta cu sirul s2 pâna când rezultatul are lungimea n
rtrim(s) - Sirul s, cu spatiile finale eliminate
space(n) - Un sir alcatuit din n spatii
substring(s,m,n) - Sub-sir al lui s, care începe de la pozitia m si care are lungimea n
trim(s) - Sub-sir al lui s, cu spatiile initiale si finale eliminate
ucase(s) - Sirul s, cu toate minusculele convertite în majuscule

Functii MySQL de data si ora frecvent utilizate
Functie Descriere
dayofmonth(d) - Ziua din luna a datei specificate (1-31)
dayofweek(d) - Ziua din saptamâna a datei specificate (1 =duminica, 2=luni,…, 7=sâmbata)
dayofyear(d) - Ziua din an a datei specificate (1-366)
hour(t) - Partea orelor din momentul de timp mentionat (0-23)
minute(t) - Partea minutelor din momentul de timp mentionat (0-59)
month(d) - Luna datei specificate (1-12)
now() - Data si ora curenta
second(t) - Partea secundelor din momentul de timp mentionat (0-59)
week(d) - Saptamâna din an a datei specificate (0-53)
year(d) - Partea anilor din momentul de timp mentionat (1000-9999)

Functii specifice MySQL
Functie Descriere
database() - Returneaza numele bazei de date deschise
get_lock(s,n) - Obtine o blocare a bazei de date
md5(s) - Returneaza o suma de control a sirului s, calculata dupa algoritmul MD5
password(s) - Returneaza sirul s, criptat folosind algoritmul aplicat de MySQL parolei
release_lock(s) - Anuleaza blocarea unei baze de date
user() - Returneaza numele utilizatorului curent
version() - Returneaza numarul versiunii MySQL

2. Uniri

SQL va permite sa obtineti accesul la mai multe tabele într-o singura interogare, în general, aceasta operatie se executa pentru ca datele dintr-un tabel sa poata fi folosite cu date din alt tabel.
De exemplu, sa presupunem ca baza de date este asemanatoare celei prezentate mai jos, unde avem doua tabele, primul numit "persoane" iar cel de-al oilea numit "meserii", si o relatie cheie externa - cheie primara (persoanaid) asociaza cele doua tabelele.

persoanaid nume AnNastere
001 George Washington 1732
002 John Adams 1735
003 Thomas Jefferson 1743
meserie persoanaid
Arhitect 003
General 001
Filozof 002
Sa examinam urmatoarea interogare:
SELECT nume, meserie FROM persoane, meserii
    WHERE persoane.persoanaid=meserii.persoanaid;
- Constructiile "persoane.persoanaid" si "meserii.persoanaid" se numesc "nume definite", prima se refera la coloana "persoanaid" din tabelul "persoane", iar a doua se refera la coloana "persoanaid" a tabelului "meserii".
- Clauza WHERE asigura o echivalenta între valoarea cheii externe din tabelul "meserii" cu aceea a cheii primare din tabelul "persoane", (în absenta clauzei WHERE, se va stabili o corespondenta între fiecare rând din tabelul cu meserii si fiecare rând din tabelul cu persoane; un asemenea rezultat, numit "produs cartezian", contine în general multe rânduri - majoritatea nedorite - si ca atare trebuie evitat).
- Rezultatul interogarii de mai sus este un raport care indica numele si meseria asociata fiecarui angajat prezentat în tabelul "meserii".
O interogare ca aceasta, care combina date din mai multe tabele, se numeste "unire". Sunt posibile si uniri mai complexe, care implica trei sau mai multe tabele.
Daca un rând dat din tabelul principal (aici "persoane") nu are nici un rând asociat în tabelul cu detalii (aici "meserii"), rândul respectiv din tabelul principal nu va aparea în datele de iesire ale unei uniri. In cazul acesta, pentru a determina aparitia acestei înregistrari din tabelul principal, se poate folosi o categorie speciala de unire, cunoscuta sub numele de "unire la stânga" sau "unire exterioara la stânga". Iata un exemplu:
SELECT nume, meserie FROM persoane
    LEFT JOIN meserii
    ON persoane.persoanaid=meserii.persoanaid;
Aceasta interogare va afisa toate persoanele, indiferent daca acestea au sau nu asociata o meserie. Persoanele fara o meserie au specificatia NULL în coloana corespunzatoare meseriei.

3. Executarea instructiunilor dintr-un fisier extern

Comenzile MySQL pot fi scrise si intr-un fisier extern (editat de exemplu, in Windows, cu Notepad), acest fisier se numeste "script de shell".
Scriptul din fisierul extern poate fi executat din fereastra de comanda MySQL (MySQL Command Line Client), utilizand comanda:

Unde "nume_fisier" este calea si numele fisierului in care se afla scriptul de shell.
De exemplu, scriem urmatoarele comenzi intr-un fisier numit "lucru.txt" pe care-l salvam in directorul "C:/teste".
CREATE DATABASE lucrudb;
USE lucrudb;
GRANT ALL ON lucrudb.* TO php IDENTIFIED BY 'mypass';

CREATE TABLE angajat (
      angajatnr SMALLINT PRIMARY KEY,
      nume VARCHAR(50),
      ore SMALLINT,
      departament CHAR(16),
      salariu DECIMAL(8,2),
      data_angajare DATE);
INSERT INTO angajat (
      angajatnr,
      nume,
      ore,
      departament,
      salariu,
      data_angajare)
    VALUES (
      1,
      'George Washinton',
      40,
      'Contabilitate',
      500.00,
      '2007-10-04'),
      ( 2,
      'John Adams',
      35,
      'Marketing',
      1000.00,
      '2007-10-11'),
      ( 3,
      'Thomas Jefferson washinton',
      20,
      'Vanzari',
      1300.00,
      '2007-07-02');
- Pentru a executa acest script, scriem in fereastra de comanda MySQL: SOURCE C:/teste/lucru.txt
MySQL va executa comenzile din script ca si cum acestea ar fi scrise direct in linia de comanda.
Exemplul de mai sus va crea o baza de date noua, numita "lucrudb", va acorda utilizatorului "php" toate drepturile in utilizarea acestei baze de date, dupa care va crea tabelul "angajat", cu 6 coloane ("angajatnr", "nume", "ore", "departament", "salariu", "data_angajare") in care vor fi adaugate trei linii.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag se foloseste pentru a crea o caseta de adaugare text?
<form> <input> <div>
<input type="text" name="a_name" value="val" />
Ce proprietate CSS se foloseste pentru a afisa textul cu majuscule-mici?
display font-variant font-style
h3 {
  font-variant: small-caps;
}
Ce instructiune afiseaza o fereastra cu un mesaj in ea?
for() Date() alert()
var msg = "Viziteaza CoursesWeb.net";
alert(msg);
Indicati codul PHP prin care se obtine IP-ul utilizatorului.
$_SERVER["HTTP_USER_AGENT"] $_SERVER["REMOTE_ADDR"] $_GET[]
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
Cum se traduce cuvantul "actually"?
actual de fapt acum
He actually came on time.
- De fapt, el a venit la timp.
Cum se traduce expresia: "Hace buen tiempo"?
Face timp E vreme frumoasa Drum bun
Hoy hace buen tiempo.
- Astazi e vreme frumoasa.
Baze de date SQL 3

Last accessed pages

  1. Download carti electronice si programe pentru Limba Engleza (43370)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (268905)
  3. Interogatia (2367)
  4. Articolul din limba engleza - The article (68828)
  5. Prezentul simplu - Exercitii si teste incepatori (68318)

Popular pages this month

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