|
|||
Case, встроенные функции MySQLCase, встроенные функции MySQL Лабораторная работа №5
1. Создать или открыть ранее сохраненную базу данных «university» в программе-дизайнере MySQL Workbench. 2. В базе данных «university» создать таблицу «tasks» с полями: · id тип int, ключ (PK), счетчик (AI); · taskname тип varchar(45), не нулевое (NN); · taskmonth тип varchar(45); · taskday тип varchar(45); · u_id тип int. 3. Создать хранимую процедуру с именем createTask (раздел Routines в MySQL Workbech). 4. Заполнить тело процедуры согласно образцу: DELIMITER // CREATE PROCEDURE `university`.`createTask` (IN tname VARCHAR(45), IN tdate DATETIME, OUT muchdays VARCHAR(45)) BEGIN DECLARE tmonth VARCHAR(45); SELECT CONCAT('Task month is: ', (CASE MONTH(tdate) WHEN 1 THEN 'Jan' WHEN 2 THEN 'Feb' WHEN 3 THEN 'Mar' WHEN 4 THEN 'Apr' WHEN 5 THEN 'May' WHEN 6 THEN 'Jun' WHEN 7 THEN 'Jul' WHEN 8 THEN 'Aug' WHEN 9 THEN 'Sep' WHEN 10 THEN 'Oct' WHEN 11 THEN 'Nov' WHEN 12 THEN 'Dec' ELSE 'None' END )) INTO tmonth; INSERT INTO tasks (taskname, taskday, taskmonth) VALUES (tname, DAY(tdate), tmonth); SELECT CONCAT('Remains days: ', DATEDIFF(tdate, CURDATE())) INTO muchdays; END// 5. Сохранить созданную в программе-дизайнере схему базы данных на локальный компьютер. 6. Запустить генерацию базы данных на сервере MySQL. (Пункт меню: Database->Forward Engineer. В опциях необходимо поставить галки напротив пунктов DROP Objects Before Each CREATE Object и Generate INSERT Statements for Tables). 7. Подключиться к базе данных MySQL через терминал (mysql –u root –p). 8. Активизировать базу данных «university» (use). 9. В командной строке выполнить следующую последовательность команд: · CALL createTask(‘Database optimization’, ‘2009-11-01’, @days); · SELECT CONCAT(‘Optimization ‘, @days); (результаты вывода записать в черновик) · CALL createTask(‘Database replication ’, ‘2009-09-14’, @days); · SELECT CONCAT(‘Replication ‘, @days); (результаты вывода записать в черновик) · CALL createTask(‘<Ввести свою задачу>’, ‘<Ввести свою дату>’, @days); · SELECT * FROM tasks; (результаты вывода записать в черновик)
|
|||
|