0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

海外の転職面接関連で完走を目指すAdvent Calendar 2023

Day 10

Job Interview Questions SQL 3

Last updated at Posted at 2023-12-25
  1. What are the different types of joins in SQL?
    The different types of joins in SQL include:

    • INNER JOIN: Returns records that have matching values in both tables.
    • LEFT JOIN (or LEFT OUTER JOIN): Returns all records from the left table and the matched records from the right table.
    • RIGHT JOIN (or RIGHT OUTER JOIN): Returns all records from the right table and the matched records from the left table.
    • FULL JOIN (or FULL OUTER JOIN): Returns all records when there is a match in either left or right table records.
    • CROSS JOIN: Returns the Cartesian product of the two tables, combining all rows from both tables.
      SQLの異なる結合の種類は以下の通りです:
    • INNER JOIN: 両方のテーブルで一致する値を持つレコードを返します。
    • LEFT JOIN(または LEFT OUTER JOIN): 左側のテーブルのすべてのレコードと、右側のテーブルの一致するレコードを返します。
    • RIGHT JOIN(または RIGHT OUTER JOIN): 右側のテーブルのすべてのレコードと、左側のテーブルの一致するレコードを返します。
    • FULL JOIN(または FULL OUTER JOIN): 左側または右側のテーブルのいずれかのレコードに一致する場合、すべてのレコードを返します。
    • CROSS JOIN: 2つのテーブルの直積を返し、両方のテーブルのすべての行を組み合わせます。
  2. What is INNER JOIN in SQL?
    An INNER JOIN returns only the rows that have matching values in both tables involved in the join.
    INNER JOINは、結合に関与する両方のテーブルに一致する値を持つ行のみを返します。
    例:

    SELECT Students.Name, Courses.CourseName
    FROM Students
    INNER JOIN Enrollments ON Students.StudentID = Enrollments.StudentID
    INNER JOIN Courses ON Enrollments.CourseID = Courses.CourseID;
    
  3. What is the RIGHT JOIN in SQL?
    A RIGHT JOIN returns all the rows from the right table and the matched rows from the left table. If there is no match, NULL values are returned for columns from the left table.
    RIGHT JOINは、右側のテーブルのすべての行と、左側のテーブルの一致する行を返します。一致がない場合、左側のテーブルの列にはNULL値が返されます。
    例:

    SELECT Students.Name, Courses.CourseName
    FROM Students
    RIGHT JOIN Enrollments ON Students.StudentID = Enrollments.StudentID
    RIGHT JOIN Courses ON Enrollments.CourseID = Courses.CourseID;
    
  4. What is LEFT JOIN in SQL?
    A LEFT JOIN returns all the rows from the left table and the matched rows from the right table. If there is no match, NULL values are returned for columns from the right table.
    LEFT JOINは、左側のテーブルのすべての行と、右側のテーブルの一致する行を返します。一致がない場合、右側のテーブルの列にはNULL値が返されます。
    例:

    SELECT Students.Name, Courses.CourseName
    FROM Students
    LEFT JOIN Enrollments ON Students.StudentID = Enrollments.StudentID
    LEFT JOIN Courses ON Enrollments.CourseID = Courses.CourseID;
    
  5. What is FULL JOIN in SQL?
    A FULL JOIN returns all rows when there is a match in either left or right table records. It returns NULL for non-matching rows from both tables.
    FULL JOINは、左側または右側のテーブルのいずれかのレコードに一致する場合、すべての行を返します。一致しない行には両方のテーブルからNULLが返されます。
    例:

    SELECT Students.Name, Courses.CourseName
    FROM Students
    FULL JOIN Enrollments ON Students.StudentID = Enrollments.StudentID
    FULL JOIN Courses ON Enrollments.CourseID = Courses.CourseID;
    
  6. What are the set operators in SQL?
    Set operators in SQL include:

    • UNION: Combines the result sets of two or more SELECT statements, removing duplicates.
    • UNION ALL: Combines the result sets of two or more SELECT statements, including duplicates.
    • INTERSECT: Returns only the rows that are common to both SELECT statements.
    • EXCEPT (or MINUS): Returns the rows from the first SELECT statement that are not in the second SELECT statement.
      SQLの集合演算子には以下が含まれます:
    • UNION: 2つ以上のSELECT文の結果セットを結合し、重複を削除します。
    • UNION ALL: 2つ以上のSELECT文の結果セットを結合し、重複を含めます。
    • INTERSECT: 2つのSELECT文に共通する行のみを返します。
    • EXCEPT(またはMINUS): 2番目のSELECT文に存在しない1番目のSELECT文の行を返します。
  7. What is the difference between IN and BETWEEN operators?
    The IN operator checks if a value is within a set of specified values, while the BETWEEN operator checks if a value is within a range of values (inclusive).
    IN演算子は、値が指定された値の集合内にあるかどうかを確認します。一方、BETWEEN演算子は、値が値の範囲内(両端を含む)にあるかどうかを確認します。
    例:

    SELECT * FROM Students WHERE Name IN ('Alice', 'Bob');  -- IN example
    SELECT * FROM Students WHERE Age BETWEEN 18 AND 25;     -- BETWEEN example
    
  8. What is a constraint? Tell me about its various levels.
    A constraint is a rule applied to a column in a table to enforce data integrity. The various types of constraints include:

    • NOT NULL: Ensures that a column cannot have a NULL value.
    • UNIQUE: Ensures all values in a column are unique.
    • PRIMARY KEY: Uniquely identifies each row in a table and cannot contain NULL values.
    • FOREIGN KEY: Ensures referential integrity by linking to a primary key in another table.
    • CHECK: Ensures that all values in a column satisfy a specific condition.
      制約は、データ整合性を強化するためにテーブルの列に適用されるルールです。制約のさまざまな種類は以下の通りです:
    • NOT NULL: 列にNULL値を持つことができないことを保証します。
    • UNIQUE: 列内のすべての値が一意であることを保証します。
    • PRIMARY KEY: テーブル内の各行を一意に識別し、NULL値を含むことができません。
    • FOREIGN KEY: 他のテーブルのプライマリキーにリンクすることによって参照整合性を保証します。
    • CHECK: 列内のすべての値が特定の条件を満たすことを保証します。
  9. How to write an SQL query to find students' names starting with 'A'?
    To find students' names starting with 'A', you can use the LIKE operator with a wildcard.
    'A'で始まる学生の名前を見つけるために、LIKE演算子とワイルドカードを使用します。
    例:

    SELECT Name FROM Students WHERE Name LIKE 'A%';
    
  10. Write the SQL query to get the third maximum salary of an employee from a table named employees.
    You can use a subquery or the DISTINCT clause to get the third maximum salary.
    従業員テーブルから3番目に高い給与を取得するために、サブクエリまたはDISTINCT句を使用します。
    例:

    SELECT DISTINCT Salary 
    FROM Employees 
    ORDER BY Salary DESC 
    LIMIT 1 OFFSET 2;  -- For MySQL
    
    -- Alternatively, using a subquery:
    SELECT MAX(Salary) 
    FROM Employees 
    WHERE Salary < (SELECT MAX(Salary) FROM Employees WHERE Salary < (SELECT MAX(Salary) FROM Employees));
    
  11. What is the difference between DELETE and TRUNCATE statements in SQL?
    The DELETE statement removes rows from a table based on a specified condition and can be rolled back if wrapped in a transaction. It can be used with a WHERE clause to specify which rows to delete. The TRUNCATE statement, on the other hand, removes all rows from a table without logging individual row deletions, making it faster but irreversible. You cannot use a WHERE clause with TRUNCATE.
    DELETE文は、指定された条件に基づいてテーブルから行を削除し、トランザクションでラップされている場合はロールバックできます。WHERE句を使用して削除する行を指定できます。一方、TRUNCATE文は、個々の行削除をログに記録せずにテーブルからすべての行を削除するため、速度が速いですが、元に戻すことができません。TRUNCATEにはWHERE句を使用できません。
    例:

    DELETE FROM Employees WHERE Department = 'Sales'; -- Removes specific rows
    TRUNCATE TABLE Employees;                            -- Removes all rows
    
  12. Is a blank space or zero the same as a NULL value?
    No, a blank space or zero is not the same as a NULL value. NULL represents the absence of a value, while a blank space is an empty string and zero is a numeric value.
    いいえ、空白やゼロはNULL値とは異なります。NULLは値が存在しないことを表し、空白は空の文字列、ゼロは数値です。
    例:

    SELECT * FROM Employees WHERE Salary IS NULL;   -- Checks for NULL values
    SELECT * FROM Employees WHERE Salary = 0;       -- Checks for zero values
    SELECT * FROM Employees WHERE Name = '';        -- Checks for empty strings
    
  13. What are functions and their usage in SQL?
    Functions in SQL are built-in operations that can perform calculations, manipulate data, and return values. They can be categorized into:

    • Aggregate Functions: Perform a calculation on a set of values and return a single value (e.g., COUNT, SUM, AVG).
    • Scalar Functions: Operate on a single value and return a single value (e.g., UPPER, LOWER, ROUND).
      SQLの関数は、計算を実行し、データを操作し、値を返す組み込みの操作です。関数は以下に分類されます:
    • 集約関数: 値の集合に対して計算を行い、単一の値を返します(例:COUNT、SUM、AVG)。
    • スカラ関数: 単一の値に対して操作を行い、単一の値を返します(例:UPPER、LOWER、ROUND)。
      例:
    SELECT COUNT(*) FROM Employees;             -- Aggregate function
    SELECT UPPER(Name) FROM Employees;          -- Scalar function
    
  14. How do we use the DISTINCT statement? What is its use?
    The DISTINCT statement is used to remove duplicate values from the result set of a query. It ensures that each value returned is unique.
    DISTINCT文は、クエリの結果セットから重複する値を削除するために使用されます。返される各値が一意であることを保証します。
    例:

    SELECT DISTINCT Department FROM Employees;    -- Returns unique departments
    
  15. What is the default ordering of data using the ORDER BY clause? How could it be changed?
    The default ordering of data using the ORDER BY clause is ascending (ASC). To change the order to descending, you can specify DESC.
    ORDER BY句を使用したデータのデフォルトの順序は昇順(ASC)です。順序を降順に変更するには、DESCを指定できます。
    例:

    SELECT Name FROM Employees ORDER BY Salary;      -- Ascending order
    SELECT Name FROM Employees ORDER BY Salary DESC; -- Descending order
    
  16. How many Aggregate functions are available in SQL?
    Common aggregate functions in SQL include:

    • COUNT: Returns the number of rows.
    • SUM: Returns the sum of a numeric column.
    • AVG: Returns the average value of a numeric column.
    • MAX: Returns the maximum value.
    • MIN: Returns the minimum value.
      SQLで利用可能な一般的な集約関数には以下が含まれます:
    • COUNT: 行数を返します。
    • SUM: 数値列の合計を返します。
    • AVG: 数値列の平均値を返します。
    • MAX: 最大値を返します。
    • MIN: 最小値を返します。
  17. What is SQL Injection?
    SQL Injection is a type of cyber attack that involves inserting or "injecting" SQL queries via the input data from clients, allowing attackers to manipulate the database and execute unauthorized commands.
    SQLインジェクションは、クライアントからの入力データを介してSQLクエリを挿入または「注入」するサイバー攻撃の一種であり、攻撃者がデータベースを操作し、無許可のコマンドを実行できるようにします。
    例:

    • If a login form takes user input without validation, an attacker could enter '; DROP TABLE Students; -- as a username to delete the entire table.
    • ログインフォームがユーザー入力を検証せずに受け取ると、攻撃者がユーザー名として '; DROP TABLE Students; -- を入力することで、テーブル全体を削除できる可能性があります。
  18. What is the difference between the RANK() and DENSE_RANK() functions?
    The RANK() function assigns a unique rank to each row within a partition of a result set, with gaps in ranking when there are ties. The DENSE_RANK() function also assigns a rank but without gaps, meaning tied values receive the same rank, and the next value continues from the previous rank.
    RANK()関数は、結果セットの各行にユニークなランクを割り当て、同点の場合はランクにギャップを設けます。DENSE_RANK()関数もランクを割り当てますが、ギャップなしで、同点の値は同じランクを受け取り、次の値は前のランクから続きます。
    例:

    SELECT Name, Salary,
           RANK() OVER (ORDER BY Salary DESC) AS Rank,
           DENSE_RANK() OVER (ORDER BY Salary DESC) AS DenseRank
    FROM Employees;
    
  19. Is it possible to implicitly insert a row for the identity column?
    Yes, when inserting a new row into a table with an identity column, you do not need to specify a value for the identity column; it will automatically generate a new value. However, you can also explicitly insert a value if necessary, depending on the database settings.
    はい、IDENTITY列を持つテーブルに新しい行を挿入する際、IDENTITY列の値を指定する必要はなく、自動的に新しい値が生成されます。ただし、必要に応じて明示的に値を挿入することもできます。
    例:

    INSERT INTO Employees (Name, Salary) VALUES ('John Doe', 50000);  -- Implicit identity insert
    
  20. What are SQL comments?
    SQL comments are annotations in SQL code that are not executed and are used for documentation or explanation. There are two types of comments: single-line comments (using --) and multi-line comments (enclosed in /* ... */).
    SQLコメントは、実行されず、ドキュメンテーションや説明に使用されるSQLコード内の注釈です。コメントには2種類あり、単一行コメント(--を使用)と複数行コメント(/* ... */で囲まれたもの)があります。
    例:

    -- This is a single line comment
    SELECT * FROM Employees; /* This is a multi-line comment */
    
  21. What type of join do you need when you want to include rows with values that don't match?
    You would use a LEFT JOIN or RIGHT JOIN to include rows from one table even if there are no matching values in the other table. A FULL JOIN can also be used to include all rows from both tables, regardless of whether they match.
    **他のテーブルに一致する値がない場合でも、1つのテーブルから行を含めるためには、LEFT JOINまたは

RIGHT JOINを使用します。また、すべての行を含むためにFULL JOINを使用することもできます。**
例:
sql SELECT Students.Name, Courses.CourseName FROM Students LEFT JOIN Enrollments ON Students.StudentID = Enrollments.StudentID LEFT JOIN Courses ON Enrollments.CourseID = Courses.CourseID;

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?