ホームページ >データベース >mysql チュートリアル >すべての開発者がマスターすべき重要な SQL の質問

すべての開発者がマスターすべき重要な SQL の質問

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 03:17:15848ブラウズ

Essential SQL Questions Every Developer Should Master

100 の重要な質問と例で SQL をマスターする

SQL (構造化照会言語) は、データベースの管理と操作の基礎です。このガイドでは、データベース スキルの向上に役立つ、さまざまなカテゴリにわたる 100 の実践的および理論的な SQL の質問を取り上げます。


1.基本的な SQL クエリの質問

  1. テーブルからすべてのレコードをフェッチするクエリを作成します。
   SELECT * FROM table_name;

このクエリは、指定されたテーブルからすべてのレコードを取得します。

  1. テーブル内で 2 番目に高い給与を見つけるクエリを作成します。
   SELECT MAX(salary) AS second_highest_salary  
   FROM employees  
   WHERE salary < (SELECT MAX(salary) FROM employees);
  1. 名前が「A」で始まる従業員を取得するクエリを作成します。
   SELECT * FROM employees WHERE name LIKE 'A%';
  1. 地域ごとにグループ化された総売上高を計算するクエリを作成します。
   SELECT region, SUM(sales) AS total_sales  
   FROM sales_data  
   GROUP BY region;
  1. 列の値が NULL であるすべてのレコードをフェッチするクエリを作成します。
   SELECT * FROM table_name WHERE column_name IS NULL;
  1. テーブルから重複行を削除するクエリを作成します。
   DELETE FROM table_name  
   WHERE id NOT IN (SELECT MIN(id) FROM table_name GROUP BY column_name);
  1. レコードを降順で表示するクエリを作成します。
   SELECT * FROM table_name ORDER BY column_name DESC;
  1. テーブル内の行数をカウントするクエリを作成します。
   SELECT COUNT(*) FROM table_name;
  1. 2 つのテーブルを結合するクエリを作成します。
   SELECT employees.name, departments.department_name  
   FROM employees  
   JOIN departments  
   ON employees.department_id = departments.id;
  1. テーブルから最初の 3 行を取得するクエリを作成します。

    SELECT * FROM table_name LIMIT 3;
    

2. SQL パフォーマンスに関する質問

  1. クエリの最適化とは何ですか?

    クエリの最適化には、実行時間と効率を向上させるためにクエリを変更することが含まれます。

  2. SQL クエリのパフォーマンスを向上するにはどうすればよいですか?

    • インデックスを使用します。
    • SELECT * は避けてください。
    • 結合を最適化します。
    • 適切なデータ型を使用してください。
    • 実行計画を分析します。
  3. インデックス作成の目的は何ですか?

    インデックスを作成すると、データベース テーブルのデータ取得操作の速度が向上します。

  4. インデックス作成の欠点は何ですか?

    • ストレージ要件の増加。
    • INSERT や DELETE などのデータ変更操作が遅くなります。
  5. クエリの実行計画はどのように分析しますか?

    EXPLAIN キーワードを使用して実行計画を表示します:

    EXPLAIN SELECT * FROM table_name;
    
  6. クエリ キャッシュとは何ですか?

    クエリ キャッシュはクエリの結果を再利用のために保存し、計算時間を短縮します。

  7. データベースのシャーディングとは何ですか?

    シャーディングでは、データベースをシャードと呼ばれる、より小さく、高速で、管理しやすい部分に分割します。

  8. 水平スケーリングと垂直スケーリングの違いを説明します。

    • 水平スケーリングにより、より多くのデータを処理するためにより多くのマシンが追加されます。
    • 垂直スケーリングにより、単一のマシンにリソース (CPU、RAM) が追加されます。
  9. パーティショニングはデータベースのパフォーマンスにどのように役立ちますか?

    パーティショニングにより、大きなテーブルがより小さく管理しやすい部分に分割され、クエリのパフォーマンスが向上します。

  10. データベース レプリケーションとは何ですか?

    レプリケーションには、信頼性と冗長性を確保するために、複数のサーバー間でデータベースのコピーをコピーして維持することが含まれます。


3. SQL 関数の質問

  1. SQL の集計関数とは何ですか?

    集計関数は、複数行のデータに対して計算を実行します: SUM、AVG、COUNT など

  2. COUNT、SUM、AVG の違いを説明してください。

    • COUNT: 行数をカウントします。
    • SUM: 列の値を加算します。
    • AVG: 平均を計算します。
  3. SQL で ROUND 関数はどのように機能しますか?

       SELECT * FROM table_name;
    
  4. LENGTH 関数は何に使用されますか?

    文字列内の文字数を計算します:

       SELECT MAX(salary) AS second_highest_salary  
       FROM employees  
       WHERE salary < (SELECT MAX(salary) FROM employees);
    
  5. SQL での CASE ステートメントの使用法を説明します。

       SELECT * FROM employees WHERE name LIKE 'A%';
    
  6. COALESCE と ISNULL の違いは何ですか?

    • COALESCE: リストから最初の非 null 値を返します。
    • ISNULL: null をチェックし、指定された値に置き換えます。
  7. UPPER や LOWER などの文字列関数はどのように使用しますか?

       SELECT region, SUM(sales) AS total_sales  
       FROM sales_data  
       GROUP BY region;
    
  8. NOW() 関数の目的は何ですか?

    現在の日付と時刻を返します:

       SELECT * FROM table_name WHERE column_name IS NULL;
    
  9. CONCAT 関数の使用法を説明します。

       DELETE FROM table_name  
       WHERE id NOT IN (SELECT MIN(id) FROM table_name GROUP BY column_name);
    
  10. TRUNCATE と DELETE の違いは何ですか?

    • TRUNCATE: 個々の行の削除をログに記録せずに、テーブルからすべての行を削除します。
    • DELETE: 条件付きで行を削除し、各削除をログに記録します。

こんにちは、アバイ・シン・カタヤットです!
私はフロントエンドとバックエンドの両方のテクノロジーの専門知識を持つフルスタック開発者です。私はさまざまなプログラミング言語やフレームワークを使用して、効率的でスケーラブルでユーザーフレンドリーなアプリケーションを構築しています。
ビジネス用メールアドレス kaashshorts28@gmail.com までお気軽にご連絡ください。

以上がすべての開発者がマスターすべき重要な SQL の質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。