序章

SQLデータベースに最初にテーブルを作成するときは、テーブルに保持する各列と、それらのテーブルに格納されるデータの種類をリストして、全体的な構造を定義する必要があります。 次に、テーブルにデータを追加するときに、挿入する値は、それぞれの列に定義したデータ型と一致している必要があります。 SQLデータベースは、テーブルの事前定義された構造に一致する値を強制的に入力することにより、値を誤って入力しないようにするのに役立ちます。 ただし、この厳密な構造により、データ型が異なる2つの値を比較しようとしている場合、または複数の列の値を1つの結果値に結合しようとしている場合、問題が発生する可能性があります。

このチュートリアルでは、を使用してデータを操作する方法を学習します CAST 値または値のセットのデータ型を別のデータ型に変更し、連結式を使用して文字と数値のデータ値を一緒に文字列化する関数。 また、実行する練習をします CAST 同じクエリ内の関数と連結式により、完全なステートメントが生成されます。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • Ubuntu 20.04を実行しているサーバーで、root以外のユーザーが sudo 管理者権限とファイアウォールが有効になっています。 Ubuntu20.04を使用したサーバーの初期設定に従って開始します。
  • MySQLがサーバーにインストールされ、保護されています。 これを設定するには、 Ubuntu20.04ガイドにMySQLをインストールする方法に従ってください。 このガイドは、このガイドのステップ3 で概説されているように、root以外のMySQLユーザーも設定していることを前提としています。

注:多くのリレーショナルデータベース管理システムは、独自のSQL実装を使用していることに注意してください。 このチュートリアルで概説されているコマンドはほとんどのRDBMSで機能しますが、MySQL以外のシステムでテストした場合、正確な構文または出力が異なる場合があります。

使用を練習するには CAST このチュートリアルの関数と連結式には、サンプルデータがロードされたデータベースとテーブルが必要です。 挿入する準備ができていない場合は、次の MySQLへの接続とサンプルデータベースの設定セクションを読んで、データベースとテーブルを作成する方法を学ぶことができます。 このチュートリアルでは、このサンプルデータベースとテーブル全体を参照します。

MySQLへの接続とサンプルデータベースの設定

SQLデータベースがリモートサーバーで実行されている場合は、ローカルマシンからサーバーにSSHで接続します。

  1. ssh sammy@your_server_ip

次に、MySQLプロンプトを開き、置き換えます sammy with your MySQL user account information:

  1. mysql -u sammy -p

名前の付いたデータベースを作成します castconDB:

  1. CREATE DATABASE castconDB;

データベースが正常に作成されると、次の出力が表示されます。

Output
Query OK, 1 row affected (0.01 sec)

を選択するには castconDB データベースは以下を実行します USE 声明:

  1. USE castconDB;
Output
Database changed

データベースを選択したら、その中にテーブルを作成します。 このチュートリアルの例では、Mr。の成績を保持するテーブルを作成します。 フランクの6年生の秋学期のクラス。 このテーブルには、次の15列が含まれます。

  • student_id:の値を表示します int データ型であり、テーブルの主キーとして機能します。つまり、この列の各値は、それぞれの行の一意の識別子として機能します。
  • first_name:を使用します varchar 学生の名を保持するための最大20文字のデータ型。
  • last_name:学生の名前を保持します varchar データ型。これも最大20文字です。
  • email_address:を使用します varchar 各学生の電子メールを保存するための最大30文字のデータ型。
  • participation_grade:各学生の合計参加成績を int データ・タイプ。
  • attendance_grade:を使用します int 各学生の出席成績を表示するデータ型。
  • midterm_deadline:を使用します TIMESTAMP 各学生が中間試験を提出しなければならない期限を表すデータ型。 このデータ型は、日付と時刻の両方を1つの文字列に結合し、次の形式を使用します:(YYYY-MM-DD HH:MM:SS).
  • midterm_submitted:学生が中間試験を提出した正確な日時を記録します TIMESTAMP データ・タイプ。
  • midterm_grade:を使用します decimal 中間試験の各学生の成績を指定するデータ型。 この列宣言は、1のスケールで4の精度を指定します。これは、この列の値が4桁で、そのうちの1桁が小数点の右側にあることを意味します。
  • essay_deadline:学生がエッセイを提出しなければならない日時を表示します TIMESTAMP データ・タイプ。
  • essay_submitted:を使用します TIMESTAMP 学生がエッセイの課題を提出した時期を追跡するデータ型。
  • essay_grade:各学生のエッセイの成績を保持します decimal データ型と精度は4、スケールは1で、後者は小数点の右側にあります。
  • finalexam_deadline:を使用して最終試験の締め切り情報を保存します TIMESTAMP データ・タイプ。
  • finalexam_submitted:を使用します TIMESTAMP 最終試験のための学生の実際の日時の提出を記録するデータ型。
  • finalexam_grade:最終試験の各学生の成績が含まれています decimal 格納されている4桁の精度と、小数点の右側に1桁のスケールを持つデータ型。

名前の付いたテーブルを作成します fall_grades 次のコマンドを実行することにより、これらの各列があります CREATE TABLE 指図:

  1. CREATE TABLE fall_grades (
  2. student_id int,
  3. first_name varchar(20),
  4. last_name varchar(20),
  5. email_address varchar(30),
  6. participation_grade int,
  7. attendance_grade int,
  8. midterm_deadline TIMESTAMP,
  9. midterm_submitted TIMESTAMP,
  10. midterm_grade decimal(4,1),
  11. essay_deadline TIMESTAMP,
  12. essay_submitted TIMESTAMP,
  13. essay_grade decimal(4,1),
  14. finalexam_deadline TIMESTAMP,
  15. finalexam_submitted TIMESTAMP,
  16. finalexam_grade decimal(4,1),
  17. PRIMARY KEY (student_id)
  18. );

次に、いくつかのサンプルデータを空のテーブルに挿入します。

  1. INSERT INTO fall_grades
  2. (student_id, first_name, last_name, email_address, participation_grade, attendance_grade, midterm_deadline, midterm_submitted, midterm_grade, essay_deadline, essay_submitted, essay_grade, finalexam_deadline, finalexam_submitted, finalexam_grade)
  3. VALUES
  4. (1, 'Arnold', 'Shortman', '[email protected]', 98, 90, '2022-10-16 12:00:00', '2022-10-16 06:30:00', 85.8, '2022-11-20 12:00:00', '2022-11-20 03:00:00', 90.1, '2022-12-11 12:00:00', '2022-12-11 03:00:00', 82.5),
  5. (2, 'Helga', 'Pataki', '[email protected]', 85, 100, '2022-10-16 12:00:00', '2022-10-16 10:00:00', 88.4, '2022-11-20 12:00:00', '2022-11-21 03:15:00', 72.5, '2022-12-11 12:00:00', '2022-12-11 05:00:00', 90.0),
  6. (3, 'Gerald', 'Johanssen', '[email protected]', 100, 95, '2022-10-16 12:00:00', '2022-10-16 02:00:00', 94.2, '2022-11-20 12:00:00', '2022-11-20 02:45:00', 95.8, '2022-12-11 12:00:00', '2022-12-11 11:00:00', 88.1),
  7. (4, 'Phoebe', 'Heyerdahl', '[email protected]', 100, 100, '2022-10-16 12:00:00', '2022-10-16 11:00:00', 98.8, '2022-11-20 12:00:00', '2022-11-20 11:15:00', 90.4, '2022-12-11 12:00:00', '2022-12-11 11:40:00', 100.0),
  8. (5, 'Harold', 'Berman', '[email protected]', 100, 75, '2022-10-16 12:00:00', '2022-10-16 08:00:00', 75.7, '2022-11-20 12:00:00', '2022-11-22 09:15:00', 67.5, '2022-12-11 12:00:00', '2022-12-11 09:15:00', 90.9),
  9. (6, 'Eugene', 'Horowitz', '[email protected]', 100, 100, '2022-10-16 12:00:00', '2022-10-16 01:00:00', 100.0, '2022-11-20 12:00:00', '2022-11-20 01:22:00', 89.9, '2022-12-11 12:00:00', '2022-12-11 07:55:00', 98.2),
  10. (7, 'Rhonda', 'Lloyd', '[email protected]', 100, 80, '2022-10-16 12:00:00', '2022-10-16 06:00:00', 90.4, '2022-11-20 12:00:00', '2022-11-20 06:09:00',81.3, '2022-12-11 12:00:00', '2022-12-11 06:45:00', 95.5),
  11. (8, 'Stinky', 'Peterson', '[email protected]', 100, 85, '2022-10-16 12:00:00', '2022-10-16 03:00:00', 70.6, '2022-11-20 12:00:00', '2022-11-20 05:55:00', 93.1, '2022-12-11 12:00:00', '2022-12-11 10:11:00', 73.2);
Output
Query OK, 8 rows affected (0.01 sec) Records: 8 Duplicates: 0 Warnings: 0

データを挿入すると、使用方法の学習を開始する準備が整います。 CAST SQLの関数と連結式。

CAST関数の使用

CAST関数を使用すると、リテラル値または列内に保持されている値を特定のデータ型に変換できます。 使用する CAST 関数は、特定の式の値のデータ型に互換性があることを確認するのに役立ちます。

を使用するには CAST コマンドを実行するには、変換する既存のデータ値を保持する列を指定してから、式に希望のデータ値や長さを書き込む必要があります。 構文の例を次に示します。

CAST関数の構文
. . .CAST(existing data value AS desired data value) . . .

ただし、注意することが重要です。 CAST 関数は、正しく実行するために特定のルールに準拠しています。 たとえば、変換するデータ型が変換先のデータ型と互換性があることを確認することが重要です。 サンプルデータを参照すると、の値を変換することはできません。 finalexam_grade 数値データ値から(この場合、 decimal データ型)を使用して文字グレードなどの文字列値に直接 CAST 関数。 同様に、最大長のデータ型(保持する列の例など)を変換することはできません。 varchar(30) 値)をより長い長さにします(たとえば、 varchar(35)).

を使用するクエリを実行する場合、SQL実装が異なれば動作も異なることに注意することも重要です。 CAST データ型を変換する関数。 を使用してクエリを実行する CAST たとえば、MySQLの関数は、PostgreSQLで同じクエリを実行する場合とは異なる結果を生成する可能性があります。

使用方法をよりよく理解するため CAST 関数については、前の手順で挿入したサンプルデータに基づいて次のシナリオを想像してください。 氏 PS 118の6年生の教師であるフランクは、秋学期の成績を提出する準備をしています。 彼は各学生の進歩を熱心に追跡しており、特に中間試験、エッセイ、および最終試験の成績について心配しています。 あなたがミスターを助けているとしましょう。 ティーチングアシスタントとしてのフランク、そして彼はあなたにそれらの段階的な割り当てのための情報を彼に提供するように頼まれました。

このデータを取得するには、 fall_grades 学生の情報などの関連情報を取得するためのテーブル first_name, last_name、および各課題の成績:

  1. SELECT first_name, last_name, midterm_grade, essay_grade, finalexam_grade FROM fall_grades;
Output
+------------+-----------+---------------+-------------+-----------------+ | first_name | last_name | midterm_grade | essay_grade | finalexam_grade | +------------+-----------+---------------+-------------+-----------------+ | Arnold | Shortman | 85.8 | 90.1 | 82.5 | | Helga | Pataki | 88.4 | 72.5 | 90.0 | | Gerald | Johanssen | 94.2 | 95.8 | 88.1 | | Phoebe | Heyerdahl | 98.8 | 90.4 | 100.0 | | Harold | Berman | 75.7 | 67.5 | 90.9 | | Eugene | Horowitz | 100.0 | 89.9 | 98.2 | | Rhonda | Lloyd | 90.4 | 81.3 | 95.5 | | Stinky | Peterson | 70.6 | 93.1 | 73.2 | +------------+-----------+---------------+-------------+-----------------+ 8 rows in set (0.00 sec)

この結果セットを氏に持ってきた後。 フランク、彼は、彼が使用しているシステムでは、成績を整数として入力することしかできず、これらの10進データ値を変換する必要があると説明しています。 あなたは使用することにしました CAST 指定された文字値の数を変換する関数(この場合、 decimal データ型)、代わりに2文字の値に。

このクエリでは、前の例の構文を使用しますが、 CAST 変換する関数 decimal 採点された割り当てごとに2文字のデータ型。 実装します CAST 3つの異なる式で機能します( midterm_grade, essay_grade、 と finalexam_grade)それらを2文字のデータ値のみに変換するには:

  1. SELECT first_name, last_name,
  2. CAST(midterm_grade AS char(2)) AS midterm,
  3. CAST(essay_grade AS char(2)) AS essay,
  4. CAST(finalexam_grade AS char(2)) AS finalexam
  5. FROM fall_grades;
Output
+------------+-----------+---------+-------+-----------+ | first_name | last_name | midterm | essay | finalexam | +------------+-----------+---------+-------+-----------+ | Arnold | Shortman | 85 | 90 | 82 | | Helga | Pataki | 88 | 72 | 90 | | Gerald | Johanssen | 94 | 95 | 88 | | Phoebe | Heyerdahl | 98 | 90 | 10 | | Harold | Berman | 75 | 67 | 90 | | Eugene | Horowitz | 10 | 89 | 98 | | Rhonda | Lloyd | 90 | 81 | 95 | | Stinky | Peterson | 70 | 93 | 73 | +------------+-----------+---------+-------+-----------+ 8 rows in set, 24 warnings (0.00 sec)

各学生の成績を確認した後、氏。 フランクは、各生徒が課題を提出した正確な日時に関する情報を取得できるかどうかを尋ねます。

このデータを取得するには、次のコマンドを実行します SELECT 声明:

  1. SELECT first_name, last_name, midterm_deadline, essay_deadline, finalexam_deadline FROM fall_grades;
Output
+------------+-----------+---------------------+---------------------+---------------------+ | first_name | last_name | midterm_deadline | essay_deadline | finalexam_deadline | +------------+-----------+---------------------+---------------------+---------------------+ | Arnold | Shortman | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 | | Helga | Pataki | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 | | Gerald | Johanssen | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 | | Phoebe | Heyerdahl | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 | | Harold | Berman | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 | | Eugene | Horowitz | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 | | Rhonda | Lloyd | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 | | Stinky | Peterson | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 | +------------+-----------+---------------------+---------------------+---------------------+ 8 rows in set (0.00 sec)

この出力を確認した後、Mr。 フランクはため息をつき、この情報を解析するのは難しすぎると言います。 これらの列はすべて保存するように設定されています TIMESTAMP 値、それがそれらが非常に長い理由です。 あなたは使用することにしました CAST 出力をより消化しやすいものに変換し、クエリを2つに分割する関数。1つは日付用、もう1つは時刻用です。

生徒が課題を提出した時間のみをクエリするには、 CAST その特定の列のデータ値をに変換することを指定します time 値:

  1. SELECT first_name, last_name,
  2. CAST(midterm_submitted AS time) AS midterm,
  3. CAST(essay_submitted AS time) AS essay,
  4. CAST(finalexam_submitted AS time) AS finalexam
  5. FROM fall_grades;
Output
+------------+-----------+----------+----------+-----------+ | first_name | last_name | midterm | essay | finalexam | +------------+-----------+----------+----------+-----------+ | Arnold | Shortman | 06:30:00 | 03:00:00 | 03:00:00 | | Helga | Pataki | 10:00:00 | 03:15:00 | 05:00:00 | | Gerald | Johanssen | 02:00:00 | 02:45:00 | 11:00:00 | | Phoebe | Heyerdahl | 11:00:00 | 11:15:00 | 11:40:00 | | Harold | Berman | 08:00:00 | 09:15:00 | 09:15:00 | | Eugene | Horowitz | 01:00:00 | 01:22:00 | 07:55:00 | | Rhonda | Lloyd | 06:00:00 | 06:09:00 | 06:45:00 | | Stinky | Peterson | 03:00:00 | 05:55:00 | 10:11:00 | +------------+-----------+----------+----------+-----------+ 8 rows in set (0.00 sec)

この出力は、各生徒が課題を終えた時間枠の概要を提供します。 あなたは、すべての割り当てが日曜日の深夜に予定されていることを思い出します。 何人かの学生は彼らのタイミングと一致していましたが、他の学生はより早く終了したか、真夜中の締め切りの少し前に終了しました。

しかし、これは氏の情報の半分に過ぎません。 フランクが求めたので、次のクエリに取り組みましょう。 CAST それらを変換する関数 TIMESTAMP の値 date 値。 以前と同じクエリを実行しますが、今回は置き換えます timedate:

  1. SELECT first_name, last_name,
  2. CAST(midterm_submitted AS date) AS midterm,
  3. CAST(essay_submitted AS date) AS essay,
  4. CAST(finalexam_submitted AS date) AS finalexam
  5. FROM fall_grades;
Output
+------------+-----------+------------+------------+------------+ | first_name | last_name | midterm | essay | finalexam | +------------+-----------+------------+------------+------------+ | Arnold | Shortman | 2022-10-16 | 2022-11-20 | 2022-12-11 | | Helga | Pataki | 2022-10-16 | 2022-11-21 | 2022-12-11 | | Gerald | Johanssen | 2022-10-16 | 2022-11-20 | 2022-12-11 | | Phoebe | Heyerdahl | 2022-10-16 | 2022-11-20 | 2022-12-11 | | Harold | Berman | 2022-10-16 | 2022-11-22 | 2022-12-11 | | Eugene | Horowitz | 2022-10-16 | 2022-11-20 | 2022-12-11 | | Rhonda | Lloyd | 2022-10-16 | 2022-11-20 | 2022-12-11 | | Stinky | Peterson | 2022-10-16 | 2022-11-20 | 2022-12-11 | +------------+-----------+------------+------------+------------+ 8 rows in set (0.00 sec)

この出力に基づいて、締め切り後にどの生徒が課題を提出したか、および遅刻のために与えられたポイントが少ないために成績が影響を受けた理由を特定できます。 たとえば、ヘルガは1日遅れて課題を提出しました(2022-11-21)とハロルドは2日遅れて彼の割り当てを提出しました(2022-11-22) 後に 2022-11-20 エッセイの課題の締め切り。

氏が。 フランクはこれらのクリーンアップされた結果に満足しています。彼は成績レポートのためにデータをさらに明確にするためにもう少し助けが必要です。 次のセクションでは、複数のリテラル値または列値を1つの文字列値に結合できる連結式の使用を練習し、情報をより明確にして完全なステートメントまたは文として解釈できるようにします。

連結式の使用

連結式を使用すると、 CONCAT、異なる列の文字または数値を1つの結果にまとめることで、データを操作できます。

通常、SQLデータベースは、結果セットのデータ値をそれぞれの列に個別に返します。 たとえば、 first_namelast_name PS 118の生徒のうち、出力は次のように表示されます。

  1. SELECT first_name, last_name FROM fall_grades;
Output
+------------+-----------+ | first_name | last_name | +------------+-----------+ | Arnold | Shortman | | Helga | Pataki | | Gerald | Johanssen | | Phoebe | Heyerdahl | | Harold | Berman | | Eugene | Horowitz | | Rhonda | Lloyd | | Stinky | Peterson | +------------+-----------+ 8 rows in set (0.00 sec)

ただし、この情報は氏のようにフォーマットされていません。 フランクは報告を好みます。 連結を使用して別のクエリを実行し、生徒の名前と名前を1つの文字列に結合してみましょう。 次のクエリは、 CONCAT キーワードであり、結果の列にエイリアスを提供します full_names:

  1. SELECT CONCAT(first_name, last_name) AS full_names FROM fall_grades;
Output
+-----------------+ | full_names | +-----------------+ | ArnoldShortman | | HelgaPataki | | GeraldJohanssen | | PhoebeHeyerdahl | | HaroldBerman | | EugeneHorowitz | | RhondaLloyd | | StinkyPeterson | +-----------------+ 8 rows in set (0.00 sec)

連結式は通常、すべてのデータ型で機能しますが、データ値間の間隔などの詳細を指定しない場合、この出力で証明されるように、出力は単一の文字列のランオンとして表示されます。 これを修正するには、間にスペースを入れて一重引用符のペアを追加します(' ')2つの間 first_namelast_name 値が単一の文字列として出力されるように列を作成しますが、今回は、読みやすくするために列の間にスペースを入れます。

  1. SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM fall_grades;
Output
+------------------+ | full_name | +------------------+ | Arnold Shortman | | Helga Pataki | | Gerald Johanssen | | Phoebe Heyerdahl | | Harold Berman | | Eugene Horowitz | | Rhonda Lloyd | | Stinky Peterson | +------------------+ 8 rows in set (0.00 sec)

クエリに一重引用符の間にスペースを含めることにより、出力には、生徒の名前が1つの結合された単語ではなく、2つの別個の単語として明確に表示されるようになりました。

注:最新のリレーショナルDBMSのほとんどは、値を連結するためにこのセクションで概説されている構文を使用します。 ただし、この構文( CONCAT キーワード)は、SQL標準で定義されている従来の構文ではありません。

SQLで値を連結する従来の方法は、連結するデータ値の間に1対の垂直バーを配置することです。 MySQLではこの構文をまったく使用できませんが、PostgreSQLなどの一部のDBMSではどちらの方法でも使用できます。 次のクエリ例(PostgreSQLデータベースで実行)は、前のクエリと同じ結果を生成しますが、今回は垂直バーを使用します。

  1. SELECT first_name || ' ' || last_name AS full_name
  2. FROM fall_grades;
Output
full_name ------------------ Arnold Shortman Helga Pataki Gerald Johanssen Phoebe Heyerdahl Harold Berman Eugene Horowitz Rhonda Lloyd Stinky Peterson (8 rows)

次に、各生徒に関する詳細情報を取得する別の例を試してみましょう。 今回は、 first_name, last_name, e-mail_address, finalexam_grade、 と finalexam_submitted を使用してデータ値を単一の列に CONCAT. 次の例のように、間にスペースを追加する各列の間に一重引用符を追加することを忘れないでください。

  1. SELECT CONCAT(first_name, ' ', last_name, ' ',
  2. email_address, ' ', finalexam_grade, ' ', finalexam_submitted)
  3. AS student_info FROM fall_grades;
Output
+-----------------------------------------------------------------+ | student_info | +-----------------------------------------------------------------+ | Arnold Shortman [email protected] 82.5 2022-12-11 03:00:00 | | Helga Pataki [email protected] 90.0 2022-12-11 05:00:00 | | Gerald Johanssen [email protected] 88.1 2022-12-11 11:00:00 | | Phoebe Heyerdahl [email protected] 100.0 2022-12-11 11:40:00 | | Harold Berman [email protected] 90.9 2022-12-11 09:15:00 | | Eugene Horowitz [email protected] 98.2 2022-12-11 07:55:00 | | Rhonda Lloyd [email protected] 95.5 2022-12-11 06:45:00 | | Stinky Peterson [email protected] 73.2 2022-12-11 10:11:00 | +-----------------------------------------------------------------+ 8 rows in set (0.00 sec)

氏 フランクはこれらの結果に満足していますが、データ値の一部を変換することにより、成績レポートをさらに簡潔にしたいと考えています。 このシナリオでは、 CAST 変換する関数 finalexam_grade 整数へのデータ型と finalexam_submitted、を使用します TIMESTAMP データ型、 date 次のような値:

  1. SELECT CONCAT(first_name, ' ', last_name, ' ', email_address, ' ',
  2. CAST(finalexam_grade AS char(2)), ' ',
  3. CAST(finalexam_submitted AS date))
  4. AS student_info FROM fall_grades;
Output
+-----------------------------------------------------+ | student_info | +-----------------------------------------------------+ | Arnold Shortman [email protected] 82 2022-12-11 | | Helga Pataki [email protected] 90 2022-12-11 | | Gerald Johanssen [email protected] 88 2022-12-11 | | Phoebe Heyerdahl [email protected] 10 2022-12-11 | | Harold Berman [email protected] 90 2022-12-11 | | Eugene Horowitz [email protected] 98 2022-12-11 | | Rhonda Lloyd [email protected] 95 2022-12-11 | | Stinky Peterson [email protected] 73 2022-12-11 | +-----------------------------------------------------+ 8 rows in set, 8 warnings (0.00 sec)

さらに一歩進んで、を使用するクエリを書いてみましょう。 CAST 関数と連結式を使用して、完全な文を出力します。 これを行うには、一重引用符の間に短いステートメントを記述します。 記述されたステートメントの終了の前後に1つのスペースを追加して、各列の間にスペースを維持してください。

  1. SELECT CONCAT(first_name, ' ', last_name, ' can be contacted at ', email_address,
  2. ' and received a grade of ',
  3. CAST(finalexam_grade AS char(2)),
  4. ' after submitting the final exam on ',
  5. CAST(finalexam_submitted AS date))
  6. AS student_info FROM fall_grades;
Output
+------------------------------------------------------------------------------------------------------------------------------------+ | student_info | +------------------------------------------------------------------------------------------------------------------------------------+ | Arnold Shortman can be contacted at [email protected] and received a grade of 82 after submitting the final exam on 2022-12-11 | | Helga Pataki can be contacted at [email protected] and received a grade of 90 after submitting the final exam on 2022-12-11 | | Gerald Johanssen can be contacted at [email protected] and received a grade of 88 after submitting the final exam on 2022-12-11 | | Phoebe Heyerdahl can be contacted at [email protected] and received a grade of 10 after submitting the final exam on 2022-12-11 | | Harold Berman can be contacted at [email protected] and received a grade of 90 after submitting the final exam on 2022-12-11 | | Eugene Horowitz can be contacted at [email protected] and received a grade of 98 after submitting the final exam on 2022-12-11 | | Rhonda Lloyd can be contacted at [email protected] and received a grade of 95 after submitting the final exam on 2022-12-11 | | Stinky Peterson can be contacted at [email protected] and received a grade of 73 after submitting the final exam on 2022-12-11 | +------------------------------------------------------------------------------------------------------------------------------------+ 8 rows in set, 8 warnings (0.00 sec)

この出力は、Mr。の各学生に関する全文になります。 フランクのクラス。 一重引用符の間にあるこれらのマイナーな追加は、この情報が誰であるか、およびそれぞれのデータを明確にする上で大きな違いをもたらします。 これは、クエリでデータを取得した特定の列が原因です。 氏 フランクはあなたの素晴らしい仕事に十分に感謝することはできません。 彼は、レポートにすばやく入力できる全文を書き出すことで、時間を節約できたことを非常に喜んでいます。

結論

このガイドでは、データを操作するためのさまざまなユースケースについて説明しました。 CAST 関数と連結式。 とともに CAST 関数では、あるデータ型の列を別のデータ型に変換する練習をしました。 さらに、連結式を使用して、文字と数値の両方のさまざまなデータ値を1つの文字列にまとめる方法を学びました。 あなたも実行しました CAST 関数と同じクエリ内の連結式を使用して、データ値に関するより多くのコンテキストを提供する完全な文を生成します。 これにより、それらを個別に書き出すプロセスを合理化でき、代わりに、情報をそのまま効率的にコピーして貼り付けることができます。 SQLの他の関数の詳細については、SQLの使用方法に関するシリーズをご覧ください。