V dnešnej lekcii:
* Práca s číslami
* Funkcia SUM
* Zálohovanie a obnova dát
* Prideľovanie práv
Práca s číslami
Na prácu s číslami nám MySQL ponúka niekoľko základných aritmetických operácií.
Poďme si ich zopár názorne ukázať na našej tabuľke zamestnanci (ktorú sme v minulej lekcií vytvorili).
mysql> select*from zamestnanci;
Odpoveď servera:
+----------------+---------+------------+----+
| typ | zarobok | mesto | ID |
+----------------+---------+------------+----+
| Admin | 10000 | Bratislava | 1 |
| Programator | 15000 | Praha | 2 |
| Webmaster | 20000 | Brno | 3 |
| Grafik | 12500 | Trnava | 4 |
| Tvorca_Stranok | 9500 | Kosice | 5 |
+----------------+---------+------------+----+
5 rows in set (0.02 sec)
Ako vidíme, nachádza sa tu stĺpec „zarobok“, v ktorom sa nachádzajú číselné hodnoty.
Teraz si vypíšeme všetky typy povolania, ktoré majú zárobok nižší, nanajvýš rovný, 13 000.
Použijeme na to tento zápis.
mysql> SELECT typ,zarobok FROM zamestnanci WHERE zarobok <=13000;
Odpoveď servera:
+----------------+---------+
| typ | zarobok |
+----------------+---------+
| Admin | 10000 |
| Grafik | 12500 |
| Tvorca_Stranok | 9500 |
+----------------+---------+
3 rows in set (0.02 sec)
Tento výraz najprv vyberie stĺpce typ a zarobok, následne nastavujeme podmienku WHERE, ktorá pomocou operátorov „menší alebo rovný“ vyberie všetky záznamy a prevedie podmienku menší alebo rovný 13 000.
Funkcia SUM
Funkcia SUM nám ponúka prevádzať štítenie na dátach sčítacie operácie.
Syntaxa je:
SELECT SUM(názov_stlpca) FROM meno_tabulky;
Teraz si spočítame, aký je celkový zárobok v stĺpci „zarobok“.
mysql> SELECT SUM(zarobok) FROM zamestnanci;
Odpoveď servera:
+--------------+
| SUM(zarobok) |
+--------------+
| 67000 |
+--------------+
1 row in set (0.05 sec)
Zálohovanie a obnova dát
Jednou z najdvoležitejších vecí pri tvorbe databáz je jej pravidelné zálohovanie. Buď to celých datábaz, alebo len potrebných tabuliek.
K tomuto účelu slúži mysqldump, ktorý dokáže zálohovať naše databázi. Tento nástroj je spúšťaní v príkazovom riadku.
Takže najprv si spustíme príkazový riadok (Štart-Spustiť-cmd). V prvom rade sa musíme dostať do adresára mysql/bin, v ktorom je naša potrebná ulitka pre zálohovanie mysqldump.
Syntaxa pre zálohovanie celej databázi je:
mysqldump meno_databazy > databaza.sql
Syntaxa pre zálohovanie tabuľky je:
mysqldump meno_databazy nazov_tabulky > tabulka.sql
Teraz sa nachádzame v príkazovom riadku a v adresári mysql/bin. A zálohujeme si našu databázu „skuska“ nasledovne:
C:\mysql\bin>mysqldump skuska > skuska.sql
Pokiaľ nám nevyhodilo žiadnu chybu ani hlášku, tak sme si počínali dobre a náš výsledok by mal vyzerať takto:
-- MySQL dump 8.22
--
-- Host: localhost Database: skuska
---------------------------------------------------------
-- Server version 3.23.51-nt
--
-- Table structure for table 'programovanie'
--
CREATE TABLE programovanie (
Pascal varchar(15) default NULL,
php varchar(20) default NULL,
mysql varchar(30) default NULL,
CSS varchar(20) default NULL,
html varchar(30) default NULL,
datum date default NULL,
ID int(11) NOT NULL auto_increment,
ASPX varchar(20) default NULL,
PRIMARY KEY (ID)
) TYPE=MyISAM;
--
-- Dumping data for table 'programovanie'
--
INSERT INTO programovanie VALUES (NULL,'Programovanie v PHP','Datab zy',NULL,'Tvorba str nok','2005-12-11',1,NULL);
INSERT INTO programovanie VALUES (NULL,'Programovanie v PHP','Datab zy',NULL,'Tvorba str nok','2005-12-11',2,NULL);
INSERT INTO programovanie VALUES (NULL,'sessions','SQL',NULL,'Meta tagy','2006-01-29',4,NULL);
INSERT INTO programovanie VALUES (NULL,'PHP5','INSERT',NULL,'Tag BODY','2006-01-29',5,NULL);
INSERT INTO programovanie VALUES (NULL,'$premena','WHERE',NULL,'Tag P','2006-01-29',6,NULL);
--
-- Table structure for table 'zamestnanci'
--
CREATE TABLE zamestnanci (
typ varchar(20) default NULL,
zarobok int(10) default NULL,
mesto varchar(20) default NULL,
ID int(11) NOT NULL auto_increment,
PRIMARY KEY (ID)
) TYPE=MyISAM;
--
-- Dumping data for table 'zamestnanci'
--
INSERT INTO zamestnanci VALUES ('Admin',10000,'Bratislava',1);
INSERT INTO zamestnanci VALUES ('Programator',15000,'Praha',2);
INSERT INTO zamestnanci VALUES ('Webmaster',20000,'Brno',3);
INSERT INTO zamestnanci VALUES ('Grafik',12500,'Trnava',4);
INSERT INTO zamestnanci VALUES ('Tvorca_Stranok',9500,'Kosice',5);
Súbor skuska.sql sa náchádza v adresáry bin.
Niekedy sa môžete stretnúť aj s inou syntaxou zálohovania databáz. Záleží to na verzií mysql a aj mysqldump-u. Spomeniem tie, ktoré sa tiež dosť často používajú.
$ mysqldump databaza > databaza.sql
% mysqldump databaza > databaza.sql
Obnova dát zo zálohy je veľmi jednoduchá namiesto znaku „>“ sa použije len opačný znak „<“.
C:\mysql\bin>mysqldump skuska < skuska.sql
Prideľovanie práv
Prideľovanie práv v MySQL má dosť významnú úlohu, nakoľko si môžete nastaviť práva ako root, čiže inými slovami môžete robiť všetko.
Syntaxa je:
GRANT typ_opravnenia ON {*.* | * | nazov_databazy.tabulky} TO účet IDENTIFIED BY password REQUIRE volba_zabespečenia WITH volba_udelovania_prav;
Zoznam všetkých privilégií:
Všetky privilégia sú uložené v databáze mysql v tabuľke user. Teraz si pridelím všetky (ALL) práva pre užívateľa martin@localhost:
mysql> GRANT ALL ON *.* TO martin@localhost IDENTIFIED BY 'tajneheslo';
Odpoveď servera:
Query OK, 0 rows affected (0.16 sec)
Pokiaľ by sme chceli prideliť právo len na prezeranie tabuliek, použili by sme nasledujúci zápis:
mysql> GRANT Select ON *.* TO martin@localhost IDENTIFIED BY 'tajneheslo';
Odpoveď servera:
Query OK, 0 rows affected (0.01 sec)
Tento zápis by sa tiež mohol zapísať aj bez príkazu GRANT:
mysql>INSERT INTO user VALUES('localhost', 'meno_uživatela',PASSWORD('heslo'), 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N');
Písmená N a Y znamenajú no a yes a idú v poradí od 1 až po 14 ako sme mohli vidieť na obrázku.
Pre zavedenia nového uživatela je potrebné potvrdiť práva príkazom FLUSH PRIVILEGES:
mysql> FLUSH PRIVILEGES;
A to by bolo asi tak všetko, s čím som vás chcel oboznámiť ohľadom databázového programovania v jazyku SQL.
V ďalšej lekcii („poslednej“) si ukážeme rôzne zaujímavé funkcie, ktoré sa dajú robiť v MySQL (ako je napr. kalkulačka, práca s časom a dátumom a rôznych funkcií pre prácu s textovými reťazcami).