SQLテスト - 初級編 (病院データベース)

このテストは、病院の患者、医師、診察予約といった基本的なデータを操作し、SQLの基礎を測定することを目的としています。

注: 各問題の解答は、SQL Serverの構文に基づいて記述してください。

問題

以下のテーブル定義をもとに、各問題に解答してください。

テーブル定義: Patients (患者情報)

CREATE TABLE Patients (
    PatientID INT PRIMARY KEY IDENTITY(1,1),
    FirstName NVARCHAR(50) NOT NULL,
    LastName NVARCHAR(50) NOT NULL,
    DateOfBirth DATE,
    Gender NVARCHAR(10), -- 'Male', 'Female', 'Other'
    ContactPhone NVARCHAR(20),
    Enabled BIT DEFAULT 1,
    InsertDate DATETIME DEFAULT GETDATE(),
    UpdateDate DATETIME DEFAULT GETDATE(),
    DeleteDate DATETIME,
    UpdateUser NVARCHAR(50)
);
            

テーブル定義: Doctors (医師情報)

CREATE TABLE Doctors (
    DoctorID INT PRIMARY KEY IDENTITY(1,1),
    FirstName NVARCHAR(50) NOT NULL,
    LastName NVARCHAR(50) NOT NULL,
    Specialty NVARCHAR(100), -- 専門分野
    LicenseNumber NVARCHAR(50) UNIQUE,
    Enabled BIT DEFAULT 1,
    InsertDate DATETIME DEFAULT GETDATE(),
    UpdateDate DATETIME DEFAULT GETDATE(),
    DeleteDate DATETIME,
    UpdateUser NVARCHAR(50)
);
            

テーブル定義: Appointments (診察予約情報)

CREATE TABLE Appointments (
    AppointmentID INT PRIMARY KEY IDENTITY(1,1),
    PatientID INT NOT NULL,
    DoctorID INT NOT NULL,
    AppointmentDateTime DATETIME NOT NULL,
    Reason NVARCHAR(255), -- 予約理由
    Status NVARCHAR(20), -- 'Scheduled', 'Completed', 'Canceled'
    Enabled BIT DEFAULT 1,
    InsertDate DATETIME DEFAULT GETDATE(),
    UpdateDate DATETIME DEFAULT GETDATE(),
    DeleteDate DATETIME,
    UpdateUser NVARCHAR(50),
    FOREIGN KEY (PatientID) REFERENCES Patients(PatientID),
    FOREIGN KEY (DoctorID) REFERENCES Doctors(DoctorID)
);
            
問題 1.1: Patients テーブルに、以下の患者情報を新規登録するSQL文を記述してください。
名: '花子', 姓: '田中', 生年月日: '1990-08-20', 性別: 'Female', 電話: '090-1234-5678'

解答欄:

問題 1.2: Doctors テーブルから、専門分野(Specialty)が'内科'の有効な医師のFirstNameLastNameを取得するSQL文を記述してください。

解答欄:

問題 1.3: Appointments テーブルで、AppointmentIDが3の予約のStatusを'Completed'に更新するSQL文を記述してください。(UpdateUserも適切に設定してください)

解答欄:

問題 1.4: Patients テーブルから、生年月日(DateOfBirth)が1980年1月1日以前の有効な患者のFirstNameLastNameDateOfBirthを、生年月日が新しい順(昇順)で取得するSQL文を記述してください。

解答欄:

問題 1.5: Doctors テーブルから、DoctorIDが2の医師を論理削除するSQL文を記述してください。(Enabledを0に更新し、DeleteDateUpdateUserも適切に設定してください)

解答欄:

問題 1.6: Appointments テーブルに、以下の診察予約情報を複数件一括で登録するSQL文を記述してください。
患者ID: 1, 医師ID: 1, 予約日時: '2025-07-01 10:00:00', 理由: '定期健診', ステータス: 'Scheduled'
患者ID: 2, 医師ID: 3, 予約日時: '2025-07-02 14:30:00', 理由: '発熱', ステータス: 'Scheduled'

解答欄:

目次へ戻る