Типы данных в SQL / Ravesli
Россия и Беларусь начали и продолжают войну против народа Украины!
Юрий |
Обновл. 18 Мар 2023 |
542
В SQL каждый столбец (в таблице) имеет свой тип данных, который ограничивает то, что может храниться в столбце. Например, если тип данных столбца — INT
, то в этом столбце могут храниться только целочисленные значения, такие как 0
, 1
, -1
и т.д.
Различные СУБД поддерживают различные типы данных. Рассмотрим одни из наиболее часто используемых типов данных в SQL Server, MySQL, PostgreSQL и Oracle.
Содержание:
- Типы данных в SQL Server
- Типы данных в MySQL
- Типы данных в PostgreSQL
- Типы данных в Oracle
Целочисленные типы данных
Тип данных | Описание |
BIT | Может содержать один бит (0 или 1) или NULL. |
TINYINT | Может содержать числа в диапазоне от 0 до 255. |
SMALLINT | Может содержать числа в диапазоне от -32,768 до 32,767. |
INT | Может содержать числа в диапазоне от -2,147,483,648 до 2,147,483,647. |
BIGINT | Может содержать числа в диапазоне от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807. |
Строковые типы данных
Тип данных | Описание |
CHAR(n) | Может содержать символы фиксированной длины (n — это фиксированная длина, максимум 8000 символов). |
VARCHAR(n) | Может содержать символы n длины ( n — это переменная длины, максимум 8000 символов). |
TEXT | Может содержать символы размером до 2 ГБ. |
IMAGE | Может содержать двоичную строку размером до 2 ГБ. |
Типы данных Даты и Времени
Тип данных | Описание |
DATETIME | Может содержать дату и время от 1 января 1753 года до 31 декабря 9999 года. |
DATETIME2 | Может содержать дату и время от 1 января 0001 года до 31 декабря 9999 года. |
DATE | Может содержать только дату от 1 января 0001 года до 31 декабря 9999 года. |
TIME | Может содержать только время. |
Примечание: SQL Server поддерживает множество других типов данных. Чтобы узнать больше, читайте документацию SQL Server.
Целочисленные типы данных
Тип данных | Описание |
BIT(n) | Может содержать n-битные значения (n может варьироваться от 1 до 64). |
TINYINT | Может содержать числа в диапазоне от -128 до 127. |
SMALLINT | Может содержать числа в диапазоне от -32,768 до 32,767. |
MEDIUMINT | Может содержать числа в диапазоне от -8,388,608 до 8,388,607. |
INT | Может содержать числа в диапазоне от -2,147,483,648 до 2,147,483,647. |
BIGINT | Может содержать числа в диапазоне от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807. |
Строковые типы данных
Тип данных | Описание |
CHAR(n) | Может содержать символы фиксированной длины (n — это фиксированная длина, максимум 8000 символов). |
VARCHAR(n) | Может содержать символы n длины (n — это переменная длины, максимум 8000 символов). |
BINARY(n) | Может содержать двоичные строки фиксированной длины ( |
VARBINARY(n) | Может содержать двоичные строки заданной длины (n — это переменная длины). |
TINYTEXT | Может содержать до 255 символов. |
TEXT(n) | Может содержать символы размером до 65,535 байт. |
MEDIUMTEXT | Может содержать до 16,777,215 символов. |
LONGTEXT | Может содержать до 4,294,967,295 символов. |
BLOB(n) | Может содержать большие двоичные объекты размером до 65,535 байт. |
MEDIUMBLOB | Может содержать большие двоичные объекты размером до 16,777,215 байт. |
LONGBLOB | Может содержать большие двоичные объекты размером до 4,294,967,295 байт. |
Типы данных Даты и Времени
Тип данных | Описание |
DATE | Может содержать дату в формате ГГГГ-ММ-ДД и в диапазоне от 1000-01-01 до 9999-12-31. |
DATETIME | Может содержать дату и время в формате ГГГГ-ММ-ДД чч:мм:сс. |
TIME | Может содержать только время в формате чч:мм:сс и в диапазоне от -838:59:59 до 838:59:59. |
YEAR | Может содержать год в 4-значном формате и в диапазоне от 1901 до 2155. |
TIMESTAMP | Может содержать временную метку от текущего часового пояса до UTC. |
Примечание: MySQL поддерживает множество других типов данных. Чтобы узнать больше, читайте документацию MySQL.
Целочисленные типы данных
Тип данных | Описание |
SMALLINT | Может содержать числа в диапазоне от -32,768 до 32,767. |
INTEGER | Может содержать числа в диапазоне от -2,147,483,648 до 2,147,483,647. |
BIGINT | Может содержать числа в диапазоне от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807. |
DECIMAL | Может содержать числа с 131072 цифр до десятичной точки и 16383 цифр после десятичной точки. |
SMALLSERIAL | Может содержать автоматически увеличивающиеся числа от 1 до 32767. |
SERIAL | Может содержать автоматически увеличивающиеся числа от 1 до 2147483647. |
BIGSERIAL | Может содержать автоматически увеличивающиеся числа от 1 до 9223372036854775807. |
Строковые типы данных
Тип данных | Описание |
CHAR(n) | Может содержать символы фиксированной длины (n — это фиксированная длина). |
VARCHAR(n) | Может содержать символы n длины (n — это переменная длины). |
TEXT | Может содержать символы без ограничений. |
Типы данных Даты и Времени
Тип данных | Описание |
TIMESTAMP | Может содержать дату и время. |
DATE | Может содержать только дату. |
TIME | Может содержать только время. |
Примечание: PostgreSQL поддерживает множество других типов данных. Чтобы узнать больше, читайте документацию PostgreSQL.
Целочисленные типы данных
Тип данных | Описание |
NUMBER | Может содержать числа. |
Строковые типы данных
Тип данных | Описание |
CHAR(n) | Может содержать символы фиксированной длины, размером до 2000 байт (n — это фиксированная длина). |
VARCHAR(n) | Может содержать символы n длины, размером до 4000 байт (n — это переменная длины). |
LONG | Может содержать символы размером до 2 ГБ. |
Типы данных Даты и Времени
Тип данных | Описание |
TIMESTAMP | Может содержать дату и время. |
DATE | Может содержать только дату от 1 января 4712 до н.э. до 31 декабря 9999 н.э. |
TIME | Может содержать только время. |
Примечание
Оценить статью:
Загрузка…
НОУ ИНТУИТ | Лекция | Определение структуры данных
< Лекция 18 || Лекция 2: 1234
Аннотация: Рассматриваются поддерживаемые в SQL типы данных и преобразование типов. Описывается создание пользовательских типов данных. Дается понятие выражения и оператора в SQL. Приводится определение основных объектов базы данных: таблиц, представлений, индексов, ограничений, правил, хранимых процедур, функций пользователя, триггеров.
Ключевые слова: данные, тип данных, SQL, символьный тип, битовый тип, точное число, округленное число, тип дата/время, EBCDIC, time zone, домен, оператор, пользовательский тип данных, целочисленный тип, выражение, нецелочисленный тип, денежный тип, специальный тип данных, объект базы данных, переменная, параметр хранимой процедуры, преобразование типов, управляющая конструкция, операнд, константы, server, значение, блок операторов, команда, оператор поливариантных ветвлений, условный оператор, оператор цикла, синтаксис, множества, логическая структура, список, ограничения целостности данных, реальная таблица
Типы данных языка SQL, определенные стандартом
Данные – это совокупная информация, хранимая в базе данных в виде одного из нескольких различных типов . С помощью типов данных устанавливаются основные правила для данных, содержащихся в конкретном столбце таблицы, в том числе размер выделяемой для них памяти.
В языке SQL имеется шесть скалярных типов данных, определенных стандартом. Их краткое описание представлено в таблице.
Тип данных | Объявления |
---|---|
Символьный | CHAR | VARCHAR |
Битовый | BIT | BIT VARYING |
Точные числа | NUMERIC | DECIMAL | INTEGER | SMALLINT |
Округленные числа | FLOAT | REAL | DOUBLE PRECISION |
Дата/время | DATE | TIME | TIMESTAMP |
Интервал | INTERVAL |
Символьные данные
intuit.ru/2010/edi»> Символьные данные состоят из последовательности символов, входящих в определенный создателями СУБД набор символов. Поскольку наборы символов являются специфическими для различных диалектов языка SQL, перечень символов, которые могут входить в состав значений данных символьного типа, также зависит от конкретной реализации. Чаще всего используются наборы символов ASCII и EBCDIC. Для определения данных символьного типа используется следующий формат:<символьный_тип>::= { CHARACTER [ VARYING][длина] | [CHAR | VARCHAR][длина]}
При определении столбца с символьным типом данных параметр длина применяется для указания максимального количества символов, которые могут быть помещены в данный столбец (по умолчанию принимается значение 1 ). Символьная строка может быть определена как имеющая фиксированную или переменную ( VARYING ) длину. Если строка определена с фиксированной длиной значений, то при вводе в нее меньшего количества символов значение дополняется до указанной длины пробелами, добавляемыми справа. Если строка определена с переменной длиной значений, то при вводе в нее меньшего количества символов в базе данных будут сохранены только введенные символы, что позволит достичь определенной экономии внешней памяти.
Битовые данные
Битовый тип данных используется для определения битовых строк, т.е. последовательности двоичных цифр (битов), каждая из которых может иметь значение либо 0, либо 1 . Данные битового типа определяются при помощи следующего формата:
<битовый_тип>::= BIT [VARYING][длина]
Точные числа
Тип точных числовых данных применяется для определения чисел, которые имеют точное представление, т.е. числа состоят из цифр, необязательной десятичной точки и необязательного символа знака. Данные точного числового типа определяются точностью и длиной дробной части. Точность задает общее количество значащих десятичных цифр числа, в которое входит длина как целой части, так и дробной, но без учета самой десятичной точки. Масштаб указывает количество дробных десятичных разрядов числа.
<фиксированный_тип>::= {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[точность][WITH TIME ZONE]| TIMESTAMP[точность][WITH TIME ZONE]}
Тип данных DATE используется для хранения календарных дат, включающих поля YEAR (год), MONTH (месяц) и DAY (день). Тип данных TIME – для хранения отметок времени, включающих поля HOUR (часы), MINUTE (минуты) и SECOND (секунды). Тип данных TIMESTAMP – для совместного хранения даты и времени. Параметр точность задает количество дробных десятичных знаков, определяющих точность сохранения значения в поле SECOND. Если этот параметр опускается, по умолчанию его значение для столбцов типа TIME принимается равным нулю (т.е. сохраняются целые секунды), тогда как для полей типа TIMESTAMP он принимается равным 6. Наличие ключевого слова WITH TIME ZONE определяет использование полей TIMEZONE HOUR и TIMEZONE MINUTE, тем самым задаются час и минуты сдвига зонального времени по отношению к универсальному координатному времени (Гринвичскому времени).
Данные типа INTERVAL используются для представления периодов времени.
Понятие домена
Домен – это набор допустимых значений для одного или нескольких атрибутов. Если в таблице базы данных или в нескольких таблицах присутствуют столбцы, обладающие одними и теми же характеристиками, можно описать тип такого столбца и его поведение через домен, а затем поставить в соответствие каждому из одинаковых столбцов имя домена. Домен определяет все потенциальные значения, которые могут быть присвоены атрибуту.
Стандарт SQL позволяет определить домен с помощью следующего оператора:
<определение_домена>::= CREATE DOMAIN имя_домена [AS] тип_данных [ DEFAULT значение] [ CHECK (допустимые_значения)]
Каждому создаваемому домену присваивается имя, тип данных, значение по умолчанию и набор допустимых значений. Следует отметить, что приведенный формат оператора является неполным. Теперь при создании таблицы можно указать вместо типа данных имя домена.
Удаление доменов из базы данных выполняется с помощью оператора:
DROP DOMAIN имя_домена [ RESTRICT | CASCADE]
В случае указания ключевого слова CASCADE любые столбцы таблиц, созданные с использованием удаляемого домена, будут автоматически изменены и описаны как содержащие данные того типа, который был указан в определении удаляемого домена.
Альтернативой доменам в среде SQL Server являются пользовательские типы данных.
Дальше >>
< Лекция 18 || Лекция 2: 1234
типов данных — База знаний MariaDB
Типы данных в MariaDB
Числовые типы данных
Обзор числовых типов данных
Обзор и использование числовых типов данных.ТИНЬИНТ
Крошечное целое, от -128 до 127 со знаком.БУЛЕВОЕ
Синоним для TINYINT(1).МАЛЕНЬКИЙ
Небольшое целое число от -32768 до 32767 со знаком.СРЕДНИЙ
Среднее целое число от -8388608 до 8388607 со знаком.ИНТ
Целое число от -2147483648 до 2147483647 со знаком.ЦЕЛОЕ
Синоним слова ИНТ.БОЛЬШОЙ
Большое целое число.ДЕСЯТИЧНОЕ
Упакованное «точное» число с фиксированной точкой.ДЕК, ЦИФРОВОЙ, ФИКСИРОВАННЫЙ
Синонимы для DECIMALНОМЕР
Синоним для DECIMAL в режиме Oracle.ПОПЛАВОК
Число одинарной точности с плавающей запятойДВОЙНОЙ
Число с плавающей запятой нормального размера (двойной точности)ДВОЙНАЯ ТОЧНОСТЬ
НАСТОЯЩАЯ и ДВОЙНАЯ ТОЧНОСТЬ — синонимы ДВОЙНОЙ.БИТ
Тип битового поля.Точность с плавающей запятой
Не все числа с плавающей запятой могут быть сохранены с точной точностьюINT1
Синоним TINYINT.INT2
Синоним слова МАЛЕНЬКИЙ.INT3
Синоним слова СРЕДНИЙ.INT4
Синоним ИНТ.INT8
Синоним БОЛЬШОЙ.
Строковые типы данных
Строковые литералы
Строки представляют собой последовательности символов и заключаются в кавычки.ДВОИЧНЫЙ
Двоичная байтовая строка фиксированной длины.BLOB
Большой двоичный объект размером до 65 535 байт.Типы данных BLOB и TEXT
Двоичные типы данных больших объектов и соответствующие типы TEXT.СИМВОЛ
Строка фиксированной длины.СИМВОЛЬНЫЙ БАЙТ
Псевдоним для BINARY.ЕНУМ
Перечисление или строковый объект, который может иметь одно значение, выбранное из списка значений.ИНЕТ4
Для хранения адресов IPv4.ИНЕТ6
Для хранения адресов IPv6.Тип данных JSON
Тип данных совместимости, который является псевдонимом для LONGTEXT.СРЕДНИЙБЛОБ
Средний двоичный большой объект размером до 16 777 215 байт.СРЕДНЕТЕКСТ
Столбец TEXT с максимальной длиной 16 777 215 символов.ДЛИННЫЙ КЛЯП
Длинный BLOB размером до 4 ГБ.ДЛИННЫЙ и ДЛИННЫЙ VARCHAR
LONG и LONG VARCHAR являются синонимами слова MEDIUMTEXT.ДЛИННЫЙ ТЕКСТ
Столбец TEXT с максимальной длиной 4 294 967 295 символов.РЯД
Тип данных для переменных хранимой процедуры.ТЕКСТ
Столбец TEXT с максимальной длиной 65 535 символов.МАЛЕНЬКИЙБЛОБ
Крошечный двоичный большой объект размером до 255 байт.ТИНИТЕКСТ
Столбец TEXT с максимальной длиной 255 символов.ВАРБИНАР
Двоичная байтовая строка переменной длины.ВАРЧАР
Строка переменной длины.УСТАНОВИТЬ тип данных
Набор или строковый объект, который может иметь 0 или более значений, выбранных из списка значений.Тип данных УУИД
Тип данных, предназначенный для хранения данных UUID.Требования к хранению типа данных
Требования к хранению для различных типов данных.Поддерживаемые наборы символов и сопоставления
MariaDB поддерживает следующие наборы символов и сопоставления.Наборы символов и сопоставления
Установка набора символов и сортировки для языка.
Типы данных даты и времени
ДАТА
Тип даты ГГГГ-ММ-ДД.ВРЕМЯ
Формат времени ЧЧ:ММ:СС.ссссссссДАТАВРЕМЯ
Комбинация даты и времени отображается в виде ГГГГ-ММ-ДД ЧЧ:ММ:СС.TIMESTAMP
ГГГГ-ММ-ДД ЧЧ:ММ:ССГОД Тип данных
Четырехзначный год.Будущие разработки для темпоральных типов
Мой текущий проект представляет собой приложение для прогнозирования с датами до 263…Как определить дату, чтобы импортировать пустую дату из файла CSV?
У меня есть файл CSV, содержащий, среди прочего, пару столбцов даты. …Какие типы данных поддерживает MariaDB
Я хотел бы знать, какие типы данных поддерживаются MariaDB. Я прошу с…
Другие типы данных Статьи
Типы геометрии
Поддерживаемые типы геометрии.AUTO_INCREMENT
Автоматическое увеличение.Требования к хранению типа данных
Требования к хранению для различных типов данных.AUTO_INCREMENT Часто задаваемые вопросы
Часто задаваемые вопросы об auto_increment.Значения NULL
NULL представляет неизвестное значение.
Контент, воспроизведенный на этом сайте, является собственностью его соответствующих владельцев, и этот контент не проверяется заранее MariaDB. Взгляды, информация и мнения выраженные в этом контенте, не обязательно представляют собой материалы MariaDB или любой другой стороны.
Как выбрать правильные типы данных
Поскольку объем данных типичной компании растет экспоненциально, оптимизация хранения данных становится еще более важной. Размер ваших данных влияет не только на размер и стоимость хранилища, но и на производительность запросов. Ключевым фактором в определении размера ваших данных является выбранный вами тип данных. В этом руководстве объясняется, как выбрать правильные типы данных.
Что такое типы данных?
Типы данных определяют, какой тип и диапазон данных могут храниться в заданном поле (или столбце).
Рассмотрим таблицу продаж со следующими образцами записей:
Каждое поле имеет свой собственный тип и диапазон значений:
Purchase_time : дата и время продажи sale_id : целочисленные значения увеличиваются на единицу для каждой новой продажи customer_id : целочисленные значения увеличиваются на единицу для каждого нового клиента валюта : текст всегда в 3-значном коде валюты amount_paid : денежные реальные числовые значения от 0,00 до 1000,00 долларов США. устройство : текст, где значения могут быть: «рабочий стол», «мобильное приложение» и «мобильный Интернет». has_discount : логическое значение, где записи могут быть TRUE
или FALSE
примечания : текст, где ввод может быть настолько длинным, насколько это разрешено в нашем инструменте ввода агента (250 символов)
Тип данных (целые числа, текст, действительные числа и т. д.) и возможные диапазоны значений (0 до 1000; любые 3 символа и т. д.) соответствуют конкретной базе данных типы данных .
Какие возможны типы данных?
В разных базах данных доступны разные типы данных, но большинство из них относятся к следующим категориям:
Числовые:
- целые числа : для чисел без дробей. Может быть со знаком (разрешены положительные и отрицательные значения) или без знака (разрешены только положительные числа). Обычно используется для полей идентификатора и количества чего-то
- decimal(x,y) : для чисел с дробями, требующими точной точности. Может быть со знаком (разрешены положительные и отрицательные значения) или без знака (разрешены только положительные числа). Обычно используется для денежных полей. Пользователь указывает допустимое количество значащих цифр в целом (x) и после запятой (y) в скобках
- float / double : для чисел с дробями, не требующих точной точности. Может быть со знаком (разрешены положительные и отрицательные значения) или без знака (разрешены только положительные числа). Обычно используется для всех действительных чисел, кроме денежных полей
Дата/время:
дата : для значений даты
- время : для значений времени
- timestamp / datetime : для значений даты и времени
Текст:
- символ(n) :для строк символов фиксированной длины, где значение в скобках определяет фиксированный размер каждой записи
- varchar(n) : для строк символов переменной длины, где значение в скобках определяет максимально допустимый размер каждой записи
Булево значение:
- логическое значение : для логических значений (истина/ложь). Некоторые базы данных (например, MySQL) не имеют логического типа данных и вместо этого преобразуют логические значения в целые числа (1 = ИСТИНА, 0 = ЛОЖЬ)
Большинство баз данных предлагают варианты размеров для каждого типа. Например, MySQL предоставляет следующие возможные целочисленные типы данных:
Как выбрать правильные типы данных
Основная стратегия выбора наилучшего типа данных состоит в том, чтобы выбрать наименьший тип данных, который соответствует типу данных, которые у вас есть, и который позволяет использовать все возможные значения ваших данных.
Например, customer_id
в нашем образце таблицы продаж — это целое число, начинающееся с 0. Сегодня у нашей вымышленной компании всего 15 000 клиентов. Используя таблицу целочисленных типов данных MySQL из предыдущего раздела, у нас может возникнуть соблазн выбрать SMALLINT
unsigned в качестве типа данных, так как это наименьший тип данных, который будет принимать наши текущие целочисленные значения от 0 до 15 000. Тем не менее, мы ожидаем получить 100 000 клиентов в течение следующих 6-12 месяцев. Когда мы превысим 65 535, SMALLINT
уже будет недостаточно. Таким образом, лучшим выбором будет MEDIUMINT
unsigned, который должен покрыть нас в течение следующих нескольких лет.
Вы можете позволить своей базе данных выбирать типы данных для вас при создании таблицы с образцами записей. Однако это редко дает вам лучший выбор типа данных. Например, разрешение MySQL выбирать типы данных для таблицы продаж с примерами значений, показанными ранее, приводит к нескольким проблемам.
Проблемы, с которыми мы сталкиваемся с автоматически выбранными типами данных MySQL:
- неправильный тип данных : вы не сможете использовать поле так, как вы ожидаете. Например, наличие
Purchase_time
в виде строки, а не типа данных времени означает, что вы не сможете выполнять операции со временем (например, вычислять, сколько времени прошло с момента покупки) в поле .