- •Основы sql. Курс лекций
- •Лекция 1: Введение в структурированный язык запросов sql
- •Основные понятия
- •Реляционные базы данных
- •Введение в технологию клиент-сервер
- •Типы команд sql
- •Запись sql-операторов
- •Описание учебной базы данных
- •Типы данных языка sql, определенные стандартом
- •Символьные данные
- •Varchar][длина]}
- •Округленные числа
- •Дата и время
- •Понятие домена
- •Создание пользовательского типа данных
- •If лог_выражение
- •Основные объекты структуры базы данных sql-сервера
- •Создание базы данных в среде ms sql Server
- •Индексы в среде ms sql Server
- •Уникальный индекс
- •Index имя_индекса on имя_таблицы(имя_столбца
- •Предложение from
- •Предложение where
- •Is not null используется для проверки присутствия значения в поле.
- •Пример 4.16. Список клиентов в алфавитном порядке.
- •Пример 4.17. Список фирм и клиентов. Названия фирм в алфавитном порядке, имена клиентов в каждой фирме в обратном порядке.
- •Операция соединения по двум отношениям (таблицам)
- •Операция тета-соединения
- •Лекция 6: Вычисления и подведение итогов в запросах
- •Insert into – запрос добавления ;
- •Запрос добавления
- •Пример 8.1. Добавление в таблицу товар новой записи.
- •Insert into Итог
- •Ссылочная целостность
- •Создание таблицы
- •Изменение и удаление таблицы
- •Ограничение первичного ключа (primary key)
- •Ограничение внешнего ключа (foreign key)
- •Ограничение уникального ключа (unique)
- •Ограничение по умолчанию (default)
- •Изменение таблицы
- •Удаление таблицы
- •Пример 10.1. Представление клиентов из Москвы.
- •Insert into view1 values (12,'Петров', 'Самара')
- •Независимость от данных
- •Понятие функции пользователя
- •Inline – функции содержат всего одну команду select и возвращают пользователю набор данных в виде значения типа данных table ;
- •Функции Scalar
- •Пример 11.3. Создание функции, которая для некоторого сотрудника выводит список всех его подчиненных.
- •Создание, изменение и удаление хранимых процедур
- •Выполнение хранимой процедуры
- •Пример 12.6. Процедура с входными и выходными параметрами. Создать процедуру для определения общей стоимости товаров, проданных за конкретный месяц.
- •Лекция 13: Курсоры: принципы работы
- •Реализация курсоров в среде ms sql Server
- •Изменение и удаление данных
- •0, Если выборка завершилась успешно;
- •Пример 13.5. Курсор для вывода списка фирм и клиентов из Москвы.
- •Пример 13.6. Курсор для вывода списка приобретенных клиентами из Москвы товаров и их общей стоимости.
- •Определение триггера в стандарте языка sql
- •Реализация триггеров в среде ms sql Server
- •If (columns_updates(){оператор_бит_обработки}
- •Типы триггеров
- •Программирование триггера
- •Пример 14.1. Использование триггера для реализации ограничений на значение.
- •Пример 14.2. Использования триггера для сбора статистических данных.
- •Пример 14.3. Триггер для обработки операции удаления записи из таблицы
- •Пример 14.4. Триггер для обработки операции изменения записи в таблице
- •Пример 14.5. Исправленный вариант триггера для обработки операции изменения записи в таблице
- •Реализация правил целостности данных
- •Добавление записи в рекурсивную структуру
- •Пример 15.2. Триггер для изменения записи в таблице.
- •Удаление записи из рекурсивной структуры
- •Пример 15.3. Триггер для удаления записи из таблицы.
- •Введение в транзакции
- •Acid-свойства транзакций
- •Блокировки
- •Управление транзакциями
- •Явные транзакции
- •Пример 16.1. Использование точек сохранения
- •Вложенные транзакции
- •"Мертвые" блокировки
- •Уровни изоляции sql Server
- •Insert – право вставлять в таблицу новые строки;
- •Предоставление привилегий пользователям
- •Отмена предоставленных пользователям привилегий
- •Предоставление прав
- •Права на выполнение команд sql
- •Неявные права
- •Запрещение доступа
- •Неявное отклонение доступа
- •Конфликты доступа
- •Пример 17.1. Создание новой базы данных, нового пользователя для этой базы данных, с предоставлением ему всех прав.
- •Sql и прикладные программы
- •Архитектура odbc
- •Источники данных и odbc
- •Взаимодействие с базой данных в Java-программах
- •Загрузка драйвера
- •Создание соединения: класс Connection
- •Создание оператора: класс Statement
- •Получение результатов: класс ResultSet
- •Item - извлечение определенного объекта Parameter.
- •Объект Connection
- •Пример 18.3. Выполнение статического sql-запроса к учебной базе данных из vbScript-сценария.
- •Пример 18.4. Выполнение динамического sql-запроса к учебной базе данных из vbScript-сценария.
SELECT – право выбирать данные из таблицы;
Insert – право вставлять в таблицу новые строки;
UPDATE – право изменять данные в таблице;
DELETE – право удалять строки из таблицы;
REFERENCES – право ссылаться на столбцы указанной таблицы в описаниях требований поддержки целостности данных;
USAGE – право использовать домены, проверки и наборы символов.
Привилегии INSERT и UPDATE могут ограничиваться лишь отдельными столбцами таблицы, в этом случае пользователю разрешается модифицировать значения только указанных столбцов. Аналогичным образом привилегия REFERENCES может распространяться исключительно на отдельные столбцы таблицы, что позволит использовать их имена в формулировках требований защиты целостности данных – например, в предложениях CHECK и FOREIGN KEY, входящих в определение других таблиц, тогда как применение для подобных целей остальных столбцов будет запрещено.
Когда пользователь с помощью оператора CREATE TABLE создает новую таблицу, он автоматически становится ее владельцем и получает по отношению к ней полный наборпривилегий, которых остальные пользователи исходно не имеют. Чтобы обеспечить им доступ, владелец должен явным образом предоставить необходимые права, для чего используется оператор GRANT.
Создавая представление с помощью оператора CREATE VIEW, пользователь автоматически становится владельцем этого представления и также получает полный набор прав. Для создания представления пользователю достаточно иметь привилегию SELECT для всех входящих в него таблиц и привилегию REFERENCES для всех столбцов, упоминаемых в определении этого представления. Привилегии INSERT, UPDATE и DELETE в отношении созданного представления пользователь получит только в том случае, если имеет соответствующие привилегии в отношении всех используемых в представлении таблиц.
Предоставление привилегий пользователям
Оператор GRANT применяется для предоставления привилегий в отношении поименованных объектов базы данных указанным пользователям. Обычно его используетвладелец таблицы с целью предоставления доступа к ней другим пользователям . Оператор GRANT имеет следующий формат:
<предоставление_привилегий>::=
GRANT {<привилегия>[,...n] |
ALL PRIVILEGES}
ON имя_объекта
TO {<идентификатор_пользователя>
[,...n]| PUBLIC}
[ WITH GRANT OPTION]
Параметр <привилегия> представляет собой:
<привилегия>::=
{SELECT | DELETE | INSERT
[(имя_столбца[,...n])]
| UPDATE [(имя_столбца[,...n])]}
| REFERENCES [(имя_столбца[,...n])] |
USAGE }
Из соображений упрощения в операторе GRANT можно указать ключевое слово ALL PRIVILEGES, что позволит предоставить указанному пользователю все существующиепривилегии без необходимости их перечисления. Кроме того, в этом операторе может указываться ключевое слово PUBLIC, означающее предоставление доступа указанного типа не только всем существующим пользователям, но также и всем тем, кто будет определен в базе данных впоследствии.
Параметр имя_объекта может использоваться как имя таблицы базы данных, представления, домена, набора символов, проверки.
Благодаря параметру WITH GRANT OPTION, указанные в операторе GRANT пользователи имеют право передавать все предоставленные им в отношении указанного объектапривилегии другим пользователям, которые, в свою очередь, будут наделены точно таким же правом передачи своих полномочий. Если данный параметр не будет указан, получатель привилегии не сможет передать свои права другим пользователям. Таким образом, владелец объекта может четко контролировать, кто получил право доступа к объекту и какие полномочия ему предоставлены.