Βασικές εντολές διαχείρισης βάσεων δεδομένων MySQL - Μέρος I


Η Βάση δεδομένων είναι ένα δομημένο σύνολο δεδομένων που αποθηκεύονται ηλεκτρονικά. Η έννοια της βάσης δεδομένων ήταν γνωστή στους προγόνους μας ακόμη και όταν δεν υπήρχαν υπολογιστές, ωστόσο η δημιουργία και η διατήρηση μιας τέτοιας βάσης δεδομένων ήταν πολύ κουραστική δουλειά. Σε μια μη αυτόματη βάση δεδομένων, ας πούμε 100 σελίδων, εάν πρέπει να αναζητήσετε όλους τους υπαλλήλους των οποίων ο μισθός ήταν μικρότερος από 10 χιλιάδες, σκεφτείτε πόσο δύσκολο θα ήταν, τότε .

Στον σημερινό κόσμο δεν μπορείτε να ξεφύγετε από τη Βάση δεδομένων. Αυτήν τη στιγμή εκατομμύρια βάσεις δεδομένων εργάζονται σε όλο τον κόσμο για την αποθήκευση και την ανάκτηση δεδομένων κάθε είδους είτε είναι στρατηγικά δεδομένα, αρχεία εργαζομένων ή τεχνολογίες Ιστού.

Η βάση δεδομένων αποκαλείται συχνά ως διαδικασία back-end, επειδή δεν είναι ούτε ορατή στον τελικό χρήστη ούτε ο Τελικός χρήστης αλληλεπιδρά απευθείας με τη βάση δεδομένων. Λειτουργούν σε διεργασίες διεπαφής, π.χ., PHP, VB, ASP.NET κ.λπ. και ζητούν από το μπροστινό μέρος να ασχοληθεί με τη βάση δεδομένων στο back-end.

Υπάρχουν αρκετοί διακομιστές βάσεων δεδομένων και πελάτης διαθέσιμοι όπως Oracle, MySQL, MySQLi, MariaDB, MongoDB κ.λπ. Η σύνταξη όλων αυτών είναι περισσότερες ή λιγότερο το ίδιο. Η εκμάθηση ενός σημαίνει να αποκτήσετε έλεγχο στα περισσότερα από αυτά και να μάθετε τα ερωτήματα μιας βάσης δεδομένων είναι πολύ εύκολη και διασκεδαστική.

Ας ξεκινήσουμε με απλά ερωτήματα στη βάση δεδομένων. Θα χρησιμοποιήσουμε το MySQL το οποίο συνοδεύεται από τις περισσότερες από τις διανομές Linux από προεπιλογή, μπορείτε να το εγκαταστήσετε χειροκίνητα από το αποθετήριο, εάν δεν είναι εγκατεστημένο από προεπιλογή στην περίπτωσή σας.

Λοιπόν, ένα ερώτημα βάσης δεδομένων είναι ένα απλό κομμάτι κώδικα που αποστέλλεται στη βάση δεδομένων για να λάβετε προσαρμοσμένο και εκλεπτυσμένο αποτέλεσμα, όπως απαιτείται.

Εγκαταστήστε τη βάση δεδομένων MySQL

Χρησιμοποιήστε τη διαχείριση πακέτων "yum" ή "apt" για να εγκαταστήσετε τη βάση δεδομένων MySQL.

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

apt-get install mysql mysql-client mysql-server (on Apt based Systems)
Ξεκινήστε τη MySQL

Ξεκινήστε την υπηρεσία βάσης δεδομένων MySQL ως:

service mysqld start
or
service mysql start

Η εγκατάσταση μιας βάσης δεδομένων MySQL θα σας οδηγήσει στη διαμόρφωση όπου σας ζητείται να ρυθμίσετε τον κωδικό πρόσβασης admin κ.λπ. Μόλις ολοκληρώσετε την εγκατάσταση και την εκκίνηση του διακομιστή, μεταβείτε στο MySQL σας προτροπή.

mysql -u root -p

Αντικαταστήστε το root με το διαμορφωμένο όνομα χρήστη και εισαγάγετε κωδικό πρόσβασης όταν σας ζητηθεί, εάν τα διαπιστευτήρια σύνδεσης είναι σωστά, θα βρίσκεστε στο MySQL< Προτροπή μόλις αναβοσβήνουν τα μάτια σας.

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>

Τώρα η διενέργεια ερωτημάτων σε αυτήν την προτροπή είναι πολύ διδακτική και διασκεδαστική.

Δημιουργήστε μια βάση δεδομένων tecmint
mysql> create database tecmint ;
Query OK, 1 row affected (0.02 sec) 

mysql>

Σημείωση: Αναφέρει ότι το ερώτημα ήταν σωστό, σημαίνει ότι δημιουργήθηκε η βάση δεδομένων. Μπορείτε να επαληθεύσετε τη βάση δεδομένων που δημιουργήθηκε πρόσφατα ως.

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

Σημείωση: Παρατηρήστε τη βάση δεδομένων σας στην παραπάνω έξοδο.

Επιλέξτε Βάση δεδομένων

Τώρα πρέπει να επιλέξετε τη βάση δεδομένων για να εργαστείτε σε αυτήν.

mysql> use tecmint;
Database changed
mysql>
Δημιουργία πινάκων στη MySQL

Εδώ θα δημιουργήσουμε έναν πίνακα λέγοντας "minttec" με τρία πεδία όπως:

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

Σημείωση: Το παραπάνω ερώτημα λέει OK που σημαίνει ότι ο πίνακας δημιουργήθηκε χωρίς κανένα σφάλμα. Για να επαληθεύσετε τον πίνακα εκτελέστε το παρακάτω ερώτημα.

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

1 row in set (0.00 sec) 

mysql>

Τα πράγματα πάνε καλά μέχρι τώρα. Ναι! Μπορείτε να προβάλετε τις στήλες που δημιουργήσατε στον πίνακα "minttec" ως:

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>

Δεν ήταν τίποτα λιγότερο από μια μαγεία. Τέλος πάντων θα σας πω για τα είδη της δήλωσης και τη σημασία τους.

  1. Το Int είναι Ακέραιος
  2. Το Varchar είναι το char με μεταβλητό μήκος όπως ορίζεται. Η τιμή μετά το Type είναι το μήκος του πεδίου μέχρι το οποίο μπορεί να αποθηκεύσει δεδομένα.

Εντάξει τώρα πρέπει να προσθέσουμε μια στήλη λέγοντας "last_name" μετά τη στήλη "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

Τώρα, επαληθεύστε το στον πίνακά σας.

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>
Προσθήκη στήλης στη MySQL

Τώρα θα προσθέσουμε μια στήλη στα δεξιά, λέγοντας μια στήλη "χώρα" στα δεξιά του email.

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>

Επαληθεύστε το παραπάνω ερώτημα εισαγωγής στήλης.

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>
Εισαγωγή τιμών στο πεδίο

Τι γίνεται με την εισαγωγή τιμών στο πεδίο;

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

mysql>

Τι θα λέγατε να εισάγετε περισσότερες από 1 τιμές κάθε φορά στον παραπάνω πίνακα.

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

Επαληθεύστε την παραπάνω εισαγωγή.

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>
Διαγραφή τιμών στο πεδίο

Ας υποθέσουμε ότι η τρίτη καταχώρηση στην παραπάνω έξοδο δεν είναι έγκυρη και πρέπει να διαγράψουμε την τρίτη καταχώρηση.

mysql> DELETE FROM minttec WHERE id = 3;

Query OK, 1 row affected (0.02 sec)

Επαληθεύστε την παραπάνω λειτουργία.

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)
Ενημέρωση τιμών στο πεδίο

Το αναγνωριστικό (=4) πρέπει να επεξεργαστεί.

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>

Επαληθεύστε το παραπάνω ερώτημα.

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>

Σημείωση: Το παραπάνω ερώτημα, όπως εκτελέστηκε, δεν είναι καλή ιδέα. Θα αλλάξει το αναγνωριστικό σε "4" όπου το πρώτο όνομα είναι "tecmint". Είναι πάντα καλή ιδέα να χρησιμοποιείτε περισσότερες από μία στήλες με ρήτρα όπου για να λαμβάνετε ελάχιστο σφάλμα, όπως:

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>
Διαγραφή στήλης στο MySQL

Ας πρέπει να ρίξουμε (διαγράψουμε) μια στήλη που πιστεύουμε ότι δεν έχει σημασία, πείτε «χώρα» εδώ.

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

mysql>

Επαληθεύστε τον πίνακα.

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>
Μετονομασία πίνακα στη MySQL

Δεν νομίζετε ότι το όνομα του τραπεζιού μας "minttec" δεν είναι πολύ σχετικό. Τι θα λέγατε να το αλλάξετε σε tecmint_table.

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

mysql>
Καταχωρίστε όλους τους πίνακες

Δείτε όλους τους πίνακες κάτω από την τρέχουσα βάση δεδομένων.

mysql> show tables; 

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

mysql>

Ο πίνακας έχει μετονομαστεί. Τώρα δημιουργήστε ένα αντίγραφο ασφαλείας της παραπάνω βάσης δεδομένων MySQL, σε μία γραμμή εντολών χωρίς κάποιο εξελιγμένο εργαλείο. Εκτελέστε τον παρακάτω κώδικα στο τερματικό σας και όχι στη γραμμή εντολών 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

Είναι πάντα καλή ιδέα να διατηρείτε Backup των βάσεων δεδομένων MySQL. Η επαναφορά των δεδομένων MySQL που έχουν δημιουργηθεί αντίγραφα ασφαλείας είναι και πάλι μια απλή γραμμή κώδικα που πρέπει να εκτελέσετε στη γραμμή εντολών του τερματικού σας και όχι στη γραμμή εντολών mysql.

Αλλά, περιμένετε πρώτα, θα διαγράψουμε τη βάση δεδομένων για να επαληθεύσουμε εάν η επαναφορά μας είναι τέλεια.

Διαγραφή βάσης δεδομένων
mysql> drop database tecmint; 
Query OK, 1 row affected (0.02 sec)

Ελέγξτε για «tecmint» της βάσης δεδομένων στον διακομιστή της βάσης δεδομένων σας.

mysql> show databases; 

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

7 rows in set (0.00 sec) 
mysql>

Εξαιρετική! Η βάση δεδομένων έχει χαθεί, αλλά δεν χρειάζεται να ανησυχούμε, έχουμε το αντίγραφο ασφαλείας.

Επαναφορά μιας βάσης δεδομένων

Για να επαναφέρετε τη χαμένη βάση δεδομένων, εκτελέστε την ακόλουθη εντολή.

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

ΟΠΣ! Ένα σφάλμα, δεν έχουμε δημιουργήσει τη βάση δεδομένων tecmint. Επομένως, μεταβείτε στην προτροπή mysql και δημιουργήστε μια βάση δεδομένων «tecmint».

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

mysql>

Τώρα είναι ώρα να εκτελέσετε την εντολή επαναφοράς στη γραμμή εντολών του κελύφους σας (αυστηρά).

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

Επαληθεύστε τη βάση δεδομένων σας.

mysql> show databases; 

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

Επαληθεύστε τα περιεχόμενα της βάσης δεδομένων.

mysql> show tables from tecmint;

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

mysql>

Επαληθεύστε τα περιεχόμενα του πίνακα που έχετε επαναφέρει.

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)

Αυτό δεν είναι το τέλος σίγουρα, θα καλύψουμε την έννοια του πρωτεύοντος κλειδιού, του ξένου κλειδιού, του πολλαπλών πινάκων και των ερωτημάτων που εκτελούνται ισχυρό> χρησιμοποιώντας απλό σενάριο PHP στο επόμενο μέρος του άρθρου.

Μην ξεχάσετε να πείτε μας, πώς νιώσατε καθώς παρακολουθούσατε το άρθρο. Τα σχόλιά σας εκτιμώνται ιδιαίτερα. Μείνετε Υγιείς και Συντονισμένοι, παραμείνετε συνδεδεμένοι στο Tecmint.