Συνήθεις ερωτήσεις συνέντευξης SQL για Amazon, Apple, Google

Το SQL χρησιμοποιείται σε μια μεγάλη ποικιλία εργασιών προγραμματισμού. Είναι σημαντικό να είστε εξοικειωμένοι με τη SQL εάν πρόκειται να κάνετε συνέντευξη σύντομα για μια θέση λογισμικού. Αυτό ισχύει ιδιαίτερα εάν πρόκειται να πραγματοποιήσετε συνέντευξη σε μια κορυφαία εταιρεία τεχνολογίας όπως η Amazon, η Apple ή η Google.

Αυτός ο οδηγός θα καλύψει τη βασική σύνταξη SQL ως ανανεωτικό και στη συνέχεια θα παραθέσει μερικές συνήθεις ερωτήσεις συνέντευξης SQL. Οι απαντήσεις για όλες τις ερωτήσεις δίνονται και μπορείτε να χρησιμοποιήσετε αυτές τις πληροφορίες για να μελετήσετε για τη συνέντευξη προγραμματισμού σας.

Βασικό παράδειγμα σύνταξης SQL

Το SQL είναι ένα διεθνές πρότυπο (ISO), αλλά θα βρείτε κάποιες διαφορές μεταξύ των εφαρμογών. Αυτός ο οδηγός χρησιμοποιεί το MySQL ως παράδειγμα, επειδή είναι η πιο δημοφιλής εφαρμογή του SQL.

Πώς να χρησιμοποιήσετε μια συγκεκριμένη βάση δεδομένων

Εδώ είναι η εντολή SQL που χρησιμοποιείται για την επιλογή της βάσης δεδομένων που περιέχει τους πίνακες για τις δηλώσεις SQL σας:

USE fcc_sql_guides_database; 

SELECT και FROM ρήτρες

Χρησιμοποιήστε το SELECT για να προσδιορίσετε ποιες στήλες των δεδομένων θέλετε να εμφανίζονται στα αποτελέσματα. Υπάρχουν επίσης επιλογές που μπορείτε να χρησιμοποιήσετε για να εμφανίσετε δεδομένα που δεν είναι στήλη πίνακα.

Το ακόλουθο παράδειγμα δείχνει δύο στήλες που έχουν επιλεγεί από τον πίνακα "μαθητής" και δύο υπολογιζόμενες στήλες. Η πρώτη από τις υπολογισμένες στήλες είναι ένας αριθμός χωρίς νόημα και η άλλη είναι η ημερομηνία του συστήματος.

SELECT studentID, FullName, 3+2 AS five, now() AS currentDate FROM student; 
εικόνα-1

ΟΤΙ ρήτρα

Ο όρος WHERE καθορίζει μια συνθήκη κατά τη λήψη δεδομένων. Ο όρος WHERE χρησιμοποιείται για τον περιορισμό του αριθμού των γραμμών που επιστρέφονται. Χρησιμοποιείται συχνά σε μια δήλωση SELECT, αλλά μπορεί επίσης να χρησιμοποιηθεί σε άλλες δηλώσεις όπως ΕΝΗΜΕΡΩΣΗ και ΔΙΑΓΡΑΦΗ.

Εδώ είναι η βασική σύνταξη της ρήτρας WHERE:

SELECT column1, column2 FROM table_name WHERE [condition]

Η συνθήκη σε μια ρήτρα WHERE μπορεί να περιλαμβάνει λογικούς τελεστές όπως>, <, =, LIKE, NOT, AND, OR.

Ακολουθεί ένα παράδειγμα μιας κατάστασης SQL που χρησιμοποιεί τον όρο WHERE. Καθορίζει ότι εάν κάποιος από τους μαθητές έχει συγκεκριμένες βαθμολογίες SAT (1000, 1400), δεν θα παρουσιαστούν:

SELECT studentID, FullName, sat_score, recordUpdated FROM student WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8 OR FullName LIKE '%Maximo%') AND sat_score NOT IN (1000, 1400); 
εικόνα-1

ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ (ASC, DESC)

Το ORDER BY μας δίνει έναν τρόπο να ταξινομήσουμε το αποτέλεσμα που έχει οριστεί από ένα ή περισσότερα από τα στοιχεία στην ενότητα SELECT.

Εδώ είναι η ίδια λίστα με την παραπάνω, αλλά ταξινομημένη κατά το πλήρες όνομα του μαθητή. Η προεπιλεγμένη σειρά ταξινόμησης είναι αύξουσα (ASC), αλλά για να ταξινομήσετε με την αντίθετη σειρά (φθίνουσα) χρησιμοποιείτε DESC, όπως στο παρακάτω παράδειγμα:

SELECT studentID, FullName, sat_score FROM student WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8 OR FullName LIKE '%Maximo%') AND sat_score NOT IN (1000, 1400) ORDER BY FullName DESC; 
εικόνα-1

ΟΜΑΔΑ ΑΠΟ ΚΑΙ ΕΧΟΥΝ

Το GROUP BY μας δίνει έναν τρόπο να συνδυάσουμε σειρές και συγκεντρωτικά δεδομένα. Η ρήτρα HAVING είναι όπως η παραπάνω ρήτρα WHERE, εκτός από το ότι ενεργεί στα ομαδοποιημένα δεδομένα.

Η παρακάτω δήλωση SQL απαντά στην ερώτηση: "Ποιοι υποψήφιοι έλαβαν τον μεγαλύτερο αριθμό συνεισφορών (ταξινομήθηκαν κατά καταμέτρηση (*)) το 2016, αλλά μόνο εκείνοι που είχαν περισσότερες από 80 συνεισφορές;"

Η παραγγελία αυτού του συνόλου δεδομένων με φθίνουσα σειρά (DESC) τοποθετεί τους υποψηφίους με τον μεγαλύτερο αριθμό συνεισφορών στην κορυφή της λίστας.

SELECT Candidate, Election_year, SUM(Total_$), COUNT(*) FROM combined_party_data WHERE Election_year = 2016 GROUP BY Candidate, Election_year HAVING count(*) > 80 ORDER BY count(*) DESC; 
εικόνα-1

Συνήθεις ερωτήσεις συνέντευξης SQL

Τι είναι μια εσωτερική ένωση στο SQL;

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

SELECT * FROM A x JOIN B y ON y.aId = x.Id

Τι είναι η αριστερή ένωση στο SQL;

Η αριστερή ένωση επιστρέφει όλες τις σειρές από τον αριστερό πίνακα και τις αντιστοιχισμένες σειρές από τον δεξιό πίνακα. Οι σειρές στο αριστερό τραπέζι θα επιστραφούν ακόμη και αν δεν υπήρχε αντιστοιχία στο σωστό τραπέζι. Οι σειρές από τον αριστερό πίνακα χωρίς αντιστοίχιση στον δεξιό πίνακα θα έχουν nullτιμές δεξιού πίνακα.

SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id

Τι είναι η σωστή συμμετοχή στο SQL;

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

SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id

Τι είναι η πλήρης ένωση ή η πλήρης εξωτερική ένωση στο SQL;

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

SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName

Ποιο είναι το αποτέλεσμα της παρακάτω εντολής;

DROP VIEW view_name

This will result in an error because you can’t perform a DML operation on a view. A DML operation is any operation that manipulates the data such as DROP, INSERT, UPDATE, and DELETE.

Can we perform a rollback after using ALTER command?

No, because ALTER is a DDL command and Oracle server performs an automatic COMMIT when the DDL statements are executed. DDL statements define data structures such as CREATE table and ALTER table.

Which is the only constraint that enforces rules at column level?

NOT NULL is the only constraint that works at the column level.

What are the pseudocolumns in SQL? Give some examples?

A pseudocolumn behaves like a column, but is not actually stored in the table because it is all generated values. The values of a pseudocolumn can be selected but they cannot be inserted, updated, or deleted.

ROWNUM, ROWID, USER, CURRVAL, NEXTVAL etc.

Create a user "my723acct" with password "kmd26pt". Use the "user_data" and temporary data tablespaces provided by PO8 and provide to this user 10M of storage space in "user_data" and 5M of storage space in "temporary_data".

CREATE USER my723acct IDENTIFIED BY kmd26pt DEFAULT TABLESPACE user_data TEMPORARY TABLESPACE temporary_data QUOTA 10M on user_data QUOTA 5M on temporary_data

Create the role role_tables_and_views.

CREATE ROLE role_tables_and_views

Grant to the role of the previous question the privileges to connect to the database and the privileges to create tables and views.

The privilege to connect to the database is CREATE SESSION The privilege to create table is CREATE TABLE The privilege to create view is CREATE VIEW

 GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO role_tables_and_views

Grant the previous role in the question to the users anny and rita.

 GRANT role_tables_and_views TO anny, rita

Write a command to change the password of the user rita from "abcd" to "dfgh"

 ALTER USER rita IDENTIFIED BY dfgh

The users rita and anny do not have SELECT privileges on the table INVENTORY that was created by scott. Write a command to allow scott to grant the users SELECT privileges on theses  tables.

 GRANT select ON inventory TO rita, anny

User rita has been transferred and no longer needs the privilege that was granted to her through the rolerole_tables_and_views. Write a command to remove her from her previously given privileges. She should still be able to connect to the database.

REVOKE select ON scott.inventory FROM rita REVOKE create table, create view FROM rita

Η Ρίτα χρήστη που μεταφέρθηκε μεταβαίνει πλέον σε άλλη εταιρεία. Επειδή τα αντικείμενα που δημιούργησε δεν χρησιμοποιούνται πλέον, γράψτε μια εντολή για να καταργήσετε αυτόν τον χρήστη και όλα τα αντικείμενά της.

Η επιλογή CASCADE είναι απαραίτητη για την κατάργηση όλων των αντικειμένων του χρήστη στη βάση δεδομένων.

DROP USER rita CASCADE

Γράψτε ένα ερώτημα SQL για να βρείτε το ένατο υψηλότερο "Μισθός" από τον πίνακα "Υπάλληλος".

 SELECT TOP 1 Salary FROM ( SELECT DISTINCT TOP N Salary FROM Employee ORDER BY Salary DESC ) ORDER BY Salary ASC

συμπέρασμα

Εάν νομίζετε ότι μπορείτε να απαντήσετε σε όλες αυτές τις ερωτήσεις, ίσως είστε έτοιμοι για τη συνέντευξή σας. Καλή τύχη!