Лабораторные работы БД. Отчет по лабораторной работе. 2 Используя ms access перенести полученную модель в бд, используя таблицы и схему данных
![]()
|
Варианты заданий к лабораторной работе Общие сведения Для выполнения заданий ориентироваться на вариант и список номеров заданий. Список вариантов заданий Вариант Список номеров упражнений 1 1 6 11 16 21 26 31 36 41 46 51 56 61 2 2 7 12 17 22 27 32 37 42 47 52 57 62 3 3 8 13 18 23 28 33 38 43 48 53 58 63 4 4 9 14 19 24 29 34 39 44 49 54 59 64 5 5 10 15 20 25 30 35 40 45 50 55 60 64 6 6 11 16 21 26 31 36 41 46 51 56 61 1 7 7 12 17 22 27 32 37 42 47 52 57 62 2 8 8 13 18 23 28 33 38 43 48 53 58 63 3 9 9 14 19 24 29 34 39 44 49 54 59 64 4 10 10 15 20 25 30 35 40 45 50 55 60 65 5 11 2 6 12 16 22 26 32 36 42 46 52 56 62 12 1 5 11 15 21 25 31 35 41 45 51 55 61 13 3 7 13 17 23 27 33 37 43 47 53 57 63 Специальные знаки и простейшие операторы в Transact SQL 1. Проверить работу описанной установки SET QUOTED_IDENTIFIER. 2. Проверить работу описанной установки SET DATEFIRST. Объявление переменных 3. Объявить переменную Perem1 типа денежный, а переменную Perem2 типа число с целой частью равной 8 и дробной частью равной 2. 4. Объявить переменную Perem1 типа строка длиной 100, а переменную Perem2 типа длинное целое. 5. Объявить переменную Perem1 типа динамическая строка с максимальной длиной 1000, а переменную Perem2 типа целое число. 6. Объявить переменную Perem1 типа строка длиной 30, а переменную Perem2 типа число с целой частью равной 10 и дробной частью равной 3. 7. Объявить переменную Perem1 типа дата/ время, а переменную Perem2 типа число в диапазоне от 0 до 255. Присвоение значений переменным и вывод значений на экран 8. Подсчитать среднюю цену закупленных книг (с помощью запроса SELECT) и умножить ее на значение 123,34, которое необходимо сохранить в отдельной переменной, вывести значение переменной на экран. 9. Подсчитать суммарную цену всех закупок книг, результат поместить в переменную, вывести значение переменной на экран. 10. Подсчитать количество книг в справочнике книг, результат поместить в переменную, вывести значение переменной на экран. 11. Определить минимальную дату рождения автора в справочнике авторов, результат поместить в переменную, вывести значение переменной на экран. Сочетание ключевых слов SET и SELECT 12. Подсчитать количество поставщиков книг, результат поместить в переменную. 13. Подсчитать сумму закупок книг, результат поместить в переменную. 14. Подсчитать среднюю цену в таблице покупок книг, результат поместить в переменную. 15. Подсчитать максимальную стоимость книг в закупке, результат поместить в переменную. Работа с датой и временем 16. Определить переменную Date1 типа дата/время. Присвоить ей значение даты 31.12.2016 в формате dd.mm.yyyy. 17. Определить переменную Date1 типа дата/время. Присвоить ей значение даты 31.12.2016 в формате mm.dd.yyyy. 18. Определить переменную Date1 типа дата/время. Присвоить ей значение даты 31.12.2016 в формате yyyy.mm.dd. Создание временной таблицы через переменную типа TABLE 19. Создать локальную таблицу с названием TEMP и полями типа, дата/время, длинное целое, строка. Добавить в нее две записи с данными и вывести результат на экран. 20. Создать локальную таблицу с названием TEMP и полями типа длинное целое, строка и значением по умолчанию «введите что-нибудь», денежный. Добавить в нее две записи с данными и вывести результат на экран. 21. Создать локальную таблицу с названием TEMP и полями типа целое, динамическая строка, бит со значением по умолчанию «1». Добавить в нее две записи с данными и вывести результат на экран. 22. Создать локальную таблицу с названием TEMP и полями типа, дата/время, длинное целое, строка. Добавить в нее две записи с данными и вывести результат на экран. 23. Создать локальную таблицу с названием TEMP и полями типа, дата/время, длинное целое с автонаращиванием, динамическая строка. Добавить в нее две записи с данными и вывести результат на экран. Преобразование типов переменных 24. Объявить переменные типа FLOAT, CHAR, TINYINT. Присвоить значения, соответствующие типам. Выполнить преобразование переменных типа FLOAT, CHAR, TINYINT в INT, DATETIME, BIT соответственно и вывести результат на экран. 25. Объявить переменные типа INT, DATETIME, BIT. Присвоить значения, соответствующие типам. Выполнить преобразование переменных типа INT, DATETIME, BIT в FLOAT, CHAR, TINYINT соответственно и вывести результат на экран. 26. Объявить переменные типа NUMERIC, VARCHAR, DATETIME. Присвоить значения, соответствующие типам. Выполнить преобразование переменных типа NUMERIC, VARCHAR, DATETIME в FLOAT, CHAR, BIGINT соответственно и вывести результат на экран. 27. Объявить переменные типа BIT, NVARCHAR, DATETIME. Присвоить значения, соответствующие типам. Выполнить преобразование переменных типа BIT, NVARCHAR, DATETIME в FLOAT, INT, BIGINT со ответственно и вывести результат на экран. Условная конструкция IF 28. Подсчитать количество поставщиков в таблице Deliveries. Если их в таблице от 2 до 5, то ничего не сообщать, в противном случае вывести сообщение вида "В таблице ... поставщиков" (вместо многоточия поста вить точное количество поставщиков). 29. Подсчитать сумму закупок книг в таблице покупок. Если полученная сумма в диапазоне от 1000 до 5000, то ничего не сообщать, в против ном случае вывести сообщение вида "Сумма закупок = …" (вместо многоточия поставить точную сумму). 30. Подсчитать среднюю стоимость закупки книг в таблице покупок. Если полученная стоимость в диапазоне от 1000 до 5000, то ничего не сообщать, в противном случае вывести сообщение вида "Средняя стоимость закупки = …" (вместо многоточия поставить точную среднюю стоимость). 31. Определить минимальную стоимость закупки книг в таблице покупок. Если полученная стоимость в диапазоне от 200 до 300, то ничего не сообщать, в противном случае вывести сообщение вида "Минимальная стоимость закупки = …" (вместо многоточия поставить точную стоимость). Цикл WHILE 32. Определить количество записей в таблице Authors. Пока записей меньше 15, делать в цикле добавление записи в таблицу с автоматическим наращиванием значения ключевого поля, а вместо имени автора ставить значение 'Автор не известен'. 33. Определить количество записей в таблице издательств. Пока записей меньше 20, делать в цикле добавление записи в таблицу с автоматическим наращиванием значения ключевого поля, а вместо названия издательства ставить значение 'не известно'. 34. Определить количество записей в таблице поставщиков. Пока записей меньше 17, делать в цикле добавление записи в таблицу с автоматическим наращиванием значения ключевого поля, а вместо названия поставщика ставить значение 'не известен'. Объявление курсора 35. Создать статический курсор по данным таблицы Books с полями Code_book, Title_book. 36. Создать динамический курсор по данным таблицы поставщиков (таблица Deliveries) с полями Name_delivery, Name_company. 37. Создать статический курсор по данным таблицы Books и Authors с полями Code_book, Title_book, Name_author. 38. Создать статический курсор по данным таблицы Books и Publishing_house с полями Code_book, Title_book, Publish. Операторы для работы с курсором 39. Создать динамический курсор для чтения по данным таблицы De liveries с полями Code_delivery, Name_delivery. Вывести данные 3-й записи. 40. Сделать текущей БД db_books. Поместить в курсор данные таблицы Purchases. Перебрать все записи таблицы Purchases. Просуммировать значения произведений полей Cost и Amount и результат сохранить в переменной Sum_table, которую после суммирования вывести на экран. За крыть и удалить из памяти курсор. 41. Объявить статический курсор по данным таблиц Authors и Books. Вывести данные 5-й записи. Использование функций для работы со строковыми переменными Для выполнения этого блока заданий в начале программы, которую вы создаете, объявите переменную типа varchar и присвойте ей в качестве значения строку с любым базовым текстом, который будет анализироваться и/или исправляться в заданиях. 42. Удалить в тексте лишние пробелы. Лишними считаются те, которые идут непосредственно за пробелом. Подсчитать количество исправлений. 43. Подсчитать количество встреч каждой из следующих букв: "а", "в", "и", "п" в базовом тексте. 44. Подсчитать доли процентов встречи следующих букв: "е", "о", если суммарный процент встречаемости всех этих букв равен 100% или процент встречаемости е% + о% равен 100%. 45. По правилам оформления машинописных текстов перед знаками .,!?:; пробелы не ставятся, но обязательно ставятся после этих знаков. Удалите лишние пробелы. Подсчитать количество исправлений. 46. По правилам оформления машинописных текстов перед знаками .,!?:; пробелы не ставятся, но обязательно ставятся после этих знаков. Расставьте недостающие пробелы. Подсчитать количество исправлений. 47. Найти из исходного текста второе предложение и вернуть его в переменную Perem, а также вывести на экран весь исходный текст и найденное предложение. 48. Удалить из базового текста 2, 4, 6, 8 слова. 49. Удалить из базового текста 3, 5, 7, 10 слова. 50. Вставить в базовый текст вместо букв «а» «АА». 51. Вставить в базовый текст вместо букв «е» и «о» «ББ». 52. Поменять местами первое и последнее слова в базовом тексте. Использование функций для работы с числами 53. Вывести значение формулы, переменные которой нужно описать и присвоить произвольные значения. 54. Подсчитать значение формулы, переменные которой нужно описать и присвоить произвольные значения. y 2 x exp(ln(x 2 )) 55. Подсчитать значение формулы, переменные которой нужно описать и присвоить произвольные значения. 56. Подсчитать значение формулы, переменные которой нужно описать и присвоить произвольные значения. 57. Подсчитать значение формулы, переменные которой нужно описать и присвоить произвольные значения. 58. Подсчитать значение формулы, переменные которой нужно описать и присвоить произвольные значения. 59. Подсчитать значение формулы, переменные которой нужно описать и присвоить произвольные значения. y x 4 ln( a ) b c 60. Подсчитать значение формулы, переменные которой нужно описать и присвоить произвольные значения. 61. Подсчитать значение формулы, переменные которой нужно описать и присвоить произвольные значения. Использование функций для работы с типом дата/время 62. Вывести на экран название текущего месяца и текущее время. За писать в таблицу Purchases в поле Date_order одинаковую дату поступления, которая равна 12.03.2000. 63. Разобрать на отдельные составляющие текущую дату и время и вывести значения на экран в следующем порядке (вместо многоточий): "Сегодня: День = …, Месяц = …, Год = …, Часов = …, Минут = …,Секунд= …" 64. В исходный текст, сохраненный в переменной Perem, после слова "время" вставить текущее время. Результат сохранить в той же переменной Perem и вывести на экран. Контрольные вопросы 1. Как записываются комментарии в языке Transact SQL? 2. Какие типы встроенных функций существуют в TRANSACT SQL? К какому типу относятся функции RTRIM, STR и UPPER? К какому типу относятся функции GETDATE, MONTH и DATEADD? 3. В чем отличие присвоения значений переменным с помощью SET и SELECT? 4. Чем отличаются структуры Table и Cursor? 5. Опишите основные приемы работы с набором строк Cursor. 6. Какие вы знаете операторы условных конструкций и циклов в Transact SQL? Лабораторная работа №9(5) СОЗДАНИЕ ХРАНИМЫХ ПРОЦЕДУР В MICROSOFT SQL SERVER Цель работы – научиться создавать и использовать хранимые процедуры на сервере БД. Содержание работы: 1. Проработка всех примеров, анализ результатов их выполнения в утилите SQL Server Management Studio. Проверка наличия созданных процедур в текущей БД. 2. Выполнение всех примеров и заданий по ходу лабораторной работы. 3. Выполнение индивидуальных заданий по вариантам. Пояснения к выполнению работы Для освоения программирования хранимых процедур используем пример базы дан- ных c названием DB_Books, которая была создана в лабораторной работе №7(3). Хранимые процедуры представляют собой набор команд, состоящий из одного или нескольких операторов SQL или функций и сохраняемый в базе данных в откомпи- лированном виде. Типы хранимых процедур Системные хранимые процедуры предназначены для выполнения различных адми- нистративных действий. Практически все действия по администрированию сервера вы- полняются с их помощью. Можно сказать, что системные хранимые процедуры явля- ются интерфейсом, обеспечивающим работу с системными таблицами. Системные хра- нимые процедуры имеют префикс sp_ , хранятся в системной базе данных и могут быть вызваны в контексте любой другой базы данных. Пользовательские хранимые процедуры реализуют те или иные действия. Хранимые процедуры – полноценный объект базы данных. Вследствие этого каждая хранимая про- цедура располагается в конкретной базе данных, где и выполняется. Временные хранимые процедуры существуют лишь некоторое время, после чего автоматически уничтожаются сервером. Они делятся на локальные и глобальные. Ло- кальные временные хранимые процедуры могут быть вызваны только из того соедине- ния, в котором созданы. При созданиитакой процедуры ей необходимо дать имя, начинающееся с одного символа # . Как и все временные объекты, хранимые процедуры этого типа автоматически удаляются при отключении пользователя, перезапуске или остановке сервера. Глобальные временные хранимые процедуры доступны для любых соединений сервера, на котором имеется такая же процедура. Для ее определения до- статочно дать ей имя, начинающееся с символов ## . Удаляются эти процедуры при пе- резапуске или остановке сервера, а также при закрытии соединения, в контексте которого они были созданы. Создание, изменение хранимых процедур При создании хранимой процедуры следует учитывать, что она будет иметь те же права доступа к объектам базы данных, что и создавший ее пользователь; определение параметров хранимой процедуры, хранимые процедуры могут обладать входными и вы- ходными параметрами; разработка кода хранимой процедуры. Код процедуры может со- держать последовательность любых команд SQL, включая вызов других хранимых про- цедур. Синтаксис оператора создания новой или изменения имеющейся хранимой проце- дуры в обозначениях MS SQL Server: { CREATE | ALTER PROC [ EDURE ] имя_процедуры [; номер ] [{ @ имя_пара- метра тип_данных } [ VARYING ] [= default ][ OUTPUT ] ][,... n ] [ WITH { RECOMPILE | ENCRYPTION }] [ FOR REPLICATION ] AS sql_оператор [... n ] Рассмотрим параметры данной команды. Используя префиксы sp, #, ##, создаваемую процедуру можно определить в качестве системной или временной. Как видно из синтаксиса команды, не допускается указы- вать имя владельца, которому будет принадлежать создаваемая процедура, а также имя базы данных, где она должна быть размещена. Таким образом, чтобы разместить созда- ваемую хранимую процедуру в конкретной базе данных, необходимо выполнить команду CREATE PROCEDURE в контексте этой базы данных. При обращении из тела хранимой процедуры к объектам той же базы данных можно использовать укороченные имена, т. е. без указания имени базы данных. Когда же требуется обратиться к объектам, располо- женным в других базах данных, указание имени базы данных обязательно. Для передачи входных и выходных данных в создаваемой хранимой процедуре имена параметров должны начинаться с символа @. В одной хранимой процедуре можно задать множество параметров, разделенных запятыми. В теле процедуры не должны применяться локальные переменные, чьи имена совпадают с именами парамет- ров этой процедуры. Для определения типа данных параметров хранимой процедуры подходят любые типы данных SQL, включая определенные пользователем. Однако тип данных CUR- SOR может быть использован только как выходной параметр хранимой процедуры, т.е. с указанием ключевого слова OUTPUT. Наличие ключевого слова OUTPUT означает, что соответствующий параметр пред- назначен для возвращения данных из хранимой процедуры. Однако это вовсе не озна- чает, что параметр не подходит для передачи значений в хранимую процедуру. Указание ключевого слова OUTPUT предписывает серверу при выходе из хранимой процедуры присвоить текущее значение параметра локальной переменной, которая была указана при вызове процедуры в качестве значения параметра. Отметим, что при указании клю- чевого слова OUTPUT значение соответствующего параметра при вызове процедуры может быть задано только с помощью локальной переменной. Не разрешается исполь- зование любых выражений или констант, допустимое для обычных параметров. Ключевое слово VARYING применяется совместно с параметром OUTPUT, име- ющим тип CURSOR. Оно определяет, что выходным параметром будет результирую- щее множество. Ключевое слово DEFAULT представляет собой значение, которое будет принимать соответствующий параметр по умолчанию. Таким образом, при вызове процедуры можно не указывать явно значение соответствующего параметра. Так как сервер кэширует план исполнения запроса и компилированный код, при по- следующем вызове процедуры будут использоваться уже готовые значения. Однако в некоторых случаях все же требуется выполнять перекомпиляцию кода процедуры. Ука- зание ключевого слова RECOMPILE предписывает системе создавать план выполнения хранимой процедуры при каждом ее вызове. Параметр FOR REPLICATION востребован при репликации данных и включении создаваемой хранимой процедуры в качестве статьи в публикацию. Ключевое слово ENCRYPTION предписывает серверу выполнить шифрование кода хранимой процедуры, что может обеспечить защиту от использования авторских алго- ритмов, реализующих работу хранимой процедуры. Ключевое слово AS размещается в начале собственно тела хранимой процедуры. В теле процедуры могут применяться практически все команды SQL, объявляться тран- закции, устанавливаться блокировки и вызываться другие хранимые процедуры. Выход из хранимой процедуры можно осуществить посредством команды RETURN. |