Често задавани въпроси за интервю за 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 определя условие при получаване на данни. Клаузата WHERE се използва за ограничаване на броя на върнатите редове. Често се използва в оператор SELECT, но може да се използва и в други изрази като UPDATE и DELETE.

Ето основния синтаксис на клаузата 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?

Пълното външно съединение и пълното съединение са едно и също нещо. Пълното външно присъединяване или пълно съединение връща всички редове от двете таблици, съвпадащи с редовете навсякъде, където може да се направи съвпадение, и поставяйки NULL на местата, където не съществува съвпадащ ред.

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 заявка, за да намерите n-тата най-висока „Заплата“ от таблицата „Служител“.

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

Заключение

Ако смятате, че можете да отговорите на всички тези въпроси, може да сте готови за вашето интервю. Късмет!