- •5Я нормальная форма.
- •Disk init
- •39. Язык sql. Функции языка. Достоинства языка.
- •Концептуальное проектирование базы данных. Объекты. Атрибуты. Конкретизация и обобщение.
- •17. Концептуальное проектирование базы данных. Связи между объектами. Мощность связи.
- •Концептуальное проектирование базы данных. Составные объекты.
- •Жизненный цикл баз данных. Этап реализации.
- •22)Разработка приложений. Тестирование, эксплуатация и сопровождение.
- •- Анализ функционирования и поддержка исходного варианта бд
- •- Адаптация и модернизация системы
- •46) Disk init
- •72) Оператор выборки
- •Оператор проекции
- •Реляционное умножение
- •Оператор соединения
- •Insert into spt_values(number, status)
- •Values (Null,Null)
- •Inner join [Медицинское учреждение].[dbo].[отделение]
- •Inner join Orders о
- •90) Ограничения домена
- •95) Табличные блокировки
72) Оператор выборки
SELECT * FROM Cars WHERE Color = "чёрный"
Данный запрос выбирает из таблицы Cars машины черного цвета. Здесь выражение указанное после ключевого слова WHERE играет рольфильтра, который указывает какие строки нужно выбрать из таблицы. Такая фильтрация соответствует оператору выборки из алгебры Кодда.
Оператор проекции
SELECT Name, Color FROM Cars;
Данный запрос выбирает все строки из таблицы Cars, но в результате возвращаются только два поля (колонки) Name и Color, даже же если в таблице определены ещё какие-то поля. Такая выборка соответствует оператору проекции из алгебры Кодда.
Реляционное умножение
Самый простой пример многотабличного SQL-запроса:
SELECT * FROM A, B;
Этот запрос соединяет каждую строку из таблицы A с каждой строкой из таблицы B в одну строку, в которой будут все колонки из первой таблицы и все колонки из второй таблицы. И возвращает набор таких соединенных строк. Так, если в таблице A находиться N строк, а в таблицеB находиться M строк, то запрос вернет N * M строк. Приведенный запрос соответствует оператору реляционного умножения из реляционной теории.
Если в запросе будет три и более таблицы, то строки будут соединяться в тройки, четверки и т.д. по принципу каждая с каждой (или что проще представить: первая соединаяется со второй, потом с результатом соединяется третья и т.д.).
Оператор соединения
SELECT * FROM Comments, Users
WHERE Comments.user_id = Users.id
Этот запрос является комбинацией двух выше рассмотренных операторов — реляционного умножения и выборки. Сначала производиться умножение, а полученный результат фильтруется оператором выборки (выражение может быть произвольным, а не только равенство). Таким образом этот оператор выбирает пары (комментарий, пользователь), для которых выполняется указанное условие. Такой запрос соответствует оператору соединения из алгебры Кодда.
Допустим поле id таблицы Users содержит уникальный числовой идентификатор пользователя, поле user_id таблицы Comments содержит уникальный числовой идентификатор автора (т.е. пользователя из таблицы Users). Тогда описанный выше запрос можно интерпретировать следующим образом: выбрать все строки из таблицы Comments соединить их с соответствующими (указанному условию) строками из таблицыUsers, т.е. выбрать комментарии и информацию об авторах этих комментариев. Каждая строка результата будет содержать информацию о комментарии и о пользователе, который является автором комментария.
73) Триггер – это специальный тип хранимой процедуры, которая запускается автоматически системой SQL Server при модифицировании какой-либо таблицы одним из трех операторов: UPDATE, INSERT или DELETE.
В отличие от других типов хранимых процедур триггеры запускаются автоматически при указанных модификациях данных; их нельзя запустить вручную по имени. Триггер создается по одной таблице базы данных, но он может осуществлять доступ и к другим таблицам и объектам других баз данных. Триггеры нельзя создать по временным таблицам или системным таблицам, а только по определенным пользователем таблицам или представлениям.
Существует пять типов триггеров: UPDATE, INSERT, DELETE, INSTEAD OF и AFTER. Триггер INSTEAD OF выполняется вместо операции вставки, обновления или удаления. Триггер AFTER активизируется после какой-либо запускающей операции и обеспечивает механизм управления порядком выполнения нескольких триггеров.
Операции обновления, вставки и удаления называются событиями модификации данных.
Синтаксис
CREATE TRIGGER [<Имя владельца>.]<Имя триггера>
ON [<Имя владельца>.]<Имя таблицы>
FOR { INSERT | UPDATE | DELETE [, ...]}
AS
<Команда>
CREATE TRIGGER Table_insert
ON spt_values
FOR INSERT
AS