คำถามสัมภาษณ์ SQL ทั่วไปสำหรับ Amazon, Apple, Google

SQL ถูกใช้ในงานการเขียนโปรแกรมที่หลากหลาย สิ่งสำคัญคือต้องทำความคุ้นเคยกับ SQL หากคุณกำลังจะสัมภาษณ์ตำแหน่งซอฟต์แวร์ในเร็ว ๆ นี้ โดยเฉพาะอย่างยิ่งหากคุณกำลังจะไปสัมภาษณ์งานที่ บริษัท เทคโนโลยีชั้นนำเช่น Amazon, Apple หรือ Google

คู่มือนี้จะครอบคลุมไวยากรณ์ SQL พื้นฐานเพื่อเป็นการทบทวนและจากนั้นจึงเขียนคำถามสัมภาษณ์ SQL ทั่วไป มีคำตอบสำหรับคำถามทั้งหมดและคุณสามารถใช้ข้อมูลนี้เพื่อศึกษาสำหรับการสัมภาษณ์การเขียนโปรแกรมของคุณ

ตัวอย่างไวยากรณ์ SQL พื้นฐาน

SQL เป็นมาตรฐานสากล (ISO) แต่คุณจะพบความแตกต่างบางประการระหว่างการนำไปใช้งาน คู่มือนี้ใช้ MySQL เป็นตัวอย่างเนื่องจากเป็นการนำ SQL ไปใช้งานที่ได้รับความนิยมมากที่สุด

วิธีใช้ฐานข้อมูลเฉพาะ

นี่คือคำสั่ง SQL ที่ใช้เพื่อเลือกฐานข้อมูลที่มีตารางสำหรับคำสั่ง SQL ของคุณ:

USE fcc_sql_guides_database; 

เลือกและจากส่วนคำสั่ง

ใช้ SELECT เพื่อกำหนดคอลัมน์ของข้อมูลที่คุณต้องการแสดงในผลลัพธ์ นอกจากนี้ยังมีตัวเลือกที่คุณสามารถใช้เพื่อแสดงข้อมูลที่ไม่ใช่คอลัมน์ตาราง

ตัวอย่างต่อไปนี้แสดงคอลัมน์สองคอลัมน์ที่เลือกจากตาราง "นักเรียน" และคอลัมน์จากการคำนวณสองคอลัมน์ คอลัมน์แรกจากการคำนวณคือตัวเลขที่ไม่มีความหมายและอีกคอลัมน์คือวันที่ของระบบ

SELECT studentID, FullName, 3+2 AS five, now() AS currentDate FROM student; 
ภาพที่ 1

WHERE ประโยค

คำสั่ง WHERE ระบุเงื่อนไขขณะรับข้อมูล คำสั่ง WHERE ใช้เพื่อ จำกัด จำนวนแถวที่ส่งคืน มักใช้ในคำสั่ง SELECT แต่ยังสามารถใช้ในคำสั่งอื่น ๆ เช่น UPDATE และ DELETE

นี่คือไวยากรณ์พื้นฐานของ WHERE clause:

SELECT column1, column2 FROM table_name WHERE [condition]

เงื่อนไขในคำสั่ง WHERE สามารถรวมตัวดำเนินการเชิงตรรกะเช่น>, <, =, LIKE, NOT, AND, OR

นี่คือตัวอย่างของ SQL statment โดยใช้ WHERE clause ระบุว่าหากนักเรียนคนใดมีคะแนน SAT (1,000, 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

GROUP BY ช่วยให้เราสามารถรวมแถวและข้อมูลรวมได้ HAVING clause ก็เหมือนกับ WHERE clause ข้างต้นยกเว้นว่าจะทำหน้าที่กับข้อมูลที่จัดกลุ่ม

คำสั่ง SQL ด้านล่างตอบคำถาม:“ ผู้สมัครรายใดได้รับการสนับสนุนจำนวนมากที่สุด (เรียงตามจำนวน (*)) ในปี 2559 แต่มีเพียงผู้ที่มีผลงานมากกว่า 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

สรุป

หากคุณคิดว่าคุณสามารถตอบคำถามเหล่านี้ได้ทั้งหมดคุณอาจพร้อมสำหรับการสัมภาษณ์ของคุณ โชคดี!