- Q1
INNER JOINの役割として正しいものはどれですか?
ANSWER両方のテーブルで条件に一致するレコードのみを返すクリックして解説を表示EXPLANATIONINNER JOINは、両方のテーブルで結合条件に一致するレコードのみを返します。どちらかのテーブルに対応するレコードがない場合は結果に含まれません。
- Q2
次のSQLの結果として正しいものはどれですか?
SELECT users.name, orders.total FROM users INNER JOIN orders ON users.id = orders.user_id;ANSWER注文があるユーザーの名前と注文金額を返すクリックして解説を表示EXPLANATIONINNER JOINにより、usersテーブルとordersテーブルで users.id = orders.user_id が一致するレコードのみが結合されて返されます。
- Q3
LEFT JOINの特徴として正しいものはどれですか?
ANSWER左側のテーブルのすべてのレコードを返し、右側は一致しない場合NULLクリックして解説を表示EXPLANATIONLEFT JOINは、左側のテーブルのすべてのレコードを返し、右側のテーブルに一致するレコードがない場合はNULLで埋められます。
- Q4
次のSQLの結果として、注文がないユーザーはどうなりますか?
SELECT users.name, orders.total FROM users LEFT JOIN orders ON users.id = orders.user_id;ANSWERnameが表示され、totalはNULLで表示されるクリックして解説を表示EXPLANATIONLEFT JOINなので、注文がないユーザーもname列に値が入り、orders.totalはNULLとして結果に含まれます。
- Q5
RIGHT JOINの特徴として正しいものはどれですか?
ANSWER右側のテーブルのすべてのレコードを返し、左側は一致しない場合NULLクリックして解説を表示EXPLANATIONRIGHT JOINは、右側のテーブルのすべてのレコードを返し、左側のテーブルに一致するレコードがない場合はNULLで埋められます。
- Q6
FULL OUTER JOINの特徴として正しいものはどれですか?
ANSWER両方のテーブルのすべてのレコードを返し、一致しない場合はNULLクリックして解説を表示EXPLANATIONFULL OUTER JOINは、両方のテーブルのすべてのレコードを返し、一致しない場合はNULLで埋められます。
- Q7
CROSS JOINの結果として正しいものはどれですか?
ANSWER2つのテーブルのすべての組み合わせ(直積)を返すクリックして解説を表示EXPLANATIONCROSS JOINは、2つのテーブルのすべての組み合わせ(直積)を返します。結果の行数は両テーブルの行数の積になります。
- Q8
3つ以上のテーブルを結合する場合の正しい方法はどれですか?
ANSWER複数のJOIN句を連続して記述するクリックして解説を表示EXPLANATION複数のJOIN句を連続して記述することで、3つ以上のテーブルを結合できます。
- Q9
次のSQLで正しく動作するものはどれですか?
SELECT * FROM users u INNER JOIN orders o ON u.id = o.user_id INNER JOIN products p ON o.product_id = p.id;ANSWER3つのテーブルが正しく結合されるクリックして解説を表示EXPLANATION複数のJOINを連続して記述することで、users、orders、productsの3つのテーブルを結合できます。エイリアスを使用して記述を簡潔にしています。
- Q10
自己結合(SELF JOIN)とは何ですか?
ANSWER同じテーブルを自分自身と結合することクリックして解説を表示EXPLANATION自己結合は、同じテーブルを別名を使って自分自身と結合する方法です。階層構造のデータ(例:従業員と上司)を扱う際に使用します。
- Q11
サブクエリとは何ですか?
ANSWERSQL文の中に含まれる別のSELECT文クリックして解説を表示EXPLANATIONサブクエリ(副問合せ)は、SQL文の中に含まれる別のSELECT文です。外側のクエリから参照されます。
- Q12
次のSQLのサブクエリは何を返しますか?
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE total > 10000);ANSWER注文金額が10000を超える注文のuser_idリストクリックして解説を表示EXPLANATIONサブクエリは、totalが10000を超える注文のuser_idリストを返します。外側のクエリはそのリストに含まれるidのユーザーを取得します。
- Q13
相関サブクエリの特徴として正しいものはどれですか?
ANSWER外側のクエリの各行に対して実行されるクリックして解説を表示EXPLANATION相関サブクエリは、外側のクエリの各行に対して実行され、外側のクエリの値を参照します。非相関サブクエリより遅いことが多いです。
- Q14
EXISTS演算子の役割として正しいものはどれですか?
ANSWERサブクエリが1行以上返すかどうかを判定するクリックして解説を表示EXPLANATIONEXISTSは、サブクエリが少なくとも1行を返すかどうかを判定します。返す場合はTRUE、返さない場合はFALSEになります。
- Q15
次のSQLの意味として正しいものはどれですか?
SELECT * FROM users u WHERE EXISTS ( SELECT 1 FROM orders o WHERE o.user_id = u.id );ANSWER注文が存在するユーザーのみを取得するクリックして解説を表示EXPLANATIONEXISTSにより、ordersテーブルに注文が存在するユーザーのみが取得されます。サブクエリが1行以上返す場合、そのユーザーが結果に含まれます。
- Q16
GROUP BY句の役割として正しいものはどれですか?
ANSWERレコードをグループ化するクリックして解説を表示EXPLANATIONGROUP BYは、指定した列の値でレコードをグループ化し、各グループに対して集計関数を適用できるようにします。
- Q17
次のSQLの結果として正しいものはどれですか?
SELECT country, COUNT(*) AS user_count FROM users GROUP BY country;ANSWER国ごとのユーザー数クリックして解説を表示EXPLANATIONGROUP BY countryにより、国ごとにグループ化され、各国のユーザー数がCOUNT(*)で計算されます。
- Q18
GROUP BYを使用する際、SELECT句に含められる列の制約として正しいものはどれですか?
ANSWERGROUP BYで指定した列または集計関数を適用した列のみクリックして解説を表示EXPLANATIONGROUP BY句を使用する場合、SELECT句にはGROUP BYで指定した列か、集計関数を適用した列のみを含めることができます。
- Q19
HAVING句の役割として正しいものはどれですか?
ANSWERグループ化後の結果をフィルタリングするクリックして解説を表示EXPLANATIONHAVINGは、GROUP BYでグループ化した後の結果に対して条件を指定してフィルタリングします。集計関数の結果に基づく条件を指定できます。
- Q20
WHERE句とHAVING句の違いとして正しいものはどれですか?
ANSWERWHEREはグループ化前、HAVINGはグループ化後にフィルタリングクリックして解説を表示EXPLANATIONWHEREはグループ化前に個々のレコードをフィルタリングし、HAVINGはグループ化後にグループをフィルタリングします。
- Q21
次のSQLの意味として正しいものはどれですか?
SELECT country, COUNT(*) AS user_count FROM users GROUP BY country HAVING COUNT(*) >= 10;ANSWERユーザー数が10人以上の国とそのユーザー数を返すクリックして解説を表示EXPLANATIONGROUP BYで国ごとにグループ化し、HAVINGでユーザー数が10人以上の国のみをフィルタリングして結果を返します。
- Q22
UNION演算子の役割として正しいものはどれですか?
ANSWERSELECT文の結果を垂直方向に結合し、重複を除去するクリックして解説を表示EXPLANATIONUNIONは、2つ以上のSELECT文の結果を結合し、重複を除去して1つの結果セットを返します。
- Q23
UNIONとUNION ALLの違いとして正しいものはどれですか?
ANSWERUNIONは重複を除去、UNION ALLは重複を保持クリックして解説を表示EXPLANATIONUNIONは重複を除去しますが、UNION ALLは重複を保持したまますべての行を返します。UNION ALLの方が一般的に高速です。
- Q24
UNIONを使用する際の制約として正しいものはどれですか?
ANSWER同じ列数と互換性のあるデータ型が必要クリックして解説を表示EXPLANATIONUNIONで結合するSELECT文は、同じ列数を持ち、対応する列のデータ型が互換性を持つ必要があります。
- Q25
INTERSECT演算子の役割として正しいものはどれですか?
ANSWER両方のSELECT文に共通する行のみを返すクリックして解説を表示EXPLANATIONINTERSECTは、2つのSELECT文の結果の共通部分(両方に存在する行)のみを返します。
- Q26
EXCEPT(またはMINUS)演算子の役割として正しいものはどれですか?
ANSWER最初のSELECT文にのみ存在する行を返すクリックして解説を表示EXPLANATIONEXCEPTは、最初のSELECT文の結果から、2番目のSELECT文の結果に含まれる行を除いたものを返します。
- Q27
インデックスの役割として正しいものはどれですか?
ANSWERデータへのアクセスを高速化するクリックして解説を表示EXPLANATIONインデックスは、テーブルのデータへの高速なアクセスを可能にするデータ構造です。検索、ソート、結合のパフォーマンスを向上させます。
- Q28
インデックスを作成すると何が起こりますか?
ANSWER検索は高速化するが、データ更新操作は遅くなる可能性があるクリックして解説を表示EXPLANATIONインデックスを作成すると、検索は高速化しますが、追加のディスク領域が必要になり、INSERT、UPDATE、DELETEの操作が遅くなる可能性があります。
- Q29
インデックスを作成するSQLコマンドはどれですか?
ANSWERCREATE INDEXクリックして解説を表示EXPLANATIONCREATE INDEX文を使用して、テーブルの指定した列にインデックスを作成します。
- Q30
次のSQLは何を行いますか?
CREATE INDEX idx_users_email ON users(email);ANSWERusersテーブルのemail列にインデックスを作成するクリックして解説を表示EXPLANATIONusersテーブルのemail列にidx_users_emailという名前のインデックスを作成します。これによりemailでの検索が高速化されます。
- Q31
複合インデックス(複数列のインデックス)の列の順序が重要な理由は何ですか?
ANSWER先頭の列から順にインデックスが使用されるためクリックして解説を表示EXPLANATION複合インデックスは、指定した順序で列を評価します。先頭の列を使用するクエリで最も効果的であり、中間の列だけを使用するクエリでは効果が低下します。
- Q32
一意インデックス(UNIQUE INDEX)の特徴として正しいものはどれですか?
ANSWER列の値が重複しないことを保証するクリックして解説を表示EXPLANATIONUNIQUE INDEXは、インデックス対象の列に重複する値が存在しないことを保証します。検索の高速化と一意性の制約を同時に実現します。
- Q33
CREATE TABLE文の基本構文として正しいものはどれですか?
ANSWERCREATE TABLE テーブル名 (列定義)クリックして解説を表示EXPLANATIONCREATE TABLE文は、テーブル名の後に括弧で囲んだ列定義のリストを指定します。各列には名前とデータ型、オプションで制約を指定します。
- Q34
次のSQLで作成されるテーブルの主キーはどれですか?
CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100), email VARCHAR(255) UNIQUE );ANSWERidクリックして解説を表示EXPLANATIONPRIMARY KEY制約が指定されているid列が主キーになります。emailにはUNIQUE制約があり、一意ですが主キーではありません。
- Q35
AUTO_INCREMENT(または SERIAL)の役割として正しいものはどれですか?
ANSWER新しいレコードに自動的に一意の値を割り当てるクリックして解説を表示EXPLANATIONAUTO_INCREMENTは、新しいレコードが挿入されるたびに自動的に一意の整数値を生成します。主キーによく使用されます。
- Q36
ALTER TABLE文の役割として正しいものはどれですか?
ANSWER既存のテーブル構造を変更するクリックして解説を表示EXPLANATIONALTER TABLE文は、既存のテーブル構造を変更するために使用します。列の追加、削除、変更、制約の追加などが行えます。
- Q37
テーブルに新しい列を追加するSQLはどれですか?
ANSWERALTER TABLE テーブル名 ADD COLUMN 列名 データ型クリックして解説を表示EXPLANATIONALTER TABLE テーブル名 ADD COLUMN 列定義で、既存のテーブルに新しい列を追加できます。
- Q38
テーブルから列を削除するSQLはどれですか?
ANSWERALTER TABLE テーブル名 DROP COLUMN 列名クリックして解説を表示EXPLANATIONALTER TABLE テーブル名 DROP COLUMN 列名で、テーブルから指定した列を削除できます。
- Q39
テーブル名を変更するSQLはどれですか?
ANSWERRENAME TABLE 旧名 TO 新名クリックして解説を表示EXPLANATIONRENAME TABLEまたはALTER TABLE テーブル名 RENAME TO 新テーブル名で、テーブル名を変更できます。
- Q40
外部キー制約を追加する際に使用するキーワードはどれですか?
ANSWERFOREIGN KEY ... REFERENCES ...クリックして解説を表示EXPLANATIONFOREIGN KEY ... REFERENCES ... を使用して、テーブル間の参照整合性を定義する外部キー制約を追加します。
- Q41
次のSQLの外部キー制約は何を意味しますか?
CREATE TABLE orders ( id INT PRIMARY KEY, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id) );ANSWERuser_idにはusersテーブルに存在するidの値のみ許可されるクリックして解説を表示EXPLANATIONordersテーブルのuser_id列は、usersテーブルのid列を参照します。user_idには、usersテーブルに存在するidの値のみが許可されます。
- Q42
ON DELETE CASCADEの意味として正しいものはどれですか?
ANSWER親レコードが削除されると子レコードも自動的に削除されるクリックして解説を表示EXPLANATIONON DELETE CASCADEは、親テーブルのレコードが削除されたとき、参照している子テーブルのレコードも自動的に削除されることを意味します。
- Q43
ON DELETE SET NULLの意味として正しいものはどれですか?
ANSWER親レコードが削除されると子レコードの外部キーがNULLになるクリックして解説を表示EXPLANATIONON DELETE SET NULLは、親テーブルのレコードが削除されたとき、参照している子テーブルの外部キー列がNULLに設定されることを意味します。
- Q44
CHECK制約の役割として正しいものはどれですか?
ANSWER列の値が特定の条件を満たすことを保証するクリックして解説を表示EXPLANATIONCHECK制約は、列に格納できる値の範囲や条件を指定します。条件を満たさない値はINSERTまたはUPDATEで拒否されます。
- Q45
次のSQLのCHECK制約は何を意味しますか?
CREATE TABLE products ( id INT PRIMARY KEY, price DECIMAL(10, 2) CHECK (price >= 0) );ANSWERpriceは0以上でなければならないクリックして解説を表示EXPLANATIONCHECK制約により、price列には0以上の値のみが許可されます。負の価格は挿入または更新時に拒否されます。
- Q46
ビュー(VIEW)とは何ですか?
ANSWER仮想的なテーブル(保存されたSELECT文)クリックして解説を表示EXPLANATIONビューは、SELECT文の結果を仮想的なテーブルとして保存したものです。実際のデータは持たず、参照時にクエリが実行されます。
- Q47
ビューを作成するSQLコマンドはどれですか?
ANSWERCREATE VIEW ビュー名 AS SELECT文クリックして解説を表示EXPLANATIONCREATE VIEW ビュー名 AS SELECT文で、SELECT文の結果を仮想テーブルとして保存するビューを作成します。
- Q48
ビューを使用するメリットとして正しいものはどれですか?
ANSWERクエリの簡略化とセキュリティの向上クリックして解説を表示EXPLANATIONビューを使用すると、複雑なクエリを簡略化し、セキュリティ(特定の列のみ公開)を向上させ、データの抽象化を実現できます。
- Q49
スカラーサブクエリとは何ですか?
ANSWER単一の値を返すサブクエリクリックして解説を表示EXPLANATIONスカラーサブクエリは、単一の値(1行1列)を返すサブクエリです。SELECT句やWHERE句の中で使用できます。
- Q50
次のSQLのサブクエリは何種類ですか?
SELECT name, (SELECT AVG(total) FROM orders WHERE orders.user_id = users.id) AS avg_order FROM users;ANSWERスカラーサブクエリ(相関サブクエリ)クリックして解説を表示EXPLANATIONSELECT句の中で単一の値(平均値)を返すため、これはスカラーサブクエリであり、各ユーザーの行に対して実行される相関サブクエリでもあります。
- Q51
FROM句で使用するサブクエリ(派生テーブル)の特徴として正しいものはどれですか?
ANSWERエイリアスが必要で、一時的なテーブルとして扱われるクリックして解説を表示EXPLANATIONFROM句のサブクエリ(派生テーブルまたはインラインビュー)は、一時的なテーブルのように扱われ、エイリアス(別名)が必要です。
- Q52
ANY演算子の役割として正しいものはどれですか?
ANSWERサブクエリのいずれかの値と比較条件を満たす場合TRUEクリックして解説を表示EXPLANATIONANYは、サブクエリが返す値のいずれかと比較条件を満たす場合にTRUEを返します。= ANYはINと同等です。
- Q53
ALL演算子の役割として正しいものはどれですか?
ANSWERサブクエリのすべての値と比較条件を満たす場合TRUEクリックして解説を表示EXPLANATIONALLは、サブクエリが返すすべての値と比較条件を満たす場合にTRUEを返します。
- Q54
次のSQLの意味として正しいものはどれですか?
SELECT * FROM products WHERE price > ALL (SELECT price FROM products WHERE category = 'A');ANSWERカテゴリAのすべての商品の価格より高い商品を取得クリックして解説を表示EXPLANATIONprice > ALLは、カテゴリAのすべての商品の価格より高い価格を持つ商品を取得します。つまり、カテゴリAの最高価格より高い商品です。
- Q55
CASE式の役割として正しいものはどれですか?
ANSWER条件に基づいて異なる値を返すクリックして解説を表示EXPLANATIONCASE式は、条件に基づいて異なる値を返す条件分岐を実現します。プログラミング言語のif-else文に似ています。
- Q56
次のSQLの結果として、ageが30以上の場合に返される値は何ですか?
SELECT name, CASE WHEN age < 20 THEN '未成年' WHEN age < 30 THEN '20代' ELSE '30歳以上' END AS age_group FROM users;ANSWER'30歳以上'クリックして解説を表示EXPLANATIONCASE式は上から順に条件を評価し、age < 20とage < 30のどちらも満たさない場合(30以上)はELSEの'30歳以上'が返されます。
- Q57
単純CASE式と検索CASE式の違いとして正しいものはどれですか?
ANSWER単純CASE式は値の比較、検索CASE式は条件式を使用クリックして解説を表示EXPLANATION単純CASE式は単一の式と複数の値を比較し、検索CASE式は各WHEN句で異なる条件を指定できます。
- Q58
NULLIF関数の役割として正しいものはどれですか?
ANSWER2つの値が等しい場合にNULLを返すクリックして解説を表示EXPLANATIONNULLIF(a, b)は、aとbが等しい場合にNULLを返し、異なる場合はaを返します。0除算を防ぐ場合などに使用されます。
- Q59
次のSQLの結果として、aが0の場合に返される値は何ですか?
SELECT 100 / NULLIF(a, 0) FROM table1;ANSWERNULLクリックして解説を表示EXPLANATIONaが0の場合、NULLIF(a, 0)はNULLを返します。100 / NULLはNULLになるため、0除算エラーを回避できます。
- Q60
GROUP_CONCAT(またはSTRING_AGG)関数の役割として正しいものはどれですか?
ANSWERグループ内の値を連結して1つの文字列にするクリックして解説を表示EXPLANATIONGROUP_CONCAT(PostgreSQLではSTRING_AGG)は、グループ内の値を連結して1つの文字列にする集計関数です。
- Q61
日付から年を抽出する関数として一般的なものはどれですか?
ANSWERYEAR() または EXTRACT(YEAR FROM ...)クリックして解説を表示EXPLANATIONYEAR関数(またはEXTRACT(YEAR FROM 日付))は、日付から年の部分を抽出します。
- Q62
2つの日付の差を計算する方法として一般的なものはどれですか?
ANSWERDATEDIFF() または日付の減算クリックして解説を表示EXPLANATIONDATEDIFF関数(または日付の減算)を使用して、2つの日付の差を計算できます。データベースにより構文が異なります。
- Q63
日付に日数を加算する方法として一般的なものはどれですか?
ANSWERDATE_ADD() または INTERVAL構文クリックして解説を表示EXPLANATIONDATE_ADD関数(またはINTERVAL構文)を使用して、日付に日数や月数などを加算できます。
- Q64
LIKE演算子で特殊文字(%や_)を文字として検索する方法はどれですか?
ANSWERESCAPE句でエスケープ文字を指定するクリックして解説を表示EXPLANATIONESCAPE句を使用して、エスケープ文字を指定します。例:LIKE '%100%%' ESCAPE '\'で、'100%'を含む文字列を検索できます。
- Q65
正規表現を使用したパターンマッチングに使用する演算子(PostgreSQL)はどれですか?
ANSWER~ または REGEXPクリックして解説を表示EXPLANATIONPostgreSQLでは
~(大文字小文字区別)や~*(大文字小文字無視)演算子で正規表現マッチングを行えます。MySQLではREGEXPを使用します。 - Q66
インデックスが使用されない可能性が高いクエリはどれですか?
ANSWERWHERE name LIKE '%田'クリックして解説を表示EXPLANATIONLIKEで前方に%がある場合('%abc')、インデックスは効果的に使用されません。関数を適用した列や否定条件もインデックスが使われにくいです。
- Q67
クラスタ化インデックスの特徴として正しいものはどれですか?
ANSWERデータを物理的にインデックス順に格納し、テーブルに1つのみクリックして解説を表示EXPLANATIONクラスタ化インデックスは、テーブルのデータを物理的にインデックスの順序で格納します。テーブルに1つしか作成できません。
- Q68
テーブルとビューの違いとして正しいものはどれですか?
ANSWERテーブルはデータを格納、ビューはSELECT文の定義を保存クリックして解説を表示EXPLANATIONテーブルは実際のデータを格納しますが、ビューはSELECT文の定義のみを保存し、参照時にクエリが実行されます。
- Q69
マテリアライズドビュー(MATERIALIZED VIEW)の特徴として正しいものはどれですか?
ANSWERクエリ結果を実際に保存し、リフレッシュが必要クリックして解説を表示EXPLANATIONマテリアライズドビューは、クエリの結果を実際にディスクに保存します。通常のビューより高速ですが、データの更新には手動または定期的なリフレッシュが必要です。
- Q70
更新可能なビューの条件として正しいものはどれですか?
ANSWER単一テーブルを参照し、集計関数やGROUP BYを含まないクリックして解説を表示EXPLANATION更新可能なビューは、単一テーブルを参照し、集計関数、DISTINCT、GROUP BY、UNIONなどを含まないシンプルなビューである必要があります。
- Q71
WITH CHECK OPTIONの役割として正しいものはどれですか?
ANSWERビューの条件を満たさないデータの挿入・更新を禁止クリックして解説を表示EXPLANATIONWITH CHECK OPTIONは、ビューを通じたINSERTやUPDATEで、ビューの条件を満たさないデータの挿入・更新を禁止します。
- Q72
テンポラリテーブル(一時テーブル)の特徴として正しいものはどれですか?
ANSWERセッション終了時に自動的に削除されるクリックして解説を表示EXPLANATIONテンポラリテーブルは、セッション終了時(または明示的に削除するまで)に自動的に削除される一時的なテーブルです。
- Q73
テンポラリテーブルを作成するSQLはどれですか?
ANSWERCREATE TEMPORARY TABLE テーブル名クリックして解説を表示EXPLANATIONCREATE TEMPORARY TABLE(またはCREATE TEMP TABLE)で一時テーブルを作成します。データベースにより構文が若干異なります。
- Q74
複数列でGROUP BYする場合の結果はどうなりますか?
ANSWERすべての指定した列の値の組み合わせでグループ化されるクリックして解説を表示EXPLANATION複数列でGROUP BYすると、指定したすべての列の値の組み合わせでグループ化されます。
- Q75
次のSQLの結果はどのようにグループ化されますか?
SELECT country, city, COUNT(*) FROM users GROUP BY country, city;ANSWERcountryとcityの組み合わせでグループ化クリックして解説を表示EXPLANATIONcountryとcityの組み合わせでグループ化されます。例:(日本, 東京)、(日本, 大阪)、(アメリカ, ニューヨーク)などが別々のグループになります。
- Q76
HAVING句で使用できないものはどれですか?
ANSWERGROUP BYで指定していない非集計列クリックして解説を表示EXPLANATIONHAVING句はグループ化後のフィルタリングに使用するため、集計関数またはGROUP BY句で指定した列のみ使用できます。グループ化されていない列は使用できません。
- Q77
ROLLUP演算子の役割として正しいものはどれですか?
ANSWER小計と総計の行を追加するクリックして解説を表示EXPLANATIONROLLUPは、GROUP BYの結果に小計と総計の行を追加します。階層的な集計レポートを作成する際に使用します。
- Q78
CUBE演算子の役割として正しいものはどれですか?
ANSWERすべての可能な列の組み合わせの集計を生成するクリックして解説を表示EXPLANATIONCUBEは、GROUP BYの列のすべての可能な組み合わせに対する集計を生成します。ROLLUPより多くの集計行が生成されます。
- Q79
GROUPING関数の役割として正しいものはどれですか?
ANSWER集計行かどうかを判定する(1または0を返す)クリックして解説を表示EXPLANATIONGROUPING関数は、ROLLUPやCUBEで生成された集計行かどうかを判定します。集計行の場合は1、通常の行の場合は0を返します。
- Q80
N+1問題とは何ですか?
ANSWER1回のクエリ後にN回の追加クエリが発生する非効率な状態クリックして解説を表示EXPLANATIONN+1問題は、1回のクエリでN件のデータを取得した後、各データに対して追加のクエリを発行してしまう非効率なパターンです。JOINやサブクエリで解決できます。
- Q81
サブクエリをJOINに書き換えるメリットとして正しいものはどれですか?
ANSWERオプティマイザがより効率的な実行計画を選択しやすいクリックして解説を表示EXPLANATION多くの場合、サブクエリよりJOINの方がオプティマイザが効率的な実行計画を選択でき、パフォーマンスが向上します。ただし、ケースによります。
- Q82
LATERAL結合の特徴として正しいものはどれですか?
ANSWERサブクエリが外側のクエリの列を参照できるクリックして解説を表示EXPLANATIONLATERAL結合は、サブクエリが外側のクエリの列を参照できる特殊な結合です。各行に対してサブクエリが評価されます。
- Q83
INSERT ... SELECT文の役割として正しいものはどれですか?
ANSWERSELECTの結果を別のテーブルに挿入するクリックして解説を表示EXPLANATIONINSERT ... SELECTは、SELECTの結果を別のテーブルに挿入します。データの移行やバックアップに使用されます。
- Q84
次のSQLは何を行いますか?
INSERT INTO archive_users SELECT * FROM users WHERE created_at < '2023-01-01';ANSWER古いユーザーをarchive_usersテーブルにコピーするクリックして解説を表示EXPLANATIONusersテーブルから2023年1月1日より前に作成されたレコードを選択し、archive_usersテーブルに挿入します。
- Q85
MERGE文(またはUPSERT)の役割として正しいものはどれですか?
ANSWER条件に基づいてINSERT/UPDATE/DELETEを1つの文で実行クリックして解説を表示EXPLANATIONMERGE文は、条件に基づいてINSERT、UPDATE、DELETEを1つの文で実行します。レコードが存在すれば更新、なければ挿入といった処理に使用します。
- Q86
INSERT ... ON CONFLICT(PostgreSQL)またはON DUPLICATE KEY UPDATE(MySQL)の役割として正しいものはどれですか?
ANSWER一意制約違反時に更新を行う(UPSERT)クリックして解説を表示EXPLANATIONこれらは、一意制約違反が発生した場合に更新を行う「UPSERT」操作を実現します。レコードがなければINSERT、あればUPDATEします。
- Q87
UPDATE文でJOINを使用する目的として正しいものはどれですか?
ANSWER他のテーブルの値を参照して更新するクリックして解説を表示EXPLANATIONUPDATE文でJOINを使用すると、他のテーブルの値を参照して更新したり、複数テーブルの条件に基づいて更新対象を絞り込んだりできます。
- Q88
DELETE文でJOINを使用する目的として正しいものはどれですか?
ANSWER他のテーブルの条件に基づいて削除対象を絞り込むクリックして解説を表示EXPLANATIONDELETE文でJOINを使用すると、他のテーブルの条件に基づいて削除対象を絞り込むことができます。
- Q89
文字列の空白を除去する関数として、先頭の空白のみを除去するものはどれですか?
ANSWERLTRIM()クリックして解説を表示EXPLANATIONLTRIM関数は、文字列の先頭(左側)の空白のみを除去します。末尾はRTRIM、両端はTRIMです。
- Q90
CAST関数の役割として正しいものはどれですか?
ANSWER値を別のデータ型に変換するクリックして解説を表示EXPLANATIONCAST関数は、値を別のデータ型に変換します。例:CAST('123' AS INTEGER)で文字列を整数に変換。
- Q91
次のSQLの結果として返される値のデータ型は何ですか?
SELECT CAST('123.45' AS DECIMAL(10,2));ANSWERDECIMALクリックして解説を表示EXPLANATIONCAST関数により文字列'123.45'がDECIMAL(10,2)型に変換されます。小数点以下2桁の数値型になります。
- Q92
テーブルの構造を確認するSQLコマンドとして一般的なものはどれですか?
ANSWERDESCRIBE テーブル名クリックして解説を表示EXPLANATIONDESCRIBE(またはDESC)やSHOW COLUMNSを使用してテーブルの構造(列名、データ型、制約など)を確認できます。データベースにより構文が異なります。
- Q93
SELF JOINを使用する典型的なケースはどれですか?
ANSWER従業員とその上司の関係を取得する場合クリックして解説を表示EXPLANATION自己結合は、従業員とその上司の関係など、同じテーブル内のレコード同士を関連付ける場合に使用します。
- Q94
次のSQLで、ordersテーブルに注文がないユーザーを取得するにはどうしますか?
SELECT u.name FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE ____;ANSWERo.id IS NULLクリックして解説を表示EXPLANATIONLEFT JOINで結合後、右テーブル(orders)の列がNULLのレコードを抽出することで、注文がないユーザーを取得できます。
- Q95
複数の列でインデックスを作成する場合、列の順序が重要な理由は何ですか?
ANSWER左端の列から順にインデックスが使用されるためクリックして解説を表示EXPLANATION複合インデックスは左端の列から順に使用されます。(A, B, C)のインデックスはAの検索、A+Bの検索には効果的ですが、Bのみ、Cのみの検索には効果がありません。
- Q96
サブクエリとJOINの違いとして正しいものはどれですか?
ANSWERサブクエリはネストしたSELECT、JOINはテーブルを横に結合クリックして解説を表示EXPLANATIONサブクエリは別のクエリ内にネストされたSELECT文で、JOINはテーブルを横に結合します。多くの場合、同じ結果を得られますがパフォーマンスが異なることがあります。
- Q97
COALESCE関数とIFNULL関数の違いとして正しいものはどれですか?
ANSWERCOALESCEは標準SQLで複数引数可、IFNULLはMySQL固有で2引数クリックして解説を表示EXPLANATIONCOALESCEは標準SQLで複数の引数を取れますが、IFNULLはMySQLの関数で2つの引数のみです。COALESCEの方が移植性が高いです。
- Q98
次のSQLでGROUP BYを使用する際、SELECT句に含められないものはどれですか?
SELECT department, ____ FROM employees GROUP BY department;ANSWERnameクリックして解説を表示EXPLANATIONGROUP BY句を使用する場合、SELECT句にはGROUP BYで指定した列か、集計関数(COUNT、SUM、AVGなど)を適用した列のみ含められます。個別のname列は不可です。
- Q99
データベースのNULLに関する説明として正しいものはどれですか?
ANSWERNULLは値がないことを表し、IS NULLで比較するクリックして解説を表示EXPLANATIONNULLは「値がない」または「不明」を表す特殊な値です。NULL = NULLはTRUEではなくNULL(不明)を返すため、IS NULLで比較する必要があります。
- Q100
インデックスを削除するSQLコマンドはどれですか?
ANSWERDROP INDEX インデックス名クリックして解説を表示EXPLANATIONDROP INDEX インデックス名でインデックスを削除できます。データベースによってはテーブル名の指定が必要な場合もあります。