- •Кафедра «Информационные технологии»
- •Основы языка Transact-SQL
- •1. Введение
- •Структурированный язык запросов
- •В результате в 1992 г. Американский национальный институт стандартов
- •В настоящее время, несмотря на все
- •Transact-SQL поддерживает большинство возможностей стандартов ANSI и ряд расширений этих стандартов, увеличивающих возможности
- •Стандарты языка SQL
- •Процедурные расширения языка SQL
- •Язык Transact-SQL включает 3
- •2. Основные элементы Transact-SQL
- •2) Комментарии (comments) – являются частями текста, вставленного в команды T-
- •При работе с блочными комментариями явно указывается начало и конец комментария соответственно с
- •3) Зарезервированные ключевые слова (reserved keywords) – используются для управления работой СУБД MS
- •В целом, язык T-SQL включает
- •• SQL-команды для создания, изменения и
- •В системе могут храниться, помимо функций и
- •3. Типы данных MS SQL Server
- •Наоборот, выбор типа данных, задающего
- •Типы данных СУБД MS SQL Server делятся на 7 категорий, приведенных в таблице:
- •Дата и время Хранит информацию о дате и времени и выполняет хронологическую проверку
- •Приведенные типы данных служат для определения постоянных и временных таблиц, табличных и нетабличных
- •3.1. Точные числовые типы данных
- •tinyint
- •Типы данных numeric и decimal
- •Самые распространенные типы
- •3.2. Приближенные числовые типы данных
- •В приближенных числовых типах данных
- •Например, если для хранения значения 1.00015454 используется тип данных float(8), при запросе столбец
- •Поэтому вычисления, использующие
- •3.3 Денежные типы данных
- •Денежные типы данных созданы для хранения денежных значений с 4 десятичными разрядами после
- •3.4. Типы данных «Дата и время»
- •В SQL Server 2005 (и «младше») дату и время можно хранить только вместе.
- •Для внутреннего хранения типов
- •Тип данных smalldatetime хранится в виде пары двухбайтовых целых значений, которые в совокупности
- •3.5. Символьные типы данных
- •При определении символьного типа
- •Тип данных
- •Тип данных
- •Типы данных char в ANSI, nchar в Unicode
- •В то же время, для хранения каждого символа в столбце требуется:
- •Типы данных text и ntext служат для
- •3.6. Двоичные типы данных
- •Типы данных binary служат в основном для хранения файлов в SQL Server. Для
- •Часто используется тип данных image - служит для хранения как изображений, так и
- •uniqueidentifier 16-битный GUID, служащий для глобальной идентификации строки в БД, экземплярах и серверах.
- •tabl Предназначен для хранения набора результатов с
- •Тип данных sql_variant позволяет объявлять столбец или переменную без явного указания типа данных,
- •Таким образом, в версии языка Transact-
- ••денежные типы данных - хранят денежные значения с точностью 4 знака после запятой;
- •Кроме приведенных системных типов данных таблиц, можно определять на их основе свои пользовательские
- •3.8. Свойство IDENTITY
- •Это свойство – аналог значений autonumber (в Access – тип данных Счетчик) и
- •3.9. Общие рекомендации по выбору типа данных для столбца таблицы
- •Данные, которые будут вводиться в столбец,
- •Если все значения данных столбца будут иметь приблизительно одинаковые размеры, то лучше использовать
- •Типы данных с переменной длиной (varchar, nvarchar, varbinary, text, ntext, image)
- •Например, если задан тип данных с фиксированной длиной, достаточной для хранения значений в
- •3.10. Преобразование типов
- •Для выполнения других преобразований
- •Синтаксис этих функций:
- •Для функции CONVERT имеются также
- •Поддерживаются два метода преобразования типов данных:
- •• Явное преобразование
- •Тип данных nchar может быть преобразован только к типу данных binary, используя явное
- •4. ВЫРАЖЕНИЯ
- •Операнды SQL Server делятся на
- •Имена столбцов. В качестве операнда может выступать столбец таблицы. Такой подход часто
- •Подзапросы. В качестве выражения можно указать подзапрос, который подготовит нужный набор данных. По
- •Конструкции CASE, NULLIF, COALESCE
- •5. ОПЕРАТОРЫ
- •Простейшие операторы - унарные
- •Пример использования простейших
- •Оператор присваивания – используется для присваивания переменной определенного значения, полученного в результате вычисления
- •Пример использования оператора присваивания
- •Арифметические операторы - это знаки бинарных операций, выполняемых над
- •Примеры использования арифметических операторов
- •Арифметические операторы возвращают значение того же типа, что и входные значения.
- •Строковые операторы.
- •Пример использования конкатенации
- •Пример использования операторов
- •Логические операторы – возвращают значения TRUE или FALSE, используются в различных конструкциях, включая
- •ANY Выполняет сравнение для набора данных. Если условие выполнено хотя бы для одного
- •LIKE Проверяет значение на «похожесть» по
- •Битовые операторы – выполняют побитовые операции над значениями числового типа. Имеется 3 битовых
- •Специальные знаки и простейшие операторы в Transact-SQL иллюстрирует таблица:
- •6. Идентификаторы Transact-SQL
- •Например, следующая команда создает
- •При создании таблицы Города было создано ограничение целостности PRIMARY KEY,
- •6.1. Типы идентификаторов
- •Например,
- •Ограниченный идентификатор может состоять
- •Набор правил по использованию ограничителей (двойных и одинарных кавычек
- •Когда параметр QUOTED_IDENTIFIER установлен в ON - SQL Server подчиняется правилам стандарта SQL-92
- •Когда параметр QUOTED_IDENTIFIER установлен
- •Таким образом, имеется два способа
- •6.2. Правила определения стандартных идентификаторов
- •Последующие символы в идентификаторе
- •Для обхода указанных ограничений можно заключать имена объектов в двойные кавычки или квадратные
- •Каждый объект SQL Server создается
- •Возможны следующие варианты обращения к объектам БД:
- •Для ссылки на конкретный столбец таблицы или представления нужно указать в полном имени
- •Названия из четырех частей чаще всего используются
- •При создании объекта можно не указывать следующие части его имени:
- •Например, если пользователь зарегистрирован
- •При выполнении запросов, работающих с множеством объектов, рекомендуется указывать
- •При обращении к объекту SQL Server использует для идентификации объектов следующие значения по
Дата и время Хранит информацию о дате и времени и выполняет хронологическую проверку
(например, значение 30 февраля не будет сохранено)
Символьный Хранит символьные значения переменной длины
Двоичный Хранит данные в строго двоичном представлении (0 и 1)
Специальный Составные типы данных, требующие специальной обработки, например, XML- документы или глобально уникальные идентификаторы (GUID)
Приведенные типы данных служат для определения постоянных и временных таблиц, табличных и нетабличных переменных. В некоторых объектах MS SQL Server (хранимых процедурах, триггерах, функциях) можно использовать не все
типы данных.
22
3.1. Точные числовые типы данных
Точные числовые типы данных (см. таблицу) используют для хранения чисел, как с десятичными точками, так и без них.
К таким числам можно применять любые
математические операции – никакая
специальная обработка для этого не
нужна.
Объем памяти, занимаемой такими
числами, строго определен и не зависит
от архитектуры процессора (Intel, AMD).
Тип |
Занимаемая |
Диапазон |
Назначение |
данных |
память, |
значений |
|
|
байт |
|
|
|
|
|
|
bigint |
8 |
от -2Е63 |
Хранение очень больших |
|
|
до 2Е63-1 |
целых чисел |
|
|
|
(положительных, |
int |
|
|
отрицательных) |
4 |
от -2Е31 |
Хранение положительных и |
|
|
|
до 2Е31-1 |
отрицательных целых чисел |
smallint |
2 |
от -32768 |
Хранение положительных, |
|
|
до 32767 |
и отрицательных целых |
|
|
|
чисел |
24
tinyint |
1 |
от 0 |
Хранение небольшого |
|
|
до 255 |
диапазона |
|
|
|
положительных целых |
|
|
|
чисел |
decimal(p,s) |
от 5 до 17 |
от |
Хранение десятичных |
|
в зависи- |
-10Е38+1 |
чисел с максимальным |
|
мости от |
до 10Е38-1 |
числом разрядов не |
|
точности |
|
более 38 |
|
|
|
numeric(p,s) от 5 до 17 |
от |
По своим функциям |
в зависи- |
-10Е38+1 |
эквивалентен типу |
мости от |
до 10Е38-1 |
decimal. Типы numeric |
точности |
|
|
|
и decimal |
|
|
|
взаимозаменяемы
Типы данных numeric и decimal
принимают параметры, уточняющие
определение типа данных. Эти параметры задают точность и масштаб типа данных.
Например, decimal(12,4) определяет десятичное значение, которое может содержать до 12 разрядов, причем 4 из них – после запятой.
26
Самые распространенные типы
данных из этой категории – int и
decimal.
Тип данных decimal можно
(но не рекомендуется) использовать и
для хранения целочисленных
значений, так как при этом для каждой
строки потребуются дополнительные
байты.
3.2. Приближенные числовые типы данных
Тип |
Зани- |
Диапазон |
Назначение |
данных |
маемая |
значений |
|
|
память, |
|
|
float(p) |
байт |
|
Хранение больших чисел с |
4 или 8 |
от -2.23Е308 |
||
|
|
до 2.23Е308 |
плавающей точкой, выходящих |
|
|
|
|
|
|
|
за границы диапазона типа |
real |
|
|
данных decimal |
4 |
от -3.4Е38 |
Тип данных все еще |
|
|
|
до 3.4Е38 |
поддерживается, но заменен на |
|
|
|
float, чтобы удовлетворить |
|
|
|
требованиям стандарта SQL- |
|
|
|
92 |
В приближенных числовых типах данных
можно хранить десятичные значения. При этом
точность данных ограничивается значением, указанным в определении типа данных. Точность хранения дробной части числа не гарантируется. При хранении данных все
разряды правее некоторого округляются.
29
Например, если для хранения значения 1.00015454 используется тип данных float(8), при запросе столбец гарантированно вернет лишь значение 1.000154 (хранится в точности 7
разрядов, а разряды ниже седьмого
приведут к ошибкам округления).