MySQL osnovne naredbe za administraciju baze podataka - I. dio


Baza podataka je strukturirani skup podataka pohranjenih elektronički. Pojam baze podataka bio je poznat našim precima još dok nije bilo računala, međutim stvaranje i održavanje takve baze podataka bio je vrlo naporan posao. U ručnoj bazi podataka, recimo od 100 stranica, ako morate pretraživati sve zaposlenike čija je plaća manja od 10k, zamislite koliko bi to bilo teško, .

U današnjem svijetu jednostavno ne možete pobjeći od baze podataka. Upravo sada milijuni baza podataka rade diljem svijeta za pohranjivanje i dohvaćanje podataka svake vrste, bilo da se radi o strateškim podacima, podacima o zaposlenicima ili web tehnologijama.

Baza podataka često se naziva pozadinskim procesom jer nije vidljiva krajnjem korisniku niti krajnji korisnik izravno komunicira s bazom podataka. Oni rade na front-end procesu, tj. PHP, VB, ASP.NET, itd. i traže od front end-a da radi s bazom podataka u pozadini.

Dostupno je nekoliko poslužitelja baze podataka i klijenata kao što su Oracle, MySQL, MySQLi, MariaDB, MongoDB itd. Sintaksa svih ovih je više ili manje isto. Savladati jedan znači stjecanje kontrole nad većinom njih, a učenje upita baze podataka vrlo je jednostavno i zabavno.

Počnimo s jednostavnim upitima u bazi podataka. Koristit ćemo MySQL koji dolazi u paketu s većinom Linux distribucija prema zadanim postavkama, možete ga instalirati ručno iz repozitorija, ako nije instaliran prema zadanim postavkama u vašem slučaju.

Pa, upit baze podataka jednostavan je dio koda koji se šalje bazi podataka kako bi se dobio prilagođeni i pročišćeni rezultat, prema potrebi.

Instalirajte MySQL bazu podataka

Upotrijebite “yum” ili “apt” upravitelj paketa za instaliranje MySQL baze podataka.

yum install mysql mysql-client mysql-server  (on Yum based Systems)

apt-get install mysql mysql-client mysql-server (on Apt based Systems)
Pokrenite MySQL

Pokrenite uslugu baze podataka MySQL kao:

service mysqld start
or
service mysql start

Instaliranje MySQL baze podataka odvest će vas do konfiguracije gdje se od vas traži da postavite administratorsku lozinku, itd. Kada završite s instalacijom i pokretanjem poslužitelja idite na svoj MySQL upit.

mysql -u root -p

Zamijenite root svojim konfiguriranim korisničkim imenom i unesite lozinku kada se to od vas zatraži, ako je vjerodajnica za prijavu ispravna, bit ćete na svom MySQL< odmah u tren oka.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 195 

Server version: 5.5.31-0+wheezy1 (Debian) 

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. 
Other names may be trademarks of their respective owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Sada je izvršavanje upita na ovaj upit vrlo poučno i zabavno.

Stvorite bazu podataka tecmint
mysql> create database tecmint ;
Query OK, 1 row affected (0.02 sec) 

mysql>

Napomena: javlja da je upit točan, znači da je baza podataka stvorena. Možete potvrditi svoju novostvorenu bazu podataka kao.

mysql> show databases; 
+--------------------+
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| tecmint            | 
| test               | 
+--------------------+ 
9 rows in set (0.00 sec) 
mysql>

Napomena: Uočite svoju bazu podataka u gornjem izlazu.

Odaberite Baza podataka

Sada trebate odabrati bazu podataka za rad na njoj.

mysql> use tecmint;
Database changed
mysql>
Stvorite tablice u MySQL-u

Ovdje ćemo stvoriti tablicu recimo “minttec” s tri polja kao što su:

mysql> CREATE TABLE minttec (
    -> id Int(3), 
    -> first_name Varchar (15), 
    -> email Varchar(20) 
    -> ); 
Query OK, 0 rows affected (0.08 sec) 
mysql>

Napomena: Gornji upit kaže OK što znači da je tablica stvorena bez greške. Za provjeru tablice pokrenite upit u nastavku.

mysql> show tables; 
+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| minttec           | 
+-------------------+ 

1 row in set (0.00 sec) 

mysql>

Stvari za sada idu dobro. Da! Možete vidjeti stupce koje ste izradili u tablici “minttec” kao:

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+ 
3 rows in set (0.00 sec)

mysql>

Bila je to ni manje ni više nego čarolija. U svakom slučaju reći ću vam o vrstama deklaracija i njihovom značenju.

  1. Int je cijeli broj
  2. Varchar je znak promjenjive duljine kako je definirano. Vrijednost iza Type je duljina polja do koje može pohraniti podatke.

U redu, sada moramo dodati stupac recimo 'prezime' nakon stupca 'ime'.

mysql> ALTER TABLE minttec ADD last_name varchar (20) AFTER first_name; 
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

Sada to potvrdite u svojoj tablici.

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| last_name  | varchar(20) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+ 

4 rows in set (0.00 sec) 

mysql>
Dodaj stupac u MySQL

Sada ćemo dodati stupac s desne strane, recimo stupac 'država' s desne strane e-pošte.

mysql> ALTER TABLE minttec ADD country varchar (15) AFTER email; 
Query OK, 0 rows affected (0.16 sec) 
Records: 0  Duplicates: 0  Warnings: 0 

mysql>

Provjerite gornji upit za umetanje stupaca.

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| last_name  | varchar(20) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
| country    | varchar(15) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec) 

mysql>
Umetni vrijednosti u polje

Što je s umetanjem vrijednosti u polje?

mysql> INSERT INTO minttec VALUES ('1' , 'Ravi' , 'Saive' , '[email ' , 'India' );
Query OK, 1 row affected (0.02 sec) 

mysql>

Što kažete na umetanje više od 1 vrijednosti odjednom u gornjoj tablici.

mysql> INSERT INTO minttec VALUES ('2' , 'Narad' , 'Shrestha' , '[email ' , 'India' ), ('3' , 'user' , 'singh' , '[email ' , 'Aus' ), ('4' , 'tecmint' , '[dot]com' , '[email ' , 'India' );
Query OK, 3 rows affected (0.05 sec) 
Records: 3  Duplicates: 0  Warnings: 0

Provjerite gornji unos.

mysql> select * from minttec; 
+------+------------+-----------+-------------------+---------+ 
| id   | first_name | last_name | email             | country | 
+------+------------+-----------+-------------------+---------+ 
|    1 | Ravi	    | Saive     | [email  | India   | 
|    2 | Narad      | Shrestha  | [email      | India   | 
|    3 | user       | singh     | [email       | Aus     | 
|    4 | tecmint    | [dot]com  | [email  | India   | 
+------+------------+-----------+-------------------+---------+ 

4 rows in set (0.00 sec)

mysql>
Brisanje vrijednosti u polju

Recimo da je treći unos u gornjem izlazu nevažeći i da moramo izbrisati treći unos.

mysql> DELETE FROM minttec WHERE id = 3;

Query OK, 1 row affected (0.02 sec)

Provjerite gornju operaciju.

mysql> select * from minttec;

+------+------------+-----------+-------------------+---------+ 
| id   | first_name | last_name | email             | country | 
+------+------------+-----------+-------------------+---------+
|    1 | Ravi       | Saive     | [email  | India   | 
|    2 | Narad      | Shrestha  | [email      | India   | 
|    4 | tecmint    | [dot]com  | [email  | India   | 
+------+------------+-----------+-------------------+---------+
3 rows in set (0.00 sec)
Ažuriraj vrijednosti u polju

ID (=4) treba urediti.

mysql> UPDATE minttec SET id = 3 WHERE first_name = 'tecmint'; 
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Potvrdite gornji upit.

mysql> UPDATE minttec SET id = 3 WHERE first_name = 'tecmint'; 
Query OK, 1 row affected (0.02 sec) 
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Napomena: Gornji upit, kako je izveden, nije dobra ideja. Promijenit će ID u '4' gdje god je prvo ime 'tecmint'. Uvijek je dobra ideja koristiti više od jednog stupca s klauzulom where kako biste dobili minimalnu pogrešku, kao:

mysql> UPDATE minttec SET id = 6 WHERE first_name = 'tecmint'AND last_name = '[dot]com'; 
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>
Izbriši stupac u MySQL-u

Neka trebamo izbaciti (izbrisati) stupac za koji mislimo da nije važan, recite ovdje 'država'.

mysql> ALTER TABLE minttec drop country; 
Query OK, 3 rows affected (0.15 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql>

Provjerite tablicu.

mysql> select * from minttec; 

+------+------------+-----------+-------------------+ 
| id   | first_name | last_name | email             | 
+------+------------+-----------+-------------------+ 
|    1 | Ravi       | Saive     | [email  | 
|    2 | Narad      | Shrestha  | [email      | 
|    6 | tecmint    | [dot]com  | [email  | 
+------+------------+-----------+-------------------+
3 rows in set (0.00 sec) 

mysql>
Preimenuj tablicu u MySQL

Ne mislite li da naziv našeg stola "minttec" nije previše relevantan. Što kažete na promjenu u tecmint_table.

mysql> RENAME TABLE minttec TO tecmint_table; 
Query OK, 0 rows affected (0.03 sec)

mysql>
Navedite sve tablice

Pogledajte sve tablice u trenutnoj bazi podataka.

mysql> show tables; 

+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| tecmint_table     | 
+-------------------+
1 row in set (0.00 sec) 

mysql>

Tablica je preimenovana. Sada napravite sigurnosnu kopiju gore navedene MySQL baze podataka, u jednom retku naredbe bez ikakvih sofisticiranih alata. Pokrenite donji kod na svom terminalu, a ne na mysql odzivniku.

mysqldump -u root -p tecmint > tecmint.sql

check the dumped file on your desktop which would have contents something like
-- MySQL dump 10.13  Distrib 5.5.31, for debian-linux-gnu (i686) --
-- Server version 5.5.31-0+wheezy1 -- 
Dump completed on 2013-09-02 12:55:37

Uvijek je dobra ideja održavati sigurnosnu kopiju MySQL baza podataka. Vraćanje sigurnosne kopije podataka MySQL ponovno je jednostavan redak koda koji morate pokrenuti na odzivniku terminala, a ne na upitu mysql.

No, pričekajte prvo ćemo izbrisati bazu podataka da provjerimo je li naše vraćanje savršeno.

Brisanje baze podataka
mysql> drop database tecmint; 
Query OK, 1 row affected (0.02 sec)

Provjerite bazu podataka 'tecmint' na vašem poslužitelju baze podataka.

mysql> show databases; 

+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| my_database        | 
| mysql              | 
| performance_schema | 
| phpmyadmin         | 
| sisso              | 
| test               | 
+--------------------+

7 rows in set (0.00 sec) 
mysql>

Sjajno! Baza podataka je izgubljena, ali ne trebamo brinuti, imamo sigurnosnu kopiju.

Vratite bazu podataka

Za vraćanje izgubljene baze podataka pokrenite sljedeću naredbu.

mysql -u root -p tecmint < tecmint.sql
Enter password:
ERROR 1049 (42000): Unknown database 'tecmint'

UPS! Pogreška, hej, nismo stvorili bazu podataka tecmint. Idite na svoj mysql prompt i stvorite bazu podataka 'tecmint'.

mysql> create database tecmint; 
Query OK, 1 row affected (0.00 sec) 

mysql>

Sada je vrijeme da pokrenete naredbu za vraćanje na odzivnik ljuske (strogo).

mysql -u root -p tecmint < tecmint.sql 
Enter password:

Provjerite svoju bazu podataka.

mysql> show databases; 

+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| tecmint            | 
| test               | 
+--------------------+ 
8 rows in set (0.00 sec)

Provjerite sadržaj baze podataka.

mysql> show tables from tecmint;

+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| tecmint_table     | 
+-------------------+ 
1 row in set (0.00 sec)

mysql>

Provjerite sadržaj svoje obnovljene tablice.

mysql> select * from tecmint_table; 

+------+------------+-----------+-------------------+ 
| id   | first_name | last_name | email             | 
+------+------------+-----------+-------------------+ 
|    1 | Ravi       | Saive     | [email  | 
|    2 | Narad      | Shrestha  | [email      | 
|    6 | tecmint    | [dot]com  | [email  | 
+------+------------+-----------+-------------------+

3 rows in set (0.00 sec)

Ovo definitivno nije kraj, obradit ćemo koncept primarnog ključa, stranog ključa, više tablica i izvršenih upita pomoću jednostavne PHP skripte u sljedećem dijelu članka.

Ne zaboravite nam reći kako ste se osjećali dok ste pregledavali članak. Vaše komentare jako cijenimo. Ostanite Zdravi i Usmjereni, ostanite povezani s Tecmintom.