11 Προηγμένη βάση δεδομένων MySQL "Ερωτήσεις και απαντήσεις συνέντευξης" για χρήστες Linux


Έχουμε ήδη δημοσιεύσει δύο άρθρα MySQL, τα οποία εκτιμήθηκαν πολύ από την Κοινότητα Tecmint. Αυτό είναι το τρίτο άρθρο για τη σειρά Συνεντεύξεων MySQL και δεκαέξι στη Στήλη Είδος Συνέντευξης.

  1. 15 Βασικές ερωτήσεις συνέντευξης MySQL
  2. 10 Ερωτήσεις συνέντευξης βάσης δεδομένων MySQL για ενδιάμεσους

Φτάσαμε εδώ χάρη στην υποστήριξή σας και επιδιώκουμε το ίδιο και στο μέλλον από το τέλος σας. Εδώ σε αυτό το άρθρο θα επικεντρωθούμε στην πρακτική πτυχή της MySQL, την ερώτηση που σχετίζεται με την πτυχή της συνέντευξης.

1. Χρησιμοποιώντας τη δήλωση SELECT βρείτε την έκδοση του διακομιστή που εκτελείτε και εκτυπώστε το όνομα της τρέχουσας βάσης δεδομένων;

Απ.: Η παρακάτω εντολή MySQL θα εμφανίσει την έκδοση διακομιστή και την τρέχουσα επιλεγμένη βάση δεδομένων.

mysql> SELECT VERSION(), DATABASE();

+-------------------------+------------+
| VERSION()               | DATABASE() |
+-------------------------+------------+
| 5.5.34-0ubuntu0.13.10.1 | NULL       |
+-------------------------+------------+
1 row in set (0.06 sec)

Στη στήλη βάσης δεδομένων εμφανίζει τιμή NULL επειδή δεν έχουμε επιλέξει καμία βάση δεδομένων. Επομένως, επιλέξτε βάση δεδομένων όπως φαίνεται στην ακόλουθη εντολή.

mysql> use Tecmint;

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select VERSION(), DATABASE();

+-------------------------+------------+
| VERSION()               | DATABASE() |
+-------------------------+------------+
| 5.5.34-0ubuntu0.13.10.1 | tecmint    |
+-------------------------+------------+
1 row in set (0.00 sec)
2. USE NOT Operator (!) για να επιλέξετε όλους τους χρήστες εκτός από το "SAM" από έναν πίνακα που λέει "Tecmint"

Απ.: Η παρακάτω δήλωση θα εμφανίσει όλες τις στήλες όλων των χρηστών από τον πίνακα "Tecmint" εκτός από τον χρήστη "SAM'.

mysql> SELECT * FROM Tecmint WHERE user !=SAM;

+---------------------+---------+---------+---------+---------+-------+ 
| date                | user    | host 	 | root     | local   | size  | 
+---------------------+---------+---------+---------+---------+-------+ 
| 2001-05-14 14:42:21 | Anthony | venus  | barb     | venus   | 98151 | 
| 2001-05-15 08:50:57 | TIM     | venus  | phil     | venus   | 978   | 
+---------------------+---------+---------+---------+---------+-------+
3. Είναι δυνατή η υλοποίηση του ‘AND’ με το NOT (!) Operator.

Απαντήσεις: Ο τελεστής AND χρησιμοποιείται όταν χρησιμοποιούμε (=) και ο τελεστής OR όταν χρησιμοποιούμε (!=). Ένα παράδειγμα του (=) με AND Operator.

mysql> SELECT * FROM mail WHERE user = SAM AND root = phil

Παράδειγμα (!=) με τελεστή OR.

mysql> SELECT * FROM mail WHERE user != SAM OR root != phil

+---------------------+---------+---------+---------+---------+-------+ 
| date                | user    | host    | root    | local   | size  | 
+---------------------+---------+---------+---------+---------+-------+ 
| 2001-05-14 14:42:21 | Anthony | venus   | barb    | venus   | 98151 | 
+---------------------+---------+---------+---------+---------+-------+
  1. = : σημαίνει ίσο με
  2. != : Δεν ισούται με
  3. ! : αντιπροσωπεύει NOT Operator

Οι AND & OR αντιμετωπίζονται ως τελεστές σύνδεσης στη MySQL.

4. Για ποια δήλωση IFNULL() χρησιμοποιείται στη MySQL;

Απαντήσεις: Το ερώτημα στη MySQL μπορεί να γραφτεί με ακρίβεια χρησιμοποιώντας την πρόταση IFNULL(). Η δήλωση IFNULL() δοκιμάζει το πρώτο της όρισμα και επιστρέφει εάν δεν είναι NULL ή επιστρέφει το δεύτερο όρισμα, διαφορετικά.

mysql> SELECT name, IFNULL(id,'Unknown') AS 'id' FROM taxpayer;

+---------+---------+ 
| name 	  | id      | 
+---------+---------+ 
| bernina | 198-48  | 
| bertha  | Unknown | 
| ben     | Unknown | 
| bill    | 475-83  | 
+---------+---------+
5. Θέλετε να βλέπετε μόνο ορισμένες σειρές από ένα σύνολο αποτελεσμάτων από την αρχή ή το τέλος ενός συνόλου αποτελεσμάτων. Πώς θα το κάνετε;

Απ.: Πρέπει να χρησιμοποιήσουμε την ρήτρα LIMIT μαζί με την ORDER BY για να επιτύχουμε το παραπάνω σενάριο.

Εμφάνιση 1 Εγγραφή
mysql> SELECT * FROM name LIMIT 1;

+----+------+------------+-------+----------------------+------+ 
| id | name | birth      | color | foods                | cats | 
+----+------+------------+-------+----------------------+------+ 
| 1  | Fred | 1970-04-13 | black | lutefisk,fadge,pizza | 0    | 
+----+------+------------+-------+----------------------+------+
Εμφάνιση 5 Εγγραφή
mysql> SELECT * FROM profile LIMIT 5;

+----+------+------------+-------+-----------------------+------+ 
| id | name | birth      | color | foods                 | cats | 
+----+------+------------+-------+-----------------------+------+ 
| 1  | Fred | 1970-04-13 | black | lutefisk,fadge,pizza  | 0    | 
| 2  | Mort | 1969-09-30 | white | burrito,curry,eggroll | 3    | 
| 3  | Brit | 1957-12-01 | red   | burrito,curry,pizza   | 1    |   
| 4  | Carl | 1973-11-02 | red   | eggroll,pizza         | 4    | 
| 5  | Sean | 1963-07-04 | blue  | burrito,curry         | 5    | 
+----+------+------------+-------+-----------------------+------+
mysql> SELECT * FROM profile ORDER BY birth LIMIT 1;

+----+------+------------+-------+----------------+------+ 
| id | name | birth      | color | foods          | cats | 
+----+------+------------+-------+----------------+------+ 
| 9  | Dick | 1952-08-20 | green | lutefisk,fadge | 0    | 
+----+------+------------+-------+----------------+------+
6. Oracle εναντίον MySQL. Ποιο και Γιατί;

Απ: Και τα δύο έχουν τα πλεονεκτήματα και τα μειονεκτήματά τους. Ως θέμα χρόνου προτιμώ τη MySQL.

Λόγος επιλογής MySQL Over Oracle
  1. Η Mysql είναι FOSS.
  2. Η MySQL είναι φορητή.
  3. Η MYSQL υποστηρίζει τόσο το γραφικό περιβάλλον όσο και τη γραμμή εντολών.
  4. Η διαχείριση MySQL υποστηρίζεται μέσω του Query Browser.
7. Πώς θα λάβετε την τρέχουσα ημερομηνία στη MySQL;

Απ.: Η λήψη της τρέχουσας ημερομηνίας στη MySQL είναι τόσο απλή όσο η εκτέλεση της παρακάτω δήλωσης SELECT.

mysql> SELECT CURRENT_DATE();

+----------------+
| CURRENT_DATE() |
+----------------+
| 2014-06-17     |
+----------------+
8. Πώς θα εξάγετε πίνακες ως αρχείο XML στη MySQL;

Απ.: Χρησιμοποιούμε την επιλογή "-e" (εξαγωγή) για την εξαγωγή του πίνακα MySQL ή ολόκληρης της βάσης δεδομένων σε ένα αρχείο XML. Με μεγάλους πίνακες μπορεί να χρειαστεί να το εφαρμόσουμε χειροκίνητα, αλλά για μικρούς πίνακες, εφαρμογές όπως το phpMyAdmin μπορούν να κάνουν τη δουλειά.

Μια εγγενής εντολή της MySQL μπορεί να το κάνει.

mysql -u USER_NAME –xml -e 'SELECT * FROM table_name' > table_name.xml

Όπου USER_NAME είναι το όνομα χρήστη της βάσης δεδομένων, το table_name είναι ο πίνακας που εξάγουμε σε XML και το table_name.xml είναι το αρχείο xml όπου αποθηκεύονται τα δεδομένα.

9. Τι είναι το MySQL_pconnect; Και σε τι διαφέρει από το MySQL_connect;

Απ.: Η MySQL_pconnect() ανοίγει μια σύνδεση που είναι μόνιμη με τη βάση δεδομένων MySQL που σημαίνει απλώς ότι η βάση δεδομένων δεν ανοίγει κάθε φορά που φορτώνεται η σελίδα και ως εκ τούτου δεν μπορούμε χρησιμοποιήστε MySQL_close() για να κλείσετε μια μόνιμη σύνδεση.

Μια σύντομη διαφορά μεταξύ MySQL_pconnect και MySQL_connect είναι.

Σε αντίθεση με το MySQL_pconnect, το MySQL_connect – Ανοίγει τη βάση δεδομένων κάθε φορά που φορτώνεται η σελίδα, η οποία μπορεί να κλείσει οποιαδήποτε στιγμή χρησιμοποιώντας τη δήλωση MySQL_close().

10. Πρέπει να εμφανίσετε όλα τα ευρετήρια που ορίζονται σε έναν πίνακα π.χ. «χρήστης» της βάσης δεδομένων π.χ. «mysql». Πώς θα το πετύχετε αυτό;

Απαντήσεις: Η ακόλουθη εντολή θα εμφανίσει όλα τα ευρετήρια ενός πίνακα "χρήστης".

mysql> show index from user;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | 
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 
| user  |          0 | PRIMARY  |            1 | Host        | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               | 
| user  |          0 | PRIMARY  |            2 | User        | A         |           4 |     NULL | NULL   |      | BTREE      |         |               | 
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 
2 rows in set (0.00 sec)
11. Τι είναι οι πίνακες CSV;

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

Κάθε εγγραφή χωρίζεται με συγκεκριμένους οριοθέτες (Κόμμα, Έν τελεία, …) όπου κάθε εγγραφή έχει την ίδια ακολουθία πεδίων. Οι πίνακες CSV χρησιμοποιούνται ευρέως για την αποθήκευση επαφών τηλεφώνου για Εισαγωγή και Εξαγωγή και μπορούν να χρησιμοποιηθούν για την αποθήκευση οποιουδήποτε είδους δεδομένων απλού κειμένου.

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