Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Синтаксис




END

BEGIN

AS

AS

END

BEGIN

AS

AS

AS

AS

AS

SELECT *

FROM table.

Назначение представления — упрощение селект запроса. Не хранится в базе данных, а каждый раз вычисляется.

With check option — cпециальная опция, которая указывается при создании представлений. Она приводит к созданию ограничения, условием которому служит условие where. Т.е. ограничение условия берется из where.

CREATE VIEW abc

SELECT *

FROM table

WHERE age >= 20.

В представлениях можно выполнять все DML-операции: select, insert, update, delete. При этом, так как представления каждый раз вычисляются, все изменения представления будут затрагивать таблицу на основе которой было создано представление.

При использовании предложения ORDER BY в представления, встроенной функции, производной таблицы или вложенный запрос, необходимо также указать оператор Top.

CREATE VIEW abc

SELECT TOP 3 *

FROM table

ORDER BY name

 

19. Агрегатные функции: SUM, COUNT, AVG.

 

Агрегатные функции выполняют вычисление на наборе значений и возвращают одиночное значение. Агрегатные функции, за исключением COUNT, не учитывают значения NULL. Агрегатные функции часто используются в выражении GROUP BY инструкции SELECT.

l COUNT - производит номера строк или не-NULL значения полей которые выбрал запрос.

l SUM - производит арифметическую сумму всех выбранных значений данного поля

l AVG - производит усреднение всех выбранных значений данного поля

l MAX - производит наибольшее из всех выбранных значений данного поля

l MIN - производит наименьшее из всех выбранных значений данного поля

 

SELECT Sum (amt)

FROM orders;

 

20. T-SQL: DECLARE, локальные переменные, присвоение инициализация, глобальные переменные, оператор PRINT, оператор IF-ELSE, операторные скобки BEGIN/END, оператор RETURN, конкатенация строк, преобразование типов CAST, конструкции CASE, WHILE, WAITFOR,TRY/CATCH, процедура RAISEERROR.

 

Declare — объявление переменной.

Переменная – область памяти. Всегда начинается с @.

Есть 3 способа присвоения: declare @s=1, set @s = 1, select @s = 1.

Инициализация: Declare @имя_переменной тип_данных.

Переменные бывают:

1. Локальные – переменные, которые используются для временного хранения данных во время запуска пакета инструкций SQL;

2. Глобальные – переменные, обозначенные @@ (стандартные, системные).

Print — оператор для вывода значений переменных или обычного текста.

if-else — конструкция, которая представляет собой условие (если, иначе).

BEGIN-END: блок операторов. Содержит команды, которые выполняются вместе.

Оператор return возвращает значение.

Конкатенация строк — операция «склеивания» строк. Выполняется при помощи оператора +. Print ‘a’ + ’b’.

Cast — оператор, с помощью которого осуществляется преобразование типов. cast (<переменная или значение> as <требуемый тип>).

Case — оператор выбора.

While – оператор цикла;

Waitfor – оператор, который блокирует выполнение пакета, хранимой процедуры или транзакции до наступления указанного времени или интервала времени.

Try-catch — конструкция исключения.

Raiseerror — cоздает сообщение об ошибке и запускает обработку ошибок для сеанса.

 

21. Временные таблицы: локальные, глобальные, работа с временными таблицами.

Локальные временные таблицы будут видны только вашей сессии, а глобальные таблицы видны всем сессиям. При этом и те, и другие таблицы, уничтожаются после завершения сессии.

Локальная временная таблица:

Таблица будет существовать только во время выполнения одной сессии, и работать с ней сможете только вы. Например, вы написали большой сценарий, выполняющий определенные действия (например, процедуру, хранящуюся на сервере). Если в этом сценарии создать временную таблицу, то она будет существовать, только пока выполняется сценарий. После этого она автоматически уничтожается.

CREATE TABLE #testtable

(

id INT PRIMARY KEY

)

Глобальная временная таблица:

CREATE TABLE ##testtable

(

id INT PRIMARY KEY

)

22. Курсоры: определение, общая схема работы, локальные/глобальные, динамические/статические, только для чтения, SCROLL, дополнительная навигация со SCROLL-курсорами, конструкция WHERE CURRENT OF, значение FETCH_STATUS.

 

Курсор: механизм, позволяющий обрабатывать отдельные строки полученные в результате select-запроса.

Схема работы с курсором: DECLARE, OPEN, FETCH, CLOSE, DEALLOCATE. Объявить, открыть, просмотреть, закрыть, удалить.

Динамический курсор: изменения данных отображаются в динамике. У динамического курсора в области памяти хранится не более одной строки.

Статический курсор: данные выбраны один раз и произошедшие изменения «не видны».

Локальный курсор живет в рамках одного пакета или одного скрипта.

Глобальный курсор живет в рамках одного соединения.

Read-only — курсор только для чтения.

Scroll – тип курсора, в котором мы можем двигаться в любом направлении. Работа со скролл курсорами:

l last-позиция переходит на последнюю строку;

l first-позиция переходит на первую строку;

l absolute 5 – на 5 строку относительно начала;

l absolute -5 – на 5 строку относительно конца;

l relative 5 – на строку, от текущей +5 (вниз на 5);

l relative -5 на строку, от текущей -5 (вверх на 5)

l next- позиция переходит на следующую строку;

l prior-позиция переходит на предыдущую строку.

Where current of cursor — изменение текущей строки, очень быстрая операция. работает быстрее обычного where.

@@CURSOR_ROWS — возвращает число выбранных строк, имеющихся в последнем открытом курсоре в данном соединении.

@@FETCH_STATUS – возвращает состояние последней инструкции FETCH курсора, запущенной в отношении любого курсора, который в настоящий момент открыт соединением.

 

Синтаксис:

DECLARE имя_курсора CURSOR FOR SELECT текст_запроса

 

Открытие курсора:

OPEN имя_курсора

Чтение следующей строки из курсора:

FETCH имя_курсора INTO список_переменных

[1] Пример: FETCH my_cur FROM @CURSOR INTO @ID, @QUA, @VAL, @NAM

23. Процедуры T-SQL: параметры, создание, вызов, возврат значения, системные процедуры.

 

Хранимая процедура (stored procedure) — это именованный набор команд Transact-

SQL, хранящийся непосредственно на сервере и представляющий собой самостоятельный объект базы данных.

Типы хранимых процедур:

l Системные хранимые процедуры (system stored procedures). Это хранимые процедуры, поставляемые в составе SQL Server 2000 и предназначенные для выполнения различных административных действий — создание учетных записей (sp_addlogin и другие), получение информации об объектах базы данных, управление свойствами сервера и баз данных и т.д.

l Пользовательские хранимые процедуры (user-defined stored procedures)

l Временные (temporary stored procedures) и локальные временные хранимые процедуры (local temporary stored procedures). Такие процедуры существуют лишь некоторое время, после чего автоматически уничтожаются сервером

Синтаксис:

CREATE PROCEDURE addproduct @Description NVARCHAR(100),

@InStock INT = 0, -- параметр по умолчанию будет равен 0

@IdProd INT out -- выходной параметр

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 [<Целое число>].

Отличие процедур от функций:

l Процедуры могут иметь INPUT/OUTPUT параметры, функции только INPUT;

l Хранимые процедуры могут возвращать целочисленное значение вызывающей их процедуре или приложению, функции обязательно должны возвращать какой-то результат.

l Функции не могут менять данные и выполнять DDL-операторы, процедуры - могут.

l Функции могут быть вызваны из процедуры, а вот процедура не может быть вызвана из функции.

l В функциях нельзя управлять транзакциями, в процедурах можно.

l В функциях нельзя использовать Try-Catch, в процедурах можно.

l Функции могут использоваться в выражении SELECT, процедуры не могут:

l Scalar-valued function - возвращают скалярное значение

l Inline function - могут возвращать один запрос SELECT

l Table-valued function - возвращают переменную типа TABLE

 

[2] 24. Функции: типы, параметры, создание, вызов, возврат значения, принципы применения.

 

Возвращаемый тип значения может быть любой, а в процедуре нет.

Пользовательские функции подразделяются на 2 основных типа:

l Возвращающие скалярное сзначение

l Возвращающие таблицу.

Создание:

Возвращающие скалярное сзначение:

CREATE FUNCTION dbo. Dayonly (@Date DATETIME)

returns VARCHAR (12)

RETURN CONVERT (VARCHA (12), @Date, 101)

-----ВЫЗОВ ФУНКЦИИ----

SELECT *

FROM orders

WHERE dbo. Dayonly (orderdate) = dbo. Dayonly (Getdate ())

Возвращающие таблицу:

CREATE FUNCTION dbo.Fnauthorlist()

returns TABLE

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 находятся вставленные / удалённые строки.

Типы триггеров:

l DML запускаются с помощью инструкций INSERT, UPDATE или DELETE.

l DDL с помощью инструкций CREATE, ALTER, DROP.

Виды триггеров: after и instead of

Рекурсивный триггер:

CREATE TRIGGER my_trig

ON table_name -- tableName -- закрепление триггера к таблице или представлению

after INSERT

IF @@TRANCOUNT < 2

INSERT table_name (id, name) VALUES (1, 'Test');

CREATE TRIGGER primer5

ON sotrydnik

after INSERT, DELETE




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 447; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.053 сек.