Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы SQL-Курс лекций ИНТУИТ.docx
Скачиваний:
309
Добавлен:
16.09.2019
Размер:
554 Кб
Скачать
☆

Создание пользовательского типа данных

В системе SQL-сервера имеется поддержка пользовательских типов данных. Они могут использоваться при определении какого-либо специфического или часто употребляемого формата.

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

sp_addtype [@typename=]type,[@phystype=]

system_data_type

[,[@nulltype=]’null_type’]

Тип данных system_data_type выбирается из следующей таблицы.

Таблица 2.3.

image

smalldatetime

decimal

bit

text

real

‘decimal[(p[,s])]’

‘binary(n)’

uniqueidentifier

datetime

numeric

‘char(n)’

smallint

float

‘numeric[(p[,s])]’

‘nvarchar(n)’

int

‘float(n)’

‘varbinary(n)’

ntext

‘varchar(n)’

‘nchar(n)’

EXEC sp_addtype bir, DATETIME, 'NULL'

или

EXEC sp_addtype bir, DATETIME, ‘NOT NULL’

Пример 2.1. Создание пользовательского типа данных bir.

CREATE TABLE tab

(id_n INT IDENTITY(1,1) PRIMARY KEY,

names VARCHAR(40),

birthday BIR)

Пример 2.2. Использование пользовательского типа данных bir при создании таблицы.

Удаление пользовательского типа данных происходит в результате выполнения процедуры sp_droptype type: EXEC sp_droptype 'bir'

Получение информации о типах данных

Получить список всех типов данных, включая пользовательские, можно из системной таблицы systypes:

SELECT * FROM systypes

Преобразование типов

Нередко требуется конвертировать значения одного типа в значения другого. Наиболее часто выполняется конвертирование чисел в символьные данные и наоборот, для этого используется специализированная функция STR. Для выполнения других преобразований SQL Server предлагает универсальные функции CONVERT и CAST, с помощью которых значения одного типа преобразовываются в значения другого типа, если такие изменения вообще возможны. CONVERT и CAST примерно одинаковы и могут быть взаимозаменяемыми.

CAST(выражение AS тип_данных)

CONVERT(тип_данных[(длина)],

выражение [,стиль])

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

DECLARE @d DATETIME

DECLARE @s CHAR(8)

SET @s=’29.10.01’

SET @d=CAST(@s AS DATETIME)

Пример 2.3. Преобразование данных символьного типа к данным типа дата/время.

Наряду с типами данных основополагающими понятиями при работе с языком SQL в среде MS SQL Server являются выражения, операторы, переменные, управляющие конструкции.

Выражения

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

Выражение состоит из операндов (собственно данных ) и операторов (знаков операций, производимых над операндами ). В качестве операндов могут выступать константы,переменные, имена столбцов, функции, подзапросы.

Операторы – это знаки операций над одним или несколькими выражениями для создания нового выражения. Среди операторов можно выделить унарные операторы,операторы присваивания, арифметические операторы, строковые операторы, операторы сравнения, логические операторы, битовые операторы .

Переменные

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

DECLARE {@имя_переменной тип_данных }

[,...n]

Значения переменной можно присвоить посредством команд SET и SELECT. С помощью команды SELECT переменной можно присвоить не только конкретное значение, но и результат вычисления выражения.

DECLARE @a INT

SET @a=10

Пример 2.4. Использование SET для присваивания значения локальной переменной.

DECLARE @k INT

SELECT @k=SUM(количество) FROM Товар

Пример 2.5. Использование SELECT для присваивания локальной переменной результата вычислений.

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

Язык SQL является непроцедурным, но тем не менее в среде SQL Server предусмотрен ряд различных управляющих конструкций, без которых невозможно написание эффективных алгоритмов.

Группировка двух и более команд в единый блок осуществляется с использованием ключевых слов BEGIN и END:

<блок_операторов>::=

BEGIN

{ sql_оператор | блок_операторов }

END

Сгруппированные команды воспринимаются интерпретатором SQL как одна команда. Подобная группировка требуется для конструкций поливариантных ветвлений, условных ициклических конструкций. Блоки BEGIN...END могут быть вложенными.

Некоторые команды SQL не должны выполняться вместе с другими командами (речь идет о командах резервного копирования, изменения структуры таблиц, хранимых процедур и им подобных), поэтому их совместное включение в конструкцию BEGIN...END не допускается.

Нередко определенная часть программы должна выполняться только при реализации некоторого логического условия. Синтаксис условного оператора показан ниже:

<условный_оператор>::=