Použití zobrazení MySQL na Debianu 7

Použití zobrazení MySQL na Debianu 7

Úvod

MySQL má skvělou funkci známou jako „views“. Pohledy jsou uložené dotazy. Představte si je jako alias pro jinak dlouhý dotaz. V této příručce vám ukážu, jak používat pohledy k efektivnější organizaci dat.

Předpoklady

  • Cloudový server Vultr SSD nabitý Debianem 7.
  • Uživatel s právy správce (root).
  • Základní znalost Linuxu, příkazového řádku a SSH.

Krok jedna – Instalace serveru MySQL

Instalace MySQL na Debian 7.x je velmi přímočará. Nejprve musíme zajistit, aby byly naše zdroje aktualizovány provedením:

sudo apt-get update

Dále můžeme nainstalovat server MySQL:

sudo apt-get install -y mysql-server

Zobrazí se dialogové okno s výzvou k vytvoření hesla pro uživatele „root“. Ujistěte se, že si toto heslo pamatujete.

Posílíme zabezpečení naší instalace provedením:

sudo mysql_secure_installation

Po provedení se vám zobrazí řada výzev. Níže jsou zobrazeny všechny odpovědi, které byste měli vybrat.

...
Enter current password for root (enter for none):
OK, successfully used password, moving on...
...
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
...
Remove anonymous users? [Y/n] y
 ... Success!
...
Disallow root login remotely? [Y/n] y
 ... Success!
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
...
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...

Krok dva – Instalace ukázkové databáze

V tuto chvíli nemáme na serveru žádná data, se kterými bychom mohli experimentovat. V tomto tutoriálu budeme používat databázi zaměstnanců, protože se s ní snadno pracuje a je volně dostupná na webu MySQL.

sudo wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2

Musíme nainstalovat bzip2, abychom mohli extrahovat soubor.

sudo apt-get install bzip2

Extrahujte databázi. Soubor je poměrně velký, takže to může chvíli trvat.

sudo bzip2 -dfv employees_db-full-1.0.6.tar.bz2
sudo tar -xf employees_db-full-1.0.6.tar

Po rozbalení souboru budete mít složku s názvem employees_db. K instalaci databáze musíme přejít do tohoto adresáře.

cd employees_db 
ls -l

Výstup bude vypadat takto:

-rw-r--r--. 1 501 games       752 Mar 30  2009 Changelog
-rw-r--r--. 1 501 games      6460 Oct  9  2008 employees_partitioned2.sql
-rw-r--r--. 1 501 games      7624 Feb  6  2009 employees_partitioned3.sql
-rw-r--r--. 1 501 games      5660 Feb  6  2009 employees_partitioned.sql
-rw-r--r--. 1 501 games      3861 Nov 28  2008 employees.sql
-rw-r--r--. 1 501 games       241 Jul 30  2008 load_departments.dump
-rw-r--r--. 1 501 games  13828291 Mar 30  2009 load_dept_emp.dump
-rw-r--r--. 1 501 games      1043 Jul 30  2008 load_dept_manager.dump
-rw-r--r--. 1 501 games  17422825 Jul 30  2008 load_employees.dump
-rw-r--r--. 1 501 games 115848997 Jul 30  2008 load_salaries.dump
-rw-r--r--. 1 501 games  21265449 Jul 30  2008 load_titles.dump
-rw-r--r--. 1 501 games      3889 Mar 30  2009 objects.sql
-rw-r--r--. 1 501 games      2211 Jul 30  2008 README
-rw-r--r--. 1 501 games      4455 Mar 30  2009 test_employees_md5.sql
-rw-r--r--. 1 501 games      4450 Mar 30  2009 test_employees_sha.sql

Provedením následujícího příkazu se připojte k serveru MySQL, vytvořte databázi a importujte data:

sudo mysql -h localhost -u root -p -t < employees.sql

Zobrazí se výzva k zadání hesla uživatele root. Toto je heslo, které jste nastavili v prvním kroku.

Vzhledem k tomu, že databáze je poměrně velká, úplný import dat bude pravděpodobně trvat 1-3 minuty. Pokud bylo vše provedeno správně, uvidíte následující výstup.

+-----------------------------+
| INFO                        |
+-----------------------------+
| CREATING DATABASE STRUCTURE |
+-----------------------------+
+------------------------+
| INFO                   |
+------------------------+
| storage engine: InnoDB |
+------------------------+
+---------------------+
| INFO                |
+---------------------+
| LOADING departments |
+---------------------+
+-------------------+
| INFO              |
+-------------------+
| LOADING employees |
+-------------------+
+------------------+
| INFO             |
+------------------+
| LOADING dept_emp |
+------------------+
+----------------------+
| INFO                 |
+----------------------+
| LOADING dept_manager |
+----------------------+
+----------------+
| INFO           |
+----------------+
| LOADING titles |
+----------------+
+------------------+
| INFO             |
+------------------+
| LOADING salaries |
+------------------+

Nyní se můžeme přihlásit do MySQL a zobrazit importovaná data.

sudo mysql -h localhost -u root -p

Zadejte heslo uživatele root, které jste nastavili v předchozí části.

Podívejte se na seznam databází pro naši nově vytvořenou databázi zaměstnanců .

show databases;

Výstup bude vypadat takto:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.01 sec)

Využijme databázi zaměstnanců .

use employees;

Zkontrolujte tabulky v něm.

show tables;

Toto vypíše:

+---------------------+
| Tables_in_employees |
+---------------------+
| departments         |
| dept_emp            |
| dept_manager        |
| employees           |
| salaries            |
| titles              |
+---------------------+
6 rows in set (0.01 sec)

Krok tři – Vytváření, používání a odstraňování pohledů

V tomto kroku se naučíte vytvářet a používat pohledy. Tento krok jsem rozdělil na menší části pro párování dat a kombinování dat pro organizaci. Je čas začít pracovat s našimi testovacími daty.

Slučování/párování dat

Níže mám dotaz, který zobrazuje všechny zaměstnance, kteří mají roční plat rovný nebo vyšší než 50 000 $.

select * from salaries where salary >= 50000;

Výstup (zkrácený):

+--------+--------+------------+------------+
| emp_no | salary | from_date  | to_date    |
+--------+--------+------------+------------+
|  10001 |  60117 | 1986-06-26 | 1987-06-26 |
|  10001 |  62102 | 1987-06-26 | 1988-06-25 |
|  10001 |  66074 | 1988-06-25 | 1989-06-25 |
|  10001 |  66596 | 1989-06-25 | 1990-06-25 |
|  10001 |  66961 | 1990-06-25 | 1991-06-25 |
(...)

Jak vidíte, zobrazuje se pouze čísla zaměstnanců. Při snaze rychle identifikovat zaměstnance to může být nepříjemné. Naštěstí můžeme vytvořit pohled, který bude ukládat poměrně zdlouhavý dotaz, který dokáže přiřadit čísla zaměstnanců ke jménům zaměstnanců tím, že získá a porovná data z více tabulek. Dotaz je uveden níže.

select employees.first_name,employees.last_name,employees.emp_no,salaries.salary,salaries.to_date,salaries.from_date from employees, salaries where employees.emp_no = salaries.emp_no;

Všimněte si, jak jsem >= 50000z dotazu vynechal . Tuto hodnotu použijeme po vytvoření našeho pohledu.

Pro vytvoření pohledu jednoduše připojíme create view view_name ask dotazu. V tomto případě vytvořím pohled s názvem named_salaries .

create view named_salaries as select employees.first_name,employees.last_name,employees.emp_no,salaries.salary,salaries.to_date,salaries.from_date from employees, salaries where employees.emp_no = salaries.emp_no;

Data z pohledu zobrazujeme stejným způsobem, jakým zobrazujeme data z tabulky.

select * from named_salaries

Pokud byl pohled vytvořen správně, uvidíte následující výstup (data byla zkrácena):

+------------+-----------+--------+--------+------------+------------+
| first_name | last_name | emp_no | salary | to_date    | from_date  |
+------------+-----------+--------+--------+------------+------------+
| Georgi     | Facello   |  10001 |  60117 | 1987-06-26 | 1986-06-26 |
| Georgi     | Facello   |  10001 |  62102 | 1988-06-25 | 1987-06-26 |
| Georgi     | Facello   |  10001 |  66074 | 1989-06-25 | 1988-06-25 |
| Georgi     | Facello   |  10001 |  66596 | 1990-06-25 | 1989-06-25 |
| Georgi     | Facello   |  10001 |  66961 | 1991-06-25 | 1990-06-25 |
| Georgi     | Facello   |  10001 |  71046 | 8  1992-06-24 | 1991-06-25 |
(...)

Vzhledem k tomu, že můžeme interagovat s pohledy stejným způsobem, jako můžeme interagovat s tabulkou, je možné převzít >= 50000z původního dotazu a aplikovat jej na pohled.

select * from named_salaries where salary >= 50000;

Výstup (zkrácený):

+------------+-----------+--------+--------+------------+------------+
| first_name | last_name | emp_no | salary | to_date    | from_date  |
+------------+-----------+--------+--------+------------+------------+
| Georgi     | Facello   |  10001 |  60117 | 1987-06-26 | 1986-06-26 |
(...)
| Bezalel    | Simmel    |  10002 |  65828 | 1997-08-03 | 1996-08-03 |
(...)
| Chirstian  | Koblick   |  10004 |  50594 | 1992-11-29 | 1991-11-30 |
(...)
| Kyoichi    | Maliniak  |  10005 |  78228 | 1990-09-12 | 1989-09-12 |
(...)
| Anneke     | Preusig   |  10006 |  53747 | 1998-08-03 | 1997-08-03 |
(...)
+------------+-----------+--------+--------+------------+------------+

Jak vidíte, dotaz zacházel s pohledem stejně jako s tradiční tabulkou.

Použijme pohled v jiném příkladu. Níže mám poměrně dlouhý dotaz, který uvádí vedoucí oddělení, jejich jména/příjmení, čísla zaměstnanců, jména jejich oddělení a čísla oddělení. Dotaz stahuje dohromady data z několika různých tabulek.

select employees.first_name,employees.last_name,employees.emp_no,dept_manager.to_date,dept_manager.from_date,departments.dept_name,departments.dept_no from employees, dept_manager, departments where employees.emp_no = dept_manager.emp_no AND departments.dept_no = dept_manager.dept_no;

Výstup (zkrácený):

+-------------+--------------+--------+------------+------------+--------------------+---------+
| first_name  | last_name    | emp_no | to_date    | from_date  | dept_name          | dept_no |
+-------------+--------------+--------+------------+------------+--------------------+---------+
| Tonny       | Butterworth  | 111692 | 1988-10-17 | 1985-01-01 | Customer Service   | d009    |
| Marjo       | Giarratana   | 111784 | 1992-09-08 | 1988-10-17 | Customer Service   | d009    |
| Xiaobin     | Spinelli     | 111877 | 1996-01-03 | 1992-09-08 | Customer Service   | d009    |
| Yuchang     | Weedman      | 111939 | 9999-01-01 | 1996-01-03 | Customer Service   | d009    |
| DeForest    | Hagimont     | 110511 | 1992-04-25 | 1985-01-01 | Development        | d005    |
| Leon        | DasSarma     | 110567 | 9999-01-01 | 1992-04-25 | Development        | d005    |
(...)

Jak vidíte, bylo by poněkud nepohodlné zadávat tento dotaz pokaždé, když potřebujete získat seznam vedoucích oddělení. Pojďme si vytvořit pohled, aby to bylo jednodušší. Budu tento pohled nazývat „management“.

create view management as select employees.first_name,employees.last_name,employees.emp_no,dept_manager.to_date,dept_manager.from_date,departments.dept_name,departments.dept_no from employees, dept_manager, departments where employees.emp_no = dept_manager.emp_no AND departments.dept_no = dept_manager.dept_no;

Nyní můžeme jednoduše zadat select * from management;a získat stejná data. Samozřejmě na to můžeme aplikovat i další parametry – stejně jako tradiční stůl. Řekněme například, že jsme chtěli zobrazit pouze manažery oddělení pro „Službu zákazníkům“.

select * from management where dept_name = 'Customer Service';

Výstup:

+------------+-------------+--------+------------+------------+------------------+---------+
| first_name | last_name   | emp_no | to_date    | from_date  | dept_name        | dept_no |
+------------+-------------+--------+------------+------------+------------------+---------+
| Tonny      | Butterworth | 111692 | 1988-10-17 | 1985-01-01 | Customer Service | d009    |
| Marjo      | Giarratana  | 111784 | 1992-09-08 | 1988-10-17 | Customer Service | d009    |
| Xiaobin    | Spinelli    | 111877 | 1996-01-03 | 1992-09-08 | Customer Service | d009    |
| Yuchang    | Weedman     | 111939 | 9999-01-01 | 1996-01-03 | Customer Service | d009    |
+------------+-------------+--------+------------+------------+------------------+---------+

Nebo možná chceme „Služby zákazníkům“ a „Lidské zdroje“:

select * from management where dept_name = 'Customer Service' OR dept_name = 'Human Resources';

Výstup:

+------------+--------------+--------+------------+------------+------------------+---------+
| first_name | last_name    | emp_no | to_date    | from_date  | dept_name        | dept_no |
+------------+--------------+--------+------------+------------+------------------+---------+
| Tonny      | Butterworth  | 111692 | 1988-10-17 | 1985-01-01 | Customer Service | d009    |
| Marjo      | Giarratana   | 111784 | 1992-09-08 | 1988-10-17 | Customer Service | d009    |
| Xiaobin    | Spinelli     | 111877 | 1996-01-03 | 1992-09-08 | Customer Service | d009    |
| Yuchang    | Weedman      | 111939 | 9999-01-01 | 1996-01-03 | Customer Service | d009    |
| Shirish    | Ossenbruggen | 110183 | 1992-03-21 | 1985-01-01 | Human Resources  | d003    |
| Karsten    | Sigstam      | 110228 | 9999-01-01 | 1992-03-21 | Human Resources  | d003    |
+------------+--------------+--------+------------+------------+------------------+---------+

Odebrání pohledu

Odstranění pohledu je velmi jednoduché. Podobně jako při odstraňování tabulky byste zadali drop view view_name;. Pokud bychom například chtěli smazat pohled named_salaries , příkaz by byl: drop view named_salaries;.


Jak nastavit bezobslužné upgrady na Debian 9 (Stretch)

Jak nastavit bezobslužné upgrady na Debian 9 (Stretch)

Používáte jiný systém? Pokud si zakoupíte server Debian, měli byste mít vždy nejnovější bezpečnostní záplaty a aktualizace, ať už spíte nebo ne

Nastavte si svůj vlastní DNS server na Debian/Ubuntu

Nastavte si svůj vlastní DNS server na Debian/Ubuntu

Tento tutoriál vysvětluje, jak nastavit DNS server pomocí Bind9 na Debianu nebo Ubuntu. V celém článku nahraďte odpovídajícím způsobem název-vaše-domény.com. Při čt

Zkompilujte a nainstalujte Nginx pomocí modulu PageSpeed ​​na Debian 8

Zkompilujte a nainstalujte Nginx pomocí modulu PageSpeed ​​na Debian 8

V tomto článku uvidíme, jak zkompilovat a nainstalovat hlavní řadu Nginx z oficiálních zdrojů Nginx pomocí modulu PageSpeed, který vám umožňuje

Jak nainstalovat Kanboard na Debian 9

Jak nainstalovat Kanboard na Debian 9

Používáte jiný systém? Úvod Kanboard je bezplatný a otevřený softwarový program pro správu projektů, který je navržen tak, aby usnadnil a vizualizoval

Jak nainstalovat Gitea na Debian 9

Jak nainstalovat Gitea na Debian 9

Používáte jiný systém? Gitea je alternativní open source systém pro správu verzí s vlastním hostitelem poháněný systémem Git. Gitea je napsána v Golangu a je

Nainstalujte Lynis na Debian 8

Nainstalujte Lynis na Debian 8

Úvod Lynis je bezplatný nástroj pro audit systému s otevřeným zdrojovým kódem, který používá mnoho systémových administrátorů k ověření integrity a posílení svých systémů. já

Jak nainstalovat Thelia 2.3 na Debian 9

Jak nainstalovat Thelia 2.3 na Debian 9

Používáte jiný systém? Thelia je open source nástroj pro vytváření webových stránek pro e-business a správu online obsahu napsaného v PHP. Zdrojový kód Thelia i

Vytvoření sítě serverů Minecraft pomocí BungeeCord na Debian 8, Debian 9 nebo CentOS 7

Vytvoření sítě serverů Minecraft pomocí BungeeCord na Debian 8, Debian 9 nebo CentOS 7

Co budete potřebovat Vultr VPS s alespoň 1 GB RAM. Přístup SSH (s oprávněními root/administrátor). Krok 1: Instalace BungeeCord První věci

Jak nainstalovat Golang 1.8.3 na CentOS 7, Ubuntu 16.04 a Debian 9

Jak nainstalovat Golang 1.8.3 na CentOS 7, Ubuntu 16.04 a Debian 9

Golang je programovací jazyk vyvinutý společností Google. Díky své všestrannosti, jednoduchosti a spolehlivosti se Golang stal jedním z nejoblíbenějších

Resetujte kořenové heslo MySQL na Debian/Ubuntu

Resetujte kořenové heslo MySQL na Debian/Ubuntu

Pokud jste zapomněli své kořenové heslo MySQL, můžete ho resetovat podle kroků v tomto článku. Proces je poměrně jednoduchý a funguje na nich

Vytváření síťových sdílení pomocí Samby v Debianu

Vytváření síťových sdílení pomocí Samby v Debianu

Jsou chvíle, kdy potřebujeme sdílet soubory, které musí být viditelné pro klienty Windows. Vzhledem k tomu, že systémy založené na pojistkách fungují pouze na Linuxu, představujeme vás

Nastavení Counter Strike: Source na Debianu

Nastavení Counter Strike: Source na Debianu

V této příručce nastavíme herní server Counter Strike: Source na Debianu 7. Tyto příkazy byly testovány na Debianu 7, ale měly by také fungovat

Jak nainstalovat Unturned 2.2.5 na Debian 8

Jak nainstalovat Unturned 2.2.5 na Debian 8

V této příručce se dozvíte, jak nastavit server Unturned 2.2.5 na Vultr VPS se systémem Debian 8. Poznámka: Toto je upravená verze Unturned, která

Jak nainstalovat Cachet na Debian 8

Jak nainstalovat Cachet na Debian 8

V tomto tutoriálu se naučíte, jak nainstalovat Cachet na Debian 8. Cachet je výkonný open source systém stavových stránek. Instalace Tento tutoriál právě probíhá

Automaticky zálohujte více databází MySQL nebo MariaDB

Automaticky zálohujte více databází MySQL nebo MariaDB

Úvod V tomto zápisu si dobře projděte, jak zálohovat více databází MySQL nebo MariaDB, které sedí na stejném počítači pomocí vlastního bash skriptu.

Nastavení Chrootu v Debianu

Nastavení Chrootu v Debianu

Tento článek vás naučí, jak nastavit chroot jail v Debianu. Předpokládám, že používáte Debian 7.x. Pokud používáte Debian 6 nebo 8, může to fungovat, bu

Jak nainstalovat Reader Self 3.5 RSS Reader na Debian 9 LAMP VPS

Jak nainstalovat Reader Self 3.5 RSS Reader na Debian 9 LAMP VPS

Používáte jiný systém? Reader Self 3.5 je jednoduchá a flexibilní, bezplatná a open source, samostatně hostovaná RSS čtečka a alternativa Google Reader. Čtenář Sel

Jak nainstalovat Backdrop CMS 1.8.0 na Debian 9 LAMP VPS

Jak nainstalovat Backdrop CMS 1.8.0 na Debian 9 LAMP VPS

Používáte jiný systém? Backdrop CMS 1.8.0 je jednoduchý a flexibilní, mobilní, bezplatný a open source systém správy obsahu (CMS), který nám umožňuje

Jak nainstalovat SteamCMD na váš VPS

Jak nainstalovat SteamCMD na váš VPS

V tomto tutoriálu nainstalujeme SteamCMD. SteamCMD lze použít ke stažení a instalaci mnoha herních serverů Steam, jako je Counter-Strike: Global Offensiv

Upgradujte Python na Debian

Upgradujte Python na Debian

Jak možná víte, repozitáře Debianu se aktualizují velmi pomalu. V době psaní tohoto článku jsou verze vydání Pythonu na 2.7.12 a 3.5.2, ale v úložišti Debian 8

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Umělá inteligence není v budoucnosti, je zde přímo v současnosti V tomto blogu si přečtěte, jak aplikace umělé inteligence ovlivnily různé sektory.

Útoky DDOS: Stručný přehled

Útoky DDOS: Stručný přehled

Jste také obětí DDOS útoků a nemáte jasno v metodách prevence? Chcete-li vyřešit své dotazy, přečtěte si tento článek.

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Možná jste slyšeli, že hackeři vydělávají spoustu peněz, ale napadlo vás někdy, jak takové peníze vydělávají? Pojďme diskutovat.

Revoluční vynálezy od Googlu, které vám usnadní život.

Revoluční vynálezy od Googlu, které vám usnadní život.

Chcete vidět revoluční vynálezy Google a jak tyto vynálezy změnily život každého dnešního člověka? Pak si přečtěte na blogu a podívejte se na vynálezy od Googlu.

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Koncept aut s vlastním pohonem, která vyrazí na silnice s pomocí umělé inteligence, je snem, který už nějakou dobu máme. Ale přes několik slibů nejsou nikde vidět. Přečtěte si tento blog a dozvíte se více…

Technologická singularita: vzdálená budoucnost lidské civilizace?

Technologická singularita: vzdálená budoucnost lidské civilizace?

Jak se věda vyvíjí rychlým tempem a přebírá mnoho našeho úsilí, stoupá také riziko, že se vystavíme nevysvětlitelné singularitě. Přečtěte si, co pro nás může znamenat singularita.

Evoluce ukládání dat – Infografika

Evoluce ukládání dat – Infografika

Způsoby ukládání dat se mohou vyvíjet od narození dat. Tento blog se zabývá vývojem ukládání dat na základě infografiky.

Funkcionality vrstev referenční architektury velkých dat

Funkcionality vrstev referenční architektury velkých dat

Přečtěte si blog, abyste co nejjednodušším způsobem poznali různé vrstvy v architektuře velkých dat a jejich funkce.

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

V tomto digitálním světě se chytrá domácí zařízení stala klíčovou součástí života. Zde je několik úžasných výhod chytrých domácích zařízení o tom, jak náš život stojí za to žít a zjednodušit jej.

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Apple nedávno vydal doplňkovou aktualizaci macOS Catalina 10.15.4, která opravuje problémy, ale zdá se, že aktualizace způsobuje další problémy, které vedou k zablokování počítačů mac. Přečtěte si tento článek a dozvíte se více