Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помогите составить SQL-запросы

Создайте запрос для проверки возможности (CREATE) добавления нового сотрудника с данными «имя», «фамилия», «отдел» в таблицу сотрудников (employees).
Создайте запрос для проверки наличия (READ) сотрудника, которого вы добавили в первом запросе.
Создайте запрос для удаления (DELETE) сотрудника из первого запроса и используйте связанную операцию, чтобы убедиться, что данной записи в таблице больше нет.


Создайте хранимую процедуру с параметрами на добавление новой записи в таблицу с книгами. Таблица содержит информацию об авторе книги, ее названии и о годе выпуска (таблица Books, колонки Author, Name, Year_of_issue).
Создайте запрос на вызов процедуры из первого пункта, используя значения параметров.
Допустим, у вас есть база данных для организации мероприятий и бронирования билетов с таблицей Events, которая хранит информацию о мероприятиях и доступном количестве билетов, и полями id, name, total_tickets, booked_tickets. Создайте хранимую процедуру, которая проверяет наличие достаточного количества доступных билетов и делает следующее:
Если есть достаточное количество билетов, резервирует указанное количество билетов, обновив соответствующее поле в таблице Events, и выводит сообщение «Резервирование прошло успешно!».
Если билетов недостаточно, выдает сообщение «Извините, билетов недостаточно».
Обработайте возможные ошибки, используя блок EXCEPTION.

По дате
По рейтингу
Аватар пользователя
Высший разум
8мес
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
 
 
### 1. CREATE: Добавление нового сотрудника 
 

INSERT INTO employees (first_name, last_name, department) 
VALUES ('Имя', 'Фамилия', 'Отдел'); 

 
### 2. READ: Проверка наличия сотрудника 
 

SELECT * FROM employees 
WHERE first_name = 'Имя' AND last_name = 'Фамилия' AND department = 'Отдел'; 

 
### 3. DELETE: Удаление сотрудника 
 

DELETE FROM employees 
WHERE first_name = 'Имя' AND last_name = 'Фамилия' AND department = 'Отдел'; 
 
-- Проверка, что запись удалена 
SELECT * FROM employees 
WHERE first_name = 'Имя' AND last_name = 'Фамилия' AND department = 'Отдел'; 

 
### 4. Хранимая процедура для добавления книги 
 
#### Создание процедуры 
 

CREATE PROCEDURE AddBook( 
    IN p_author VARCHAR(255), 
    IN p_name VARCHAR(255), 
    IN p_year_of_issue INT 
) 
BEGIN 
    INSERT INTO Books (Author, Name, Year_of_issue) 
    VALUES (p_author, p_name, p_year_of_issue); 
END; 

 
#### Вызов процедуры 
 

CALL AddBook('Автор', 'Название книги', 2024); 

 
### 5. Хранимая процедура для резервирования билетов 
 
#### Создание процедуры 
 

CREATE PROCEDURE ReserveTickets( 
    IN p_event_id INT, 
    IN p_tickets_to_book INT 
) 
BEGIN 
    DECLARE available_tickets INT; 
     
    -- Получаем количество доступных билетов 
    SELECT total_tickets - booked_tickets INTO available_tickets 
    FROM Events 
    WHERE id = p_event_id; 
     
    -- Проверяем наличие достаточного количества билетов 
    IF available_tickets >= p_tickets_to_book THEN 
        -- Резервируем билеты 
        UPDATE Events 
        SET booked_tickets = booked_tickets + p_tickets_to_book 
        WHERE id = p_event_id; 
         
        SELECT 'Резервирование прошло успешно!' AS message; 
    ELSE 
        SELECT 'Извините, билетов недостаточно' AS message; 
    END IF; 
     
    -- Обработка ошибок 
    DECLARE EXIT HANDLER FOR SQLEXCEPTION 
    BEGIN 
        -- Здесь можно добавить код для обработки ошибок 
        SELECT 'Произошла ошибка при резервировании билетов' AS error_message; 
    END; 
END;