Материал: BD_Laboratornyi_774_praktikum

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Раздел II. Ввод данных в таблицы базы данных

При помощи пользовательского меню Windows запустите утилиту SQL Server Management Studio, после чего на панели Object Explorer в древовидной структуре раскройте папку Databases.

С помощью команды меню FileOpenFile загрузите сценарий из файла 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

Insert into Заказ (КодКлиента, КодТовара, Количество)

VALUES (1, 555, 25)

GO

2. Создание представления базы данных. Синтаксис команды (см. [1], стр. 996):

CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ] AS select_statement [ WITH CHECK OPTION ] < view_attribute > ::=     { ENCRYPTION | SCHEMABINDING | VIEW_METADATA }

CREATE VIEW Запрос1 AS

SELECT TOP 100 PERCENT Товар.Наименование, Заказ.Количество,

Товар.ЕдиницаИзм, Поставщик.ИмяПоставщика

FROM Заказ

Inner join Поставщик

ON Заказ.КодПоставщика = Поставщик.КодПоставщика

Inner join Товар

ON Заказ.КодТовара = Товар.КодТовара

ORDER BY Товар.Наименование, Заказ.Количество DESC GO

Раздел III. Управление пользователями и правами доступа к данным.

На панели Object Explorer откройте папку Security и выберите в ней строку Logins. При этом справа на панели Summary будет представлен список регистрационных записей SQL Server. Если среди них присутствуют регистрационные записи ИмяДомена\sql1, ИмяДомена\sql2, ИмяДомена\sql3, ИмяДомена\sql4, то поочередно выделите их и удалите, выбирая в контекстном меню команду Удалить.

1. Предоставление доступа к серверу учетной записи Windows NT. Синтаксис системной хранимой процедуры (см. [1], стр. 212):

sp_grantlogin [@loginame =] 'login'

-- ИмяДомена замените конкретным именем (домена или локального компьютера)

EXEC sp_grantlogin 'ИмяДомена\sql1'

EXEC sp_grantlogin 'ИмяДомена\sql2'

EXEC sp_grantlogin 'ИмяДомена\sql3'

EXEC sp_grantlogin 'ИмяДомена\sql4'

GO

Отмена доступа к серверу учетной записи выполняется с помощью хранимой процедуры sp_droplogin, имеющей синтаксис:

sp_droplogin [ @loginame = ] 'login'

2. Добавление учетной записи в фиксированную роль сервера. Синтаксис системной хранимой процедуры (см. [1], стр. 223):

sp_addsrvrolemember [ @loginame = ] 'login'     , [ @rolename = ] 'role'

EXEC sp_addsrvrolemember 'ИмяДомена\sql1', 'dbcreator'

GO

Удаление учетной записи из фиксированной роли сервера выполняется с помощью хранимой процедуры sp_dropsrvrolemember, имеющей синтаксис (см. [1], стр. 224):

sp_dropsrvrolemember [ @loginame = ] 'login' , [ @rolename = ] 'role'