Синтаксичні елементи мови Transact-sql icon

Синтаксичні елементи мови Transact-sql




Скачати 135.79 Kb.
НазваСинтаксичні елементи мови Transact-sql
Дата конвертації31.03.2013
Розмір135.79 Kb.
ТипДокументи
1. /Конспект лекций/Использование SQL Server Management Studio.doc
2. /Конспект лекций/Лекция 0. Знайомство з SQL Server 2005.doc
3. /Конспект лекций/Лекция 1. Створення й керування базою даних SQL Server (short).doc
4. /Конспект лекций/Лекция 2. Синтаксичн_ елементи мови.doc
5. /Конспект лекций/Лекция 3. Виб_рка даних з бази даних.doc
6. /Конспект лекций/Лекция 4. Модиф_кац_я даних у базах даних SQL Server.doc
7. /Конспект лекций/Лекция 5. Збережен_ процедури.doc
8. /Конспект лекций/Лекция 5. Створення тригер_в _ керування ними ними.doc
9. /Конспект лекций/Мова SQL.Doc
10. /Конспект лекций/Создание триггеров и управление ими.doc
11. /Конспект лекций/Ц_л_сн_сть даних (short).doc
12. /Лабораторна робота малий формат.doc
Что такое sql server
Лекція Основи роботи з Microsoft sql| Server| 2005 Питання лекції Основні
Лекція Створення І керування базою даних sql server
Синтаксичні елементи мови Transact-sql
Вибірка даних з бази даних sql server
Модифікація даних у базах даних sql server
Збережені процедури
Створення|створіння| тригерів|трігерів| і керування ними (Тут додати що таке тригер і як він використовується)
Курс лекцій ( частина 1 ) для студентів спеціальності
Создание триггеров и управление ими
Цілісність даних
Методичні рекомендації для виконання лабораторних робіт для студентів спеціальності

Синтаксичні елементи мови Transact-SQL

В Transact-SQL входить багато синтаксичних елементів, які використовуються більшістю операторів або впливають на них. До таких елементів відносяться ідентифікатори, змінні, функції, типи даних, вирази, мова керування ходом виконання та коментарі.


Ідентифікатори

Ім'я об'єкта бази даних називається ідентифікатором. В SQL Server будь-який об'єкт може мати ідентифікатор: сервери, бази даних і їх об'єкти (таблиці, відображення, стовпці, індекси, тригери, процедури, обмеження і правила). Для більшості об'єктів ідентифікатори необхідні, у той час як для деяких об'єктів (наприклад, для обмежень) вони не обов'язкові.

Ідентифікатор об'єкта створюється при визначенні об'єкта. Після цього на об'єкт посилаються за допомогою ідентифікатора. У прикладі оператор створює таблицю з ідентифікатором Table, що складається із двох стовпців з ідентифікаторами KeyCol і Description:

CREATE TABLE Table (

KeyCol INT PRIMARY KEY,

Description NVARCHAR(50)

)


Існують два класи ідентифікаторів: звичайні і з обмежниками.


Звичайні ідентифікатори

У звичайних ідентифікаторах обмежники не застосовуються. У наступному операторі SELECT є присутнім два ідентифікатори: Table і KeyCol.


SELECT * FROM Table

WHERE KeyCol = 124


Ідентифікатори з обмежниками

Ідентифікатори з обмежниками включають у подвійні лапки (" "} або квадратні дужки ([ ]). Ідентифікатори, що відповідають правилам форматування ідентифікаторів, бувають як з обмежниками, так і звичайними ідентифікаторами. У наступному операторі SELECT обмежники (квадратні дужки) не обов'язкові:

SELECT * FROM [Table]

WHERE [KeyCol] = 124


В операторах Transact-SQL ідентифікатори, що не повністю відповідають правилам форматування, необхідно записувати між обмежниками. У наступному операторі SELECT ідентифікатор My Table необхідно використати з обмежниками, оскільки він містить пробіл. Ідентифікатор Order також варто використати з обмежниками, оскільки він збігається із зарезервованим ключовим словом.

SELECT * FROM [My Table]

WHERE [Order] = 10


Змінні

Змінна мови Transact-SQL являє собою об'єкт у пакетах Transact-SQL і у сценаріях, який може мати певне значення. Після того як змінна визначена (оголошена), один оператор Transact-SQL з пакету може встановити її значення, а інший - пізніше одержати значення цієї змінної. Наступні оператори Transact- SQL оголошують змінну з ім'ям EmpIDVar, та встановлюють її значення яке дорівнює 3, а потім використовують цю змінну в операторі SELECT:

USE Northwind

DECLARE @EmpIDVar INT

SET @EmpIDVar = 3

SELECT * FROM Employees

WHERE EmployeeID = @EmpIDVar + 1


Як правило, змінні в пакетах і сценаріях виконують наступні функції:

  • є лічильниками циклів;

  • зберігають значення, які аналізуються операторами, що управляють ходом виконання програми;

  • використовуються для збереження значення коду повернення збереженої процедури.

Часто змінні використовуються як лічильники в операторах WHILE і LOOP, a також у блоках IF...ELSE у пакетах або процедурах. Змінні можна застосовувати тільки у виразах, вони не повинні збігатися з іменами об'єктів і ключових слів.


Функції

Функція інкапсулює логіку, яка часто виконується, у підпрограму, що складається з одного або декількох операторів Transact-SQL. Будь-яка програма, який потрібно виконати алгоритм, реалізований функцією, може не повторювати весь алгоритм, а викликати цю функцію.


SQL Server 2005 підтримує функції двох типів:

  • убудовані функції — їхня робота визначена в Transact-SQL, і її не можна модифікувати. Ці функції дозволяється викликати тільки в операторах Transact-SQL;

  • користувальницькі функції— дозволяють користувачам визначати власні функції Transact-SQL за допомогою оператора CREATE FUNCTION.


Убудовані функції

Мова програмування Transact- SQL містить три типи убудованих функцій: функції одержання набору рядків, агрегатні й скалярні функції.


1. Функції одержання набору рядків

Функції одержання набору рядків можна застосовувати в операторах подібно посиланням на таблицю. Вони повертають об'єкт, що дозволяється використати в операторі Transact-SQL замість посилання на таблицю. Наприклад, функція OPENQUERY є функцією одержання набору рядків, що виконує транзитний запит на даному зв'язаному сервері, який представляє собою джерело даних OLEDB. У конструкції FROM на функцію OPENQUERY можна посилатися так само, як на ім'я таблиці.

Всі функції одержання набору рядків є не детермінованими. Тобто при виклику з тим самим набором вхідних параметрів вони можуть повертати різні результати.


2. Агрегатні функції

Агрегатні функції обробляють набори значень, але повертають єдине підсумкове значення. Прикладом агрегатної функції може служити функція AVG, що повертає середнє значення групи даних.

Припустимо використовувати агрегатні функції як вирази тільки в наступних операторах і конструкціях:

  • списку вибору оператора SELECT (у підзапиті або зовнішньому запиті);

  • COMPUTE або COMPUTE BY;

  • HAVING.

Всі агрегатні функції, за винятком COUNT, ігнорують порожні значення. Агрегатні функції часто застосовуються з конструкцією GROUP BY в операторі SELECT. Всі агрегатні функції є детермінованими, оскільки при виклику з тими самими вхідними значеннями повертають однакові результати.


3. Скалярні функції

Скалярні функції обробляють одиночне значення і повертають також одне значення. Скалярні функції дозволяється використовувати скрізь, де допускається застосування виразів. Як показано в наступній таблиці, скалярні функції підрозділяються на кілька категорій.


Категорія скалярної функції

Опис

Функції конфігурації

Повертають відомості про поточну конфігурацію

Функції курсору

Повертають відомості про курсори

Функції часу й дати

Виконують різні дії над вхідними значеннями часу й дати й повертають строкове, числове значення або значення у форматі дати й часу

Математичні

Виконують обчислення на основі вхідних значень, наданих як параметри, і повертають числове значення

Функції метаданих

Повертають відомості про базу даних і її об'єктів

Функції безпеки

Повертають інформацію про користувачів і ролі

Строкові функції

Виконують операції над рядками (char або varchar) і повертають строкові або числові значення



Користувальницькі функції

Оператор CREATE FUNCTION дозволяє створювати користувальницькі функції, оператор ALTER FUNCTION - модифікувати їх, а оператор DROP FUNCTION — видаляти. Будь-яке повне ім'я користувальницької функції повинне бути унікальним.

Користувальницька функція здатна приймати різне число параметрів (від 0 до 1024) і повертати як скалярне значення, так і таблицю. Якщо у параметра функції є значення за замовчуванням, то, щоб задати його при викликанні функції, варто ввести ключове слово DEFAULT. Цим параметри користувальницьких функцій відрізняються від параметрів збережених процедур, у яких при відсутності параметра також мається на увазі значення за замовчуванням. Користувальницькі функції не підтримують вихідні параметри.


Типи користувальницьких функцій

Мова програмування Transact-SQL підтримує два типи користувальницьких функцій: скалярні й табличні.


Скалярні функції

Скалярні функції повертають єдине значення, тип якого визначається конструкцією RETURNS. При цьому можна використати всі скалярні типи даних, включаючи bigint і sql_variant.

Тип даних timestamp, користувальницькі й не скалярні типи даних (наприклад, ’таблиця’ або ’курсор’) не підтримуються. Тіло функції в блоці BEGIN...END, містить набір операторів Transact-SQL, які повертають значення функції. Функція здатна повертати значення будь-якого типу, крім text, ntext, image, cursor і timestamp.


Табличні функції

Табличні функції повертають таблиці. Існують табличні функції двох типів:

  • функції, які підставляються

  • багатооператорні.

У табличних функцій, які підставляються, тіло відсутнє, і вони повертають таблицю, що, являє собою результуючий набір єдиного оператора SELECT.

Тіло багатооператорних функцій, повинно бути в блоці BEGIN...END, складається з операторів Transact-SQL, що виконують формування рядків і розміщення їх і повертає таблицю. Оператори із блоку BEGIN...END не повинні робити ніяких побічних ефектів. Побічним ефектом функції називаються будь-які постійні зміни стану ресурсу, область дії якого перебуває за межами функції (наприклад, модифікація таблиці бази даних). Операторам функцій дозволено вносити зміни тільки в локальні об'єкти функції, такі, як локальні курсори й змінні. Наприклад, за допомогою функції не можна модифікувати таблиці бази даних, виконувати операції над курсорами, які не є локальними для функції, розсилати електронну пошту, модифікувати каталог і генерувати результуючий набір, що повертається безпосередньо користувачеві.


Детермінованість функцій

В SQL Server є як детерміновані, так і недетерміновані функції. Детермінованою вважається функція, що повертає однакові результати, якщо її викликають із тим самим набором вхідних параметрів. Недетермінованою називається функція, якщо при її виклику з тим самим набором вхідних параметрів вона може повертати різні результати.

Детермінованість функцій визначає можливість їх використання в індексованих стовпчиках, що обчислюються, і в індексованих відображеннях. При перегляді індексу завжди повинен виходити погоджений результат. Таким чином, визначати стовпчики, що обчислюються і відображення, що підлягають індексуванню, можна лише за допомогою детермінованих функцій.

Функції конфігурації, курсорів, метаданих, безпеки і системної статистики (а також інші убудовані функції) відносяться до недетермінованих.


Типи даних

Тип даних - це атрибут, що визначає тип інформації, яку може містити об'єкт. У всіх стовпчиків, параметрів, змінних, функцій, що повертають значення і збережених процедурах з кодами повернення є певні типи даних. В Transact-SQL є кілька базових типів даних, наприклад varchar, text і int. Всі дані, що зберігаються в SQL Server, повинні бути сумісними з одним із цих базових типів. Створювані користувальницькі типи даних завжди визначаються на основі базових типів даних.


Вирази

Вирази - це комбінація ідентифікаторів, значень і операторів, які SQL Server може обробити, щоб одержати певний результат. Відомо кілька різних способів використання виразів при звертанні до даних і при їхній модифікації. Наприклад, вирази можуть бути частиною запиту або визначати умови для пошуку даних, що відповідають деякому набору критеріїв.


Використання операторів у виразах

Оператори дозволяють виконувати різні операції: арифметичні, порівняння, конкатенації або присвоювання. Наприклад, можна перевірити дані, щоб з'ясувати, чи не порожньо поле, у якому вміщуються відомості про національну приналежність ваших клієнтів (або чи не дорівнює воно NULL).

Виконати операцію в запитах вибірки даних здатний кожний, хто має право переглядати таблицю. Щоб виконати модифікацію даних, потрібні відповідні права доступу.


Елементи мови керування ходом виконання

Мова керування ходом виконання складається зі спеціальних слів, які контролюють хід виконання операторів Transact-SQL, блоків операторів і збережених процедур. Ці слова можна використати в операторах Transact-SQL, пакетах і збережених процедурах Якщо мова керування ходом виконання не використовується, окремі оператори Transact-SQL виконуються послідовно, у тім порядку, у якому вони розташовані. Мова керування ходом виконання допускає об'єднання зв'язаних операторів Вона також дозволяє зробити їх взаємозалежними. При цьому один оператор мови керування ходом виконання не може відноситись відразу до декількох пакетів або збережених процедур.

Ключові слова мови керування ходом виконання корисні, якщо необхідно змусити Transact-SQL почати певного роду дію. Наприклад, за допомогою пари операторів BEGIN...END можна скласти блок операторів Transact-SQL в один логічний блок. Пари операторів IF...ELSE дозволяє виконати деякий блок операторів, якщо виконується певна умова, а якщо ця умова не виконується (тобто виконується умова ELSE) - виконати інший блок операторів.

У наступній таблиці приводиться опис ключових слів мови керування ходом виконання, які входять в Transact-SQL.


Ключове слово

Опис

BEGIN...END

Містить у собі набір операторів Transact-SQL, дозволяючи виконувати оператори групами

BREAK

Вихід із циклу WHILE

CONTINUE

Продовжує виконання циклу WHILE

GOTO

При виконанні пакета Transact-SQL викликає перехід до певної мітки, пропускаючи оператори, розташовані між оператором GOTO і міткою

IE..ELSE

Ставить виконання оператора Transact-SQL у залежність від деяких умов. При наявності ELSE визначає альтернативний оператор, що буде виконаний, якщо не виконується умова IF

RETURN

Безумовне завершення запиту, збереженої процедури або пакета


WAITFOR

Припиняє роботу з'єднання протягом заданого періоду або до настання певного часу доби WHILE. Повторно виконує оператор або блок операторів доти, поки задана умова діє. Як правило, використовується з операторами BREAK або CONTINUE


Коментарі

Коментарі (або примітки) - це рядки програми, які не виконуються. З їхньою допомогою документують вихідний текст програми або тимчасово відключають частину операторів Transact-SQL і пакетів під час їхньої діагностики. Документування вихідного тексту програми коментарями полегшує супровід програми. У коментарях часто записують назву програми, ім'я автора і дати внесення у вихідний текст серйозних змін, крім того, у них можна описати складні обчислення або роз'яснити метод програмування.

SQL Server підтримує два типи знаків коментарів:

  • Подвійний дефіс ( -- ). Цей знак коментарю можна використати як усередині, так і на початку рядка програми. Всі символи від подвійного дефіса до кінця рядка розглядається як частина коментарю. У випадку багаторядкових коментарів, на початку кожного рядка коментарю повинен стояти подвійний дефіс, як показано на наступному прикладі:

USE Northwind

GO

-- Перший рядок багаторядкового коментарю.

-- Другий рядок багаторядкового коментарю.

SELECT - FROM Employees

GO


  • Парні символи «слэш— зірочка» ( /*.. .*/ ). Ці знаки коментарю можна використати усередині, і на початку рядка, і навіть усередині здійсненного коду. Усе між знаками початку ( /* ) і кінця ( */ ) коментарю вважається частиною коментарю. Багаторядковий коментар повинен починатися з відкриваючої пари символів ( /* ) і закінчуватися закриваючою парою символів (*/). У цьому випадку не треба обмежувати знаками коментарю кожний рядок. Цей випадок показаний у наступному прикладі:

USE Northwind

GO

/* Перший рядок багаторядкового коментарю.

Другий рядок багаторядкового коментарю. */

SELECT * FROM Products

GO


Багаторядковий коментар не повинен виходити за межі пакета. Коментар повинен завершуватися до його кінця. Наприклад, для SQL Query Analyzer і утиліти osql команда GO є ознакою кінця пакета. Якщо перші два байти в прочитаною утилітою рядку є символами GO, утиліта посилає всі прочитані після надходження останньої команди GO оператори на сервер як один пакет. Якщо команда GO виявиться на початку рядка між роздільниками /* і */, то в обох пакетах будуть послані незакриті знаки коментарю (що приведе до виникнення синтаксичних помилок).

У коментарі можна використати будь-які букви й цифри. SQL Server ігнорує всі символи усередині коментарю (за винятком команди GO). Крім того, довжина коментарю в пакеті не обмежена. Коментар може бути як однорядковим, так і багаторядковим.


Приклади.

Створення сценаріїв за допомогою синтаксичних елементів мови Transact-SQL

У цій вправі ми за допомогою редактору запитів створимо сценарії з різними синтаксичними елементами мови Transact-SQL.


Оголошення і ініціалізація змінної та її використання

  1. У редакторі запитів уведемо наступний код:

-- Оголосити необхідну змінну..

DECLARE @MyCounter INT

-- Ініціалізувати змінну

SET @MyCounter = 0


Цей оператор оголошує змінну @MyCounter, визначає для неї тип даних int і привласнює їй значення 0.


  1. На додаток до написаного сценарію, уведемо наступний код:

/* Визначити за допомогою змінною число циклів */

WHILE (@MyCounter < 26)

BEGIN

-- Вставити в таблицю рядок.

INSERT INTO [New Table] VALUES

-- За допомогою змінної одержавши значення для стовпця ColumnA

-- згенерувати унікальну літеру для кожного рядка. Одержати цілочислене

-- значення символу "а" за допомогою функції ASCII.

-- Додати @MyCounter. За допомогою функції CHAR перетворити суму

-- знову в символи @MyCounter, які наступні після символу "а".

(

@MyCounter + 1,

CHAR( ( @MyCounter + ASCII(’a’) ) )

)

/* Збільшити значення змінної для обліку цієї ітерації циклу */


SET @MyCounter = @MyCounter + 1

END

GO

SET NOCOUNT OFF

GO


Цей оператор завершує сценарій. Зверніть увагу на застосування двох елементів мови керування ходом виконання: WHILE і BEGIN...END. Значення рядків у цьому операторі визначені за допомогою виразу (@MyCounter + 1 і @MyCounter + ASCII('а')) і функцій CHAR і ASCII. Наприкінці сценарію поміщений оператор SET NOCOUNT OFF, щоб знову включити генерацію повідомлень із результатами підрахунку рядків.


Сценарії Trarisact-SQL

Сценарій - це набір операторів Transact-SQL, збережених у файлі. Цей файл можна ввести в редактор запитів або утиліти osql і isql. Вони здатні виконати оператори SQL, що зберігаються у файлі.

Сценарії Transact-SQL складаються з одного або декількох пакетів. Кінець пакета відзначається командою GO, Якщо в сценарії Transact-SQL немає жодної команди GO, він виконується як один пакет. Сценарії Transact-SQL дозволяють виконувати наступні завдання:

  • зберігати постійну копію команд, що створюють на сервері таблиці і заповнюють їх даними (механізм створення резервних копій);

  • переносити оператори з комп'ютера на комп'ютер (при необхідності);

  • швидко навчати нових працівників, формуючи в них навички пошуку помилок і внесення змін у програми на основі готових шаблонів.


Закріплення матеріалу

  1. У якому з вікон SQL Server Management Studio можна вводити й виконувати оператори Transact-SQL?

  2. Як виконувати оператори Transact-SQL і сценарії за допомогою редактору запитів?

  3. Який інструмент редактору запитів дає можливість управляти збереженими процедурами й відслідковувати їхнє виконання?

  4. Що таке Transact-SQL?

  5. Назвіть три типи операторів Transact-SQL, які підтримує SQL Server.

  6. До якого типу операторів Transact-SQL відноситься оператор CREATE TABLE?

  7. Який елемент Transact-SQL є об'єктом, що у пакетах і сценаріях застосовується для зберігання деякого значення?

  8. Якими операторами Transact-SQL створюються, модифікуються й видаляються користувальницькі функції?

  9. Назвіть елементи мови керування ходом виконання.

  10. Назвіть окремі методи виконання операторів Transact-SQL, які підтримує SQL Server 2005.

  11. У чому розходження між пакетами, збереженими процедурами й тригерами?



Схожі:

Синтаксичні елементи мови Transact-sql iconН. Р. Бухараев Введение в программирование на sql в среде субд ms visual FoxPro
Бд и логическую простоту, делающую sql не только языком программирования, но и неоценимым средством проектирования и функционального...
Синтаксичні елементи мови Transact-sql iconРозхитування норм української мови під впливом російської мови
Найчастіше запозичуються слова та фразеологізми, рідше префікси й суфікси, набагато рідше синтаксичні звороти, найрідше звуки. Мовні...
Синтаксичні елементи мови Transact-sql iconУроку. Історичні відомості про спроби класифікації хімічних елементів. Поняття про лужні елементи. Історичні
До середини XIX ст вже було відомо 63 хімічні елементи, які утворювали сотні тисяч хімічних сполук. Нагромадження знань про хімічні...
Синтаксичні елементи мови Transact-sql iconМетодичні вказівки до виконання лабораторних робіт з дисципліни «мова sql» для студентів денної форми навчання спеціальності
Методичні вказівки до виконання лабораторних робіт з дисципліни «Мова sql» для студентів денної форми навчання спеціальності 050....
Синтаксичні елементи мови Transact-sql iconТематичний план самостійних позааудиторних робіт з латинської мови для студентів стоматологічного факультету на 2005/2006 н р
Найбільш уживані прикметники ІІІ відміни. Грецькі дублети І словотворчі елементи
Синтаксичні елементи мови Transact-sql iconНаказ №20 Про інтерактивні ігрові елементи, як засіб розвитку особистості у роботі вчителя української мови та літератури Перепічки Людмили Станіславівни
На виконання річного плану роботи школи адміністрацією школи протягом вивчалась система роботи вчителя української мови та літератури...
Синтаксичні елементи мови Transact-sql iconПлан роботи регіонального наукового семінару
Доповідь: "Синтаксичні конструкції в аналізі геометричних фігур в текстах англомовного репортажу"
Синтаксичні елементи мови Transact-sql iconТема Дата
Найважливіші відомості із синтаксису й пунк­туації: словосполучення та речення, синтаксичні зв’язки в них. Класифікація речень за...
Синтаксичні елементи мови Transact-sql iconЛабораторна робота №10 Використання мови sql для роботи з базою даних у форматі Mysql порядок виконання роботи 1
Відкрити у Delphi проект для роботи з базою даних у форматі Mysql з лр №8. Перевірити правильність виконання запиту до таблиці бази...
Синтаксичні елементи мови Transact-sql iconЛабораторна робота №9 Використання мови sql для роботи з базою даних у форматі InterBase Порядок виконання роботи 1
Відкрити у Delphi проект для роботи з базою даних у форматі InterBase з лр №7. Перевірити правильність виконання запиту до таблиці...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©te.zavantag.com 2000-2017
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи