|
|||
Курсоры в MySQL. Лабораторная работа №6Курсоры в MySQL Лабораторная работа №6 1. Создать или открыть ранее сохраненную базу данных «university» в программе-дизайнере MySQL Workbench. 2. В базе данных «university» создать таблицу «users» с полями: · id тип int – ключ (PK); · name тип varchar (45), не нулевое (NN); · d_id тип int; 3. Заполнить таблицу «users» произвольными записями - 5 строк. 4. В базе данных «university» создать таблицу «hobbies» с полями: · id тип int – ключ (PK), счетчик (AI); · hobby тип varchar(45), не нулевое (NN); · u_id тип int. 5. Заполнить таблицу «hobbies» произвольными записями - 7 строк. Поле «hobby» должно содержать текстовое название хобби студента, а поле «u_id» число – идентификатор студента из таблицы «users». Каждый студент может иметь несколько различных хобби. 6. Создать хранимую процедуру с именем showHobbies (раздел Routines в MySQL Workbech). 7. Заполнить тело процедуры согласно образцу: DELIMITER // CREATE PROCEDURE `university`.`showHobbies` (OUT printstr VARCHAR(500)) BEGIN DECLARE done BOOLEAN DEFAULT FALSE; DECLARE cur_id, cur_u_id INT; DECLARE cur_name, cur_hobby CHAR(45); DECLARE outstr VARCHAR(500) DEFAULT '\n'; DECLARE workstr VARCHAR(500) DEFAULT ''; DECLARE curusers CURSOR FOR SELECT id, name FROM users; DECLARE curhobbies CURSOR FOR SELECT u_id, hobby FROM hobbies; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE; OPEN curusers; USERSLOOP: LOOP FETCH curusers INTO cur_id, cur_name; IF done THEN LEAVE USERSLOOP; END IF; SELECT CONCAT(CONCAT('The hobby list ', cur_name), ' is ') INTO workstr; OPEN curhobbies; FETCH curhobbies INTO cur_u_id, cur_hobby; WHILE NOT done DO IF cur_id = cur_u_id THEN SELECT CONCAT(workstr, cur_hobby) INTO workstr; SELECT CONCAT(workstr, ', ') INTO workstr; END IF; FETCH curhobbies INTO cur_u_id, cur_hobby; END WHILE; SET done := FALSE; CLOSE curhobbies; SET outstr := CONCAT(outstr, CONCAT(workstr, '\n')); END LOOP USERSLOOP; CLOSE curusers; SET printstr := outstr; END// 8. Сохранить созданную в программе-дизайнере схему базы данных на локальный компьютер. Запустить генерацию базы данных на сервере MySQL. Подключиться к базе данных MySQL через терминал (mysql –u root –p). 9. Активизировать базу данных «university» (use). В командной строке выполнить следующую последовательность команд: · CALL showHobbies(@list); · SELECT @list; (результаты вывода записать в черновик).
|
|||
|