Sunteți pe pagina 1din 5

COMENZI SI FUNCTII PENTRU MySql

/* Cum creem o Baza de Date: CREATE SCHEMA `numeDB` ;

/* creaza baza de date (schema)

/* se mai poate scrie si asa:


create schema numeDB ;

/* Cum creem un tabel si coloanele lui in baza de dare creata mai devreme: CREATE TABLE `numeDBincarevreisafacitabel`.`numeTabel` ( `numeColoana1` INT NOT NULL AUTO_INCREMENT , `numeColoana2` VARCHAR(45) NOT NULL , `numeColoana3` VARCHAR(45) NOT NULL , `numeColoana4` BIGINT NOT NULL , `numeColoana5` DATE NOT NULL , `numeColoana6` INT NULL , PRIMARY KEY (`numeColoana1`) , UNIQUE INDEX `numeColoana1_UNIQUE` (`numeColoana1` ASC) , UNIQUE INDEX `numeColoana4_UNIQUE` (`numeColoana4` ASC) ); /* comenturi pentru codul de mai sus:

/* (face acelasi lucru ca, codul de deasupra, chiar daca nu are ` apstrof ` inainte si dupa nume)
CREATE TABLE numeDBincarevreisafacitabel.numeTabel ( numeColoana1 INT NOT NULL AUTO_INCREMENT , numeColoana2 VARCHAR(45) NOT NULL , numeColoana3 VARCHAR(45) NOT NULL , numeColoana4 BIGINT NOT NULL , numeColoana5 DATE NOT NULL , numeColoana6 INT , PRIMARY KEY (numeColoana1) ,

UNIQUE INDEX numeColoana1_UNIQUE (numeColoana1 ASC) , UNIQUE INDEX numeColoana4_UNIQUE (numeColoana4) );

/* creaza tabel in baza de date specificata /* creaza coloana1 cu proprietaile ei /* creaza coloana2 cu proprietaile ei /* creaza coloana3 cu proprietaile ei /* creaza coloana4 cu proprietaile ei /* creaza coloana5 cu proprietaile ei /* creaza coloana6 cu proprietaile ei /* specifici care coloana sa fie Primary Key ... /* intr-un tabel doar o singura coloana poate fi /* PK si aceasta este automat UNIQUE /* specifici daca vrei ca coloana respectiva sa /* contina valori unice /* nu e necesar pentru coloana declarata PK

/* explicatii proprietati coloane: INT BIGINT SMALLINT TINYINT NOT NULL NULL

/* numar exact, intreg, cuprins intre: -2.147.483.648 si 2.147.483.647 (max 10 caractere incluzand si "-") /* numar exact, intreg, cuprins intre: -9.223.372.036.854.775.808 si 9.223.372.036.854.775.807 (max 20 /* caractere incluzand si "-") /* numar exact, intreg, cuprins intre: -32.768 si 32.767 (max 6 caractere incluzand si "-") /* numar exact, intreg, cuprins intre: 0 si 255 /* campul din coloana respectiva NU Trebuie sa fie gol /* campul din coloana respectiva poate sa fie gol, sa nu fie completat /* NU e nevoie sa fie declarat NULL ... daca nu-l declaram NULL, acesta va fi nul by default /* coloana respectiva se va completa singura pe fiecare rand, punand valoarea randului din /* urma +1 (daca coloana respectiva are acesata proprietate, nu este necesar sa o completam /* manual) /* campul din coloana respectiva poate fi completat cu 45 de caractere (literesi numere ... cred ca /* merg si semne) /* campul trebuie completat cu data in format yyyy-mm-dd (aaaa-ll-zz) /* stabilesti care coloana sa fie PK. intr-un tabel doar o singura coloana poate sa fie PK aceasta /* devenind automat UNIQUE /* stabilesti care coloana sa aibe continut unic in campuri. coloana care este declarata PK nu este /* necar sa o facem UNIQUE, pentru ca aceasta este deja unica

AUTO_INCREMENT

VARCHAR(45) DATE PRIMARY KEY UNIQUE INDEX

/* completarea tabelelor:

/*********************************************************************************************** /* /* toate cuvintele care se afla intre `acest apostrof (tasta de langa 1)` pot fi scrise fara `acesta` /* desemeni si volorile pot vi scrie fara 'ghilimele simple' daca aceste valori sint numere /* daca aceste valori sunt siruti de litere sau contin litere sau semne, se scriu intre 'ghilimele simple' /* de exemplu: /* INSERT INTO numeDB.numeTabel(numeColoana2,numeColoana3,numeColoana4,etc) VALUES (123,'valoare3', /* '1980-12-31',23424,'etc'); /* /***********************************************************************************************
/* adaugarea de randuri noi: INSERT INTO `numeDB`.`numeTabel` (`numeColoana2`,`numeColoana3`,`numeColoana4`,`numeColoana5`, `numeColoana6`) VALUES ('valoare2','valoare3','valoare4','valoare5','valoare6');

/* dupa cum se vede `numeColoana1` si 'valoare1' nu exista pentru ca acestea sunt declarate AUTO_INCREMENT

INSERT INTO numeDB.numeTabel (numeColana2,numeColana3,numeColana4,numeColana5) VALUES ('valoare2','valoare3','valoare4','valoare5');

/* sau daca vrei sa adaugi mai multe randuri odata poti scrie ca mai jos... conditia este ca numarul coloanelor sa fie egal cu numarul valorilor
INSERT INTO numeDB.numeTabel (numeColana2,numeColana3,numeColana4,numeColana5) VALUES ('valoare2','valoare3','valoare4','valoare5'), ('valoare22','valoare33','valoare44','valoare55');

/* dupa cu se poate vedea iar `numeColoana6` si 'valoare6' nu exista pentru ca acesta este declarat NULL deci nu este nevoie sa-l completam
/* modificarea datelor din campurile existente: UPDATE `numeDB`.`numeTabel` SET `numeColoana4`='NEWvaloare4' WHERE `numeColoana1`='valoare1'; update numeDB.numeTabel set numeColoana4='NEWvaloare4' where numeColoana1='valoare1';

/* se midifica in tabelul din baza de date in coloana 4 de pe randul cu "numarul curent" respectiv (PK)
/* stergerea unui rand dintr-un tabel: DELETE FROM `numeDB`.`numeTabel` WHERE `numeColoana1`='valoare1';

/* sterge din tabelul bazei de date, randul "valoare1" pe coloana1 (PK)

DELETE * FROM `numeDB`.`numeTabel`;

/* sterge toate randurile din tabelul mentionat din baza de date respectiva /***********************************************************************************
/* adaugarea de coloane noi intrun tabel, dupa ce acesta a fost completat prima data: ALTER TABLE `numeDB`.`numeTabel` ADD COLUMN `numeColoanaNEW` VARCHAR(45) NULL `numeUltimaColoana` ; AFTER

/* se adauga coloana noua dupa ultima coloana

ALTER TABLE `numeDB`.`numeTabel` ADD COLUMN `numeColoanaNEW` VARCHAR(45) NULL `numeColoanaOARECARE` ;

AFTER

/* se adauga coloana noua dupa o oarecare coloana dorita de noi (se poate observa ca nu difera de comanda de adugare coloana noua la urma)

ALTER TABLE `numeDB`.`numeTabel` ADD COLUMN `numeColoanaNEW` VARCHAR(45) NOT NULL `numeColoanaOarecare/Ultima` ;

AFTER

/* se poate observa ca la toate cele 3 exemple se trec si proprietatile pe care trebuie sa le aibe coloana noua ... in aczul nostru VARCHAR(45), NULL si NOT NULL

ALTER TABLE `numeDB`.`numeTabel` ADD COLUMN `numeColoanaNEW` VARCHAR(45) NOT NULL `numeColoanaOarecare/Ultima` , ADD UNIQUE INDEX `numeColoanaNEW_UNIQUE` (`numeColoanaNEW` ASC) ;

AFTER

/* daca se doreste ca noua coloana sa aibe valori unice se foloseste comanda ADD UNIQUE INDEX cand se creaza coloana noua /* !!! adaugarea proprietatii UNIQUE INDEX unei coloane existente sau creerea unei coloane noi cu aceasta proprietate ... necesita ca tabelul sa nu contina date !!!
/* modificarea proprietatilor une/unor coloane: ALTER TABLE `numeDB`.`numeTabel` CHANGE COLUMN `numeColoanaX` `numeColoanaX` VARCHAR(45) NOT NULL , CHANGE COLUMN `numeColoanaXX` `numeColoanaXX` VARCHAR(45) NULL;

/* am schimbat proprietatile coloanei X in NOT NULL si coloanei XX in NULL /* !!! coloanele NOT NULL trebuiesc declarate in momentul creerii sau cand tabelul este gol (fara date introduse) !!!
/* mutarea unei coloane inainte/dupa alta coloana: ALTER TABLE numeDB.numeTabel CHANGE COLUMN numeColoanaDeMutat numeColoanaDeMutat BIGINT(20) NOT NULL AFTER numeColoanaDupaCareVreiSaFie ;

/* muta coloanaDeMutat, cu toate proprietatile ei, dupa coloanCcareVreiSaFie

ALTER TABLE `numeDB`.`numeTabel` CHANGE COLUMN `numeColoanaDeMutat` `numeColoanaDeMutat` VARCHAR(45) NOT NULL FIRST;

/* coloana a fost mutata prima

ALTER TABLE `numeDB`.`numeTabel` CHANGE COLUMN `numeColoanaVechi` `numeColoanaNEW` VARCHAR(45) NOT NULL;

/* schimbarea numelui unei coloane


/* stergerea unei coloane dintr-un tabel care contine sau nu date: ALTER TABLE `numeDB`.`numeTabel` DROP COLUMN `numeColoana` ; ALTER TABLE `numeDB`.`numeTabel` DROP COLUMN `numeColoanaX` , DROP COLUMN `numeColoanaXX` ;

/* prima linie sterge doar coloana specificata, a 2-a linie sterge mai multe coloane (coloanele mentionate) /********************************************************************************** /* schimbarea numelui unui tabel din baza de date respectiva
ALTER TABLE `numeDB`.`numeTabel(vechi/existent)` RENAME TO `numeDB`.`numeTabelNEW` ;

/* stergerea unui Tabel din baza de date


drop table `numeDB`.`numeTabelDeSters`;

/* stergerea unei baze de date


drop schema `numeBD`;

/**********************************************************************************
/* cum vad ce am in baza de date ... cum citesc din baza de date: SELECT numeColoana1,numeColoana2,numeColoana3,etc FROM numeDB.numeTabel;

/* comanda aceasta iti afiseaza tot ce contine Coloana1, Coloana2, Coloana3 si etc din baza de date numeDB, din tabelul numeTabel

SELECT * FROM numeDB.numeTabel;

/* iti afiseaza tot ce contine tabelul numeTabel din baza de date numeDB /* e mai simplu decat sa stai sa scrii numele fiecarei coloane din tabel daca vrei sa vezi tot tabelul

SELECT * FROM numeDB.numeTabel WHERE numeColoana1 = 'valoareDorita' ;

/* iti afiseaza informatiile de toate randurile unde este regasit valoareDorita pe coloana numeColoana1 /* daca valoareDorita este un sir de caractere se foloseste '', daca este un numar, nu mai este nevoie de ''

SELECT * FROM numeDB.numeTabel WHERE numeColoana1 <= 4;

/* va afisa informatiile de toate randurile unde este regasit valoareDorita mai mica sau egala cu 4 pe coloana numeColoana1 /* sau daca este >= ... mai mare sau egala cu 4

SELECT * FROM asociatialocatari.proprietari WHERE nume='cristi' OR prenume='stoica' ;

/* imi va afisa radurile unde va gasi "cristi" la nume SAU "stoica" la prenume /* de exemplu imi va afisa randul lui Cristi Swad, Catalina Stoica si Cristi Stoica

SELECT * FROM asociatialocatari.proprietari WHERE nume='cristi' AND prenume='stoica' ;

/* imi va afisa DOAR randurile unde va gasi la nume "cristi" SI la prenume "stoica" /* adica doar randul lui Cristi Stoica

SELECT * FROM asociatialocatari.proprietari ORDER BY datanasterii ;

/* va afisa in ordine crescatoare (by default) randurile aranjate dupa DataNasterii

SELECT * FROM asociatialocatari.proprietari ORDER BY datanasterii DESC;

/* va afisa in ordine descrescatoare

SELECT * FROM asociatialocatari.proprietari ORDER BY datanasterii ASC;

/* va afisa in ordine crescatoare /**********************************************************************************


/* functii de genu COUNT, MAX, MIN, AVG, SUM: SELECT SUM(nrcrt) FROM asociatialocatari.proprietari;

/* va afisa suma vlorilor gasite pe coloana "nrcrt" din tabelul respectiv din baza de date

SELECT AVG(nrcrt) FROM asociatialocatari.proprietari;

/* va face media aritmetica a tuturor valorilor gasite pe coloana "nrcrt" /* exemplu (a+b+c+d+e)/5= ... sau (x+y+z+a+b+c+d)/7= /* rezultatul este afisat cu "," vircgula (zecimale) ---> cu 4 zecimale, chiar daca acestea sunt 0

SELECT MIN(nrcrt) FROM asociatialocatari.proprietari;

/* va afisa cea mai MICA valoare de pe coloana "nrcrt" din tabelul din baza de date respectiva

SELECT MAX(nrcrt) FROM asociatialocatari.proprietari;

/* va afisa cea mai MARE valoare de pe coloana "nrcrt" din tabelul din baza de date respectiva

SELECT COUNT(nrcrt) FROM asociatialocatari.proprietari;

/* va numara si afisa cate randuri sunt pe coloana "nrcrt" (sau pe orice alta coloana) din tabelul din baza de date respectiva /* mai poate fi scris si asa:
SELECT COUNT(*) FROM asociatialocatari.proprietari;