- •Кафедра экономической информатики
- •Базы данных
- •Содержание
- •Введение
- •Лабораторная работа №1. Логические и физические модели данных
- •Методические указания
- •Задание к работе
- •Раздел I. Создание сущностей в eRwin
- •Раздел II. Создание связей между сущностями, подмножеств модели и хранимых отображений. Переход к физической модели данных
- •Раздел III. Выполнение операции прямого проектирования
- •Раздел IV. Выполнение операции обратного проектирования
- •Лабораторная работа №2. Усложненные диаграммы «сущность-связь»
- •Методические указания
- •Задание к работе
- •Раздел I. Создание сущностей логической модели
- •Раздел II. Создание связей между сущностями и иерархии наследования
- •Раздел III. Выполнение вариантов трансформы категориальной связи
- •Раздел IV. Выполнение методов синхронизации системного каталога базы данных и текущей модели
- •Лабораторная работа №3. Работа в среде субд «ms sql Server 2005»
- •Методические указания
- •Задание к работе
- •Раздел I. Создание базы данных и ее объектов
- •Раздел II. Управление пользователями и правами доступа к данным
- •Лабораторная работа №4. Создание базы данных и ее объектов с помощью команд языка Transact-sql
- •Методические указания и задания к выполнению
- •Раздел I. Создание базы данных и ее объектов
- •Раздел II. Ввод данных в таблицы базы данных
- •Insert into Заказ (КодКлиента, КодТовара, Количество)
- •Inner join Поставщик
- •Inner join Товар
- •Раздел III. Управление пользователями и правами доступа к данным.
- •Раздел IV. Анализ полученных результатов
- •Лабораторная работа №5. Манипулирование данными с помощью команд языка Transact-sql
- •Методические указания
- •Раздел I. Выборка данных из таблиц и представлений.
- •Раздел II. Обновление данных в таблицах и представлениях.
- •Раздел III. Удаление данных из таблиц и представлений.
- •Раздел IV. Изменение структуры таблицы.
- •Раздел V. Удаление таблицы из базы данных.
- •Задание к работе
- •Лабораторная работа №6. Программирование на языке Transact-sql
- •Методические указания
- •Раздел I. Основы программирования на языке Transact-sql.
- •Раздел II. Создание и работа с хранимыми (на сервере) процедурами.
- •If @Страна is not null
- •If @Город is not null
- •If @Город is not null
- •Insert into Валюта
- •Values(@Код, @Имя, @Шаг, @Курс)
- •If @Страна is not null
- •If @Город is not null
- •Into ##Регион
- •Раздел III. Создание и работа с определяемыми пользователем функциями.
- •Insert @rowset (КодРегиона, Страна, Область, Город)
- •Задание к работе
- •Лабораторная работа №7. Курсоры и триггеры в языке Transact-sql
- •Методические указания
- •Раздел I. Использование курсоров в языке Transact-sql
- •If @НачалоИнтервала is null
- •If @КонецИнтервала is null
- •Раздел II. Создание триггеров в языке Transact-sql.
- •If update(ДатаЗаказа)
- •If update(Цена)
- •If update(Цена)
- •Inserted.Цена * Валюта.КурсВалюты
- •Задание к работе
- •Литература Основная
- •Базы данных
- •220013, Минск, п. Бровки, 6.
Раздел II. Ввод данных в таблицы базы данных
При помощи пользовательского меню Windows запустите утилиту SQL Server Management Studio, после чего на панели Object Explorer в древовидной структуре раскройте папку Databases.
С помощью команды меню File►Open►File загрузите сценарий из файла D:\Work\X7230ХХХ\script.sql в окно Query.
Выполните сценарий, нажав на панели инструментов кнопку Execute (или клавишу F5). В результате будет создана база данных Склад_ХХХ.
Обновите данные на панели Object Explorer. Для этого используйте команду Refresh в контекстном меню папки Databases или соответствующую кнопку в верхней части панели. В результате база данных Склад_ХХХ станет видимой на панели Object Explorer.
Далее продолжите работу с базой данных Склад_ХХХ, последовательно добавляя в сценарий, выделяя подсветкой и выполняя приведенные ниже команды или пакеты языка Transact-SQL (помечены стрелками и ).
1. Вставка новой строки в таблицу базы данных. Синтаксис команды (см. [1], стр. 1122):
INSERT [ INTO] { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited } { [ ( column_list ) ] { VALUES ( { DEFAULT | NULL | expression } [ ,...n] ) | derived_table | execute_statement } } | DEFAULT VALUES
< table_hint_limited > ::= { FASTFIRSTROW | HOLDLOCK | PAGLOCK | READCOMMITTED | REPEATABLEREAD | ROWLOCK | SERIALIZABLE | TABLOCK | TABLOCKX | UPDLOCK }
Таблица Регион
КодРегиона |
Страна |
Область |
Город |
Адрес |
Телефон |
Факс |
101 201 202 203 204 301 |
Россия Беларусь Беларусь Беларусь Беларусь Украина |
Московская
Минская
Витебская Крымская |
Королев Минск Воложин Минск Полоцк Алушта |
ул.Мира, 15 ул.Гикало, 9 ул.Серова, 11 ул.Кирова, 24 ул.Лесная, 6 ул.Франко, 24 |
387-23-04 NULL NULL 269-13-76 NULL NULL |
387-23-05 278-83-88 48-37-92 269-13-77 48-24-12 46-49-16 |
INSERT INTO Регион
VALUES (101, 'Россия', 'Московская', 'Королев', 'ул.Мира, 15',
'387-23-04', '387-23-05')
INSERT INTO Регион (КодРегиона, Область, Город, Адрес, Факс)
VALUES (201, '', 'Минск', 'ул.Гикало, 9', '278-83-88')
INSERT INTO Регион (КодРегиона, Область, Город, Адрес, Факс)
VALUES (202, 'Минская', 'Воложин', 'ул.Серова, 11', '48-37-92')
INSERT INTO Регион (КодРегиона, Область, Город, Адрес, Телефон,
Факс)
VALUES (203, '', 'Минск', 'ул.Кирова, 24', '269-13-76',
'269-13-77')
INSERT INTO Регион (КодРегиона, Область, Город, Адрес, Факс)
VALUES (204, 'Витебская', 'Полоцк', 'ул.Лесная, 6', '48-24-12')
INSERT INTO Регион
VALUES (301, 'Украина', 'Крымская', 'Алушта', 'ул.Франко, 24',
NULL, '46-49-16')
GO
Примечание. Здесь приведены различные способы использования команды INSERT, которые учитывают следующие особенности.
1). Если в строке INSERT INTO список имен столбцов опущен, то в строке VALUES необходимо указывать значения для всех столбцов, которые имеет таблица. В противном случае значения указываются только для тех столбцов, названия которых фигурируют в строке INSERT INTO.
2). Не смотря на то, что столбец Страна является обязательным (определен как NOT NULL), его имя можно не указывать в списке имен столбцов, поскольку для этого столбца определено значение по умолчанию ('Беларусь').
3). Если значение поля Область не заполняется, то нельзя использовать NULL, а нужно задать пустую строку (''), поскольку поле Область является обязательным и значение NULL в нем недопустимо.
Таблица Поставщик
КодПоставщика |
ИмяПоставщика |
УсловияОплаты |
КодРегиона |
Заметки |
123 234 345 456 567 |
ЗАО Магистраль … … … СП "Полихим" |
Предоплата … … … По факту отгрузки |
101 ... ... ... 203 |
NULL ... ... ... Постоянный поставщик |
INSERT INTO Поставщик (КодПоставщика, ИмяПоставщика, КодРегиона)
VALUES (123, 'ЗАО Магистраль', 101)
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
INSERT INTO Поставщик
VALUES (567, 'СП ”Полихим”', 'По факту отгрузки', 203,
'Постоянный поставщик')
GO
Таблица Клиент
ИмяКлиента |
ФИОРуководителя |
КодРегиона |
ГП ”Верас” ... ... ... ИП ”Темп” |
Прокушев Станислав Игоревич ... ... ... Васько Григорий Терентьевич |
202 ... ... ... NULL |
Примечание. В таблице Клиент столбец КодКлиента является автоинкрементным и, поэтому, его значения не приведены.
INSERT INTO Клиент
VALUES ('ГП ”Верас”', 'Прокушев Станислав Игоревич', 202)
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
INSERT INTO Клиент (ИмяКлиента, ФИОРуководителя)
VALUES ('ИП ”Темп”', 'Васько Григорий Терентьевич')
GO
Таблица Валюта
КодВалюты |
ИмяВалюты |
ШагОкругления |
КурсВалюты |
BYR RUR USD EUR |
Белорусские рубли Российские рубли Доллары США Евро |
1 0.01 0.01 0.01 |
1 276 9160 12450 |
INSERT INTO Валюта
VALUES ('BYR', 'Белорусские рубли', 1, 1)
INSERT INTO Валюта (КодВалюты, ИмяВалюты, КурсВалюты)
VALUES ('RUR', 'Российские рубли', 276)
INSERT INTO Валюта (КодВалюты, ИмяВалюты, КурсВалюты)
VALUES ('USD', 'Доллары США', 9160)
INSERT INTO Валюта (КодВалюты, ИмяВалюты, КурсВалюты)
VALUES ('EUR', 'Евро', 12450)
GO
Таблица Товар
КодТовара |
Наименование |
Единица Изм |
Цена |
КодВалюты |
Расфасован |
111 222 333 444 555 |
Монитор 21 дюйм … … … Винчестер HDD 120GB |
штука ... ... ... штука |
320 ... ... ... 285000 |
USD ... ... ... BYR |
Нет ... ... ... Да |
INSERT INTO Товар
VALUES (111, 'Монитор 21 дюйм', 'штука', 320, 'USD', 'Нет')
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
INSERT INTO Товар (КодТовара, Наименование, Цена, Расфасован)
VALUES (555, 'Винчестер HDD 120GB', 285000, 'Да')
GO
Таблица Заказ
КодКлиента |
КодТовара |
Количество |
ДатаЗаказа |
СрокПоставки |
КодПоставщика |
3 … … … ... ... ... ... … 1 |
111 … … … ... ... ... ... ... 555 |
8 … … … ... ... ... ... ... 25 |
04.09.2013 … … … ... ... ... ... ... <по умолчанию> |
14.09.2013 … … … ... ... ... ... ... <по умолчанию> |
567 … … … ... ... ... ... ... NULL |
Примечание. В таблице Заказ столбец КодЗаказа является автоинкрементным и, поэтому, его значения не приведены.
SET DATEFORMAT dmy /* задаем привычный формат даты день.месяц.год, т.к.
по умолчанию установлен формат год.месяц.день */
INSERT INTO Заказ /* год можно задавать как 2-мя, так и 4-мя цифрами */
VALUES (3, 111, 8, '04.09.12', '14.09.12', 567)
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */
/* . . . команда вставки новой строки – сформируйте самостоятельно */