Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
числовое значение
MySQL изчисловое Значение типа данных можно грубо разделить на две категории: одна из них — это слова. число, другой один — число с плавающей запятой или десятичное число.
Для каждой из этих категорий доступно множество различных подтипов, каждый из которых поддерживает разные размеры данных. MySQL Разрешите уточнить числовое Является ли значение в поле значения положительным или отрицательным (UNSIGNED) или используется заполненное нулями (ZEROFILL).
INT
В MySQL поддерживаются 5 основных целочисленных типов: TINYINT, SMALLINT, MEDIUMINT, INT и BIGINT. Эти типы во многом одинаковы, различаются только размеры хранимых в них значений.
MySQL расширяет стандарт SQL в виде дополнительного индикатора ширины дисплея (например, INT(6), 6 — это индикатор ширины. Этот индикатор ширины не влияет на размер поля хранения столбца int. То есть, если оно превышает 6 цифр, он не будет автоматически перехватывать его и будет хранить только его. будет сохранен байт, превышающий сам себя. Диапазон хранения будет перехвачен; функция индикатора ширины здесь заключается в том, имеет ли поле нулевое заполнение. Если да, то часть, которая не соответствует 6-значному значению, будет заполнена 0). , чтобы при получении значения из базы данных это значение можно было расширить до указанной длины. Например, указание того, что поле имеет тип INT(6), гарантирует, что значения, содержащие менее шести цифр, автоматически дополняются пробелами при извлечении из базы данных. Обратите внимание, что использование индикатора ширины не влияет на размер поля или диапазон значений, которые оно может хранить.
Если нам нужно сохранить число в поле, которое превышает разрешенный диапазон, MySQL усекает его в соответствии с ближайшим к нему концом разрешенного диапазона перед сохранением. Еще одна особенность заключается в том, что MySQL автоматически изменит недопустимое значение на 0 перед вставкой его в таблицу.
без знака и нулевое заполнение
UNSIGNED Условия Поле модификатора хранит только положительные значения, то есть беззнаковые, тогда как поле mysql по умолчанию подписано. потому что что не нужно сохранять положительные и отрицательные знаки чисел, а можно сэкономить один «бит» места при хранении (т. е. удвоить). Это увеличивает диапазон значений, которые может принимать это поле. Обратите внимание, что за этим модификатором сразу должно следовать число существующего. значениетип сзади;
Модификатор ZEROFILL указывает, что для дополнения выходного значения можно использовать 0 (не пробел). Используйте этот модификатор, чтобы запретить MySQL
В базе данных хранятся отрицательные значения. Если для столбца установлено нулевое заполнение, он автоматически становится беззнаковым. Это значение следует использовать вместе с индикаторами ширины полей int, tinyint, smallint, Midiumint и других; XXint(M), если нет нулевого заполнения, индикатор ширины этого M не имеет смысла (обратите внимание, что при тестировании ведущий 0. , это все еще Удалите черное окно и протестируйте ;)
Почему значения, хранящиеся в MySQL, делятся на знаковые и беззнаковые? Потому что один байт занимает 8 бит, то есть 1 бит имеет две возможности: 0 и 1, а 8 бит — это 2^8 =;
256 возможностей, то есть 0~255; но если он подписан, вам придется использовать 1 бит для хранения отрицательного знака. В исходных 8 битах осталось только 7 бит, 2^7 =.
128, то есть -128~127 (положительная часть содержит 0);
Типы FLOAT, DOUBLE и DECIMAL.
MySQL Поддерживаются три типа с плавающей запятой: Типы FLOAT, DOUBLE и DECIMAL.。FLOAT числовое значениетиписпользовать используется для представления числового числа с плавающей запятой одинарной точности. значение,и DOUBLE числовое значениетиписпользовать представляет собой числовое число с плавающей запятой двойной точности. значение。
ицелое Как и числа, эти типы также имеют дополнительные параметры: один индикатор ширины отображения и один индикатор десятичной точки (обязателен индикатор s, иначе результат не будет найден, а индикатор ширины и XXintтип отличается от индикатора ширины, существуют практичные ограничения здесь по ширине). Например, заявление FLOAT(7,3) Указывает, что отображаемое значение не будет превышать 7 цифры (включая десятичные знаки) с десятичной запятой после 3 цифры. Для значений с большим количеством цифр после десятичной точки, чем разрешенный диапазон, MySQL Оно автоматически округляется до ближайшего значения, а затем вставляется.
DECIMAL
Типиспользовать данные используются в расчетах, требующих очень высокой точности.,Этот тип позволяет указать точность и метод подсчета числового значения в качестве параметра выбора. Точность существования здесь относится к общему количеству значащих цифр, сохраненных для этого значения.,Метод подсчета представляет собой количество цифр после десятичной точки. Например, заявление
DECIMAL(7,3) указывает, что сохраненное значение не будет превышать 7 цифр и будет иметь не более 3 цифр после десятичной точки.
FLOAT Типы, которые выше по длине, такие как float(10,2)и decimal(10,2) также вставляет единицу, соответствующую ширине числового числа (10,2). значение,float Будут некоторые расхождения в последней десятичной точке;
UNSIGNED и ZEROFILL Модификаторы также могут быть FLOAT、DOUBLE и DECIMAL Используемый тип данных. И эффект тот же, что и INT Типы данных те же.
О флаотидабле
Здесь я предлагаю вам просто забыть, что MySQL имеет тип данных double. А почему? Просто оставь это в покое
тип строки
MySQL предоставил 8 основной совет строки,Можетхранилищеварьируется от простогоодин Символ в огромный текстовый блок или двоичный файлнитьданные。
BINARY
BINARY — это не функция, а оператор преобразования типов. Он используется для того, чтобы строка, следующая за ней, была двоичной. Понятно, что сравнения строк чувствительны к регистру.
ВЫБЕРИТЕ ДВОИЧНЫЙ «ABCD» = «abcd» как COM1, «ABCD» = «abcd» как COM2 — выход COM1 равен 0, выход COM2 равен 1;
CHAR и VARCHAR тип
CHAR типиспользовать — это строка фиксированной длины, которая должна быть определена с помощью модификатора размера «существующийиспользовать» в круглых скобках. Этот модификатор размера варьируется от 0-255. Значения, превышающие указанную длину, будут обрезаны, а значения, меньшие указанной длины, будут дополнены пробелами.
CHAR тип Можетделатьиспользовать BINARY модификатор. При использовании в операциях сравнения этот модификатор вызывает CHAR Участвуйте в операциях в двоичной форме, а не традиционным способом с учетом регистра.
CHAR Один вариант типа VARCHAR тип. Это тип переменной длины. строки, а также должны существовать в одном диапазоне 0-255 индикатор между.
CHAR и VARCHGAR Разница в том, MYSQL Как база данных обрабатывает этот индикатор: CHAR
Считайте этот размер размером значения и заполняйте его пробелами, если длина недостаточна. в то время как ВАРЧАР
тип Считайте его максимальным значением и используйте толькоиспользоватьхранилищенитьфактическая требуемая длина(Увеличиватьодинприходят лишние байтыхранилищенитьдлина сама по себе)Приходитьхранилищеценить。Так короче длины индикатора VARCHAR
тип не будет дополняться пробелами, но значения длиннее индикатора все равно будут усекаться.
потому что VARCHAR Тип может динамически изменять длину значения хранилища в зависимости от фактического содержимого, поэтому используйте его, когда существование не может определить, сколько символов требуется для поля. VARCHAR тип может значительно сэкономить дисковое пространство и повысить эффективность хранилища. Но если вы точно знаете длину строки, например, от 50 до 55, то используйте CHAR потому что CHAR Благодаря характеристикам фиксированной длины тип имеет более высокую производительность, чем VARCHAR;
VARCHAR типсуществоватьделатьиспользовать BINARY Модификатор тот же, что и CHAR типточно такой же。
TEXT и BLOB тип
Для требований к длинным полям, превышающим 255 В этом случае MySQL активирует TEXT и BLOB. Два типа шрифтов. В зависимости от размера данных хранилища все они имеют разные субтитры. Эти большие данные состоят из текстовых блоков или двоичных данных, таких как изображения и звуковые файлы.
TEXT и BLOB типсуществовать, классификация и сравнение существуют, сохраняя различие. BLOB-объект тип чувствителен к регистру, тогда как TEXT Не чувствителен к регистру. Модификаторы размера не используются для различных BLOB и TEXT Тип сына. Значения, превышающие максимальный диапазон, поддерживаемый указанным типом, будут автоматически усечены.
Тип времени
существовать Дата обработкии Тип времениизценитьчас,MySQL с 5 Есть разные данные на выбор.
DATE、TIME и YEAR тип
MySQL использовать DATE и YEAR типхранилище простое значение даты, которое позволяет использовать TIME
типхранилищечас间ценить。Этитип Можетописан какнитьили без разделителяцелое последовательность чисел. Если описание представляет собой строку, DATE Значение типа должно быть таким, чтобы использование разделялось дефисом в качестве разделителя, а TIME
Значение типа должно быть таким, чтобы использование разделялось двоеточием в качестве разделителя.
Следует отметить, что разделителя двоеточия нет. TIME тип значения, будет MySQL Понимать как продолжительность, а не временную метку.
MySQL Также двузначное значение года даты или SQL Предложение YEAR тип Введите два числа для максимальной интерпретации. потому что чтовсе YEAR
типизценитьдолжениспользовать 4 цифровое хранилище. MySQL пытаюсь 2 годы цифр, преобразованных в 4 числовое значение. вставить 00-69 Значения внутри диапазона преобразуются в
2000-2069 в пределах диапазона. Пучок 70-99 Значения внутри диапазона преобразуются в 1970-1979 в пределах. если MySQL
Автоматически преобразованное значение не соответствует нашим потребностям. Введите год из 4 цифр.
DATETIME и TIMESTAMP тип
В дополнение к типу данных даты и времени MySQL также поддерживает DATETIME и TIMESTAMP.
Два смешанных типа. Они могут обрабатывать дату и время как одно значение. Оба типа обычно используют автоматически, хранилище содержит временную метку текущей даты и времени и может существовать, если необходимо выполнить большое количество базовых операций. транзакцию данных и необходимо установить одну отладку и исполь зовать контрольный журнал, программа должна сыграть хорошую роль.
если мы правы TIMESTAMP Полю типа явно не присвоено значение или оно присвоено null ценить. MySQL Автоматически заполнит его текущей датой и временем системы.
Тип соединения
MySQL Также Поддержка Два вида составных данныхтип ENUM и SET, они расширяются SQL спецификация. Хотя технически эти типсуществовать являются типом. строки, но могут рассматриваться как другой тип данных. один ENUM тип позволяет получить только одно значение из одной коллекции; SET тип позволяет получить любое количество значений из одной коллекции.
ENUM тип
ENUM типпотому чторазрешено толькосуществовать Получено из коллекцииодинценить,Вроде как единственный вариант. существования облегчает понимание при работе с взаимоисключающими данными,Например, пол человека. ЕНУМ
тип Поле Можетот Получено из коллекцииодинценитьилиделатьиспользовать null значение, ввод, отличный от этого, приведет к MySQL
Вставьте пустую строку в это поле. Кроме того, если регистр вставленного значения не соответствует регистру значения в коллекции, MySQL Будет автоматическиделатьиспользоватьвставлятьценитьиз大小写转换成и集合中大小写一致изценить。
ENUM типсуществовать внутри системы хранилище может быть числом, а из 1 Начните индексацию с использования номеров. один ENUM тип может содержать до 65536 элементы, один из которых MySQL Зарезервировано, использовать в хранилище сообщение об ошибке, это значение ошибкииспользовать индекс 0 Или пустое строковое представление.
MySQL думать ENUM Значения, появляющиеся в коллекции типов, являются допустимыми входными данными, любой другой ввод не будет выполнен. Это означает, что при поиске индекса, содержащего пустую строку или соответствующее число, 0 строке вы можете легко найти местоположение записи об ошибке.
SET тип
SET типи ENUM тип похож, но не тот же самый. НАБОР тип может принимать любое количество значений из предопределённой коллекции. и с ENUM тип такой же, как и любая попытка существования SET Вставка непредопределенных значений в поле типа приведет к MySQL Вставьте пустую строку. Если вы вставите запись как с допустимыми, так и с незаконными элементами, MySQL Легальные элементы будут сохранены, а незаконные удалены.
один SET тип может содержать до 64 элемент элемента. Дублирующиеся элементы также удаляются, поэтому SET Невозможно содержать в типе два одинаковых элемента.
надеюсь от SET Чтобы найти недопустимые записи в поле типа, просто найдите записи, содержащие пустые строки или двоичные значения. 0 Цель.
Сводка типов полей
Хотя выше перечислено много полей,Но чаще всего используется varchar(255),char(255),text,tinyint(4),smallint(6),mediumint,int(11).
Тип соединения Мы обычноиспользоватьtinyint,Быстрее время, меньше места и легче расширять
О номере мобильного телефона,Рекомендовать использоватьchar(11),char(11)существовать, чтобы сделать запрос более эффективным.,потому Что Номер мобильного телефона один, логики участия в активном поле будет много.
Некоторые примеры общих полей
Имя: персонаж(20)
Цена: ДЕСЯТИЧНАЯ(7, 3)
Серийный номер продукта: SMALLINT(5) без знака.
Содержание статьи: ТЕКСТ
MD5: CHAR(32)
ip: char(15)
time: int(10)
email char(32)
Разумный выбор типа данных
Выбирайте самый маленький в пределах разумного
Нам следует выбрать наименьший диапазон данных, потому что что это может значительно уменьшить дисковое пространство и накладные расходы на чтение и запись дискового ввода-вывода.,Уменьшить использование памятииспользовать,Уменьшите использование процессора.
Выбирайте относительно простые данные
Тип номера относительный тип строки гораздо проще, особенно при сравнении существования, поэтому следует выбирать самый простой тип данных, например, когда существование экономит время, потому что чтоPHPМожет良好из处理LINUXчас间戳所以我们Может Сохранить дату какint(10)Будьте удобными、подходящий、Гораздо быстрее.
но,Работая над новыми проектами, я получаю все больше и больше,Обработка бизнес-логики становится все более сложной.,Я обнаружил, что тип времени лучше, чем использовать тип самого поля типа времени.,потому что в mysql есть множество функций времени, которые я могу использоватьиспользовать,Мне удобно выполнять много логики, связанной со временем,Например, ежемесячные рейтинги,Еженедельные рейтинги,Популярное дня,Сколько дней длится день рождения и т. д. Логика?
не хочуделатьиспользоватьnull
Почему ты так говоришь, потому что ЧтоMYSQL имеет плохую оптимизацию индексов NULL-полей, что усложняет вычисления. В то же время он также будет выполнять больше работы при сохранении и обработке типов NULL. Поэтому с точки зрения эффективности не рекомендуется использовать слишком много NULL. Действительно возможно, что некоторые ценности бесполезны. Что мне делать? Решение - числовое значениепереулокиспользоватьцелое число0,нитьиспользоватьнулевой Приходитьопределить значение по умолчаниюценить Вот и все。
тип строкиизделатьиспользовать
нитьданныетипдаодин Универсальныйданныетип,Можетмагазинчисловое значение、нить、Дата и т. д.
держатьчисловое Лучше не использовать значение тип, используйте строковый тип данных, поэтому пространство хранилища, очевидно, будет больше, а 9 строк больше 22 при сортировке. Фактически, если операция будет выполнена, mysql преобразует строку в существующую. числовое значениетип,значительно снизить эффект,И это преобразование не будет использовать исходный индекс.
Если четкие данные, существуют один полный набор, например, мужской.,женский,Затем вы можете сделатьuseset или enum datatype,Данные такого типа рассчитываются и сохраняются в виде числового значения.,Таким образом, эффективность лучше, чем строка,При этом он занимает меньше места.
ВАРЧАРи ЧАР
VARCHAR — тип переменной длины. строки,Итак, поскольку длина является переменной, будет использовано1,2 байта для хранения длины символа,Если длина существует255, используйте1 байт для сохранения длины символа.,В противном случае используйте 2 символа, чтобы сохранить длину. Поскольку varchar сохраняет данные на основе сохраненного значения,Таким образом, дисковое пространство можно значительно сэкономить.
Если данные часто обновляются, поскольку VARCHAR сохраняется в зависимости от содержимого, mysql проделает больше работы для завершения операции обновления. Если длина новых данных больше, чем длина старых данных, некоторые механизмы хранения будут выполнять операции разделения. . При этом varchar полностью сохранит все внутренние данные. Наиболее типичное объяснение — конечные пробелы.
CHARфиксированная длинанитьдержатьтип,CHAR удалит конечные пробелы. существуют. Когда длины данных одинаковы, использовать тип символа более целесообразно.,Например, зашифрованный пароль md5, использование имени пользователя и т. д.
Если данные часто обновляются и изменяются,Тогда CHAR лучше,потому что char фиксированной длины,Быстрее в производительности.
числовое значениетипвыбор
числовое значениеданныетип Чемнить Выполняйте быстрее,Данные с небольшими интервалами занимают меньше места,Обработка быстрее,Например, tinyint работает намного быстрее, чем bigint.
При выборе типа данных учитывайте длину содержимого, например, следует ли экономить в миллиметрах или метрах и выбирать другой числовой тип значения.
целое число
Благодаря многим типам чисел, таким как tinyint, int, smallint, bigint и т. д.,Затем нам нужно решить тип использования в зависимости от длины данных, которые нам нужны в хранилище.,В то же время нет никакой разницы в хранении и вычислениях между tinyint(10) и tinyint(100)существовать.,Разница только на уровне отображения,но Нам также нужно выбрать правильныйподходящийизданныетипдлина。Может УказавzerofillРазличия в просмотре и отображении атрибутов。
Числа с плавающей запятой и точностьчисловое значение
Плавающее существование, пространство для хранения и эффективность работы лучше, чем точность числового значения. значениетипdecimal,Однако операции с плавающей запятой и двойной точностью будут иметь ошибки округления, тогда как десятичная дробь может обеспечить более точные операции с точностью до десятичной дроби без ошибок и более точные вычисления.,хранилище подходит для данных финансового типа.
Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета.,Мнения, выраженные в данной статье, принадлежат исключительно автору. Этот сайт предоставляет только космические услуги по хранению информации.,нет собственности,Никакая соответствующая юридическая ответственность не предполагается. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент,, Пожалуйста, отправьте электронное письмо на Сообщите, после проверки этот сайт будет немедленно удален.
Издательство: Full stack программист-использовать IM, для перепечатки укажите источник: https://javaforall.cn/209947.html Оригинальная ссылка: https://javaforall.cn