← К оглавлению занятия

✅ Решения

⚡ Кратко: решения

  • Задание 1 — CREATE TABLE Employees с ограничениями.
  • Задание 2 — INSERT INTO Employees VALUES ....
  • Задание 3 — попытки нарушить UNIQUE, CHECK, NOT NULL.
  • Задание 4 — CREATE TABLE Employees_short AS SELECT ... LIMIT 2.
  • Задание 5 — UPDATE Employees SET Salary = 65000 WHERE EmployeeID = 1.
  • Задание 6 — UPDATE Employees SET Salary = Salary * 1.10 WHERE HireDate >= '2024-01-01'.
1

Решение задания 1

Создание таблицы с ограничениями.

CREATE TABLE Employees (
    EmployeeID INT AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(50) NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    BirthDate DATE,
    HireDate DATE DEFAULT CURRENT_DATE,
    Salary DECIMAL(10, 2) CHECK (Salary > 0),
    Email VARCHAR(100) UNIQUE
);
2

Решение задания 2

Вставка пяти строк.

INSERT INTO Employees (FirstName, LastName, BirthDate, Salary, Email)
VALUES ('Alice', 'Green', '1985-05-15', 55000.00, 'alice.green@example.com'),
       ('Bob', 'Smith', '1990-08-22', 60000.00, 'bob.smith@example.com'),
       ('Charlie', 'Johnson', '1988-02-10', 52000.00, 'charlie.johnson@example.com'),
       ('Diana', 'Williams', '1992-11-01', 58000.00, 'diana.williams@example.com'),
       ('Edward', 'Brown', '1987-09-30', 61000.00, 'edward.brown@example.com');
3

Решение задания 3

Примеры запросов, которые вызовут ошибки из-за ограничений.

-- Ошибка: дублирующий Email
INSERT INTO Employees (FirstName, LastName, Salary, Email)
VALUES ('Frank', 'White', 50000.00, 'alice.green@example.com');

-- Ошибка: отрицательная зарплата
INSERT INTO Employees (FirstName, LastName, Salary, Email)
VALUES ('Grace', 'Black', -1000.00, 'grace.black@example.com');

-- Ошибка: пропущено обязательное поле
INSERT INTO Employees (LastName, Salary, Email)
VALUES ('Gray', 50000.00, 'gray@example.com');
4

Решение задания 4

Копирование первых двух строк.

CREATE TABLE Employees_short AS
SELECT * FROM Employees
LIMIT 2;
5

Решение задания 5

Обновление зарплаты одного сотрудника.

UPDATE Employees
SET Salary = 65000
WHERE EmployeeID = 1;
6

Решение задания 6

Повышение зарплаты на 10% для недавно нанятых.

UPDATE Employees
SET Salary = Salary * 1.10
WHERE HireDate >= '2024-01-01';