Erfahren Sie, wie Sie mehrere Funktionen von MySQL und Mariadb - Teil 2 verwenden können

Erfahren Sie, wie Sie mehrere Funktionen von MySQL und Mariadb - Teil 2 verwenden können

Dies ist der zweite Teil einer 2-Artikel-Serie über das Wesentliche von Mariadb / Mysql Befehle. Bitte beachten Sie unseren vorherigen Artikel zu diesem Thema, bevor Sie fortfahren.

  1. Lernen Sie MySQL/Mariadb -Grundlagen für Anfänger - Teil 1

In diesem zweiten Teil der MySQL/Mariadb -Anfängerserie werden wir erklären, wie die Anzahl der von a zurückgegebenen Zeilen einschränken kann WÄHLEN Abfragen und wie Sie das Ergebnissatz basierend auf einer bestimmten Bedingung bestellen.

Darüber hinaus werden wir lernen, wie man die Aufzeichnungen gruppiert und grundlegende mathematische Manipulation auf numerischen Feldern ausführt. All dies hilft uns, ein SQL -Skript zu erstellen, mit dem wir nützliche Berichte erstellen können.

Voraussetzungen

Befolgen Sie zunächst die folgenden Schritte:

1. Laden Sie die herunter Mitarbeiter Beispieldatenbank, die sechs Tabellen enthält, die bestehen aus 4 Insgesamt Millionen Rekorde.

# WGet https: // launchpad.Net/Test-DB/Employees-DB-1/1.0.6/+Download/Mitarbeiter_DB-Full-1.0.6.Teer.BZ2 # TAR XJF Employees_db-Full-1.0.6.Teer.BZ2 # CD Employees_db 

2. Geben Sie die Mariadb Erstellen und Erstellen einer Datenbank mit dem Namen Mitarbeiter:

# Mysql -u root -p Passwort eingeben: Willkommen im Mariadb Monitor. Befehle enden mit; oder \ g. Ihre MariADB -Verbindungs ​​-ID ist 2 Serverversion: 10.1.14-mariadb Mariadb Server Copyright (C) 2000, 2016, Oracle, Mariadb Corporation AB und andere. Geben Sie "Hilfe" ein; " oder '\ h' für Hilfe. Geben Sie '\ c' ein, um die aktuelle Eingabeanweisung zu löschen. Mariadb [(keine)]> Datenbankmitarbeiter erstellen; Abfrage OK, 1 Zeile betroffen (0.00 Sek.) 

3. Importieren Sie es wie folgt in Ihren Mariadb -Server:

Mariadb [(keine)]> Angestellte Quelle.sql 

Warten Sie 1-2 Minuten, bis die Beispieldatenbank geladen ist (denken Sie daran, dass wir darüber sprechen 4m Aufzeichnungen hier!).

4. Stellen Sie sicher, dass die Datenbank durch Auflistung ihrer Tabellen korrekt importiert wurde:

Mariadb [Mitarbeiter]> Mitarbeiter verwenden; Datenbank geändert Mariadb [Mitarbeiter]> Tische anzeigen; +---------------------+ | Tables_in_aMplyees | + ----------------------+ | Abteilungen | | Dept_emp | | Dept_Manager | | Mitarbeiter | | Gehälter | | Titel | + ---------------------+ 6 Zeilen in Set (0).02 Sek.) 

5. Erstellen Sie ein spezielles Konto, das Sie mit dem verwenden können Mitarbeiter Datenbank (zögern Sie nicht, einen anderen Kontonamen und ein anderes Passwort auszuwählen):

Mariadb [Mitarbeiter]> Benutzer erstellen [E -Mail geschützt] identifiziert von 'EmpadMinPass'; Abfrage OK, 0 Zeilen betroffen (0.03 Sek.) Mariadb [Mitarbeiter]> Gewähren Sie alle Privilegien für Mitarbeiter.* an [E -Mail geschützt]; Abfrage OK, 0 Zeilen betroffen (0.02 Sek.) Mariadb [Mitarbeiter]> Spülung Privilegien; Abfrage OK, 0 Zeilen betroffen (0.00 Sek.) Mariadb [Mitarbeiter]> Ausfahrt Tschüss 

Jetzt melden Sie sich an als Empadmin Benutzer in die Mariadb -Eingabeaufforderung.

# Mysql -u Empadmin -p Passwort eingeben: Willkommen im Mariadb Monitor. Befehle enden mit; oder \ g. Ihre MariADB -Verbindungs ​​-ID ist 4 Serverversion: 10.1.14-mariadb Mariadb Server Copyright (C) 2000, 2016, Oracle, Mariadb Corporation AB und andere. Geben Sie "Hilfe" ein; " oder '\ h' für Hilfe. Geben Sie '\ c' ein, um die aktuelle Eingabeanweisung zu löschen. Mariadb [(keine)]> Mitarbeiter verwenden; Lesen von Tabelleninformationen zum Abschluss von Tabellen- und Spaltennamen Sie können diese Funktion deaktivieren, um ein schnelleres Start mit -a -Datenbank zu erhalten 
Lernen Sie grundlegende MySQL -Befehle für Anfänger

Stellen Sie sicher.

Bestellung und Begrenzung der Anzahl der Zeilen im Ergebnissatz

Die Gehaltstabelle enthält alle Einkommen jedes Mitarbeiter mit Start- und Enddaten. Wir möchten vielleicht die Gehälter von sehen emp_no = 10001 im Laufe der Zeit. Dies wird dazu beitragen, die folgenden Fragen zu beantworten:

  1. Hat er / sie irgendwelche Erhöhungen bekommen??
  2. Wenn ja, wenn?

Führen Sie die folgende Anfrage aus, um herauszufinden:

Mariadb [Mitarbeiter]> Wählen Sie * aus Gehältern, wobei emp_no = 10001 bestellen von von _date; +--------+--------+------------+------------+ | EMP_NO | Gehalt | 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 | | 10001 | 71046 | 1991-06-25 | 1992-06-24 | | 10001 | 74333 | 1992-06-24 | 1993-06-24 | | 10001 | 75286 | 1993-06-24 | 1994-06-24 | | 10001 | 75994 | 1994-06-24 | 1995-06-24 | | 10001 | 76884 | 1995-06-24 | 1996-06-23 | | 10001 | 80013 | 1996-06-23 | 1997-06-23 | | 10001 | 81025 | 1997-06-23 | 1998-06-23 | | 10001 | 81097 | 1998-06-23 | 1999-06-23 | | 10001 | 84917 | 1999-06-23 | 2000-06-22 | | 10001 | 85112 | 2000-06-22 | 2001-06-22 | | 10001 | 85097 | 2001-06-22 | 2002-06-22 | | 10001 | 88958 | 2002-06-22 | 9999-01-01 | +--------+--------+------------+------------+17 Zeilen in Set ( 0.03 Sek.) 

Was ist nun, wenn wir die neuesten 5 Erhöhungen anzeigen müssen? Wir können tun Bestellung von von _date desc. Der Vor Das Schlüsselwort zeigt an, dass wir das in absteigende Reihenfolge festgelegte Ergebnis sortieren möchten.

Zusätzlich, Grenze 5 ermöglicht es uns, nur die Spitze zurückzugeben 5 Zeilen im Ergebnissatz:

Mariadb [Mitarbeiter]> Wählen Sie * aus Gehältern aus, wobei emp_no = 10001 bestellen by from_date desc limit 5; +--------+--------+------------+------------+ | EMP_NO | Gehalt | from_date | to_date | +--------+--------+------------+------------+| 10001 | 88958 | 2002-06-22 | 9999-01-01 | | 10001 | 85097 | 2001-06-22 | 2002-06-22 | | 10001 | 85112 | 2000-06-22 | 2001-06-22 | | 10001 | 84917 | 1999-06-23 | 2000-06-22 | | 10001 | 81097 | 1998-06-23 | 1999-06-23 | +--------+--------+------------+------------+5 Zeilen im Satz ( 0.00 Sek.) 
Abfragen Sie die MySQL -Tabelle nach Datumsbestellung

Sie können auch verwenden SORTIEREN NACH mit mehreren Feldern. Die folgende Abfrage bestellt beispielsweise das Ergebnis, das auf dem Geburtsdatum des Mitarbeiters in aufsteigender Form (der Standard) und dann nach den Nachnamen in alphabetischer absteigender Form (der Standard) bestellt wird:

Mariadb [Mitarbeiter]> Wählen Sie concat (last_name, ',', first_name) als Name, Geschlecht als Geschlecht, Hire_Date als "Hiredatum" von Mitarbeitern bestellen by bire_date, last_name Desc Limit 10; +--------------------+--------+------------+ | Name | Geschlecht | Mietdatum | +--------------------+--------+------------+| Whitcomb, Kiyokazu | M | 1988-07-26 | | Schaad, Ronghao | M | 1988-07-10 | | Remmele, supot | M | 1989-01-27 | | Pocchiola, Jouni | M | 1985-03-10 | | Kuzuoka, Eishiro | M | 1992-02-12 | | Decaestecker, Moni | M | 1986-10-06 | | Wiegley, Mircea | M | 1985-07-18 | | Vendrig, Sachar | M | 1985-11-04 | | Tsukuda, Cedric | F | 1993-12-12 | | Tischendorf, Percy | M | 1986-11-10 | +--------------------+--------+------------+10 Zeilen in Set (0).31 Sek.) 
Abfragen Sie die MySQL -Tabelle nach Geburtsdatum

Sie können weitere Informationen darüber anzeigen GRENZE Hier.

Gruppierung von Rekorde / Max, Min, AVG und Runde

Wie bereits erwähnt, die Gehälter Die Tabelle enthält die Einkommen jedes Mitarbeiter im Laufe der Zeit. Neben GRENZE, Wir können die verwenden Max Und MINDEST Schlüsselwörter, um festzustellen, wann die maximale und minimale Anzahl von Mitarbeitern eingestellt wurde:

Mariadb [Mitarbeiter]> Wählen Sie concat (last_name, ',', first_name) als Name, max (b).Gehalt) als "maximal. Gehalt "von Mitarbeitern A beitreten Gehälter B auf a.emp_no = b.emp_no wo a.EMP_NO in (10001, 10002, 10003) Gruppe nach a.emp_no; +-----------------+-------------+ | Name | Max. Gehalt | +-----------------+--------------+| Facello, Georgi | 88958 | | Simmel, Bezalel | 72527 | | Bamford, Parto | 43699 | +-----------------+-----------------+3 Zeilen in Set (0).02 Sek.) Mariadb [Mitarbeiter]> Wählen Sie concat (last_name, ',', first_name) als Name, min (b).Gehalt) als "min. Gehalt "von Mitarbeitern A beitreten Gehälter B auf a.emp_no = b.emp_no wo a.EMP_NO in (10001, 10002, 10003) Gruppe nach a.emp_no; +-----------------+-------------+ | Name | Mindest. Gehalt | +-----------------+--------------+| Facello, Georgi | 60117 | | Simmel, Bezalel | 65828 | | Bamford, Parto | 40006 | +-----------------+-----------------+3 Zeilen in Set (0).00 Sek.) 
Gruppierung von MySQL -Datensätzen mithilfe von MAX- und MIN -Schlüsselwörtern

Können Sie basierend auf den oben genannten Ergebnissen erraten, was die folgende Abfrage zurückgibt?

Mariadb [Mitarbeiter]> Wählen Sie concat (last_name, ',', first_name) als Name, rund (avg (b).Gehalt), 2) als "avg. Gehalt "von Mitarbeitern A beitreten Gehälter B auf a.emp_no = b.emp_no wo a.EMP_NO in (10001, 10002, 10003) Gruppe nach a.emp_no; +-----------------+-------------+ | Name | Avg. Gehalt | +-----------------+--------------+| Facello, Georgi | 75388.94 | | Simmel, Bezalel | 68854.50 | | Bamford, Parto | 43030.29 | +-----------------+-----------------+3 Zeilen in Set (0).01 Sek.) 

Wenn Sie zustimmen, dass es den Durchschnitt zurücksetzt (wie angegeben von Avg) Gehalt im Laufe der Zeit auf 2 Dezimalstellen (wie angegeben von RUNDEN), sie haben Recht.

Wenn wir die Summe der vom Mitarbeiter gruppierten Gehälter anzeigen und die Spitze zurückgeben möchten 5, Wir können die folgende Abfrage verwenden:

Mariadb [Mitarbeiter]> Wählen Sie EMP_NO, Summe (Gehalt) als Gehalt aus der Gehaltsgruppe von EMP_NO Order by Gehalt Desc Limit 5; +--------+---------+ | EMP_NO | Gehalt | +--------+----------+| 109334 | 2553036 | | 43624 | 2492873 | | 66793 | 2383923 | | 237542 | 2381119 | | 47978 | 2374024 | +--------+----------+5 Zeilen in Set (2.22 Sek.) 

In der obigen Anfrage werden die Gehälter vom Mitarbeiter gruppiert und dann wird die Summe durchgeführt.

Alles zusammenbringen

Glücklicherweise müssen wir nach der Abfrage keine Anfrage durchführen, um einen Bericht zu erstellen. Stattdessen können wir ein Skript mit einer Reihe von SQL -Befehlen erstellen, um alle erforderlichen Ergebnissätze zurückzugeben.

Sobald wir das Skript ausgeführt haben, gibt es die erforderlichen Informationen ohne weitere Intervention von unserem Teil zurück. Lassen Sie uns beispielsweise eine Datei namens erstellen MaxMinavg.sql im aktuellen Arbeitsverzeichnis mit folgenden Inhalten:

--Wählen Sie Datenbank -Verwendungsmitarbeiter aus. -Maximale Gehälter berechnen.Gehalt) als "maximal. Gehalt "von Mitarbeitern A beitreten Gehälter B auf a.emp_no = b.emp_no wo a.EMP_NO in (10001, 10002, 10003) Gruppe nach a.emp_no; -Mindestgehälter berechnen. Wählen Sie concat (last_name, ',', First_name) als Name, min (b).Gehalt) als "min. Gehalt "von Mitarbeitern A beitreten Gehälter B auf a.emp_no = b.emp_no wo a.EMP_NO in (10001, 10002, 10003) Gruppe nach a.emp_no; -Durchschnittsberechtigte, runde bis 2 Dezimalstellen auswählen concat (last_name, ', First_name) als Name, rund (AVG (B).Gehalt), 2) als "avg. Gehalt "von Mitarbeitern A beitreten Gehälter B auf a.emp_no = b.emp_no wo a.EMP_NO in (10001, 10002, 10003) Gruppe nach a.emp_no; 

Zeilen, die mit zwei Strichen beginnen, werden ignoriert, und die einzelnen Fragen werden nacheinander ausgeführt. Wir können dieses Skript entweder in der Befehlszeile Linux ausführen:

# Mysql -u Empadmin -p < maxminavg.sql Passwort eingeben:  Nennen Sie Max. Gehaltsfacello, Georgi 88958 Simmel, Bezalel 72527 Bamford, Parto 43699 Name min. Gehaltsfacello, Georgi 60117 Simmel, Bezalel 65828 Bamford, Parto 40006 Name AVG. Gehaltsfacello, Georgi 75388.94 Simmel, Bezalel 68854.50 Bamford, Parto 43030.29 

oder aus der Mariadb -Eingabeaufforderung:

# Mysql -u Empadmin -p Passwort eingeben: Willkommen im Mariadb Monitor. Befehle enden mit; oder \ g. Ihre MariADB -Verbindungs ​​-ID ist 4 Serverversion: 10.1.14-mariadb Mariadb Server Copyright (C) 2000, 2016, Oracle, Mariadb Corporation AB und andere. Geben Sie "Hilfe" ein; " oder '\ h' für Hilfe. Geben Sie '\ c' ein, um die aktuelle Eingabeanweisung zu löschen. Mariadb [(keine)]> Quelle MaxMinavg.sql Lesen von Tabelleninformationen zum Abschluss von Tabellen- und Spaltennamen Sie können diese Funktion deaktivieren, um ein schnelleres Start mit -a -Datenbank zu erhalten 
MySQL -Skript zum Ausführen von SQL -Befehlen

Zusammenfassung

In diesem Artikel haben wir erläutert, wie mehrere Mariadb -Funktionen verwendet werden, um die von den zurückgegebenen Ergebnissätzen zu verfeinern, die von zurückgegeben werden WÄHLEN Aussagen. Sobald sie definiert haben, können mehrere einzelne Abfragen in ein Skript eingefügt werden, um es leichter auszuführen und das Risiko menschlicher Fehler zu verringern.

Haben Sie Fragen oder Vorschläge zu diesem Artikel? Fühlen Sie sich frei, uns eine Notiz mit dem folgenden Kommentarformular zu geben. Wir freuen uns von Ihnen zu hören!