Průvodce příkazy MySQL: Základy pro začátečníky až středně pokročilé, CRUD, uživatelé, zálohování a řešení problémů

目次

1. Úvod

MySQL je široce používaná open-source relační databáze mezi systémy pro správu databází (DBMS). Je zvláště populární pro webové aplikace a podnikovou sféru. V tomto článku podrobně vysvětlíme základní příkazy MySQL a uspořádáme obsah tak, aby se začátečníci i středně pokročilí uživatelé mohli plynule učit.

1.1 Co je MySQL?

MySQL je software používaný k správě relační databáze (RDB). Data jsou uložena v tabulkách a manipulujete s nimi pomocí SQL (Structured Query Language). MySQL má následující charakteristiky:

  • Open-source a zdarma pro každého
  • Rychlý a lehký výkon
  • Kompatibilní s mnoha programovacími jazyky (např. PHP, Python a Java)
  • Vhodný pro provoz velkých databází

1.2 Výhody učení příkazů MySQL

Pro efektivní používání MySQL je důležité pochopit základní příkazy. Klíčové výhody zahrnují:

  • Efektivnější správa dat: Ovládnutí SQL příkazů vám umožní rychle načítat, aktualizovat a mazat data
  • Automatizace pracovních postupů: Používání skriptů umožňuje automatizovat operace s databází
  • Plynulejší řešení chyb: Když nastanou problémy, můžete je vyřešit pomocí vhodných SQL příkazů

1.3 Co se v tomto článku naučíte

Tento článek podrobně vysvětluje následující témata:

  • Základní operace s MySQL (spouštění, připojování a operace s databází)
  • Přidávání, načítání, aktualizace a mazání dat (operace CRUD)
  • Správa uživatelů a nastavení oprávnění
  • Užitečné příkazy a řešení problémů

Dále projdeme jednotlivé sekce postupně. Začneme základními operacemi s MySQL.

2. Základní operace s MySQL (pro začátečníky)

2.1 Spouštění a připojování k MySQL

2.1.1 Spouštění MySQL

Protože MySQL běží jako serverový program, musíte nejprve spustit server. Způsob spuštění se liší podle operačního systému.

Spouštění na Linuxu / macOS

Na Linuxu a macOS můžete MySQL spustit pomocí příkazu systemctl.

sudo systemctl start mysql

Zkontrolujte, zda MySQL běží

sudo systemctl status mysql

Pokud vidíte „active (running)“, MySQL běží normálně.

Spouštění ve Windows

Ve Windows je MySQL často provozováno jako služba, takže můžete použít příkaz net start.

net start mysql

Nebo, pokud používáte XAMPP, otevřete XAMPP Control Panel a klikněte na „Start“ u „MySQL“.

2.1.2 Připojování k MySQL

Pro připojení k MySQL použijte příkaz mysql. Základní příkaz pro připojení je následující:

mysql -u username -p
Připojení jako uživatel root

Ve výchozím nastavení je uživatel root nakonfigurován jako administrátor. Připojit se můžete následujícím příkazem:

mysql -u root -p

Po stisknutí Enter budete vyzváni k zadání hesla. Pokud zadáte správné heslo, můžete se přihlásit do MySQL.

Připojení ke konkrétnímu hostiteli

Pro připojení k vzdálenému MySQL serveru použijte volbu -h.

mysql -h hostname -u username -p

Například pro připojení k MySQL serveru na adrese 192.168.1.100 napište:

mysql -h 192.168.1.100 -u root -p
Připojení zadáním čísla portu

Výchozí port MySQL je 3306. Pokud byl změněn, můžete jej specifikovat volbou -P.

mysql -h 192.168.1.100 -P 3307 -u root -p

2.2 Základní příkazy MySQL

Jakmile jste připojeni k MySQL, vyzkoušejte některé základní příkazy.

2.2.1 Zkontrolujte verzi MySQL

Pro zjištění verze MySQL, kterou aktuálně používáte, spusťte následující příkaz:

SELECT VERSION();

2.2.2 Zkontrolujte aktuální databázi

Pro zjištění, která databáze je aktuálně vybrána, spusťte:

SELECT DATABASE();

Pokud není vybrána žádná databáze, vrátí se NULL.

2.2.3 Vylistujte dostupné databáze

Pro vypsání databází, které v MySQL existují, použijte:

SHOW DATABASES;

2.3 Běžné chyby a opravy

2.3.1 Chyba „Access denied“

Příklad chyby:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Jak opravit:
  1. Ověřte, že heslo je správné
  2. Zkontrolujte a resetujte oprávnění root
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEW_PASSWORD';
    FLUSH PRIVILEGES;
    

2.3.2 Chyba „Nelze se připojit k MySQL serveru na ‘localhost’“

Příklad chyby:

ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (10061)
Jak opravit:
  1. Zkontrolujte, zda MySQL běží (systemctl status mysql)
  2. Restartujte MySQL
    sudo systemctl restart mysql
    

2.4 Shrnutí

V této sekci jsme vysvětlili, jak spustit MySQL a připojit se k ní.

3. Operace s databází

V MySQL vytvoříte databázi pro správu dat a poté organizujete informace umístěním tabulek uvnitř ní. V této sekci podrobně vysvětlíme základní operace, jako je vytváření, výběr, výpis a mazání databází.

3.1 Vytvoření databáze

Pro vytvoření databáze v MySQL použijte příkaz CREATE DATABASE.

3.1.1 Vytvoření základní databáze

Pokud spustíte následující SQL příkaz, vytvoříte novou databázi s názvem my_database.

CREATE DATABASE my_database;
Zpráva při úspěšném vytvoření
Query OK, 1 row affected (0.01 sec)

3.1.2 Pokus o vytvoření databáze, která již existuje

Pokud databáze již existuje, zobrazí se chyba podobná následující:

ERROR 1007 (HY000): Can't create database 'my_database'; database exists

Aby se tato chyba předešla, je užitečné přidat volbu IF NOT EXISTS.

CREATE DATABASE IF NOT EXISTS my_database;

Když spustíte tento příkaz, databáze se vytvoří pouze v případě, že ještě neexistuje.

3.2 Výpis databází

Pro zjištění, které databáze existují na aktuálním MySQL serveru, použijte příkaz SHOW DATABASES.

SHOW DATABASES;

Příklad výstupu:

+--------------------+
| Database          |
+--------------------+
| information_schema |
| my_database       |
| mysql             |
| performance_schema |
| sys               |
+--------------------+

Poznámka: Systémové databáze jako mysql a information_schema jsou vyžadovány pro správu MySQL.

3.3 Výběr databáze

V MySQL musíte vybrat databázi, kterou chcete používat. Pro specifikaci databáze spusťte příkaz USE.

USE my_database;
Zpráva při úspěchu
Database changed

Pro potvrzení, která databáze je aktuálně vybrána, použijte následující příkaz:

SELECT DATABASE();

Příklad výstupu:

+------------+
| DATABASE() |
+------------+
| my_database |
+------------+

3.4 Smazání databáze

Pro smazání databáze, kterou již nepotřebujete, použijte příkaz DROP DATABASE.

DROP DATABASE my_database;

3.4.1 Důležité poznámky před smazáním

  • Buďte opatrní: smazání databáze odstraní všechna data!
  • Pro zamezení neúmyslných chyb můžete také přidat IF EXISTS.
    DROP DATABASE IF EXISTS my_database;
    

Tento příkaz skončí bez chyby i v případě, že my_database neexistuje.

3.5 Časté chyby a opravy

3.5.1 Chyba „Access denied for user“

Příklad chyby:

ERROR 1044 (42000): Access denied for user 'user_name'@'localhost' to database 'my_database'
Jak opravit
  • Udělte oprávnění pomocí příkazu GRANT
    GRANT ALL PRIVILEGES ON my_database.* TO 'user_name'@'localhost';
    FLUSH PRIVILEGES;
    

3.5.2 Chyba „Can’t drop database“

Příklad chyby:

ERROR 1010 (HY000): Error dropping database (can't rmdir './my_database', errno: 39)
Jak opravit
  • Restartujte MySQL
    sudo systemctl restart mysql
    
  • Nejprve odstraňte všechny tabulky v my_database, poté spusťte DROP DATABASE.

3.6 Shrnutí

V této sekci jste se naučili, jak vytvářet, vybírat, vypisovat a mazat databáze.

4. Operace s tabulkami

After creating a database, you need to create tables inside it to organize data. A table is like a grid for storing data, consisting of columns and rows (records).

Po vytvoření databáze musíte v ní vytvořit tabulky, abyste uspořádali data. Tabulka je jako mřížka pro ukládání dat, skládající se ze sloupců a řádků (záznamů).

In this section, we will explain basic operations such as creating, checking, listing, and deleting tables in detail.

V této sekci podrobně vysvětlíme základní operace, jako je vytváření, kontrola, výpis a mazání tabulek.

4.1 Creating a Table

4.1 Vytvoření tabulky

To create a table, use the CREATE TABLE command. If you run the following SQL, it creates a table named users.

Pro vytvoření tabulky použijte příkaz CREATE TABLE. Pokud spustíte následující SQL, vytvoří se tabulka s názvem users.

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

4.1.1 Explanation of each element when creating a table

4.1.1 Vysvětlení každého prvku při vytváření tabulky

  • id INT AUTO_INCREMENT PRIMARY KEY
  • Sloupec id je celé číslo (INT), automaticky se zvyšuje (AUTO_INCREMENT) a je nastaven jako primární klíč (PRIMARY KEY).
  • name VARCHAR(50) NOT NULL
  • Sloupec name je řetězec (VARCHAR) až do 50 znaků a je povinný díky NOT NULL.
  • email VARCHAR(100) UNIQUE NOT NULL
  • Sloupec email je řetězec až do 100 znaků a omezení UNIQUE zabraňuje duplicitním e‑mailovým adresám.
  • created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  • Sloupec created_at automaticky nastaví aktuální datum/čas jako výchozí hodnotu.
Message when successful
Zpráva při úspěchu
Query OK, 0 rows affected (0.02 sec)

4.2 Checking Table Structure

4.2 Kontrola struktury tabulky

To check the structure of a table you created, use DESC or SHOW COLUMNS.

Pro kontrolu struktury vytvořené tabulky použijte DESC nebo SHOW COLUMNS.

DESC users;

Or Nebo

SHOW COLUMNS FROM users;

Example output: Příklad výstupu:

+------------+--------------+------+-----+-------------------+----------------+
| Field      | Type         | Null | Key | Default           | Extra          |
+------------+--------------+------+-----+-------------------+----------------+
| id         | int(11)      | NO   | PRI | NULL              | auto_increment |
| name       | varchar(50)  | NO   |     | NULL              |                |
| email      | varchar(100) | NO   | UNI | NULL              |                |
| created_at | timestamp    | YES  |     | CURRENT_TIMESTAMP |                |
+------------+--------------+------+-----+-------------------+----------------+

4.3 Listing Tables

4.3 Výpis tabulek

To list the tables that exist in the current database, run the SHOW TABLES command.

Pro výpis tabulek, které existují v aktuální databázi, spusťte příkaz SHOW TABLES.

SHOW TABLES;

Example output: Příklad výstupu:

+------------------+
| Tables_in_mydb   |
+------------------+
| users            |
| products         |
| orders           |
+------------------+

4.4 Deleting a Table

4.4 Mazání tabulky

To delete a table you no longer need, use the DROP TABLE command.

Pro smazání tabulky, kterou již nepotřebujete, použijte příkaz DROP TABLE.

DROP TABLE users;

4.4.1 Important notes when deleting a table

4.4.1 Důležité poznámky při mazání tabulky

  • Be careful: deleting a table permanently removes the data! Buďte opatrní: smazání tabulky trvale odstraní data!
  • To avoid errors when deleting, add IF EXISTS . Aby se předešlo chybám při mazání, přidejte IF EXISTS.
    DROP TABLE IF EXISTS users;
    
Message when successful
Zpráva při úspěchu
Query OK, 0 rows affected (0.01 sec)

4.5 Resetting Table Data (Delete All Rows)

4.5 Resetování dat v tabulce (smazání všech řádků)

If you want to keep the table structure but delete only the data inside, use TRUNCATE TABLE.

Pokud chcete zachovat strukturu tabulky, ale smazat pouze data uvnitř, použijte TRUNCATE TABLE.

TRUNCATE TABLE users;
Difference from DROP TABLE
Rozdíl od DROP TABLE
  • DROP TABLE deletes the table itself. DROP TABLE smaže samotnou tabulku.
  • TRUNCATE TABLE deletes only the data and keeps the table structure. TRUNCATE TABLE smaže pouze data a zachová strukturu tabulky.

4.6 Common Errors and Fixes

4.6 Běžné chyby a opravy

4.6.1 “Table already exists” error

4.6.1 Chyba „Tabulka již existuje“

Example error: Příklad chyby:

ERROR 1050 (42S01): Table 'users' already exists
How to fix
Jak opravit
  • Check existing tables
  • Zkontrolujte existující tabulky
    SHOW TABLES;
    
  • Create the table with IF NOT EXISTS
  • Vytvořte tabulku s IF NOT EXISTS
    CREATE TABLE IF NOT EXISTS users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50) NOT NULL,
        email VARCHAR(100) UNIQUE NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    

4.6.2 “Unknown table” error

4.6.2 Chyba „Neznámá tabulka“

Example error: Příklad chyby:

ERROR 1051 (42S02): Unknown table 'users'
How to fix
Jak opravit
  • Zkontrolujte, zda tabulka existuje, pomocí SHOW TABLES;
  • Pokud neexistuje, přidejte IF EXISTS
    DROP TABLE IF EXISTS users;
    

4.7 Shrnutí

V této sekci jsme pokryli základní operace s tabulkami v MySQL: vytváření, kontrolu a mazání tabulek.