Типы данных в MySQL | Cloud4Y
автор:
Олег
опубликовано:
10.10.2022
Когда вы создаёте таблицы в MySQL, приходится указывать тип данных для каждого столбца. Это необходимо для того, чтобы определить, какие именно данные можно туда добавлять, каким образом они будут обрабатываться и сколько места займут. MySQL поддерживает типы данных SQL нескольких видов: числовые, типы даты и времени, строковые (символьные и байтовые) типы, пространственные типы и JSON типы данных. В статье подробно разберём, какие типы данных есть в MySQL.
Числовые типы
MySQL поддерживает все базовые числовые типы данных SQL. Сюда входят как точные числовые типы данных, так и приблизительные, включая целые, с фиксированной запятой и с плавающей запятой.
Числовые типы |
Описание |
TINYINT |
Крошечное целое число |
SMALLINT |
Маленькое целое |
MEDIUMINT |
Среднее по размеру целое |
INT |
Стандартное целое |
BIGINT |
Крупное целое число |
DECIMAL |
Число, имеющее фиксированную точку |
FLOAT |
Число одинарной точности с плавающей запятой |
DOUBLE |
Число двойной точности с плавающей запятой |
BIT |
Битовый тип |
Типы данных даты и времени
MySQL позволяет использовать типы для даты и времени, а также сочетания даты и времени.
Типы даты и времени |
Описание |
DATE |
Дата в формате CCYY-MM-DD |
TIME |
Время в формате hh:mm:ss |
DATETIME |
Дата и время в формате CCYY-MM-DD hh:mm:ss |
TIMESTAMP |
Метка времени CCYY-MM-DD hh:mm:ss |
YEAR |
Обозначение года в формате CCYY или YY |
Аренда облачного сервера для разработки, хостинга, обученияПодробнее
Строковые типы данных в MySQL
В MySQL строка может содержать любые данные, начиная с обычного текста и заканчивая двоичными значениями, например изображениями или файлами. Строки можно сравнивать и искать на основе сопоставления с образцом с помощью оператора LIKE, регулярного выражения и полнотекстового поиска.
Типы строк |
Описание |
CHAR |
Недвоичная (символьная) строка фиксированной длины. |
VARCHAR |
Недвоичная строка переменной длины |
BINARY |
Двоичная строка фиксированной длины |
VARBINARY |
Двоичная строка переменной длины |
TINYBLOB |
Очень маленький BLOB (бинарный большой объект) |
BLOB |
Маленький BLOB |
MEDIUMBLOB |
BLOB среднего размера |
LONGBLOB |
Большой BLOB |
TINYTEXT |
Очень маленькая недвоичная строка |
TEXT |
Небольшая недвоичная строка |
MEDIUMTEXT |
Недвоичная строка среднего размера |
LONGTEXT |
Большая недвоичная строка |
ENUM |
Перечисление, где каждому значению столбца может быть назначен один член перечисления |
SET |
Множество, где каждому значению столбца может быть назначено ноль или более членов |
Пространственные типы данных
MySQL поддерживает многочисленные типы пространственных данных, содержащих различные виды геометрических и географических значений, как показано в следующей таблице:
Типы пространственных данных |
Описание |
GEOMETRY |
Пространственное значение любого типа |
POINT |
Точка (пара координат XY) |
LINESTRING |
Кривая (одно или несколько POINT-значений) |
POLYGON |
Многоугольник |
GEOMETRYCOLLECTION |
Коллекция значений GEOMETRY |
MULTILINESTRING |
Коллекция значений LINESTRING |
MULTIPOINT |
Коллекция значений POINT |
MULTIPOLYGON |
Коллекция значений POLYGON |
Тип данных JSON
Начиная с версии 5. 7.8, MySQL поддерживает собственный тип данных JSON, что позволяет более эффективно хранить и управлять документами JSON. Также это обеспечивает автоматическую проверку документов JSON и оптимальный формат хранения.
Теперь вы знаете, какой тип данных выбирать для своих таблиц.
database as a service
Полезный материал?
автор:
Олег
опубликовано:
10.10.2022
Читайте нас:
Предыдущая статья Следующая статья
Что еще почитать:
25 августа 2022 Как создавать таблицы в MySQL 15 августа 2022 MySQL — как сбросить пароль root 11 марта 2022 Как установить MySQL на Windows
Последние статьи
Типы данных Microsoft SQL Server
Полный список всех типов данных в Microsoft SQL Server
Заголовки:
- Источники
- Data Type Precedence (Transact-SQL)
- Data Type Synonyms (Transact-SQL)
- Precision, Scale, and Length (Transact-SQL)
- SQL Server, SSIS and Biml Data Types
- SQL Server Data Types Length
- SQL Server to MySQL, Oracle, PostgreSQL and SQLite Data Type Mapping
Источники
- MSDN Типы данных
- MSDN Приоритет типов данных
- MSDN Синонимы типов данных
- MSDN Точность, масштаб и длина
- Integration Services Data Types
- DbType Enumeration
- SQL Server, SSIS and Biml Data Types
- SQL Server Integration Services, Data Type Mapping
Приоритет типов данных (Transact-SQL)
Если оператор связывает два выражения различных типов данных, то по правилам приоритета типов данных определяется, какой тип данных имеет меньший приоритет и будет преобразован в тип данных с большим приоритетом. Если неявное преобразование не поддерживается, возвращается ошибка. Если оба операнда выражения имеют одинаковый тип данных, результат операции будет иметь тот же тип данных.
В SQL Server используется следующий приоритет типов данных:
- sql_variant
- xml
- datetimeoffset
- datetime2
- datetime
- smalldatetime
- date
- time
- float
- real
- decimal
- money
- smallmoney
- bigint
- int
- smallint
- tinyint
- bit
- ntext
- text
- image
- timestamp
- uniqueidentifier
- nvarchar (including nvarchar(max) )
- nchar
- varchar (including varchar(max) )
- char
- varbinary (including varbinary(max) )
- binary (lowest)
Синонимы типов данных (Transact-SQL)
Синонимы типов данных включены в SQL Server ради совместимости со спецификацией ISO. Эти синонимы и соответствующие им системные типы данных SQL Server приведены в следующей таблице.
Синоним | Системный тип данных SQL Server |
---|---|
Binary varying | varbinary |
char varying | varchar |
character | char |
character | char(1) |
character(n) | char(n) |
character varying(n) | varchar(n) |
Dec | decimal |
Double precision | float |
float[(n)] for n = 1-7 | real |
float[(n)] for n = 8-15 | float |
integer | int |
national character(n) | nchar(n) |
national char(n) | nchar(n) |
national character varying(n) | nvarchar(n) |
national char varying(n) | nvarchar(n) |
national text | ntext |
timestamp | rowversion |
Синонимы типов данных можно использовать вместо соответствующих базовых типов данных в инструкциях языка определения данных (data definition language, DDL), таких как CREATE TABLE, CREATE PROCEDURE или DECLARE @variable. Однако после создания объекта синонимы утрачивают силу. При создании объекта ему назначается базовый тип данных, связанный с синонимом. Никаких признаков того, что в инструкции, создавшей объект, был указан синоним, не остается.
Всем объектам, производным от первоначального объекта, таким, как столбцы результирующего набора или выражения, назначается базовый тип данных. Все последующие вызовы функций работы с метаданными, выполняемые для первоначального объекта и любых производных от него объектов, сообщают базовый тип данных, а не синоним. Это имеет место при работе с метаданными, например в процедуре sp_help и других системных хранимых процедурах, представлениях информационных схем и различных API-операции над метаданными, сообщающих типы данных столбцов таблицы или результирующего набора.
Точность, масштаб и длина (Transact-SQL)
Точность представляет собой количество цифр в числе. Масштаб представляет собой количество цифр справа от десятичной запятой в числе. Например: число 123,45 имеет точность 5 и масштаб 2.
В среде SQL Server максимальная точность типов данных numeric и decimal по умолчанию составляет 38 разрядов. В более ранних версиях SQL Server максимум по умолчанию составляет 28.
Длиной для числовых типов данных является количество байт, используемых для хранения числа. Длина символьной строки или данных в Юникоде равняется количеству символов. Длина для типов данных binary, varbinary и image равна количеству байт. Например, тип данных int может содержать 10 разрядов, храниться в 4 байтах и не должен содержать десятичный разделитель. Тип данных int имеет точность 10, длину 4 и масштаб 0.
При сцеплении двух выражений типа char, varchar, binary или varbinary длина результирующего выражения является суммой длин двух исходных выражений, но не превышает 8 000 символов.
При сцеплении двух выражений типа nchar или nvarchar длина результирующего выражения является суммой длин двух исходных выражений, но не превышает 4 000 символов.
Если два выражения одного и того же типа данных, но разной длины, сравниваются с помощью предложения UNION, EXCEPT или INTERSECT, длина результата будет равняться длине максимального из двух выражений.
Точность и масштаб числовых типов данных, кроме decimal, фиксированы. Если арифметический оператор объединяет два выражения одного и того же типа, результат будет иметь тот же тип данных с точностью и масштабом, определенными для этого типа. Если оператор объединяет два выражения с различными числовыми типами данных, тип данных результата будет определяться правилами старшинства типов данных. Результат имеет точность и масштаб, определенные для этого типа данных.
Следующая таблица определяет, как вычисляется точность и масштаб результата, если результат операции имеет тип decimal. Результат имеет тип decimal, если одно из следующих утверждений является истиной:
- Оба выражения имеют тип decimal.
- Одно выражение имеет тип decimal, а другое имеет тип данных со старшинством меньше, чем decimal.
Выражения операндов обозначены как выражение e1 с точностью p1 и масштабом s1 и выражение e2 с точностью p2 и масштабом s2. Точность и масштаб для любого выражения, отличного от decimal, соответствуют типу данных этого выражения
Операция | Точность результата | Масштаб результата * |
---|---|---|
e1 + e2 | max(s1, s2) + max(p1-s1, p2-s2) + 1 | max(s1, s2) |
e1 — e2 | max(s1, s2) + max(p1-s1, p2-s2) + 1 | max(s1, s2) |
e1 * e2 | p1 + p2 + 1 | s1 + s2 |
e1 / e2 | p1 — s1 + s2 + max(6, s1 + p2 + 1) | max(6, s1 + p2 + 1) |
e1 { UNION | EXCEPT | INTERSECT } e2 | max(s1, s2) + max(p1-s1, p2-s2) | max(s1, s2) |
e1 % e2 | min(p1-s1, p2 -s2) + max( s1,s2 ) | max(s1, s2) |
* Точность и масштаб результата имеют абсолютный максимум, равный 38. Если значение точности превышает 38, то соответствующее значение масштаба уменьшается, чтобы по возможности предотвратить усечение целой части результата.
SQL Server, SSIS и Biml типы данных
Таблица ниже является упрощенной схемой связи между типами данныхSQL Server, SSIS и Biml. Таблица не включает все возможные комбинации и все виды типов данных, но полезна как быстрая ссылка при разработке и изучении Biml.
SQL Server | SSIS Variables | SSIS Pipeline Buffer | OLE DB | ADO.NET | Biml |
---|---|---|---|---|---|
bigint | Int64 | DT_I8 | LARGE_INTEGER | Int64 | Int64 |
binary | Object | DT_BYTES | — | Binary | Binary |
bit | Boolean | DT_BOOL | VARIANT_BOOL | Boolean | Boolean |
char | String | DT_STR | VARCHAR | StringFixedLength | AnsiStringFixedLength |
date | Object | DT_DBDATE | DBDATE | Date | Date |
datetime | DateTime | DT_DBTIMESTAMP | DATE | DateTime | DateTime |
datetime2 | Object | DT_DBTIMESTAMP2 | DBTIME2 | DateTime2 | DateTime2 |
datetimeoffset | Object | DT_DBTIMESTAMPOFFSET | DBTIMESTAMPOFFSET | DateTimeOffset | DateTimeOffset |
decimal | Decimal | DT_NUMERIC | NUMERIC | Decimal | Decimal |
float | Double | DT_R8 | FLOAT | Double | Double |
geography | — | DT_IMAGE | — | Object | Object |
geometry | — | DT_IMAGE | — | Object | Object |
hierarchyid | — | DT_BYTES | — | Object | Object |
image (*) | Object | DT_IMAGE | — | Binary | Binary |
int | Int32 | DT_I4 | LONG | Int32 | Int32 |
money | Object | DT_CY, DT_NUMERIC | CURRENCY | Currency | Currency |
nchar | String | DT_WSTR | NVARCHAR | StringFixedLength | StringFixedLength |
ntext (*) | String | DT_NTEXT | — | String | String |
numeric | Decimal | DT_NUMERIC | NUMERIC | Decimal | Decimal |
nvarchar | String | DT_WSTR | NVARCHAR | String | String |
nvarchar(max) | Object | DT_NTEXT | — | — | String |
real | Single | DT_R4 | FLOAT, DOUBLE | Single | Single |
rowversion | Object | DT_BYTES | — | Binary | Binary |
smalldatetime | DateTime | DT_DBTIMESTAMP | DATE | DateTime | DateTime |
smallint | Int16 | DT_I2 | SHORT | Int16 | Int16 |
smallmoney | Object | DT_CY, DT_NUMERIC | CURRENCY | Currency | Currency |
sql_variant | Object | DT_WSTR, DT_NTEXT | — | Object | Object |
table | Object | — | — | — | — |
text (*) | Object | DT_TEXT | — | — | AnsiString |
time | Object | DT_DBTIME2 | DBTIME2 | Time | Time |
timestamp (*) | Object | DT_BYTES | — | Binary | Binary |
tinyint | Byte | DT_UI1 | BYTE | Byte | Byte |
uniqueidentifier | String, Object | DT_GUID | GUID | Guid | Guid |
varbinary | Object | DT_BYTES | — | Binary | Binary |
varbinary(max) | Object | DT_IMAGE | — | Binary | Binary |
varchar | String | DT_STR | VARCHAR | String | AnsiString |
varchar(max) | Object | DT_TEXT | — | — | AnsiString |
xml | Object | DT_NTEXT | — | — | Xml |
(* Данные типы данных будут удалены в будущих версиях SQL Server. 38 -1 (* Данные типы данных будут удалены в будущих версиях SQL Server. Избегайте использование этих типов данных в новых проектах и, по возможности, измените их в текущих проектах.) MySQL был создан в результате внутреннего проекта компании, возглавляемого сотрудниками шведской фирмы TcXDataKonsult. Их проект, получивший название MySQL, был впервые выпущен для широкой публики в конце 1996 года. Программное обеспечение оказалось настолько популярным, что в 2001 году они основали компанию, полностью основанную на конкретных предложениях продуктов и услуг MySQL, назвав ее MySQL AB. MySQL — это сервер реляционных баз данных, который с каждым выпуском приближается к стандарту SQL-92, а это означает, что вы не столкнетесь с большим количеством сюрпризов, если вы знакомы с другим продуктом базы данных. MySQL может похвастаться большим списком известных пользователей, таких как craigslist: www. craigslist.org, Yahoo! Финансы: http://www.yahoo.com, Сайт часто задаваемых вопросов по MySQL бесплатно предоставляет полезные учебные материалы по MySQL в форме реальных « Вопросы и ответы », подготовленные экспертами простыми словами. Учебный материал основан на часто задаваемых вопросах (часто задаваемые вопросы), и каждый часто задаваемый вопрос разбит на соответствующие категории. также более практические вопросы и ответы доступны для опытных разработчиков баз данных.Однако прилагаются усилия, чтобы использовать часто задаваемые вопросы с простыми примерами, которые помогают изучить MySQL, мощную и самую популярную систему управления реляционными базами данных (RDBMS) с открытым исходным кодом. Часто задаваемые вопросы по MySQL продолжают распространять знания экспертов по MySQL в сообществе разработчиков баз данных. Вы можете просмотреть недавно добавленные часто задаваемые вопросы (часто задаваемые вопросы) или по категориям, щелкнув доступные ссылки на категории часто задаваемых вопросов в левом верхнем углу страницы. Также вы можете найти нужный часто задаваемые вопросы или ответить через «Что вы хотите спросить сегодня?» область поиска. Кроме того, если вы не найдете свой точный ответ / часто задаваемые вопросы даже через поиск, не стесняйтесь задавать нам свой вопрос / часто задаваемые вопросы. Ответ на размещенный вопрос / часто задаваемые вопросы отвечает как можно раньше. Итак, приступайте к поиску ответов на свои вопросы! Удобные дампы баз данных: Обычно используются следующие дампы таблиц данных. Они облегчают вашу работу. Просто нажмите, чтобы загрузить нужный дамп. После загрузки разархивируйте и запустите дамп в свою базу данных. Таблица данных будет готова к использованию. Этот дамп содержит названия стран мира, а также коды названий стран и телефонные коды стран соответственно. Штаты США. Города США. В SQL Server логический тип данных может быть создан путем сохранения типа данных BIT. Хотя это числовой тип данных, он может принимать только значения 0, 1 или NULL. Следовательно, мы легко можем присвоить значения FALSE 0 и значения TRUE 1. Это обеспечит логическую природу типа данных. Что касается хранилища, если в таблице присутствует менее 9 столбцов битовых данных, они сохраняются как 1 байт. А для столбцов от 9 до 16 BIT их потребление составляет 2 байта, и так далее. В этой статье мы расскажем, как добавить логический тип данных, т. е. BIT, в существующую таблицу в SQL SERVER. Предположим, что имеется база данных «GEEKSFORGEEKS» и доступна таблица «Авторы» со следующими данными. Запрос: Вывод: Добавим в таблицу «Авторы» тип данных BIT. Тип данных Bit полезен для представления логической природы True (1) или False (0), и они являются единственными допустимыми значениями для типа данных BIT. Поскольку в таблице уже доступно несколько строк, мы можем добавить новый столбец «isActiveAuthor» только как шаблон NULL. После этого мы можем обновить данные. После добавления столбца Запрос: Вывод: Таким образом, когда столбец типа данных BIT добавляется в существующую таблицу, его значение будет заполнено значениями «NULL». Теперь давайте попробуем обновить столбец с условием, что если «NumberOfPosts» > 5, установите для «isActiveAuthor» значение 1 или 0. Вывод: Поскольку столбец BIT поддерживает только 0 или 1 в качестве значений, мы заполнили его, как указано выше. Давайте попробуем обновить значение, отличное от 0 или 1 Вывод: Причина обновленного значения 1 в 3-й строке: Хотя дается обновление для получения значения 2, из-за типа данных «BIT» для столбца «isActiveAuthor» его значение преобразуется только в 1, поскольку тип данных «BIT» поддерживает только 0 или 1.Exact Numerics smallmoney 4 -214 748.3648 to 214 748.3647 Exact Numerics money 8 -922 337 203 685 477.5808 to 922 337 203 685 477.5807 Approximate Numerics float 1-24
25-537
154
8-3.40E+38 to -1.18E-38, 0 and 1.18E-38 to 3.40E+38
-1.79E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79E+308Date and Time date 3 0001-01-01 through 9999-12-31
January 1, 1 CE through December 31, 9999 CEDate and Time smalldatetime 4 1900-01-01 through 2079-06-06
January 1, 1900 through June 6, 2079
00:00:00 through 23:59:59Date and Time time 8-11
12-13
14-163
4
500:00:00.0000000 through 23:59:59.9999999 Date and Time datetime2 1-2
3-4
5-76
7
80001-01-01 through 9999-12-31
January 1, 1 CE through December 31, 9999 CE
00:00:00 through 23:59:59. 31 — 1)n + 2 Other Data Types cursor Other Data Types sql_variant max 8016 Other Data Types hierarchyid max 892 Other Data Types rowversion 8 Other Data Types timestamp(*) Other Data Types uniqueidentifier 16 Other Data Types xml max 2Gb Other Data Types table Spatial Data Types geometry Spatial Data Types geography SQL Server to MySQL, Oracle, PostgreSQL, SQLite Data Type Mapping
General Type Type MySQL Oracle PostgreSQL SQLite Exact Numerics bit TINYINT(1) NUMBER(3) BOOLEAN INTEGER Exact Numerics tinyint TINYINT(signed) NUMBER(3) SMALLINT INTEGER Exact Numerics smallint SMALLINT NUMBER(5) SMALLINT INTEGER Exact Numerics int MEDIUMINT, INT NUMBER(10) INT INTEGER Exact Numerics bigint BIGINT NUMBER(19) BIGINT INTEGER Exact Numerics decimal DECIMAL NUMBER(p[,s]) DECIMAL(p,s) REAL Exact Numerics smallmoney DOUBLE NUMBER(10,4) MONEY REAL Exact Numerics money DOUBLE NUMBER(19,4) MONEY REAL Approximate Numerics float FLOAT
DOUBLE; REALFLOAT(49) DOUBLE PRECISION REAL Date and Time date DATE DATE TEXT Date and Time smalldatetime TIMESTAMP DATE TIMESTAMP(0) TEXT Date and Time time TIME TIME TEXT Date and Time datetime2 DDATETIME TIMESTAMP TEXT Date and Time datetime DATE TIMESTAMP(3) TEXT Date and time datetimeoffset TIMESTAMP
with time zoneTEXT Caracter Strings char CHAR CHAR CHAR TEXT Caracter Strings varchar VARCHAR VARCHAR2 VARCHAR TEXT Caracter Strings varchar(max) VARCHAR2 TEXT TEXT Caracter Strings nchar NCHAR NCHAR TEXT Caracter Strings nvarchar NCHAR VARCHAR TEXT Caracter Strings nvarchar(max) VARCHAR
TINYTEXT
TEXT(M)
MEDIUMTEXT
LONGTEXTNCHAR TEXT TEXT Caracter Strings ntext(*) LONG TEXT TEXT Caracter Strings text(*) LONG TEXT TEXT Binary Strings image(*) LONGBLOB LONG RAW BYTEA BLOB Binary Strings binary BINARY RAW BYTEA BLOB Binary Strings varbinary RAW BYTEA BLOB Binary Strings varbinary(max) VARBINARY(M)
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOBRAW BYTEA BLOB Other Data Types cursor TEXT Other Data Types sql_variant BLOB TEXT Other Data Types hierarchyid TEXT Other Data Types rowversion BYTEA TEXT Other Data Types timestamp(*) RAW BYTEA TEXT Other Data Types uniqueidentifier CHAR CHAR(36) CHAR(16) TEXT Other Data Types xml XML TEXT Other Data Types table — Spatial Data Types geometry VARCHAR TEXT Spatial Data Types geography VARCHAR TEXT Часто задаваемые вопросы о MySQL | Изучите базу данных MySQL с помощью реальных вопросов и ответов
Сервер баз данных
Википедия: http://www.wikipedia.org и другие.
Нажмите, чтобы загрузить
Нажмите, чтобы скачать
Нажмите, чтобы скачать Как добавить столбец логического типа данных в существующую таблицу в SQL?
ИСПОЛЬЗУЙТЕ GEEKSFORGEEKS
ВЫБЕРИТЕ * ОТ авторов;
-- Добавить столбец с именем "isActiveAuthor"
с типом данных BIT для таблицы "Авторы"
ALTER TABLE Authors ADD isActiveAuthor BIT;
SELECT * FROM Authors;
-- Предположим, что если «NumberOfPosts»
больше 5, автор достаточно активен, чтобы писать статьи
-- Следовательно, для этого условия установите "isActiveAuthor"
столбец со значением 1
ОБНОВЛЕНИЕ Авторы SET isActiveAuthor = 1 WHERE NumberOfPosts > 5;
-- С другой стороны, если "NumberOfPosts"
меньше и равно 5,
-- автор неактивен в последние дни
и, следовательно, установите для столбца «isActiveAuthor» значение 0
ОБНОВЛЕНИЕ Авторы SET isActiveAuthor = 0 WHERE NumberOfPosts <= 5;
ВЫБЕРИТЕ * ОТ авторов;
-- Попытка обновить "isActiveAuthor"
со значением 2, хотя ошибок нет
производится, выход отличается
ОБНОВЛЕНИЕ Авторы SET isActiveAuthor =
2 ГДЕ Количество сообщений = 5;
ВЫБЕРИТЕ * ОТ авторов;