MySQL osnovne naredbe administracije baze podataka - I dio


Baza podataka je strukturirani skup podataka pohranjenih elektronski. Koncept baze podataka bio je poznat našim precima i kada nije bilo računara, međutim kreiranje i održavanje takve baze podataka je bio veoma zamoran posao. U ručnoj bazi podataka recimo od 100 stranica, ako morate tražiti sve zaposlenike čija je plata bila manja od 10.000, samo pomislite koliko bi to bilo teško, onda .

U današnjem svijetu jednostavno ne možete pobjeći od baze podataka. Trenutno milioni baza podataka rade širom svijeta kako bi pohranili i dohvatili podatke svake vrste, bilo da se radi o strateškim podacima, evidenciji zaposlenih ili web tehnologijama.

Baza podataka se često naziva pozadinskim procesom, jer nije vidljiva krajnjem korisniku niti Krajnji korisnik direktno komunicira sa bazom podataka. Oni rade na front-end procesu, tj., PHP, VB, ASP.NET, itd. i traže od front enda da se bavi bazom podataka u back-end.

Postoji nekoliko dostupnih servera i klijenata baze podataka kao što su Oracle, MySQL, MySQLi, MariaDB, MongoDB itd. Sintaksa svih ovih je više ili manje isto. Ovladavanje jednim znači stjecanje kontrole nad većinom njih, a učenje upita baze podataka je vrlo lako i zabavno.

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

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

Instalirajte MySQL bazu podataka

Koristite “yum” ili “apt” menadžer paketa da instalirate MySQL bazu 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 MySQL uslugu baze podataka kao:

service mysqld start
or
service mysql start

Pa, instaliranje MySQL baze podataka će vas odvesti do konfiguracije gdje se od vas traži da postavite admin lozinku, itd. Kada završite sa instalacijom i pokretanjem servera idite na svoj MySQL upit.

mysql -u root -p

Zamijenite root sa svojim konfiguriranim korisničkim imenom i unesite lozinku kada se od vas zatraži, ako je akreditiv za prijavu ispravan, bit ćete na svom MySQL< u treptaju vaših očiju.

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 postavljanje upita na ovom upitu vrlo poučno i zabavno.

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

mysql>

Napomena: Izvještava da je upit bio ispravan, znači da je baza podataka kreirana. Svoju novokreiranu bazu podataka možete provjeriti kao.

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

Napomena: Obratite pažnju na vašu bazu podataka u gornjem izlazu.

Odaberite Baza podataka

Sada morate odabrati bazu podataka za rad na njoj.

mysql> use tecmint;
Database changed
mysql>
Kreirajte tabele u MySQL

Ovdje ćemo kreirati tabelu koja kaže “minttec” sa tri polja kao:

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 tabela kreirana bez greške. Da biste potvrdili tabelu, pokrenite upit ispod.

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

1 row in set (0.00 sec) 

mysql>

Stvari idu dobro do sada. Da! Kolone koje ste kreirali u tabeli “minttec” možete pogledati 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>

To je bila ništa manje nego magija. U svakom slučaju, reći ću vam o vrstama deklaracija i njihovom značenju.

  1. Int je cijeli broj
  2. Varchar je char promjenjive dužine kako je definirano. Vrijednost nakon Type je dužina polja do koje može pohraniti podatke.

U redu, sada trebamo dodati kolonu koja kaže 'prezime' iza kolone 'ime_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, provjerite to u svojoj tabeli.

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>
Dodajte kolonu u MySQL

Sada ćemo dodati kolonu desno, recimo kolonu „zemlja“ desno od 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 kolone.

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>
Umetnite vrijednosti u polje

Šta je sa umetanjem vrijednosti u polje?

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

mysql>

Šta kažete na umetanje više od 1 vrijednosti odjednom u gornju tabelu.

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 gore navedeno umetanje.

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>
Izbrišite 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žurirajte 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 je prvo ime "tecmint". Uvijek je dobra ideja koristiti više od jedne kolone s klauzulom gdje da biste dobili minimalnu grešku, kao što je:

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šite kolonu u MySQL

Neka treba da izbacimo (izbrišemo) kolonu za koju mislimo da nije od značaja, recimo ovde „zemlja“.

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

mysql>

Proverite tabelu.

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>
Preimenujte tabelu u MySQL

Ne mislite li da naš naziv tabele “minttec” nije mnogo relevantan. Kako bi bilo da ga promijenite u tecmint_table.

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

mysql>
Navedite sve tabele

Pogledajte sve tabele u trenutnoj bazi podataka.

mysql> show tables; 

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

mysql>

Tabela je preimenovana. Sada napravite rezervnu kopiju gornje MySQL baze podataka, u jednoj liniji komande bez ikakvog sofisticiranog alata. Pokrenite donji kod na svom terminalu, a ne na mysql promptu.

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 opet je jednostavna linija koda koju trebate pokrenuti na promptu vašeg terminala, a ne na vašem mysql promptu.

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

Izbrišite bazu podataka
mysql> drop database tecmint; 
Query OK, 1 row affected (0.02 sec)

Provjerite ima li baze podataka 'tecmint' na vašem serveru baze podataka.

mysql> show databases; 

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

7 rows in set (0.00 sec) 
mysql>

Odlično! Baza podataka je izgubljena, ali ne trebamo brinuti, imamo rezervnu kopiju.

Vratite bazu podataka

Da biste vratili izgubljenu bazu podataka, pokrenite sljedeću naredbu.

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

OOPS! Greška, hej nismo kreirali bazu podataka tecmint. Stoga idite na vaš mysql prompt i kreirajte 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 vašu shell prompt (strogo).

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

Potvrdite svoju bazu podataka.

mysql> show databases; 

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

Provjeriti 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 vaše 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, pokriti ćemo koncept primarnog ključa, stranog ključa, više tabela i pokrenutih upita koristeći jednostavnu PHP skriptu u sljedećem dijelu članka.

Ne zaboravite da nam kažete kako ste se osjećali dok ste prolazili kroz članak. Vaši komentari su visoko cijenjeni. Ostanite Zdravi i Sa nama, ostanite povezani na Tecmint.