Bigint тип данных. Язык SQL Типы данных SQL Типы данных

Для Windows Phone 26.07.2019
Для Windows Phone

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

Тип данных - что это?

Сегодня существует несколько определений, объясняющих понятие термина «тип данных». Однако каждое из них имеет один общий смысл. Поэтому можно условно обозначить как группу данных, характеризуемую ее значениями (символьными, числовыми и т.д.), а также операциями, применяемыми к рассматриваемым значениям.

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

Классификация типов данных

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

На их базе была разработана современная классификация, включающая в себя указатели, логический, целочисленный, числовой с плавающей точкой и строковый типы данных. SQL- классификация полностью охватывает все вышеперечисленное. Однако для некоторых современных СУБД существуют дополнительные надстройки. К ним относятся Oracle и MySQL.

Базовые типы данных

Использующиеся при создании атрибутов таблиц, отвечающих стандартам языка подразделяются на 4 класса:

  • строковые значения;
  • дроби;
  • целочиселенные значения;
  • значения даты и времени.

Строковый тип данных

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

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

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

Аналогично предыдущему типу позволяет хранить строки длиной до 255 символов. Однако отличие от CHAR в том, что для хранения значения данного типа выделяется требуемое количество памяти. То есть для строки, состоящей из 5-ти символов, потребуется 6 байт памяти. В первом же случае память для значения будет выделена согласно указанному параметру.

Используется для хранения строковых данных размером до 255 символов.

Используется для хранения текстовой информации, размер которой не превышает 65 535 букв.

Рассматриваемый тип данных аналогичен типу ТЕХТ и позволяет сохранять в базе текстовую информацию, объем которой может достигать 65 535 знаков. Но на практике используется для хранения звуковых данных, рисунков, электронной документации и пр.

Был разработан на базе типа ТЕХТ, но позволяет хранить больше данных за счет увеличенного размера до 16 777 215 букв или символов.

Используется для сохранения в базе электронных документов, размер которых не превышает отметку в 16 777 215 знаков.

Функционально аналогичен предыдущим типам, но с увеличенным объемом памяти до 4 гигабайт.

Позволяет помещать в базу данные больших объемов (4 294 967 295 символа).

ENUM (a, b, c, etc.)

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

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

Таблица дробных типов данных

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

Например, в банковских расчетах точность дробной части достигает значение в 8-мь или 10-ть знаков. Первые два типа не могут быть задействованы в данной области.

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

Целочисленный тип данных

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

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

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

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

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

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

Главное предназначение - хранение даты в формате ГОД-МЕСЯЦ-ДЕНЬ (“ГГГГ-MM-ДД” или "уууу-mm-dd"). Обычно значения разделены через «-», однако в качестве разделителя может быть задействован любой символ, кроме цифр.

Позволяет заносить в ячейку таблицы временные значения. Все значения задаются форматом «hh:mm:ss»

Объединяет функции предыдущих двух типов. Формат хранения представлен следующим образом: «уууу-mm-dd hh:mm:ss».

Сохраняет дату и время, исчисляемое количеством секунд, прошедших начиная с полуночи 1.01.1970 года и до заданного значения.

Используется для хранения годовых значений в двух- или четырехзначном формате.

Что ещё необходимо знать?

Все эти типы данных детально систематизированы компанией Microsoft. SQL типы данных ею разработаны более подробно.

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

Специальный указатель - NULL

Иногда при заполнении базы данных возникает ситуация, когда при добавлении записи в таблицу необходимость вносить информацию во все столбцы отсутствует. Для этого применяется специальный указатель пустого значения - NULL , который в качестве вспомогательного средства использует язык SQL. Типы данных столбцов, которые не обязательно должны быть заполнены, при создании таблиц указываются с оператором, разрешающим включение пустых значений. В другом случае оператор NULL с дополнительной приставкой NOT может быть задействован для указания обязательного заполнения всех значений.

Указатель NULL не имеет типа, а просто указывает на пустое значение в таблицах баз данных. Поэтому он может быть скомбинированным с любым из вышеперечисленных типов.

1.1. Символьные типы

1) Строки постоянной длины
CHAR() – строка текста в формате, определенном разработчиком. Натуральное число задает строки.
На практике максимальное число символов бывает в диапазоне от 256 в MS SQL Server до 32767 в InterBase.
CHAR трактуется как CHAR(1)

2) Строки переменной длины
VARCHAR|CHAR VARYING [()] – строка текста переменной длины в формате, определенном разработчиком. Натуральное число задает максимальную строки, но в таблице отводится место только под реальную длину строки.

3) Особенности символьных типов ряда СУБД
В ряде СУБД, например, MS SQL Server, если CHAR допускает значение NULL, то от трактуется как VARCHAR.
В Oracle для полей типа VARCHAR2 можно зарезервировать в каждом блоке место для будущих обновлений поля, определив опцию PCTFREE.

1.2. Числовые типы

1) Целые типы данных
INT – число без десятичной точки. Размер зависит от конкретного варианта реализации. Часто это 4 байта.
SMALLINT – совпадает с INT, но обычно меньше по размеру. Часто 2 байта.
BIGINT – совпадает с INT, но обычно больше по размеру. Это 4 или более байта.

2) Вещественные числа с фиксированной точкой
DEC|)] – десятичное число с фиксированной точкой.
Число имеет:
— общее число значащих десятичных разрядов,
— максимальное количество разрядов справа от десятичной точки.

3) Вещественные числа с плавающей точкой
FLOAT – число с плавающей точкой, представленное в экспоненциальной форме по основанию 10. Задается максимальная точность.
REAL – совпадает с FLOAT, но точность зависит от варианта реализации.
DOUBE – совпадает с REAL, но точность может быть больше в конкретной реализации.

1.3. Даты и типы времени

DATE – дата в формате yyyy-mm-dd (ISO), mm/dd/yyyy (ANSI).
TIME – время в формате hh.mm.ss (ISO), hh:mm am/pm (ANSI).
INTERVAL – дата и время в формате yyyy-mm-dd-hh.mm.ss.nnnnn (ISO). (часто TIMESTAMP).

Примечание:
Типы даты и времени могут задаваться в виде строковых литералов.
Дата: ‘yyyy-mm-dd’, время: ‘hh.mm.ss’,
Интервал: ‘yyyy-mm-dd-hh.mm.ss.n…n’.

1.4. Логический тип

BOOLEAN – логическое значение (TRUE, FALSE, UNKNOWN).
Для правильного понимания таблицы истинности в трехзначной логике (3VL) можно условно считать, что FALSE — 0, TRUE -1, а UNKNOWN – 0.5.
Тогда:
— Оператор AND возвращает наименьшее.
— Оператор OR – наибольшее из исходных значений.
— NOT UNKNOWN = UNKNOWN.

2. Коллекции

Коллекции фактически нарушают первую нормальную форму (1NF).

2.1. Массив

[()] ARRAY – набор однотипных значений.

Примечание:
Массивы были введены в SQL:99.
Пример:
Так, определение WeekDays Varchar(10) ARRAY позволяет хранить название всех семи дней недели в одном поле.
Ряд СУБД допускают даже многомерные массивы. Так в InterBase возможно до 16 изменений, Clarion – 4.

2.2. Мультимножество

[()] MULTISET – неограниченный набор однотипных значений, допускающий дубликаты.
Значения создаются конструктором – специальными функциями.

Примечание:
Мультимножества были введены в SQL:2003.

2.3. Анонимный строковый тип

ROW ([()] , …) – набор разнотипных значений, включая вложенные.
Опции могут задавать порядок сортировки полей строкового типа и ряд других установок.

Пример:
Так, определив Address ROW(State Char(6), City Varchar(30), Street Varchar(50)) позволяет хранить подробный адрес в одном поле.

3. Типы LOB

CLOB (Character Large Object) – ведут себя во многом подобно символьным строкам, но их запрещено использовать:
— В ограничениях Primary Key, Unique, Foreign Key.
— В сравнениях, отличных от чистых равенств или неравенств, в разделах Order By и Group By.
BLOB (Binary Large Object) – поток байт в формате, в котором пользователь сможет их записать в колонку БД.

3.1. Проблемы использования LOB

1) Проблемы хранения
Хранение LOB прямо в таблицах вместе с другими данными нарушает работу оптимизатора, основанную на использовании страниц данных, размер которых соответствует размеру дисковых страниц.
Поэтому LOB хранятся в отдельных областях (сегментах) дисковой памяти.

2) Проблемы обновления
Поскольку размер LOB объектов может достигать десятков и сотен мегабайт, то их невозможно хранить в буферах целиком. Поэтому данные типа LOB обрабатываются по частям, например, группами страниц. В операторах INSERT и UPDATE для обработки по частям используются специальные технологии, позволяющие многократно вызывать одну и ту же API-функцию для одного поля. Аналогично и при считывании данных операторами SELECT и FETCH.

3) Проблемы выполнения транзакций
Для поддержки транзакций большинство СУБД ведет журнал транзакций, в котором записываются копии данных до и после модификаций.
Однако из-за больших размеров LOB не записываются в журнал.

4) Проблемы пересылки по сети
Часто клиент и сервер работают на разных компьютерах, и пересылка LOB по сети может прервать работу всех, кто пользуется сетью в данных момент.

4. Разные типы

4.1. Locator

Уникальное двоичное (четырехбитное) значение (в ООП – дескриптор), сохраняемое в БД.
Описывается в главной программе и действует до конца транзакции.
Предназначен для манипуляции LOB-значениями (или массивами) на стороне клиента. Вместо LOB клиенту посылается ссылка на него.
Можно объявить: LOC: Integer AS LOCATOR.

4.2. XML

Значениями, по существу, являются XML-документы.
Для этого типа определяется ряд операций, обеспечивающих доступ к элементам значения типа XML, преобразования подобных данных и т.п.

4.3. Datalink

Datalinks являются частью SQL/MED 9075-9:2003.
Datalink представляет собой особый тип SQL предназначен для хранения URL-адресов в БД, а также ряд функций, которые могут быть использованы в SQL запросах.
С особенностями и поддерживаемыми функциями можно ознакомится на сайте:
Wiki.postgresql.org/wiki/DATALINK

Используются в DB2, Oracle – для хранения данных во внешнем файле BFile.

Приводимый ниже список показывает, что Microsoft SQL Server поддерживает большинство типов данных SQL 2003. Также SQL Server поддерживает дополнительные типы данных, используемые для однозначной идентификации строк данных в таблице и на многих серверах, например UNIQUEIDENTIFIER, что соответствует аппаратной философии «роста в ширину», исповедуемой Microsoft (то есть внедрение базы на множестве серверов на платформах Intel), вместо «роста в высоту» (то есть внедрение на одном огромном мощном UNIX сервере или Windows Data Center Server).

Интересное отступление, касающееся дат на SQL Server: SQL Server поддерживает даты начиная с 1753 года. Вы не можете хранить более ранние даты ни в одном типе данных базы SQL Server. Почему? Причина в том, что англоговорящий мир начал использовать григорианский календарь в 1753 году (до сентября 1753 года использовался юлианский календарь), а преобразование дат юлианского календаря в григорианский могло оказаться весьма сложным.

BIGINT (тип данных SQL 2003: BIGINT)

Хранит целые числа со знаком и без знака в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Занимает 8 байт. Смотрите тип INT, где указаны правила свойства IDENTITY, также применимые к типу BIGINT.

BINARY[(n)](тип данных SQL 2003: BLOB)

Хранит двоичное значение фиксированной длины от 1 до 8000 байт. Значение типа BINARY занимает n + 4 байта.

BIT (тип данных SQL 2003: BOOLEAN)

Хранит значения 1, 0 или NULL, которое обозначает «unknown». В одном байте может храниться до 8 значений из столбцов типа BIT таблицы. В еще одном байте можно разместить дополнительные 8 значений типа BIT. Столбцы типа BIT нельзя индексировать.

CHAR[(n)], CHARACTER[(n)] (тип данных SQL 2003: CHARACTER(n))

Хранит символьные данные фиксированной длины от 1 до 8000 символов. Все неиспользованное место по умолчанию заполняется пробелами. (Автоматическое заполнение пробелами можно отключить.) Тип занимает п байт.

CURSOR (тип данных SQL 2003: отсутствует)

Специальный тип данных, используемый для описания курсора в форме переменной или параметра хранимой процедуры OUTPUT. Тип нельзя использовать в инструкции CREATE TABLE. Тип CURSOR может принимать значение NULL.

DATETIME (тип данных SQL 2003: TIMESTAMP)

Хранит значение даты и времени в диапазоне с 01-01-1753 00:00:00 до 31-12-9999 23:59:59. Для хранения требуется 8 байт.

DECIMAL (p. s). DEC (p, s), NUMERIC (p, s) (тип данных SQL 2003: DECIMAL (p, s). NUMERIC (p. s))

Хранит десятичные дроби длиной до 38 цифр. Значения р и s определяют, соответственно, точность и масштаб. Масштаб по умолчанию равен 0. Занимаемое значением место определяется используемой точностью. При точности 1-9 используется 5 байт. При точности 10-19 используется 9 байт. При точности 20-28 используется 13 байт. При точности 29-39 используется 17 байт.

Смотрите тип INT, где указаны правила свойства IDENTITY, также применимые к типу DECIMAL.

DOUBLE PRECISION (тип данных SQL 2003: отсутствует) Синоним FLOAT(53).

FLOAT[(n)] (тип данных SQL 2003: FLOAT, FLOAT(п))

Хранит значения с плавающей точкой в диапазоне от-1.79Е + 308 до 1.79Е + 308. Точность, определяемая параметром п, может изменяться в пределах от 1 до 53. Для хранения 7 цифр (и - от 1 до 24) требуется 4 байта. Значения, превышающие 7 цифр, занимают 8 байт.

IMAGE (тип данных SQL 2003: BLOB)

Хранит двоичное значение переменной длины до 2 147 483 647 байт. Этот тип данных часто используется для хранения графики, звука и файлов, таких, как документы Microsoft Word и электронные таблицы Microsoft Excel. Значениями типа IMAGE нельзя свободно манипулировать. Столбцы типа IMAGE и ТОТимеют множество ограничений на способы использования. Смотрите описание типа TEXT, где приведен список команд и функций, которые применимы и к типу IMAGE.

INT (тип данных SQL 2003: INTEGER)

Хранит целые числа со знаком или без знака в диапазоне от -2 147 483 648 до 2 147 483 647. Занимает 4 байта. Все целочисленные типы данных, а также типы, хранящие десятичные дроби, поддерживают свойство IDENTITY, identity - это автоматически инкрементируемый идентификатор строки. Обращайтесь к разделу «Инструкция CREATE/ALTERTABLE».

MONEY (тип данных SQL 2003: отсутствует)

Хранит денежные значения в диапазоне от -922337203685477.5808 до 922337203685477.5807. Значение занимает 8 байт.

NCHAR(n), NATIONAL CHAR(n), NATIONAL CHARACTER) (тип данных SQL 2003: NATIONAL СИARACTER(n))

Хранит данные формата UNICODE фиксированной длины до 4000 символов. Для хранения требуется n*2 байт.

NTEXT, NATIONAL TEXT(тип данных SQL 2003: NCLOB)

Хранит фрагменты текста в формате UNICODE длиной до 1 073 741 823 символа. Смотрите описание типа TEXT, где приведен список команд и функций, которые применимы и к типу NTEXT.

Синоним типа DECIMAL. Смотрите описание типа INT, где приведены правила, относящиеся к свойству IDENTITY.

NVARCHAR(n), NATIONAL CHAR VARYING(n), NATIONAL CHARACTER VARYING(n) (тип данных SQL 2003: NATIONAL CHARACTER VARYING(n))

Хранит UNICODE-данные переменной длины до 4000 символов. Занимаемое место вычисляется как удвоенное значение длины всех символов, вставленных в поле (число символов * 2). В SQL Server системный параметр SET ANSI_PADDING] для полей NCHAR и NVARCHAR всегда установлен (ON).

REAL, FLOAT(24)(mun данных SQL 2003: REAL)

Хранит значения с плавающей точкой в диапазоне -3.40Е+38 до 3.40Е+38. Занимает 4 байта. Тип REAL функционально эквивалентен типу FLOAT(24).

ROWVERSION (тип данных SQL 2003: отсутствует)

Уникальное число, хранимое в базе данных, которое обновляется всякий раз, когда обновляется строка, В более ранних версиях называется TIMESTAMP.

SMALLDATETIME (тип данных SQL 2003: отсутствует)

Хранит дату и время в диапазоне от "01-01-1900 00:00" до "06-06-2079 23:59" с точностью до минуты. (Минуты округляются до меньшего значения, если значение секунд 29.998 и менее, в противном случае они округляются до большего значения.) Значение занимает 4 байта.

SMALLINT (тип данных SQL 2003: SMALLINT)

Хранит целые числа со знаком или без знака в диапазоне от -32 768 до 32 767. Занимает 2 байта. Смотрите описание типа INT, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.

SMALLMONEY (тип данных SQL 2003: отсутствует)

Хранит денежные значения в диапазоне от 214748.3648 до -214748.3647. Значения занимают 4 байта.

SQL VARIANT (тип данных SQL 2003: отсутствует)

Хранит значения, относящиеся к другим поддерживаемым SQL Server типам данных, за исключением типов TEXT, NTEXT, ROWVERSION и других значений типа SQL_VARIANT. Может хранить до 8016 байт данных, поддерживаются значения NULL и DEFAULT. Тип SQL_VARIANTиспользуется в столбцах, параметрах, переменных и возвращаемых функциями и хранимыми процедур, ми значениях.

TABLE (тип данных SQL 2003: отсутствует)

Специальный тип, хранящий получившийся в результате работы последнего процесса набор данных. Используется исключительно для процедурной обработки и не может применяться в инструкциях CREATE TABLE. Этот тип данных уменьшает необходимость создания временных таблиц во многих приложениях. Может уменьшить необходимость перекомпиляций процедур, ускоряя, таким образом, выполнение хранимых процедур и пользовательских функций.

TEXT (тип данных SQL 2003: CLOB)

Хранит очень большие фрагменты текста длиной до 2 147 483 647 символов. Значениями типа ТЕХТн IMAGE часто гораздо труднее манипулировать, чем, скажем, значениями типа VARCHAR. Например, нельзя создавать индекс по столбцу типа TEXT или IMAGE. Значениями типа TEXT можно манипулировать при помощи функций DATALENGTH, PATINDEX, SUBSTRING. TEXTPTR и ТЕХ-TVALID, а также команд READTEXT, SET TEXTSIZE, UPDATETEXT и WR1TETEXT.

TIMESTAMP (тип данных SQL 2003: TIMESTAMP)

Хранит автоматически генерируемое двоичное число, обеспечивающее уникальность в текущей базе данных и, следовательно, отличающееся от типа данных TIMESTAMP стандарта ANSI. Тип TIMESTAMP занимает 8 байт. В настоящее время вместо TIMESTAMP для однозначной идентификации строк лучше применять значения типа ROWVERSION.

Хранит целые числа без знака в диапазоне от 0 до 255 и занимает 1 байт. Смотрите описание типа /Л/Г, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.

UNIQUEIDENTIFIER (тип данных SQL 2003: отсутствует)

Представляет собой значение, уникальное для всех баз данных и всех серверов. Представлено в виде хххххххх-хххх-хххх-хххх-хххххххххххх, в котором каждый «х» представляет собой шестнадцатеричное число в диапазоне 0-9 или а - f. Единственными операциями, которые можно производить над значениями этого типа, являются сравнение и проверка на NULL. В столбцах этого типа можно использовать ограничения и свойства, за исключением свойства IDENTITY.

VARBINARY[(п)] (тип данных SQL 2003: BLOB)

Представляет собой двоичное значение переменной длины, до 8000 байт. Занимаемое место соответствует размеру вставленных данных плюс 4 байта.

VARCHARf[(n)], CHAR VARYING [(п)], CHARACTER VARYING f(n)J (тип данных SQL 2003: CHARACTER VARYING [(n)]

Хранит символьные данные фиксированной длины размером от 1 до 8000 символов. Занимаемое место равно реальному размеру введенного значения в байтах, а не значению п.

ОПРЕДЕЛЕНИЕ СТРУКТУРЫ ДАННЫХ

Вопросы:

1. Типы данных языка SQL, определенные стандартом.. 1

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

3. Выражения и переменные. 5

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

5. Основные объекты структуры базы данных SQL-сервера. 7

Типы данных языка SQL, определенные стандартом

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

В языке SQL имеется шесть скалярных типов данных, определенных стандартом. Их краткое описание представлено в таблице.

Символьные данные

Символьные данные состоят из последовательности символов, входящих в определенный создателями СУБД набор символов. Поскольку наборы символов являются специфическими для различных диалектов языка SQL, перечень символов, которые могут входить в состав значений данных символьного типа, также зависит от конкретной реализации. Чаще всего используются наборы символов ASCII и EBCDIC. Для определения данных символьного типа используется следующий формат:

<символьный_тип>::=

{ CHARACTER [ VARYING][длина] | [длина]}

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

Битовые данные

Битовый тип данных используется для определения битовых строк, т.е. последовательности двоичных цифр (битов), каждая из которых может иметь значение либо 0, либо 1 . Данные битового типа определяются при помощи следующего формата:

<битовый_тип>::=

BIT [длина]

Точные числа

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

<фиксированный_тип>::=

{NUMERIC[точность[,масштаб]]|{DECIMAL|DEC}

[точность[, масштаб]]

| {INTEGER |INT}| SMALLINT}

Типы NUMERIC и DECIMAL предназначены для хранения чисел в десятичном формате. По умолчанию длина дробной части равна нулю, а принимаемая по умолчанию точность зависит от реализации. Тип INTEGER (INT) используется для хранения больших положительных или отрицательных целых чисел. Тип SMALLINT – для хранения небольших положительных или отрицательных целых чисел; в этом случае расход внешней памяти существенно сокращается.

Округленные числа

Тип округленных чисел применяется для описания данных, которые нельзя точно представить в компьютере, в частности действительных чисел. Округленные числа или числа с плавающей точкой представляются в научной нотации, при которой число записывается с помощью мантиссы, умноженной на определенную степень десяти (порядок), например: 10Е3, +5.2Е6, -0.2Е-4 . Для определения данныхвещественного типа используется формат:

<вещественный_тип>::=

{ FLOAT [точность]| REAL |

DOUBLE PRECISION}

Параметр точность задает количество значащих цифр мантиссы. Точность типов REAL и DOUBLE PRECISION зависит от конкретной реализации.

Дата и время

Тип данных "дата/время" используется для определения моментов времени с некоторой установленной точностью. Стандарт SQL поддерживает следующий формат:

<тип_даты/времени>::=

{DATE | TIME[точность]|

TIMESTAMP[точность]}

Тип данных DATE используется для хранения календарных дат, включающих поля YEAR (год), MONTH (месяц) и DAY (день). Тип данныхTIME – для хранения отметок времени, включающих поля HOUR (часы), MINUTE (минуты) и SECOND (секунды). Тип данных TIMESTAMP– для совместного хранения даты и времени. Параметр точность задает количество дробных десятичных знаков, определяющих точность сохранения значения в поле SECOND. Если этот параметр опускается, по умолчанию его значение для столбцов типа TIME принимается равным нулю (т.е. сохраняются целые секунды), тогда как для полей типа TIMESTAMP он принимается равным 6. Наличие ключевого слова WITH TIME ZONE определяет использование полей TIMEZONE HOUR и TIMEZONE MINUTE, тем самым задаются час и минуты сдвига зонального времени по отношению к универсальному координатному времени (Гринвичскому времени).

Данные типа INTERVAL используются для представления периодов времени.

Понятие домена

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

Стандарт SQL позволяет определить домен с помощью следующего оператора:

<определение_домена>::=

CREATE DOMAIN имя_домена

тип_данных

[ DEFAULT значение]

[ CHECK (допустимые_значения)]

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

Удаление доменов из базы данных выполняется с помощью оператора:

DROP DOMAIN имя_домена [ RESTRICT |

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

Альтернативой доменам в среде SQL Server являются пользовательские типы данных.

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

Системные типы данных

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

Приведем краткий обзор типов данных SQL Server.

Для хранения символьной информации используются символьные типы данных , к которым относятся CHAR (длина), VARCHAR (длина),NCHAR (длина), NVARCHAR (длина). Последние два предназначены для хранения символов Unicode. Максимальное значение длины ограничено 8000 знаками (4000 – для символов Unicode).

Хранение символьных данных большого объема (до 2 Гб) осуществляется при помощи текстовых типов данных TEXT и NTEXT.

К целочисленным типам данных относятся INT (INTEGER), SMALLINT, TINYINT, BIGINT. Для хранения данных целочисленного типаиспользуется, соответственно, 4 байта (диапазон от -231 до 231-1), 2 байта (диапазон от -215 до 215-1), 1 байт (диапазон от 0 до255) или 8 байт (диапазон от -263 до 263-1). Объекты и выражения целочисленного типа могут применяться в любых математических операциях.

Числа, в составе которых есть десятичная точка, называются нецелочисленными. Нецелочисленные данные разделяются на два типа – десятичные и приблизительные .

К десятичным типам данных относятся типы DECIMAL [(точность[,масштаб])] или DEC и NUMERIC [(точность[,масштаб])]. Типы данных DECIMAL и NUMERIC позволяют самостоятельно определить формат точности числа с плавающей запятой. Параметр точностьуказывает максимальное количество цифр вводимых данных этого типа (до и после десятичной точки в сумме), а параметр масштаб – максимальное количество цифр, расположенных после десятичной точки. В обычном режиме сервер позволяет вводить не более 28 цифр, используемых в типах DECIMAL и NUMERIC (от 2 до 17 байт).

К приблизительным типам данных относятся FLOAT (точность до 15 цифр, 8 байт) и REAL (точность до 7 цифр, 4 байта). Эти типы представляют данные в формате с плавающей запятой, т.е. для представления чисел используется мантисса и порядок, что обеспечивает одинаковую точность вычислений независимо от того, насколько мало или велико значение.

Для хранения информации о дате и времени предназначены такие типы данных, как DATETIME и SMALLDATETIME, использующие для представления даты и времени 8 и 4 байта соответственно.

Типы данных MONEY и SMALLMONEY делают возможным хранение информации денежного типа; они обеспечивают точность значений до 4 знаков после запятой и используют 8 и 4 байта соответственно.

Тип данных BIT позволяет хранить один бит, который принимает значения 0 или 1.

В среде SQL Server реализован ряд специальных типов данных .

Тип данных TIMESTAMP применяется в качестве индикатора изменения версии строки в пределах базы данных.

Тип данных UNIQUEIDENTIFIER используется для хранения глобальных уникальных идентификационных номеров.

Тип данных SYSNAME предназначен для идентификаторов объектов.

Тип данных SQL_VARIANT позволяет хранить значения любого из поддерживаемых SQL Server типов данных за исключением TEXT, NTEXT, IMAGE и TIMESTAMP.

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

Тип данных CURSOR нужен для работы с такими объектами, как курсоры, и может быть востребован только для переменных и параметров хранимых процедур. Курсоры SQL Server представляют собой механизм обмена данными между сервером и клиентом. Курсор позволяет клиентским приложениям работать не с полным набором данных, а лишь с одной или несколькими строками.


©2015-2019 сайт
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-08

Раздел 3. Основы языка SQL

Лекция 19. Группы операторов. Типы данных

Язык реляционных БД SQL был разработан в середине 70-х годов в рамках исследовательского проекта экспериментальной реляционной СУБД System R от компании IBM . Данный проект включал в себя разработку реляционной СУБД и языка SEQUEL (Structured English Query Language ). Данное название только частично отражало суть языка. Язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционной БД, фактически он уже являлся полноценным языком реляционной БД и содержал помимо операторов формулирования запросов и манипулирования БД, следующие средства:

· определения схемы БД и манипулирования ей;

· определения ограничений целостности и триггеров;

· создания представлений БД;

· определения структур физического уровня, поддерживающих эффективное выполнение запросов;

· автоматизации доступа к таблицам и их полям;

· поддержки точек сохранения транзакции и откатов.

В конце 70-х годов корпорацией Oracle был выпущен модифицированный вариант языка SEQUEL , получивший название SQL . В 1983 г. компания IBM выпустила SQL в составе СУБД DB 2.

Язык SQL был настолько удачен, что несколько позже, в 1986 г. Американский национальный институт стандартизации (ANSI ) принял его в качестве стандарта. После этого стандарт уже пересматривался несколько раз, в 1989, 1992 г. в результате в язык SQL были внесены некоторые незначительные изменения. В настоящее время наиболее распространенным стандартом является SQL -92.

Типы команд SQL

Команды языка SQL , условно, можно разделить на группы:

· DCL ( Data Control Language ) – язык управления данными. Команды языка предназначены для управления доступом к информации, хранящейся в БД. (таблица 19.1);

· DDL (Data Definition Language) – язык определения данных . Его команды используются для создания и изменения структуры объектов БД (таблица 19.2);

· DML ( Data Manipulation Language ) – язык манипулирования данными. Используется для манипулирования информацией, содержащейся в объектах БД (таблица 19.3);

· DQL ( Data Query Language ) – язык запросов к данным. Наиболее часто используемая группа, состоящая всего из одного оператора SELECT , предназначенного для формирования запросов к БД (таблица 19.4);

· TCL ( Transaction Control Language ) – язык управления транзакциями (таблица 19.5);

· CCL (Cursor Control Language ) – язык управления курсором (таблица 19.6);

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

Таблица 19.1- Средства управления данными DCL

Оператор

Описание

ALTER DATABASE

Изменение набора основных объектов БД

ALTER DBAREA

Изменение существующей области хранения БД

ALTER PASSWORD

Изменяет пароль для всей базы данных

CREATE DATABASE

Создает новую базу данных и определяет ее основные параметры

CREATE DBAREA

Создает область хранения и делает ее доступной для размещения данных

DROP DATABASE

Удаляет БД (при наличии прав)

DROP DBAREA

Удаляет область хранения если в ней не располагаются активные данные

GRANT

Предоставляет права доступа на действия с объектами БД

REVOKE

Лишает прав доступа к объектам БД или над действиями с объектами БД

Таблица 19.2 - Операторы определения данных DDL

Оператор

Описание

CREATE TABLE

Создает новую таблицу в БД

DROP TABLE

Удаляет существующую таблицу из БД

ALTER TABLE

Изменяет структуру таблицы или ограничения таблицы

CREATE VIEW

Создает представление (виртуальную таблицу) соответствующую некоторому SQL запросу

DROP VIEW

Удаляет ранее созданное представление

ALTER VIEW

Изменяет существующее представление

CREATE INDEX

Создает индекс для некоторой таблицы

DROP INDEX

Удаляет существующий индекс

Таблица 19.3 - Операторы манипулирования данными DML

Оператор

Описание

DELETE

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

INSERT

Вставляет одну или несколько записей, согласно условию отбора, в базовую таблицу

UPDATE

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

Таблица 19.4 - Язык запросов к данным DQL

Оператор

Описание

SELECT

Оператор, полностью реализующий возможности реляционной алгебры. Позволяет сформировать результирующие отношение, соответствующее запросу

Таблица 19.5- Средства управления транзакциями TCL

Оператор

Описание

COMMIT

Завершает транзакцию (комплексную взаимосвязанную обработку информации, объединенную в транзакции)

ROLLBACK

Откат транзакции (отмена изменений, проведенных в ходе выполнения транзакции)

SAVEPOINT

Сохраняет промежуточную точку (состояние) БД, для реализации возможности отката

Таблица 19.6- Средства управления курсором С CL

Оператор

Описание

DECLARE

Определяет курсор для запроса

OPEN

Открывает курсор (Формирует виртуальный НД, соответствующий описанию курсора)

FETCH

Считывает очередную строку из виртуального НД открытого курсора

CLOSE

Закрывает открытый курсор

PREPARE

Готовит оператор SQL к динамическому выполнению

EXECUTE

Выполняет оператор SQL, ранее подготовленный к динамическому выполнению

Типы данных языка SQL

В языке SQL имеется шесть скалярных типов данных, определенных стандартом. Их краткое описание представлено в таблице 19.7

Таблица 19.7 – типы данных языка SQL

Тип данных

Объявления

Символьный

CHAR | VARCHAR

Битовый

BIT | BIT VARYING

Точные числа

NUMERIC | DECIMAL | INTEGER | SMALLINT

Вещественные числа

FLOAT | REAL | DOUBLE PRECISION

Дата/время

DATE | TIME | TIMESTAMP

Интервал

INTERVAL

Строковые типы:

§ CHARACTER(n) или CHAR(n) - символьные строки постоянной длины в n символов. При задании данного типа под каждое значение всегда отводится n символов, и если реальное значение занимает менее, чем n символов, то СУБД автоматически дополняет недостающие символы пробелами.

§ VARCHAR(n) - строки символов переменной длины.

Битовые типы:

§ В IT (п) - строка битов постоянной длины.

§ BIT VARYING(n) - строка битов переменной длины.

Точные типы:

§ NUMERIC[(n,m)] - точные числа, здесь и - общее количество цифр в чис- . ле, m - количество цифр слева от десятичной точки.

§ DECIMAL[(n,m)] - точные числа, здесь п - общее количество цифр в числе, m - количество цифр слева от десятичной точки.

§ DEC[(n,m)] - то же, что и DECIMAl.[(n,m)].

§ INTEGER или INT - целые числа.

§ SMALLINT - целые числа меньшего диапазона.

Вещественные типы:

§ FLOAT[(n)] - числа большой точности, хранимые в форме с плавающей точкой. Здесь n - число байтов, резервируемое под хранение одного числа. Диапазон чисел определяется конкретной реализацией.

§ REAL - вещественный тип чисел, который соответствует числам с плавающей точкой, меньшей точности, чем FLOAT.

§ DOUBLE PRECISION специфицирует тип данных с определенной в реализации точностью большей, чем определенная в реализации точность для REAL.

Типы даты/времени и интервал:

§ DATE - календарная дата.

§ TIME – формат времени.

§ Т I МЕ S ТАМР(точность) - дата и время.

§ INTERVAL - временной интервал.

Большинство коммерческих СУБД поддерживают дополнительные типы данных, которые не специфицированы в стандарте. Так, например, практически все СУБД в том или ином виде поддерживают тип данных для представления неструктурированного текста большого объема. Этот тип аналогичен типу MEMO в настольных СУБД. Называются эти типы по-разному, например в ORACLE этот тип называется LONG, в DB2 - LONG VARCHAR, в SYBASE и MS SQL Server - TEXT.

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

1. Что представляет собой язык SQL ?

2. Что общего между языком SQL и реляционной алгеброй?

3. Какие средства включает в себя язык SQL ?

4. Какие типы команд выделяют в языке SQL ?

5. DML .

6. Назовите основные команды языка DDL .

7. Назовите основные команды языка DCL .

8. Назовите основные команды языка DQL .

9. Назовите основные команды языка управления транзакциями.

10. Назовите основные типы данных языка SQL .

11. Назовите строковые типы данных языка SQL .

12. Назовите числовые типы данных языка SQL .

13. Назовите типы представления даты и времени.



Рекомендуем почитать

Наверх