sql >> データベース >  >> RDS >> Mysql

トップ一般的なMySQLクエリ

    MySQLクエリは通常、一度記述されてから、コードの繰り返しを最小限に抑えるためにクラス関数でラップされます。この記事では、MySQLで最も頻繁に使用される10のクエリを一覧表示します。

    クエリは、基本的に、データベーステーブルまたはテーブルの組み合わせから取得する情報の要求です。単純なクエリから複雑なクエリの範囲を実行するために記述できるクエリ言語はたくさんあります。クエリは、検索が要求された特定のデータに基づいて特定の基準をフィルタリングします。また、データ管理タスクを自動化し、計算を行うこともできます。このガイドでは、最も一般的な10のMySQLクエリについて説明します。

    これらのデモデータベースを使用して、各クエリがどのように機能するかをさらに理解するのに役立てましょう。

    名前 タイトル ウェブスターW。 エグゼクティブ リジーS。 マネージャー オリバーT。 ソフトウェアエンジニア
    EmployeeID
    1002
    1003
    1004
    部門 年齢 売上 IT
    EmployeeID
    1002 HR 36
    1003 21
    1004 39

    すべて選択

    単純なSELECTクエリを使用して、データベースからのすべてのデータをフェッチして送り返します。その構文はそのように書くことができます;

    コード:

    SELECT *
    FROM Employees;

    結果:

    1002       Webster W.     Executive
    1003       Lizzy S.       Manager
    1004       Oliver T.      Software Engineer

    テーブルで使用可能なすべての列を選択するには、「*」を使用して、可能なすべての情報を返す必要があることを示す必要があります。次に、データベーステーブルからデータを受信するためにFROMキーワードを記述します。最後に、ステートメントの最後にセミコロン「;」を付けることを忘れないでください。リクエストを適切に完了するため。

    SELECT列

    すべてではなく特定の列からデータを取得するには、アスタリスク(*)を使用する代わりに、フィールド名を指定するだけです。

    コード:

    SELECT Title
    FROM Employees;

    結果:

    Title
    Executive
    Manager
    Software Engineer

    データベースから複数の列を選択する場合は、コンマで区切る必要があります。そのように;

    SELECT Title, Name
    FROM Employees;

    WHERE句

    SELECTクエリでWHERE句を使用すると、データレコードがフィルタリングされ、結果として条件に一致するレコードが抽出されます。

    コード:

    SELECT *
    FROM Employees
    WHERE EmployeeID = 1004 ;

    結果:

    1004       Oliver T.          Software Engineer 

    WHERE句には、ANDキーワードを使用して区切ることができる複数の条件を含めることができます。

    CREATEテーブル

    このクエリを使用して、推奨される列を選択した新しいテーブルを生成できます。列名を追加するときは、必ずデータ型を指定してください。

    コード:

    CREATE TABLE EmployeeInfo (
    
    EmployeeId INT,
    Department VARCHAR(25),
    Age NUMBER
    
    );

    期待されるテーブルの結果:

    EmployeeID
    Department
    Department
    NULL
    NULL
    NULL

    CREATE TABLEコマンドを実行して列のタイトルを入力すると、上記のクエリによってデータベースに「EmployeeInfo」テーブルが作成されます。特定の値を挿入していないため、基本的に各列はNULLを返します。これで、次のクエリINSERTINTOに進みます。

    INSERTINTOクエリ

    これは、テーブルの新しいレコードの1つ以上の行に値を挿入するための最も一般的なクエリです。 EmployeeInfoテーブルにいくつかのサンプルデータを入力できます。

    コード:

    INSERT INTO EmployeeInfo (EmployeeID,Department,Age)
    VALUES 
    (1002, HR , 46),
    (1003, Finance , 28),
    (1004, IT , 39);

    表の結果:

    EmployeeInfo

    EmployeeID
    Department
    Age
    1002
    HR
    46
    1003
    Finance
    28
    1004
    IT
    39

    INSERT INTOクエリを作成する場合、VALUESコマンドは完全なステートメントの一部である必要があります。

    UPDATEクエリ

    このキーワードは、テーブル内の1つ以上の既存の列を変更するために使用されます。このクエリを使用すると、特定の条件に基づいて新しいデータでテーブルレコードが更新されます。

    EmployeeInfo

    EmployeeID
    Department
    Age
    1002
    HR
    36
    1003
    Sales
    21
    1004
    IT
    39

    コード:

    UPDATE EmployeeInfo
    SET Age = 22
    WHERE EmployeeID = 1003;

    表の結果:

    EmployeeInfo

    EmployeeID
    Department
    Age
    1002
    HR
    36
    1003
    Sales
    22
    1004
    IT
    39

    UPDATEコマンドに続いて、キーワードSETを使用して、変更する列を常に指定し、更新されたデータを適用する必要がある場所を正確に指定します。

    クエリから削除

    1つまたは複数の条件に基づいてテーブルからレコードを削除するには、DELETEFROMステートメントを使用する必要があります。条件を使用すると、クエリの影響を受ける行数が制限されます。

    コード:

    DELETE FROM Employees
    WHERE Name = ‘Lizzy’;

    表の結果:

    従業員

    EmployeeID
    Name
    Title
    1002
    Webster W.
    Executive 
    1004
    Oliver T.
    Software Engineer 

    以前の記事で説明したように、 WHERE条件を使用すると、データをフィルターで除外して実行するように要求する場所が正確に決まります。そのクエリは、「Lizzy」という名前に一致する従業員のテーブルからすべてのレコードを削除することです。

    GROUP BYを使用して、句を使用する

    GROUP BY句は、ほとんどの場合、集計関数で使用されます。このキーワードを使用すると、結果セットが1つ以上の列でグループ化されます。

    HAVINGキーワードは、その結果セットをフィルタリングするために使用されます。理想的には、代わりにWHERE句が配置されると思いますが、HAVING句は集計に条件を導入します。

    EmployeeInfo

    EmployeeID
    Department
    Age
    1002
    HR
    36
    1003
    Sales
    21
    1004
    IT
    39

    コード:

    SELECT COUNT(Age), EmployeeID
    FROM EmployeeInfo
    GROUP BY EmployeeID
    HAVING COUNT(Age) > 21;

    結果:

    COUNT(Age)  EmployeeID
    39   1004
    36   1002  

    集計関数(SUM、AVG、COUNT)

    テーブルのデータを解釈したり計算を実行したりできる、非常に一般的な3つの集計関数があります。

    • COUNT:指定された列に一致する行数を返します。
    • AVG:列の平均値を返します
    • SUM:選択した列のすべての値の合計を返します。

    EmployeeInfo

    EmployeeID 部門 年齢
    1002 HR 36
    1003 販売 21
    1004 IT 39

    COUNTのコード:

    SELECT 
    COUNT(Department)
    FROM EmployeeInfo;

    結果:

    COUNT(Department):
    3

    AVGのコード:

    SELECT AVG(Age)
    FROM EmployeeInfo;

    結果:

    AVG(Age):
    32

    SUMのコード

    SELECT SUM(Age)
    FROM EmployeeInfo;

    結果:

    SUM(Age):
    96

    参加

    結合は、テーブル間の関連する列に基づいて、少なくとも2つのテーブルの行をまとめるために使用されます。最も一般的なプラクティス結合は、INNER、FULL、およびLEFTです。

    • 内部結合–結合条件が真の場合、異なるテーブルの行を結合します。
    • 完全結合–左または右のテーブルレコードに一致する場合、すべての行を返します。
    • LEFT Join –左側のテーブルからすべての行を取得し、右側のテーブルから一致するレコードを取得します。

    従業員–表#1(左)

    EmployeeID 名前 タイトル
    1002 Webster W. エグゼクティブ
    1003 リジーS。 マネージャー
    1004 オリバーT。 ソフトウェアエンジニア

    EmployeeInfo –表#2(右)

    EmployeeID 部門 年齢
    1002 HR 36
    1003 販売 21
    1004 IT 39

    内部結合コード:

    SELECT Employees.Title, EmployeeInfo.Department
    FROM Employees 
    INNER JOIN EmployeeInfo 
    ON Employees.EmployeeID = Employees.EmployeeID;

    結果:

    Title          Department
    Executive      HR     
    Manager        Sales     
    Software       Engineer  IT

    完全参加コード:

    SELECT * 
    FROM Employees  
    FULL JOIN EmployeeInfo  
    ON Employees.EmployeeID = Employees.EmployeeID;

    結果:

    重複を含め、両方のテーブルからすべての行と列を取得し、それらを1つのテーブル全体に結合します。

    左参加コード:

    SELECT Employees.Name, EmployeeInfo.Age
    FROM Employees  
    LEFT JOIN EmployeeInfo  
    ON Employees.EmployeeID = Employees.EmployeeID;

    結果:

    Name              Age
    Webster W.        36    
    Lizzy S.          21   
    Oliver T.         39

    「Employee」テーブルの「EmployeeID」列は、「EmployeeInfo」テーブルの「EmployeeID」を参照しており、基本的に、EmployeeID列は両方のテーブル間の関係であることを示しています。結合はトリッキーになる可能性がありますが、同時に、より大きなデータベースをソートするときに非常に役立ちます。

    ユーザーとデータベースは、本質的に同じ言語を話すことにより、情報を正常に交換することができます。上記のクエリは、初心者と専門家の両方で最も一般的に使用されています。 MySQLクエリの記述は、データベース管理のドメイン内で最も頻繁に使用される機能と見なされています。

    この記事は、2022年4月にKelseyPerkinsによってレビューおよび更新されました。


    1. パイプで区切られた文字列を列に解析しますか?

    2. SQL ServerでのTAN()の例

    3. R12.2で管理サーバーを追加する方法

    4. MySQL優先エンジン–MyISAMまたはInnoDB