- •2. Основы sql: стандарты, группы операторов и их назначение.
- •3. Основные принципы работы sql Server: клиент, сервер, буферный кэш, журнал транзакций, службы, аутентификация, авторизация, страницы дисковой памяти.
- •4. Sql ddl: операторы назначение, применение.
- •5. Sql dml: операторы назначение, применение.
- •6. Sql dcl: операторы назначение, применение.
- •7. Sql tcl: операторы назначение, применение.
- •8. Ограничения целостности, констрейнты.
- •9. Оператор select: секции оператора и их применение.
- •10. Операторы delete, update: секции операторов и их применение.
- •11. Группировка в операторе select, применение секции having.
- •Примеры
- •12. Применение group with cube, group with rollup
- •13. Применение compute, compute by
- •14. Sql-команды: union (all, order by), intersect, except.
- •15. Внутреннее соединение таблиц: естественное, inner join, многотабличный запрос.
- •Inner join
- •16. Внешнее соединение таблиц: outher join (left, right, full, cross).
- •17. Подзапросы: (not)in, (not)exists, all, any, some.
- •18. Представления: создание, применение, order by в представлении, with check option, dml-операции c представлениями.
- •19. Агрегатные функции: sum, count, avg.
- •21. Временные таблицы: локальные, глобальные, работа с временными таблицами.
- •23. Процедуры t-sql: параметры, создание, вызов, возврат значения, системные процедуры.
- •24. Функции: типы, параметры, создание, вызов, возврат значения, принципы применения.
- •26. Транзакции: определение, назначение, свойства acid, уровни изоляции, операторы tcl и их применение.
- •27. Индексы: определение, типы, назначение, создание и применение.
- •Синтаксис sql create index
- •Синтаксис sql create unique index
- •Пример create index
- •28. Создание базы данных: системные базы данных, оператор создания базы данных, файловые группы, файлы, журнал транзакций, основные параметры базы данных.
- •29. Секционирование таблиц: определение, назначение, функция секционирования, схема секционирования,ограничения.
- •30. Моментальные снимки базы данных (snapshot): определение, назначение, создание, применение, технология copy-on-write.
23. Процедуры t-sql: параметры, создание, вызов, возврат значения, системные процедуры.
Хранимая процедура (stored procedure) — это именованный набор команд Transact-
SQL, хранящийся непосредственно на сервере и представляющий собой самостоятельный объект базы данных.
Типы хранимых процедур:
Системные хранимые процедуры (system stored procedures). Это хранимые процедуры, поставляемые в составе SQL Server 2000 и предназначенные для выполнения различных административных действий — создание учетных записей (sp_addlogin и другие), получение информации об объектах базы данных, управление свойствами сервера и баз данных и т.д.
Пользовательские хранимые процедуры (user-defined stored procedures)
Временные (temporary stored procedures) и локальные временные хранимые процедуры (local temporary stored procedures). Такие процедуры существуют лишь некоторое время, после чего автоматически уничтожаются сервером
Синтаксис:
CREATE PROCEDURE addproduct @Description NVARCHAR(100),
@InStock INT = 0, -- параметр по умолчанию будет равен 0
@IdProd INT out -- выходной параметр
AS
INSERT product
([description],
instock)
VALUES (@Description,
@InStock)
SET @IdProd = @@IDENTITY
RETURN
--ПРИМЕР ВЫЗОВА:
DECLARE @IdProd INT
EXEC Saddproduct
@Description = N'Новый товар',
@IdProd = @IdProd output
SELECT @IdProd AS N'@IdProd'
Чтобы передать некоторое возвращаемое значение из хранимой процедуры обратно в вызывающий код, достаточно применить оператор RETURN [<Целое число>].
Отличие процедур от функций:
Процедуры могут иметь INPUT/OUTPUT параметры, функции только INPUT;
Хранимые процедуры могут возвращать целочисленное значение вызывающей их процедуре или приложению, функции обязательно должны возвращать какой-то результат.
Функции не могут менять данные и выполнять DDL-операторы, процедуры - могут.
Функции могут быть вызваны из процедуры, а вот процедура не может быть вызвана из функции.
В функциях нельзя управлять транзакциями, в процедурах можно.
В функциях нельзя использовать Try-Catch, в процедурах можно.
Функции могут использоваться в выражении SELECT, процедуры не могут:
Scalar-valued function - возвращают скалярное значение
Inline function - могут возвращать один запрос SELECT
Table-valued function - возвращают переменную типа TABLE
24. Функции: типы, параметры, создание, вызов, возврат значения, принципы применения.
Возвращаемый тип значения может быть любой, а в процедуре нет.
Пользовательские функции подразделяются на 2 основных типа:
Возвращающие скалярное сзначение
Возвращающие таблицу.
Создание:
Возвращающие скалярное сзначение:
CREATE FUNCTION dbo.Dayonly (@Date DATETIME)
returns VARCHAR(12)
AS
BEGIN
RETURN CONVERT (VARCHA(12), @Date, 101)
END
-----ВЫЗОВ ФУНКЦИИ----
SELECT *
FROM orders
WHERE dbo.Dayonly(orderdate) = dbo.Dayonly(Getdate())
Возвращающие таблицу:
CREATE FUNCTION dbo.Fnauthorlist()
returns TABLE
AS
RETURN
(SELECT au_id,
au_lname + ', ' + au_fname AS au_name,
address AS address1,
city + ', ' + state + ' ' + zip AS address2
FROM authors)
go
-----ВЫЗОВ ФУНКЦИИ----
SELECT * FROM dbo.Fnauthorlist()
Описание: в этой функции выполняется возврат таблицы, состоящей из строк, полученных с помощью оператора SELECT, а также несложное форматирование : конкатенация фамилии имени, разделенных запятыми, а также конкатенация трех компонентов адреса для возврата значений столбца address2
25. Триггеры: типы триггеров, создание, назначение применение, вложенные и рекурсивные триггеры, таблицы INSERTED, DELETED и их применение, последовательность выполнения триггеров.
Триггер - это хранимая процедура особого типа, вызываемая на выполнение в ответ на определенные события
В таблицах INSERTED и DELETED находятся вставленные / удалённые строки.
Типы триггеров:
DML запускаются с помощью инструкций INSERT, UPDATE или DELETE.
DDL с помощью инструкций CREATE, ALTER, DROP.
Виды триггеров: after и instead of
Рекурсивный триггер:
CREATE TRIGGER my_trig
ON table_name -- tableName -- закрепление триггера к таблице или представлению
after INSERT
AS
BEGIN
IF @@TRANCOUNT < 2
INSERT table_name (id, name) VALUES(1, 'Test');
END
Синтаксис
CREATE TRIGGER primer5
ON sotrydnik
after INSERT, DELETE
AS
BEGIN
BEGIN
IF (SELECT oklad
FROM inserted) < '20000'
ROLLBACK
'Нельзя вставлять запись о сотруднике, с окладом менее 20 000 рублей'
END
BEGIN
IF (SELECT oklad
FROM deleted) >= '50000'
'Нельзя удалять запись о сотрудике, оклад которого более 50000'
ROLLBACK
END
END
go
Порядок запуска триггеров при никак не определен и не гарантирован. В SQL Server 2000 появилась документированная процедура sp_settriggerorder. Она позволяет указать какие триггеры AFTER срабатывают первыми или последними.
EXEC Sp_settriggerorder 'dbo.TestTrigger02', 'first', 'insert'
EXEC Sp_settriggerorder 'dbo.TestTrigger03', 'last', 'insert'