Тема 6 Введение в Transact_SQL Введение в SQL сервер.

Цель: Изучить назначение идентификаторов и выражений. Познакомится с типами данных, используемых в SQL-сервере.

Вопросы лекции:

1.     Идентификаторы

2.     Выражения

3.     Типы данных, используемых в SQL-сервере

4.     Управляющие конструкции

5.     Логические операторы

 

1. Все объекты SQL Server 7.0 имеют свои собственные имена, с помощью которых можно на них ссылаться. Имена объектов называются идентификаторами.

Для обозначения временных переменных объектов сервер разрешает использовать символы "@" (временные переменные или параметры) и "#" (временные таблицы и хранимые процедуры). Временные объекты существуют только в течение сеанса или транзакции, а затем уничтожаются. Для обозначения глобальных временных объектов, к которым могут обращаться все пользователи, Transact-SQL  позволяет использовать символы "##". Для обозначения глобальных временных переменных в начале идентификатора указываются символы "@@". Некоторые функции и переменные SQL Server 7.0 начинаются с символов "@@".                      ,

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

Многие хранимые процедуры и команды Transact-SQL требуют указания в качестве аргумента имени таблицы, колонки, представления или другого объекта. В этом случае имена объектов должны заключаться в одинарные кавычки. Выражение, заключенное в одинарные кавычки, рассматривается как символьная строка.

 

2. Выражения SQL Server 7.0 представляют собой комбинацию идентификаторов, функций, логических и арифметических операций,  констант и других объектов.  Выражение  может быть использовано в качестве аргумента в командах, хранимых процедурах или запросах. Выражение состоит из операндов (собственно данные) и операторов (действия, производимые над операндами). Операнды SQL-Server делятся на следующие типы:

константы

функции    /

имя колонки

переменная                                                                                  

подзапрос                                                                                    

- конструкции CASE, COALESCE, NULLIF

Операторы делятся на следующие типы: простейшие - унарные: +  -присваивание

арифметические: + -*./% (остаток от деления) строковые: + (конкатенация) сравнения: < > =<=>=<>!= (не равно) !< (не меньше чем) !> (не больше чем)

- логические: ALL  AND  ANY  BETWEEN  EXISTS  IN  LIKE  NOT  OR  SOME
битовые: & (битовый AND)  | (битовый OR)    ^ (битовый исключающий OR)

 

3. SQL-сервер поддерживает большое число различных типов данных: числовые, двоичные и т.д. Если имеется необходимость в размещении каких-либо специфических данных в поле таблицы, то в этом случае можно воспользоваться так называемыми пользовательскими типами данных.

 

Текстовые типы данных

Char

Текстовый тип данных, при использовании которого задается его размерность, причем для каждого символа выделяется один байт; до 8000 символов

 

Nchar

Аналогичен типу данных char, за исключением размерности; до 4000 символов

varchar

Используется  для хранения  текстовой  информации  переменной длины;  до  8000 символов

Nvarchar

Аналогичен типу данных varchar, за исключением размерности; до 4000 символов

Числовые типы данных

int

Целый тип в диапазоне от -231 до +231 ; занимает 4 байта в памяти

smallint

Целый тип в диапазоне от -32768 до +32767, в памяти занимает 2 байта

linyint

Положительные целые в диапазоне от 0 до 255, в памяти- 1 байт

real

Числа с плавающей точкой с точностью до 7 цифр, в памяти - 4 байта

float

Числа с плавающей точкой, с точностью до 15 цифр; занимает в памяти до 8 байт

decimal      

Тип   данных,   позволяющий   определить   точно   интервал   значений,   вводимых десятичных чисел, занимает в памяти от 2 до 17 байт

numeric

Аналогичен decimal

money

Используется для хранения денежных значений, занимает в памяти до 8 байт

smallmoney

Аналогичен money, занимает в памяти - 4 байта

Типы данных даты и времени

datetime

Позволяет хранить комбинации даты и времени, занимает в памяти до 8 байт

Smalldatetime

Аналогичен datetime, занимает в памяти- 4 байта

Типы данных для хранения больших объемов информации

Text

Хранит большие объемы текстовой информации, занимает до 1 214 783 646 байт

Ntext

Хранит большие объемы текстовой информации в формате Unicode

Image

Хранит длинные  цепочки двоичных данных, что позволяет сохранять рисунки, фотографии и т.д.

Типы данных специального назначения

bit

Принимает два значения: 0 или 1; размер - 1 бит

binary

Используется для хранения битовых цепочек; размерность до 8000 байт

varbinary

Используется для хранения битовых цепочек варьируемой длины; размерность до 8000 байт

timestamp

Тип данных, автоматически размещающий значение счетчика каждый раз при вставке новой записи

uniqueidentifier

Размещение    уникального    16-разрядного    идентификатора,    используемого    для поддержания целостности данных. Генерация нового идентификатора осуществляется с использованием команды SQL NEWIDQ                            *

В системе SQL-сервер имеется поддержка пользовательских типов данных. Они могут использоваться при определении или какого-либо формата, или наоборот, часто употребляемого. Для созданий Нового пользовательского формата необходимо выполнить следующие действия:

o                   выбрать в необходимой базе данных группу User Defined Data Types

o                   выполнить команду New User Defined Data Types меню Action

 

4. Выполняется группировка двух или более команд в единый блок. Сгруппированные команды воспринимаются интерпретатором Transact-SQL как один оператор. Некоторые команды Transact-SQL не должны выполняться вместе с другими командами, поэтому их включение в конструкцию BEGIN...END совместно с другими командами не допускаются. К таким командам относятся команды резервного копирования, изменения структуры таблиц, хранимых процедур и им подобные.

EF... ELSE Формат команды

IF <логическое выражение> ,   <команда 1>

[ELSE

^команда 2>]

Если логическое} выражение равно TRUE, будет выполнена первая команда, если значение равно FALSE, то выполнится команда 2. Опция ELSE не обязательна.

FRONT GETDATE()

DF (MONTH (GETDATE())>4 AND MONTH (GETDATE())<9)

BEGIN

PRINT 'Лето на дворе!!!' IF CURRENTJJSER ='dbo'

PRlN*f'Правильно, администраторы должны м летом лакать!' '         SELECT COUNT (*) FROM authors

'END ELSE

PRINT ('Сейчас точно не лето!') Ответ будет выглядеть так: Oct 9 1999 4:37PM Сейчас точно не лето!

CASE... END

Эта конструкций часто используется для замены множества одиночных или вложенных конструкций IF...ELSE. Конструкция CASE...END возвращает результат, который можно использовать в качестве переменной в других выражениях. При этом она рассматривается как функция. Оператор CASE...END имеет два вида:

CASE <входное значение>

WHEN <вариант 1> THEN <результат 1>

[ELSE <результат>] END

CASE I

WHEN <условие 1> THEN <результат 1>

[...]

[ELSE <результат>] END

Пример:

I 'mod cook' THEN 'Modern Cooking' I 'business' THEN 'Business'

'ELSE 'Not yet categorized'

COALESCE

Эта конструкция возвращает первое ненулевое значение. Ее синтаксис следующий:

COALESCE (<множество значений>)

Конструкция возвратит первое значение, не равное NULL:

DECLARE @V1 int, @V2 char, @V3 char

SET@V1 = 1O

PRINT COALESCE (@V2, @V1, @V3)

Ответ:  10

WHILE ... BREAK & CONTINUE

С помощью этой конструкции организуются циклы, причем это единственный тип циклов в Transact-SQL. формат оператора следующий:

WHILE <условие>

<тело цикла>

Цикл выполняется до тех пор, пока условие истинно. Если тело цикла предполагает несколько операций,

они заключаются в скобки BEGIN... END.

Покинуть цикл досрочно можно выполнением оператора BREAK.

Для переходя к следующей итерации цикла не заканчивая текущую, используют оператор CONTINUE.

 

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

Оператор ALL Формат оператора:

<выражение> { = | о | != | > | >= | !> | < | <= | !< } ALL (<подзапрос>)

выполняется сравнение скалярного выражения со всеми значениями, возвращаемыми подзапросом. Скалярная величина сравнивается с каждым значением, возвращаемым подзапросом. Если логическое условие выполняется для всех возвращаемых подзапросом значений, только тогда все условие считается выполненным:

OF H = ALL (SELECT contract FROM authors)

PRINT 'все авторы подписали контракт*

Операторы SOME и ANY

<скалярная величина > { = | о | != | > | >= | !> | < | <= | !< } SOME (<подзапрос>) <скалярная величина > { = | о | != | > | >= | !> | < | <= | !< } ANY (<подзапрос>)

С помощью этих операторов можно сравнивать скалярную величину со всеми значениями в колонке таблицы. Если хотя бы в одной строке содержится значение, равное скалярной величине, то условие выполняется.

OF © = km (SELECT contract FROM authors) -

1РШЮТ 'Но все авторы подписали контракт

Оператор BETWEEN

<значение> [NOT] BETWEEN <нижний порог диапазона> AND <верхний порог диапазона>

С помощью этого оператора можно получить ответ на вопрос, лежит ли величина в указанном диапазоне. SELECT title< type FROM titles WHERE price BETWEEN 10 AND 15

Оператор EXISTS

EXISTS- (<подзапрос>)

Этот оператор возвращает значение TRUE, если указанный подзапрос возвращает хотя бы одну строку. В противном случае возвращается значение FALSE:

Оператор IN

<значение> [NOT] IN (<подзапрос> | <список значений>)

С помощью этого оператора можно проверить, соответствует ли выражение одному из перечисленных выражений или значений, возвращаемых подзапросом.

Оператор LIKE

Проверяемое выражение> [NOT] LIKE <шаблон для сравнения> [ESCAPE <escape- символы>] С помощью этого оператора можно выполнять сравнение выражения с заданным шаблоном, использующим символы-заменители. Допускается использование следующих символов-заменителей: %       - любое количество любых символов _        - один символ

[ ]        - в скобках представляется набор возможных символов

[ ^ ]      - вместо, соответствующего символа строки будут подставлены все символы, кроме указанных в ограничителях

 

Литература:

1  Е. Мамаев  «Microsoft SQL Server 2000», БХВ-Петербург, 2004г.

 

Контрольные вопросы:

1 Что такое выражение?

2 Что такое логические операторы? И в каких условиях их применяют?

3 Что такое Transact SQL? И его применение при решении задач.