Vyhledávání na webu

Základní příkazy pro správu databáze MySQL – část I


Databáze je strukturovaná sada dat uložená elektronicky. Pojem databáze znali naši předkové ještě v době, kdy neexistovaly počítače, ale vytvoření a údržba takové databáze byla velmi zdlouhavá práce. V manuální databázi řekněme o 100 stránkách, pokud musíte hledat všechny zaměstnance, jejichž plat byl nižší než 10 000, jen si pomyslete, jak by to bylo těžké, pak .

V dnešním světě prostě nemůžete uniknout z databáze. Právě nyní miliony databází po celém světě pracují na ukládání a načítání dat všeho druhu, ať už jde o strategická data, záznamy zaměstnanců nebo webové technologie.

Databáze je často nazývána jako back-end proces, protože není viditelná pro koncového uživatele ani Koncový uživatel neinteraguje přímo s databází. Pracují na front-end procesu viz., PHP, VB, ASP.NET atd. a žádají frontend, aby se zabýval databází v back-endu.

K dispozici je několik databázových serverů a klientů jako Oracle, MySQL, MySQLi, MariaDB, MongoDB atd. Syntaxe všech těchto je více nebo méně stejný. Zvládnout jeden znamená získat kontrolu nad většinou z nich a učit se dotazy z databáze je velmi snadné a zábavné.

Začněme jednoduchými dotazy na databázi. Budeme používat MySQL, který je standardně dodáván s většinou distribucí Linuxu, můžete jej nainstalovat ručně z úložiště, pokud ve vašem případě není nainstalováno ve výchozím nastavení.

Databázový dotaz je jednoduchý kus kódu, který se odešle do databáze, aby získal vlastní a upřesněný výsledek podle potřeby.

Nainstalujte databázi MySQL

K instalaci databáze MySQL použijte správce balíčků „yum“ nebo „apt“.

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

apt-get install mysql mysql-client mysql-server (on Apt based Systems)
Spusťte MySQL

Spusťte databázovou službu MySQL jako:

service mysqld start
or
service mysql start

Instalací databáze MySQL se dostanete do konfigurace, kde budete požádáni o nastavení hesla admin atd. Po dokončení instalace a spuštění serveru přejděte do svého MySQL výzva.

mysql -u root -p

Nahraďte root svým nakonfigurovaným uživatelským jménem a po zobrazení výzvy zadejte heslo, pokud jsou přihlašovací údaje správné, budete u svého MySQL< vyzve během mrknutí očí.

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>

Nyní je provádění dotazů na tuto výzvu velmi poučné a zábavné.

Vytvořte databázi tecmint
mysql> create database tecmint ;
Query OK, 1 row affected (0.02 sec) 

mysql>

Poznámka: Hlásí, že dotaz byl správný, což znamená, že databáze je vytvořena. Nově vytvořenou databázi můžete ověřit jako.

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

Poznámka: Všimněte si své databáze ve výše uvedeném výstupu.

Vyberte Databáze

Nyní musíte vybrat databázi, abyste s ní mohli pracovat.

mysql> use tecmint;
Database changed
mysql>
Vytvářejte tabulky v MySQL

Zde vytvoříme tabulku „minttec“ se třemi poli jako:

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

Poznámka: Výše uvedený dotaz říká OK, což znamená, že tabulka byla vytvořena bez chyby. Pro ověření tabulky spusťte níže uvedený dotaz.

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

1 row in set (0.00 sec) 

mysql>

Zatím to jde dobře. Ano! Sloupce, které jste vytvořili v tabulce „minttec“, můžete zobrazit jako:

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>

Nebylo to nic menšího než kouzlo. Každopádně vám řeknu o typech prohlášení a jejich významu.

  1. Int je celé číslo
  2. Varchar je znak s proměnnou délkou, jak je definováno. Hodnota za typem je délka pole, do které může ukládat data.

OK, nyní musíme přidat sloupec „last_name“ za sloupec „first_name“.

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

Nyní si to ověřte ve své tabulce.

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>
Přidat sloupec v MySQL

Nyní přidáme sloupec napravo, řekněme sloupec „země“ napravo od e-mailu.

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>

Ověřte výše uvedený dotaz na vkládání sloupců.

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>
Vložte hodnoty do pole

A co vkládání hodnot do pole?

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

mysql>

Co takhle vložit více než 1 hodnotu najednou do výše uvedené tabulky.

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

Ověřte výše uvedené vložení.

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>
Smazat hodnoty v poli

Řekněme, že třetí položka ve výše uvedeném výstupu je neplatná a musíme odstranit třetí položku.

mysql> DELETE FROM minttec WHERE id = 3;

Query OK, 1 row affected (0.02 sec)

Ověřte výše uvedenou operaci.

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)
Aktualizujte hodnoty v poli

ID (=4) je třeba upravit.

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>

Ověřte výše uvedený dotaz.

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>

Poznámka: Výše uvedený dotaz není v provedeném provedení dobrý nápad. Změní ID na „4“, kde je křestní jméno „tecmint“. Vždy je dobré použít více než jeden sloupec s klauzulí where, abyste získali minimální chybu, jako:

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>
Smazat sloupec v MySQL

Potřebujeme vypustit (smazat) sloupec, o kterém si myslíme, že není důležité, řekněte zde „země“.

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

mysql>

Ověřte tabulku.

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>
Přejmenujte tabulku v MySQL

Nemyslíte si, že název naší tabulky „minttec“ není příliš relevantní. Co takhle změnit to na tecmint_table.

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

mysql>
Vypsat všechny tabulky

Podívejte se na všechny tabulky pod aktuální databází.

mysql> show tables; 

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

mysql>

Tabulka byla přejmenována. Nyní vytvořte zálohu výše uvedené databáze MySQL jedním příkazem bez jakéhokoli sofistikovaného nástroje. Spusťte níže uvedený kód na svém terminálu a ne na výzvu mysql.

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

Vždy je dobré udržovat zálohu databází MySQL. Obnova zálohovaných dat MySQL je opět jednoduchý řádek kódu, který musíte spustit na příkazovém řádku terminálu a ne na příkazovém řádku mysql.

Nejprve však počkejte, smažeme databázi, abychom ověřili, zda je naše obnova perfektní.

Smazat databázi
mysql> drop database tecmint; 
Query OK, 1 row affected (0.02 sec)

Zkontrolujte, zda je na vašem databázovém serveru databáze „tecmint“.

mysql> show databases; 

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

7 rows in set (0.00 sec) 
mysql>

Skvělý! Databáze je ztracena, ale nemusíme se bát, máme zálohu.

Obnovit databázi

Chcete-li obnovit ztracenou databázi, spusťte následující příkaz.

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

Jejda! Chyba, hej, nevytvořili jsme databázi tecmint. Přejděte tedy na výzvu mysql a vytvořte databázi ‚tecmint‘.

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

mysql>

Nyní je čas spustit příkaz obnovení na příkazovém řádku shellu (přísně).

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

Ověřte svou databázi.

mysql> show databases; 

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

Ověřte obsah databáze.

mysql> show tables from tecmint;

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

mysql>

Ověřte obsah obnovené tabulky.

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)

Tím to rozhodně nekončí, budeme se zabývat konceptem primárního klíče, cizího klíče, více tabulek a spouštění dotazů pomocí jednoduchého PHP skriptu v další části článku.

Nezapomeňte nám sdělit, jak jste se při procházení článku cítili. Vaše komentáře jsou vysoce ceněny. Zůstaňte Zdraví a Naladěni, zůstaňte ve spojení s Tecmint.