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

SQLコマンドの概要

    デジタル化、ビッグデータ、クラウドコンピューティングが増加している今日の世界では、データ管理はソフトウェアエンジニアが持つことができる最も重要なスキルの1つです。この目的のために、最も強力なデータベースツールの1つはSQLです。

    SQL(Structured Query Language)は、データ構造オブジェクトを操作するために使用される標準のプログラミング言語です。これらは、リレーショナルデータベース管理システム(RDBMS)に含まれているデータを操作します。よく知られているRDBMSには、MySQLとPostgreSQLがあります。

    このガイドでは、SQL言語のサブセットと、SELECTなどの基本的なSQLコマンドの使用方法について学習します。 、INSERTUPDATE 、およびDELETE

    SQLのサブセット

    以下のリストには、さまざまなSQLコマンドのさまざまな言語サブセットが含まれています。各サブセットには独自の機能と目的があります。

    • データ定義言語 (DDL):これにより、データベーステーブル内のデータを実際に操作することなく、データベーススキーマ定義(つまり、テーブルとインデックス)を作成、削除、および更新できます。
    • データクエリ言語 (DQL):DQLは、SELECTを使用してデータベースからデータを取得するために使用されます ステートメント。
    • データ操作言語 (DML):このサブ言語では、INSERTを使用してデータベースでデータを操作できます。 、UPDATE 、およびDELETE ステートメント。

    このガイドでは、学校のサンプルデータベースを使用して、上記の各サブセットのSQLコマンドをさらに示します。学校のデータベースには、学生、コース、成績などのテーブルがいくつかあります。 Studentの定義 テーブルには、学生のSSNumberの列が含まれています 、Firstname 、およびLastname 、およびCourseTakenの定義 テーブルには、SSNumberの列が含まれています 、CourseIdNumericGrade 、およびYearTaken

    この例では、学校に3人の生徒がいて、それぞれが2つのコースを完了していると想定しています。サンプルデータを次の表に示します。

    SSNumber LastName FirstName CourseId NumericGrade YearTaken
    111111111 Smith John CSC101 98 2021
    111111111 Smith John ENG101 95 2022
    222222222 ジョーンズ メアリー CSC101 100 2022
    222222222 ジョーンズ メアリー EEE101 75 2022
    333333333 Hansen Robert POL101 92 2021
    333333333 Hansen Robert SOC103 84 2022

    SQLコマンドを使用したテーブルの作成、変更、および削除

    コマンドラインから、CREATE TABLEを使用します コマンドの後にテーブルの名前とテーブルデータが続きます。以下のコマンドは、Studentを作成します テーブル。

    CREATE TABLE Student (
      SSNumber CHAR(9) NOT NULL,
      LastName VARCHAR(30) NOT NULL,
      FirstName VARCHAR(20) NOT NULL
    );
    

    括弧は、各行のデータにラベルを付ける列から始めて、テーブルデータを囲みます。次の列は、この行が保持するデータ型を示しています。 CHAR 固定長の文字列データ型とVARCHARを示します 可変長文字列データ型を示します。最後の列のNOT NULL 属性は、NOT NULLのいずれかが発生した場合に、レコードをテーブルに追加できないようにします。 列にはデータが関連付けられていません。

    CREATE TABLE ステートメントは末尾のセミコロン(;)で区切られますが、一部の商用リレーショナルデータベースシステムではその区切り文字が必要ない場合があります。
    注 特に明記されていない限り、このガイドで示されているすべてのデータベースコマンドは、両方の MySQLで適切に機能します。 およびPostgreSQL

    CourseTakenを作成するには テーブルで、次のコマンドを実行します:

    CREATE TABLE CourseTaken (
      SSNumber CHAR(9) NOT NULL,
      CourseId CHAR(6) NOT NULL,
      NumericGrade INT NOT NULL
    );
    

    YearTaken 列は意図的にCourseTakenに含まれていません ALTER TABLEの使用法を示す表 指図。 YearTakenを追加するには CourseTakenの列 テーブルの場合、CourseTakenを削除する必要はありません 完全にテーブル。代わりに、DDL ALTER TABLEを使用できます 指図。次のコマンドは、CourseTakenを変更します 不足している列をテーブルに追加してテーブルを作成します。

    ALTER TABLE CourseTaken
      ADD (YearTaken INT NOT NULL);
    

    上記のコマンドは、以前と同様の構文に従います。テーブル名と、行名、行データ型、NOT NULLの3つの引数が必要です。 属性。 CourseTakenを削除する場合 テーブル全体で、DDL DROP TABLEを発行します コマンドの後にテーブル名が続きます。

    DROP TABLE CourseTaken;
    
    注意 テーブルを削除すると、テーブル内のすべてのデータが削除されます。

    SQLのテーブルにデータを挿入する方法

    データをテーブルに挿入するには、SQL INSERT INTOを使用します 声明。このコマンドを呼び出すには、データを挿入するテーブル名と行名のリスト(括弧内)を指定します。この後にVALUESが続きます キーワードと挿入したい実際の値(括弧内)。値は、呼び出された順序で行に挿入されます。

    • SQLコマンドは複数行に分割できます。 SQLコマンドの終わりは、セミコロン(;)で区切られます。 。
    • 文字データは、開始アポストロフィと終了アポストロフィ()で区切られます。 )、数値データはそうではありません。

    次のINSERT コマンドは、Studentに3行を挿入します テーブル。これらのコマンドは複数のINSERTを使用します ステートメント。

    INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
    ('111111111', 'Smith', 'John');
    
    INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
    ('222222222', 'Jones', 'Mary');
    
    INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
    ('333333333', 'Hansen', 'Robert');
    

    同様に、以下に示すように、単一のSQLクエリでテーブルに複数の行を挿入することもできます。

    INSERT INTO CourseTaken
    (SSNumber, CourseId, NumericGrade, YearTaken)
    VALUES
    ('111111111', 'CSC101', 98, 2021),
    ('111111111', 'ENG101', 95, 2022),
    ('222222222', 'CSC101', 100, 2022);
    

    INSERT INTOを使用できます PostgreSQLでも同様のコマンド テーブルに行を追加します。値がテーブル定義の列の順序と一致していることを確認してください。

    INSERT INTO student VALUES ('111111111', 'Smith', 'John');
    

    テーブルからデータを削除

    テーブルからデータを削除するには、SQL DELETE FROMを使用します 声明。 WHEREを使用する 条件を指定する句。複数の条件がある場合は、ANDを使用します。 WHEREとともに句 。

    たとえば、次のコマンドはCourseTakenからレコードを削除します SSNumberのテーブル 333333333 およびCourseId POL101

    注意 WHEREを省略した場合 句を指定すると、テーブル内のすべてのレコードが削除されます。
    DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';
    

    テーブル内のデータを更新するSQLコマンド

    テーブル内の既存のレコードを更新するには、SQL UPDATEを使用します 指図。 SET 句は、特定の列とWHEREに新しい値を設定(更新)するために使用されます 句は、選択した行を更新するために使用されます。

    たとえば、次のコマンドはNumericGradeを更新します CourseTakenの列 SSNumberのレコードのテーブル 222222222 およびCourseId EEE101

    UPDATE CourseTaken
    SET NumericGrade = 95
    WHERE SSNumber = '222222222' AND CourseId = 'EEE101';
    

    テーブルからデータを取得するSQLコマンド

    リレーショナルデータベースシステムの真の力は、SQL SELECTを介してマルチテーブルスキーマの情報を取得できることです。 コマンド、および共通キーを介してテーブルを結合する機能。この入門ガイドでは、キーとそれらのキーを使用したインデックスの作成については説明していませんが、SSNumberを使用しています。 情報を生成するためにテーブルを関連付ける(または結合する)ための手段(キー)としての各テーブルの列。次の例は、SQL SELECTを使用するさまざまなユースケースを示しています。 コマンドラインからのコマンド。

    例1: 学校のすべての生徒のリストを取得します。

    SELECT * from Student;
    

    出力:

    +-----------+----------+-----------+
    | SSNumber  | LastName | FirstName |
    +-----------+----------+-----------+
    | 111111111 | Smith    | John      |
    | 222222222 | Jones    | Mary      |
    | 333333333 | Hansen   | Robert    |
    +-----------+----------+-----------+

    例2: 受講したすべての学生とコースのリストを取得します。

    SELECT Student.SSNumber, Student.LastName,
           Student.FirstName, CourseTaken.CourseId
    FROM Student, CourseTaken
    WHERE Student.SSNumber = CourseTaken.SSNumber;
    

    出力:

    +-----------+----------+-----------+----------+
    | SSNumber  | LastName | FirstName | CourseId |
    +-----------+----------+-----------+----------+
    | 111111111 | Smith    | John      | CSC101   |
    | 111111111 | Smith    | John      | ENG101   |
    | 222222222 | Jones    | Mary      | CSC101   |
    +-----------+----------+-----------+----------+
    注 上記のコマンドでは、2つのテーブルStudent およびCourseTaken 必要な情報を取得するために結合されます。 SELECTの列名 およびWHERE わかりやすくするために、句の前にはテーブル名が付いています。ただし、SSNumberの場合 列の場合、両方のテーブルが同じ列名を共有するため、適切なテーブル名のプレフィックスを指定する必要があります。 FROM 句は、このクエリで使用されているテーブルを示します。

    例3: CourseIdを使用して学生のリストを取得します CSC101 そして彼らがこのコースを受講した年。

    SELECT Student.LastName, Student.FirstName,
           CourseTaken.CourseId, CourseTaken.YearTaken
    FROM Student, CourseTaken
    WHERE Student.SSNumber = CourseTaken.SSNumber
    AND CourseTaken.CourseId = 'CSC101';
    

    出力:

    +----------+-----------+----------+-----------+
    | LastName | FirstName | CourseId | YearTaken |
    +----------+-----------+----------+-----------+
    | Smith    | John      | CSC101   |      2021 |
    | Jones    | Mary      | CSC101   |      2022 |
    +----------+-----------+----------+-----------+

    例4: 90を超えるコースの成績を持っている学生の名前、受講したコース、および受け取った成績のリストを取得します 。

    SELECT Student.LastName, Student.FirstName,
           CourseTaken.CourseId, CourseTaken.NumericGrade
    FROM Student, CourseTaken
    WHERE Student.SSNumber = CourseTaken.SSNumber
    AND CourseTaken.NumericGrade > 90;
    

    出力:

    +----------+-----------+----------+--------------+
    | LastName | FirstName | CourseId | NumericGrade |
    +----------+-----------+----------+--------------+
    | Smith    | John      | ENG101   |           95 |
    | Smith    | John      | CSC101   |           98 |
    | Jones    | Mary      | CSC101   |          100 |
    +----------+-----------+----------+--------------+

    AND 上記のコマンドの句を使用すると、条件付きの成績スコアテストで結果をフィルタリングできます。

    結論

    SQLコマンドに関するこのガイドは、データベーススキーマを作成し、それらのデータベース内のデータを操作する方法についての入門的な入門書です。ここで紹介する概念は、リレーショナルデータベースシステムの使用法に関しては表面的なものにすぎませんが、基本的かつ重要なコマンドと概念の出発点として適しています。


    1. pgBadgerを使用したPostgreSQLログ分析

    2. SQLServerに200万行をすばやく挿入する

    3. SQLServerでGUIを使用して列を変更する方法または変更スクリプトを生成する方法-SQLServer/T-SQLチュートリアルパート38

    4. CLOBフィールドをファイルにダンプしますか?