Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КЛ_Географические_информационные_системы.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Типы данных на примере Microsoft sql Server

Как и любой язык программирования, SQL оперирует объектами различной внутренней структуры, определяемой типом данных. Простые типы данных в SQL, как и в подавляющем большинстве других языков, можно разделить на несколько групп: числовые, строковые, даты и времени и пр.

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

Название

Описание

int

Повсеместно используемый тип данных, встречающийся практически везде. В настоящее время представляет собой 32-хразрядное целое со знаком (4 байта). Охватывает дипазон целых от -2147483648 до 2147483647.

bigint

Местами встречающийся тип, могущий иметь другое название (например, long). В SQL Server появился лишь начиная с 2000 версии. В настоящее время представляет собой 64-хразрядное целое со знаком (8 байт). Охватывает диапазон целых от -9223372036854775808 до 9223372036854775807.

smallint

Также повсеместно распространённый тип данных. Может иметь другие названия (например, short). В настоящее время представляет собой 16-иразрядное целое со знаком (2 байта). Охватывает диапазон целых от -32768 до 32767.

tinyint

8-иразрядное целое без знака (1 байт). Охватывает диапазон целых от 0 до 255.

bit

1-оразрядное целое. Фактически, заменяет логический тип данных. Хранится как 1 байт (8 бит). Может принимать значения: либо 0, либо 1.

decimal или numeric

Повсеместно распространённый тип данных. Представляет собой вещественное число с фиксированной запятой. Название может быть сокращено до dec. Синтаксис определения следующий{ [center(  decimal( p ,  s ), [/center( где p - точность (количество десятичных разрядов числа) от 1 до 38, s - масштаб (количество десятичных разрядов после запятой) от 0 до p. В памяти значения данного типа занимают различное чило байт, зависящее от точности{ при точности 1-9 знаков - 5 байт, при точности 10-19 знаков - 9 байт, при точности 20-28 знаков - 13 байт, при точности 29-38 знаков - 17 байт. Максимальный диапазон возможных значений при decimal(38, 0) охватывает целые от -10[sup(38[/sup(+1 до 10[sup(38[/sup(-1.

float

Повсеместно распространённый тип данных. Представляет собой вещественное число с плавающей запятой. Синтаксис определения следующий:

  float[( p )],

где p - точность (число знаков основания) от 1 до 53. При точности 1-24 знаков для хранения числа выделяется 4 байта памяти, а при точности 25-53 знака - 8 байт. Указывать значение точности не обязательно. По умолчанию p = 53. В SQL Server 2000 заданная точность всегда приводится к максимально возможной в данном объёме памяти. Т.е. любое p от 1 до 24 рассматривается как 24. Аналогично, точность от 25 до 53 рассматривается как 53. Для значения float(53) имеется синоним double precision, а для float(24) - синоним real. При точности 53 объект типа может хранить числа в примерном диапазоне от 2,23*10-308 до 1,79*10308 любого знака. При точности 24 объект типа может хранить числа в примерном диапазоне от 1,18*10-38 до 3,40*1038 любого знака.

SQL Server 2000 автоматически преобразует любые целочисленные типы (кроме bit) к bigint при возврате значений функций. Для SQL Server 7.0 преобразование производится в int.

Денежные типы данных SQL Server

Название

Описание

money

Специальный тип для хранения значений денежных единиц. Является вещественным с фиксированной запятой (4 знака после запятой). Занимает 64 разряда (8 байт). Может принимать значения от -922337203685477,5808 до 922337203685477,5807.

smallmoney

Аналогично money, только 32-хразрядное (4 байта), но также 4 знака после запятой. Может принимать значения от -214748,3648 до 214748,3647.

Символьные типы данных SQL Server

Название

Описание

char

Повсеместно распространённый тип. Синтаксис определения типа следующий{ [center(  char[( n )(, [/center( где [i(n[/i( - число символов от 1 до 8000. Объект данного типа хранит массив 8-иразрядных символов фиксированного размера. Для n значение по умолчанию - 30. Синоним character.

varchar

Повсеместно распространённый тип. Синтаксис определения типа следующий{ [center(  varchar[( n )(, [/center( где n - число символов от 1 до 8000.  Полностью аналогичен char за исключением того, что при хранении строк памяти отводится по длине строки, а не всегда n байт, но не более n. Синоним character varying.

text

Часто встречающийся тип. Может иметь другое название. Позволяет хранить массив 8-иразрядных символов размером до 2 Гб.

nchar

Синтаксис определения типа следующий:

  nchar[( n )],

где n - число символов от 1 до 4000. Объект данного типа хранит массив 16-иразрядных символов фиксированного размера. Для n значение по умолчанию - 30. Символы хранятся в кодировке UNICODE UCS-2. Синонимы national character или national char.

nvarchar

Синтаксис определения типа следующий:

  nvarchar[( n )],

где n - число символов от 1 до 4000. Полностью аналогичен nchar за исключением того, что при хранении строк памяти отводится по длине строки, а не всегда n байт, но не более n. Синонимы national character varying и national char varying. Для nvarchar(128) в SQL Server имеется синоним (точнее, тип, определённый пользователем) sysname.

ntext

Позволяет хранить массив 16-иразрядных символов размером до 2 Гб. Символы хранятся в кодировке UNICODE UCS-2.

Двоичные данные в SQL Server

Название

Описание

binary

Синтаксис определения типа следующий:

  binary[( n )],

где n - число байтов от 1 до 8000. Объект данного типа хранит массив байтов фиксированного размера, занимающий в памяти n+4 байт. Для n значение по умолчанию - 30.

varbinary

Синтаксис определения типа следующий:

  binary[( n )],

где n - число байтов от 1 до 8000. Объект данного типа хранит массив байтов переменного размера, занимающий в памяти число введённых байт плюс ещё 4 байта, но не более n+4. Может принимать значения длиной 0 байт (не обращаясь в null). Синонимом является binary varying.

image

Широко распространённый тип, более известный как BLOB. Позволяет хранить массив двоичных данных размером до 2 Гб.

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

Название

Описание

datetime

Широко распространённый тип данных, позволяющий хранить дату и время. Для SQL Server принят диапазон дат от 1 января 1753 года до 31 декабря 9999 года с точностью до 1/3 сантисекунды (0,003333 секунды). Округление миллисекунд происходит следующим образом: 0,000-0,001 = 0,000; 0,002-0,004 = 0,003; 0,005-0,008 = 0,007; 0,009 = 0,010. Объект типа занимает 8 байт памяти, где первые 4 байта хранят число дней до или после начальной даты (1 января 1900), а оставшиеся 4 байта - число миллисекунд от полуночи.

smalldatetime

Объкт типа может хранить дату в диапазоне от 1 января 1900 года до 6 июня 2079 года с точностью до минуты и занимает 4 байта памяти, где первые 2 байта хранят число дней после начальной даты, а оставшиеся 2 байта - число минут от полуночи.

timestamp

Широко распространённый специальный тип данных, предназначенный для хранения времени обновления записи. В SQL Server 2000 и более ранних версиях реализация типа не соответствует стандарту SQL, в более поздних версиях, возможно, будет приведена к стандарту. В настоящий момент тип эквивалентен datatime или binary(8) (или varbinary(8), если допустим null). Может использоваться как тип колонки таблицы (атрибута отношения), причём такая колонка должена быть единственной и не иметь специального названия. Значение атрибута обновляется текущим временем при каждой операции вставки или обновления для записи (кортежа). Синонимом является rowversion.

Прочие типы данных SQL Server

Здесь приводятся для справки, в дальнейшем точно не будут использоваться, так как в некоторых случаях с ними могут возникать различные затруднения у клиентских приложений.

Название

Описание

uniqueidentifier

То же, что и GUID (global unique identifier - глобальный уникальный идентификатор). 128-иразрядное целое, задаваемое в виде "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", где каждый символ "x" означает шестнадцатиричную цифру (0-F).

sql-variant

Универсальный тип, позволяющий хранить значения всех типов, кроме text, ntext, text, image, timestamp и самого sql-variant. Особенно удобен для использования в различных определённых пользователем функциях и хранимых процедурах. Может занимать памяти до 8016 байт. Перед выполнением операций над переменной типа должен быть приведён к какому-либо базовому типу. Может быть индексирован, однако индексируются лишь первые 900 байт. Не полностью поддерживается Microsoft OLE DB Provider for ODBC (MSDASQL).

cursor

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

table

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

Лекция № 4

Тема 1.4

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]