Получите бесплатно 4 курса для лёгкого старта работы в IT
Получить бесплатно
Главная БлогТипы данных SQL: какие бывают и как с ними работать
Типы данных SQL

Типы данных SQL: какие бывают и как с ними работать

Дата публикации: 19.12.2022
31 525
Время чтения: 14 минут
Дата обновления: 04.09.2023
В статье рассказывается:

Что это такое? Типы данных SQL необходимы для организации работы всей базы. В таблице каждый столбец обязан иметь имя и указание на информацию, которая в нем содержится. Это определяет как язык, на котором написана БД, будет взаимодействовать с наполнением таблицы.

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

В статье рассказывается:

  1. Задачи типов данных в SQL
  2. Виды типов данных SQL
  3. Хранение типов данных SQL
  4. Преобразование типов данных
  5. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.
    Бесплатно от Geekbrains

Задачи типов данных в SQL

Для начала определим, о каких данных мы говорим? В данной статье речь пойдёт о типе данных, которые любая переменная или столбец могут хранить в MS SQL Server.

Когда мы создаём любую таблицу или переменную, мы указываем имя, а также тип данных, которые будут храниться.

Задачи типов данных в SQL
Задачи типов данных в SQL

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

Как наиболее эффективно использовать память? Для начала назначьте соответствующий тип данных переменной или столбцу, в котором будет выделяться тот объём, который необходим системной памяти для данных столбца SQL.

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

В качестве иллюстрации можно взять простую страницу регистрации приложения web-сайта. Мы имеем три поля ввода: Имя, Фамилия, Контактный номер.

Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

pdf 3,7mb
doc 1,7mb
Уже скачали 30006 pdf иконка

Обратите внимание, что в режиме реального времени:

  • поля «Имя» и «Фамилия» всегда будут буквенными;
  • поле «Контактный номер» всегда будет числовым.

Таким образом, «Имя» и «Фамилия» надо указать как символ, а «Контактный номер» – как целое число.

Каждое поле имеет определённый тип данных. Это могут быть числовые данные, буквенные, формат даты и др.

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

Виды типов данных SQL

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

К этому типы относят имена, названия, адреса и другие данные, которые выражаются словами. Строковые типы – самые распространённые.

Независимо от типа строки, её всегда заключают в одинарные кавычки. Все строковые типы условно делятся на две группы: переменной и фиксированной длины.

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

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

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

Определение фиксированной длины повышает производительность: получение, изменение и сортировка данных реализуется намного быстрее, когда в СУБД заложено конкретное количество символов на строку. Индексирование столбцов тоже увеличивает скорость работы: в некоторых СУБД оно возможно только в случае определения фиксированной длины строки.

Перечислим основные строковые типы данных:

  • CHAR – фиксированная длина строки. В процессе создания таблицы определяется точное значение – от 1 до 225 символов;
  • NCHAR – одна из разновидностей CHAR, которая поддерживает Unicode или многобайтовые символы
  • TEXT (она же LONG, VARCHAR или MEMO) – строки переменной длинны
  • NVARCHAR – подвид TEXT, которые поддерживает Unicode или многобайтовые символы

Давайте разберёмся, почему не стоит хранить в числовых форматах номера документов, домов и телефонов.

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

Дарим скидку от 60%
на курсы от GeekBrains до 22 сентября
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Забронировать скидку

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

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

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

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

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

Только до 23.09
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы получить файл, укажите e-mail:
Введите e-mail, чтобы получить доступ к документам
Подтвердите, что вы не робот,
указав номер телефона:
Введите телефон, чтобы получить доступ к документам
Уже скачали 52300

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

Названия могут отличаться в зависимости от конкретной СУБД; актуальные заголовки проверяйте в документации. Примерно опишем варианты:

  • NUMBER или FLOAT – числа с плавающими точками;
  • NUMERIC или DECIMAL – числа с фиксированными или плавающими точками;
  • BIT – одноразрядное значение, которое используют для битовых флагов: 0 или 1;
  • REAL – 4-байтовые числа с плавающими точками;
  • INTEGER или INT – целые 4-байтовые числа, у которых диапазон значений варьируется от -2147483648 до 2147483647;
  • TINYINT – целые 1-байтовые числа в диапазоне от 0 до 255;
  • SMALLINT – целые 2-байтовые числа в диапазоне от -32768 до 32767.

В некоторых СУБД денежный тип данных выделен в отдельную категорию. Он может относиться к типу DECIMAL, но обладать более удобным для денежных значений диапазоном. Его называют MONEY или CURRENCY.

Типы данных, включающие обозначение даты и времени

То или иное обозначение времени и даты включено во всех СУБД. Они, как и числовые форматы, отличаются друг от друга степенью точности и допустимым диапазоном. Варианты:

  • DATE – дата;
  • TIME – время;
  • TIMESTAMP или DATETIME – дата и время;
  • SMALLDATETIME – дата и время с точностью до минуты.
Бывают и более точные форматы, мы привели лишь самые популярные.

Бинарные типы данных

Этот тип данных обеспечивает содержание любых данных в бинарном виде. Это может быть графика, текст, медиа или двоичный код. На самом деле, бинарные типы используют довольно редко, поскольку они плохо совместимы в формате разных СУБД. И всё же порой они упрощают работу, так что приведём основные:

  • BINARY – данные в двоичном виде в диапазоне от 255 до 8000 байт;
  • RAW – данные фиксированной длинны в двоичном виде в диапазоне до 255 байт;
  • LONG RAW – данные переменной длины в двоичном виде в диапазоне до 2Гбайт;
  • VARBINARY – данные переменной длины в двоичном виде в диапазоне до 8000 байт или до 255 байт в зависимости от реализации.
Бинарные типы данных
Бинарные типы данных

Хранение типов данных SQL

Расскажем о двух вариантах хранения, которые позволяют хранить объекты LOB, экономя дисковое пространство.

Хранение данных типа FILESTREAM

LOB – большие объекты – хранятся в SQL Server с помощью типа данных MAX или VARBINARY. BLOB — большие двоичные объекты – хранятся в базе данных. Из-за этого могут возникать проблемы с производительностью, когда вы пытаетесь сохранить видео- или аудиофайлы. Во избежание нарушения работы такие данные сохраняют во внешних файлах за пределами базы данных.

Объекты LOB хранятся в файловой системе NTFS. Этот тип хранения позволяет данным, хранящимся вне базы, управляться базой. Основные характеристики:

  • возможность хранения данных FILESTREAM при помощи инструкций CREATE TABLE, а в процессе работы с этими данными используются инструкции для модификации данных (DELETE, UPDATE, SELECT и INSERT);
  • обеспечение для данных типа FILESTREAM того же уровня безопасности, что и у данных, которые хранятся внутри базы.

Разреженные столбцы (sparsecolumns)

Этот вариант хранения преследует совершенно иную цель.

Если тип FILESTREAM хранит объекты LOB вне базы данных, то разреженные столбцы минимизируют дисковое пространство, которое занимает база данных.

Это обеспечивает оптимизацию хранения столбцов, у которых большинство значений равняется null. Когда вы используете разреженные столбцы для хранения значений null, вам не требуется дисковое пространство. При этом для хранения значений, которые отличаются от null, потребуется дополнительные байты (от 2 до 4). Поэтому разреженные столбцы рекомендуются к использованию только тогда, когда вы ожидаете сэкономить не менее 20% дискового пространства.

Разреженные столбцы определяют так же, как и другие столбцы таблицы, а значит, обращаются к ним аналогично. При обращении к разреженному столбцу используйте инструкции DELETE, UPDATE , SELECT и INSERT так же, как и при работе с обычными столбцами.

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

Вот пример того, как это сделать:

имя_столбца тип_данных SPARSE

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

Разреженные столбцы
Разреженные столбцы

Значение NULL

«Null» является одним из специальных значений, которые присваивают ячейкам таблиц. Его применяют в тех случаях, когда информация неприменима или совсем неизвестна. Приведём пример, если вы не знаете домашний номер телефона клиента, вы находите столбец home_telephone и присваиваете соответствующей ячейке значение null.

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

Откройте для себя захватывающий мир IT! Обучайтесь со скидкой до 61% и получайте современную профессию с гарантией трудоустройства. Первый месяц – бесплатно. Выбирайте программу прямо сейчас и станьте востребованным специалистом.

Поэтому, если у вас есть унарная арифметическая операция, в которой значение выражения A равняется null, действие +A или -A будет возвращать null.

Бинарные выражения будут действовать так же. Когда A и B равняется null, результат любых операций (умножение, деление, деление по модулю, сложения, вычитания) этих операндов будет тоже обозначен как null.

Когда в выражении содержится операция сравнения, а значение одного или обоих операндов равняется null, результат действия снова будет null.

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

Значение null сохраняется в столбцах таблицы только тогда, когда это явно разрешается определением данного столбца. При этом значения null недоступны для столбца, если в его определении напрямую указано «NOT NULL».

Когда для столбца с каким-либо типом данных не указано напрямую NULL или NOT NULL, мы присваиваем следующие значения:

  • NULL, когда значение параметров ANSI_NULL_DFLT_ON в инструкции SET равняется on.
  • NOT NULL, когда значение параметров ANSI_NULL_DFLT_OFF в инструкции SET равняется on.

Если вы не активируете инструкцию set, столбец будет автоматически определяться как NOT NULL. При этом столбцы типа TIMESTAMP не могут иметь значение null ни при каких обстоятельствах.

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

Часто возникает необходимость конвертации значений одного типа в значение другого. Как же изменить тип данных в SQL?

Для выполнения конвертирования числа в символьные данные используют специализированную функцию STR. Чтобы выполнить другие преобразования, SQL Server содержит универсальные функции CAST и CONVERT, которые позволяют преобразовывать значения одного типа в значения другого типа. Эти функции взаимозаменяемы. Приведём пример:

CAST(выражение AS тип_данных) CONVERT(тип_данных[(длина)], выражение [,стиль])

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

DECLARE @d DATETIME DECLARE @s CHAR(8) SET @s=’29.10.01’ SET @d=CAST(@s AS DATETIME)2.3.

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

Оцените статью:
1.81
Добавить комментарий

Сортировать:
По дате публикации
По рейтингу
Читайте также
prev
next
Бесплатные вебинары:
prev
next
Как работает дизайн-студия на примере одного кейса 

Как работает дизайн-студия на примере одного кейса 

Узнать подробнее
Инновационные подходы к обучению информационным технологиям

Инновационные подходы к обучению информационным технологиям

Узнать подробнее
Как стать Python-разработчиком

Как стать Python-разработчиком

Узнать подробнее
Что нужно знать разработчику

Что нужно знать разработчику

Узнать подробнее
Кто такой тестировщик и как им стать

Кто такой тестировщик и как им стать

Узнать подробнее
Чем занимается программист и как им стать

Чем занимается программист и как им стать

Узнать подробнее
Как искусственный интеллект помогает и мешает задачам кибербезопасности

Как искусственный интеллект помогает и мешает задачам кибербезопасности

Узнать подробнее
Бесплатный вебинар про внедрение искусственного интеллекта

Бесплатный вебинар про внедрение искусственного интеллекта

Узнать подробнее
Какие есть профессии в ИТ

Какие есть профессии в ИТ

Узнать подробнее
Смените профессию,
получите новые навыки,
запустите карьеру
Поможем подобрать обучение:
Забрать подарок

Получите подробную стратегию для новичков на 2023 год, как с нуля выйти на доход 200 000 ₽ за 7 месяцев

Подарки от Geekbrains из закрытой базы:
Осталось 17 мест

Поздравляем!
Вы выиграли 4 курса по IT-профессиям.
Дождитесь звонка нашего менеджера для уточнения деталей

Иван Степанин
Иван Степанин печатает ...