Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Типы данных SQL

Содержание:

Введение

Прежде чем приступить к объяснению атрибута “типы данных SQL”, необходимо ознакомится с структурированным языком SQL (Structured Query Language).

Что такое SQL?

SQL прeдназначен для сохранения, манипуляции и получения данных, которые хранятся в реляционной базе данных (далее – БД). Он является стандартным языком для Систем Управления Реляционными Базами Данных – СУБД (RDBMS), таких как MySQL, Oracle, Postgres и т.д.

Эти системы используют различные диалекты SQL:

Oracle – PL/SQL

MS SQL – T-SQL

Преимущества SQL

Среди преимуществ SQL мы можем выделить следующие:

  • Позволяет пользователям получать доступ к данным в RDBMS.
  • Позволяет пользователям описывать данные.
  • Позволяет пользователям определять данные в БД и манипулировать ими.
  • Позволяет встраивать другие языки, используя модули SQL, библиотеки и пре-компиляторы.
  • Позволяет пользователям создавать и удалять БД и таблицы.
  • Позволяет пользователю создавать встроенные виды, процедуры и функции в БД.
  • Позволяет ограничивать доступ к таблицам, процедурам и видам.

Принцип работы SQL

Когда мы выполняем команду SQL для любой RDBMS, система определяет наилучший способ для обработки нашего запроса и модуль управление (“двигатель”) SQL вычисляет, как интерпретировать задачу.

В данный процесс включены такие компоненты:

  • Query
  • Dispatcher
  • Optimization Engines
  • Classic Query Engine
  • SQL Query Engine и т.д.

Classic Query Engine обрабатывает все не-SQL запросы, а SQL Query Engine не обрабатывает логические файлы.

Архитектура SQL представлена на втором слайде приложения к реферату

Команды SQL

Команды SQL делятся на три категории:

  1. DDL – Data Definition Language
  2. DML – Data Manipulation Language
  3. DCL – Data Control Language

В DDL входят команды CREATE (создает новую таблицу ил другой объект в БД), ALTER (изменяет ранее созданный объект в БД), DROP (удаляет выбранную таблицу или другой объект).

В DML входят SELECT (получает выбранные данные из одной или нескольких таблиц), INSERT (создает запись), UPDATE (обновляет записи), DELETE (удаляет записи).

В DCL входят команды GRANT (предоставляет права пользователям), REVOKE(лишает пользователей прав на четырех уровнях привилегий).

Всё выше перечисленное необходимо хотя бы для примерного понимания структурированного языка SQL. Далее будет предоставлена информация непосредственно о типах данных SQL.

Типы данных

Что такое тип данных?

В SQL Server у каждого столбца, локальной переменной, выражения и параметра есть определенный тип данных. Тип данных — атрибут, определяющий, какого рода данные могут храниться в объекте: целые числа, символы, данные денежного типа, метки времени и даты, двоичные строки и так далее.  У каждого столбца, выражения, переменной или параметра есть определенный тип данных. В Microsoft SQL Server существует набор системных типов данных, который и определяет все доступные по умолчанию типы данных для использования.

Категории типов данных

Типы данных в SQL Server делятся на такие категории как:

  • Точные числа,
  • Приблизительные числа,
  • Дата и время,
  • Символьные строки,
  • Символьные строки в Юникоде,
  • Двоичные данные,
  • Прочие типы данных.

Далее последует представленная информация о всех типах данных по категориям.

Точные числа

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

bit - Целочисленный тип данных, который может принимать значения 1, 0 или NULL. Компонент SQL Server Database Engine оптимизирует хранение столбцов типа bit. Если в таблице имеется 8 или менее столбцов типа bit, они хранятся как 1 байт. Если имеется от 9 до 16 столбцов типа bit, они хранятся как 2 байта и т. д.

Строковые значения TRUE и FALSE можно преобразовать в значения типа bit: значение TRUE преобразуется в 1, а значение FALSE преобразуется в 0.

При преобразовании в битовый тип (bit) любое ненулевое значение приравнивается к 1.

bigint диапазон типа данных от -2^63 (-9 223 372 036 854 775 808) до 2^63-1 (9 223 372 036 854 775 807)

int диапазон типа данных от -2^31 (-2 147 483 648) до 2^31-1 (2 147 483 647)

tinyint как написано раннее диапазон равен целым числам от 0 до 255

numeric (p, s) и decimal (p, s) Тип числовых данных с фиксированной точностью и масштабом. numeric и decimal функционально эквивалентны. p (точность) — максимальное количество десятичных разрядов числа, которые будут храниться (как слева, так и справа от десятичной запятой). Точность может быть значением в диапазоне от 1 до 38, по умолчанию 18. s (масштаб) — максимальное количество десятичных разрядов числа справа от десятичной запятой. Максимальное число цифр слева от десятичной запятой определяется как p — s (точность — масштаб). Масштаб может быть значение от 0 до p, по умолчанию 0. Максимальный размер хранилища зависит от точности. Тип данных numeric и decimal может принимать значение от –10^38+1 до 10^38–1.

smallmoney - тип данных для хранения денежных значений с точность до одной десятитысячной денежной единицы. Диапазон от -214 748,3648 до 214 748,3647

money - Тип данных для хранения денежных значений с точность до одной десятитысячной денежной единицы. Число от -922 337 203 685 477,5808 до 922 337 203 685 477,5807

Приблизительные числа

Типы приблизительных числовых данных, используемые для числовых данных с плавающей запятой. Данные с плавающей запятой являются приблизительными, поэтому не все значения из диапазона могут быть отображены точно. Синонимом по стандарту ISO для типа real является float(24).

float (n) Где n — это количество битов, используемых для хранения мантиссы числа в формате float при экспоненциальном представлении. Определяет точность данных и размер для хранения. Если указан параметр n, это должно быть значение в диапазоне от 1 до 53. Значение n по умолчанию — 53.

Тип данных SQL Server float(n) соответствует стандарту ISO для всех значений n в диапазоне от 1 до 53. Синонимом типа double precision является тип float(53).

Дата и время

date - используется для хранения даты. Диапазон От 01.01.0001 до 31.12.9999, точность 1 день.

datetime - используется для хранения даты, включая время с точностью до одной трехсотой секунды. Диапазон От 01.01.1753 00:00:00 до 31.12.9999 23:59:59,997. Точность 0,00333 секунды

datetime2 – это расширенный вариант типа данных datetime, имеет более широкий диапазон дат и большую точность в долях секунды (до 7 цифр). Диапазон От 6 до 8 байт (в зависимости от точности: менее 3 цифр = 6 байт, 3-4 цифры = 7 байт, более 4 цифр = 8 байт). Точность 100 наносекунд.

smalldatetime - сокращенный вариант типа данных datetime, имеет меньший диапазон дат и не имеет долей секунд. Диапазон От 01.01.1900 00:00:00 до 06.06.2079 23:59:00. Точность 1 минута.

time (точность) - используется для хранения времени дня. Точность может быть целым числом от 0 до 7, по умолчанию 7 (100 наносекунд, 5 байт). Если указать 0, то точность будет до секунды (3 байта). Диапазон От 00:00:00.0000000 до 23:59:59.9999999. Точность 100 наносекунд.

datetimeoffset (точность) - используется для хранения даты и времени, включая смещение часовой зоны относительно универсального глобального времени. Точность определяет количество знаков в дробной части секунды, данное значение может быть от 0 до 7, по умолчанию 7 (100 наносекунд, 10 байт).

Символьные строки

char (n) - это строка с фиксированной длиной не в Юникоде, где n длина строки (от 1 до 8000). По умолчанию n = 1, если значение n не указано при использовании функций CAST и CONVERT, длина по умолчанию равна 30.

varchar ( n | max ) - строковые данные переменной длины не в Юникоде, где n длина строки (от 1 до 8000). По умолчанию n = 1, если значение n не указано при использовании функций CAST и CONVERT, длина по умолчанию равна 30.

Text - строка переменной длины не в Юникоде. Является устаревшим типом данных, рекомендуется использовать varchar(max).

Символьные строки в Юникоде

nchar (n) - строка с фиксированной длиной в Юникоде, где n длина строки (от 1 до 4000). По умолчанию n = 1, если значение n не указано при использовании в функции CAST, длина по умолчанию равна 30.

nvarchar ( n | max ) - строка переменной длины в Юникоде, где n длина строки (от 1 до 4000). По умолчанию n = 1, если значение n не указано при использовании в функции CAST, длина по умолчанию равна 30.

Ntext - строка переменной длины в Юникоде. Является устаревшим типом данных, рекомендуется использовать nvarchar(max).

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

binary (n) - двоичные данные фиксированной длины. n — значение от 1 до 8000. Если не указывать n, то значение по умолчанию 1, если не указать в функции CAST, то 30. Данный тип лучше использовать в случаях, когда размер данных, которые будут храниться в столбце, можно заранее определить.

varbinary ( n | max ) - двоичные данные с переменной длиной. n — значение от 1 до 8000. Если не указывать n, то значение по умолчанию 1, если не указать в функции CAST, то 30. Данным типом лучше пользоваться, если размер данных в столбце заранее определить трудно. Если размер данных превышает 8000 байт, необходимо использовать тип varbinary(max).

Image - Двоичные данные с переменной длиной. Является устаревшим типом данных, рекомендуется использовать varbinary(max).

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

Cursor - Данный тип данных можно использовать в переменных или выходных параметрах хранимых процедур, которые содержат ссылку на курсор. Тип cursor не может быть использован в инструкции CREATE TABLE, т.е. для столбца в таблице. Может принимать значение NULL.

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

sql_variant - Универсальный тип данных, который может хранить значения различных типов данных. Однако sql_variant может хранить значения не всех типов, которые есть в SQL сервере, например следующие типы нельзя сохранить при помощи типа данных sql_variant: varchar(max), varbinary(max), nvarchar(max), xml, text, ntext, image, rowversion, hierarchyid, datetimeoffset, а также пространственные типы данных и определяемые пользователем типы. Тип sql_variant не может также иметь sql_variant в качестве базового типа.

rowversion (timestamp) - Тип данных rowversion представляет собой автоматически создаваемые уникальные двоичные числа. В таблице может быть определен только один столбец типа rowversion. После любого обновления строки или вставки новой строки в таблицу, которая содержит столбец типа rowversion, значение увеличенной rowversion вставляется в столбец с данным типом. Поэтому столбец с типом данных rowversion не рекомендуется использовать в ключе, особенно в первичном ключе. timestamp является синонимом типа данных rowversion, но данный синтаксис устарел и его использовать нежелательно. Занимает 8 байт.

Xml используется для хранения XML-данных.

Uniqueidentifier. Инициализировать столбец или переменную с типом uniqueidentifier можно с помощью функции NEWID или путем преобразования строки xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где каждый x – это шестнадцатеричная цифра (0–9 или A–F).

Hierarchyid – этот тип данных используется для представления положения в древовидной иерархии.

Пространственные типы:

geography – это географический пространственный тип данных, который используется для представления данных в системе координат круглой земли,

geometry – это пространственный тип данных для представления данных в евклидовом пространстве (плоской системе координат).

Заключение

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

Список используемых источников

  1. https://docs.microsoft.com/ru-ru/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-ver15
  2. https://info-comp.ru/programmirovanie/605-data-types-in-t-sql.html
  3. https://proselyte.net/tutorials/sql/introduction/