שאלות נפוצות בנושא ראיונות SQL עבור אמזון, אפל, גוגל

SQL משמש במגוון רחב של עבודות תכנות. חשוב להכיר את SQL אם אתה מתכוון להתראיין לתפקיד תוכנה. זה נכון במיוחד אם אתה מתכוון לראיין בחברת טק מובילה כמו אמזון, אפל או גוגל.

מדריך זה יכסה תחביר 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 אך יכול לשמש גם בהצהרות אחרות כגון 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

זה יביא לשגיאה מכיוון שלא ניתן לבצע פעולת DML בתצוגה. פעולת DML היא כל פעולה שמטפלת בנתונים כגון DROP, INSERT, UPDATE ו- DELETE.

האם נוכל לבצע החזר לאחר הפקודה ALTER?

לא, מכיוון ש- ALTER היא פקודת DDL ושרת Oracle מבצע התחייבות אוטומטית בעת ביצוע הצהרות DDL. הצהרות DDL מגדירות מבני נתונים כגון CREATE tableו ALTER table.

מה האילוץ היחיד שאוכף כללים ברמת העמודה?

NOT NULL הוא האילוץ היחיד שעובד ברמת העמודה.

מהן עמודות הדם ב- SQL? תן כמה דוגמאות?

עמוד פסאודו מתנהג כמו עמודה, אך למעשה אינו מאוחסן בטבלה מכיוון שכולם ערכים שנוצרו. ניתן לבחור את הערכים של עמוד פסאודו אך לא ניתן להוסיף אותם, לעדכן אותם או למחוק אותם.

ROWNUM, ROWID, USER, CURRVAL, NEXTVAL etc.

צור משתמש "my723acct" עם הסיסמה "kmd26pt". השתמש במרחבי "user_data" ובנתוני הנתונים הזמניים המסופקים על ידי PO8 וספק למשתמש זה 10M שטח אחסון ב- "user_data" ו- 5M שטח אחסון ב- "זמני_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

צור את התפקיד role_tables_and_views .

CREATE ROLE role_tables_and_views

הענק לתפקיד השאלה הקודמת את ההרשאות להתחבר למסד הנתונים ואת ההרשאות ליצור טבלאות ותצוגות.

ההרשאה להתחבר למסד הנתונים היא CREATE SESSION ההרשאה ליצור טבלה היא CREATE TABLE ההרשאה ליצור תצוגה היא CREATE VIEW

 GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO role_tables_and_views

גרנט בתפקיד הקודם בשאלה למשתמשים אנני ואת ריטה .

 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

סיכום

אם אתה חושב שתוכל לענות על כל השאלות הללו, ייתכן שאתה מוכן לראיון שלך. בהצלחה!