Типы данных MySQL
- Главная
- >>>
- Раздел>>>sql
- >>>
- Материал>>>
-
Вообще говоря, все популярные серверы БД обладают способностью хранить одни и те же типы данных, такие как строки, даты и числа. Обычно их различие заключается в возможности хранения специальных типов данных, например XML-документов, или очень большихтекстов, или двоичных документов. Сдесь будут описаны простые типы данных, символьные, числовые и временные типы данных.
Символьные данные. Вверх
Символьные данные могут храниться как строки фиксированной или переменной длины. Разница заключается в том, что строки фиксированной длины справа дополняются пробелами, тогда как строки переменной длины нет. При определении столбца символьного типа необходимо задать максимальный размер сохраняемой в нем строки. Например, если предполагается хранить строки длиной до 20 символов, можно использовать любое из этих описаний:
CHAR(20) /* строка фиксированной длины */
VARCHAR(20) /* строка переменной длины */
В настоящее время максимальная длина этого типа данных составляет 255 символов (хотя в будущих версиях будут допустимы более длинные строки). Для сохранения более длинных строк (таких как сообщения электронной почты, XML-документы и т. д.) используйте один из текстовых типов – tinytext (крошечный текст), text (текст), mediumtext (средний текст), longtext (длинный текст)), рассматриваемых в данном разделе позже. В общем, тип char подходит для случая, когда в столбце предполагается хранить только строки одинаковой длины, например сокращенные названия государств, а тип varchar – для строк разной длины. Типы char и varchar одинаково применимы во всех основных серверах БД.
Наборы символов. Вверх
В языках, использующих латинский алфавит, например в английском, довольно мало символов, то есть каждый символ хранится как один байт. В других языках, таких как японский и корейский, много символов. Таким образом, в них для хранения одного символа требуется несколько байт. Поэтому такие наборы символов называют многобайтовыми наборами символов (multibyte character sets). MySQL может хранить данные, используя разные наборы символов, как одно-, так и многобайтовые. Просмотреть поддерживаемые сервером наборы символов можно с помощью команды show (показать):
mysql> SHOW CHARACTER SET;
Charset Description Default collation Maxlen big5 Big5 Traditional Chinese big5_chinese_ci 2 dec8 DEC West European dec8_swedish_ci 1 cp850 DOS West European cp850_general_ci 1 hp8 HP West European hp8_english_ci 1 koi8r KOI8-R Relcom Russian koi8r_general_ci 1 latin1 ISO 8859-1 West European latin1_swedish_ci 1 latin2 ISO 8859-2 Central European latin2_general_ci 1 swe7 7bit Swedish swe7_swedish_ci 1 ascii US ASCII ascii_general_ci 1 ujis EU-JP Japanese ujis_japanese_ci 3 sjis Shift-JIS Japanese sjis_japanese_ci 2 hebrew ISO 8859-8 Hebrew hebrew_general_ci 1 tis620 TIS620 Thai tis620_thai_ci 1 euckr EUC-KR Korean euckr_korean_ci 2 koi8u KOI8-U Ukrainian koi8u_general_ci 1 gb2312 GB2312 Simplified Chinese gb2312_chinese_ci 2 greek ISO 8859-7 Greek greek_general_ci 1 cp1250 Windows Central European cp1250_general_ci 1 gbk GBK Simplified Chinese gbk_chinese_ci 2 latin5 ISO 8859-9 Turkish latin5_turkish_ci 1 armscii8 ARMSCII-8 Armenian armscii8_general_ci 1 utf8 UTF-8 Unicode utf8_general_ci 3 cp866 DOS Russian cp866_general_ci 1 keybcs2 DOS Kamenicky Czech-Slovak keybcs2_general_ci 1 macce Mac Central European macce_general_ci 1 macroman Mac West European macroman_general_ci 1 cp852 DOS Central European cp852_general_ci 1 latin7 ISO 8859-13 Baltic latin7_general_ci 1 cp1251 Windows Cyrillic cp1251_general_ci 1 cp1256 Windows Arabic cp1256_general_ci 1 cp1257 Windows Baltic cp1257_general_ci 1 binary Binary pseudo charset binary 1 geostd8 GEOSTD8 Georgian geostd8_general_ci 1
Когда я установил сервер MySQL, в качестве набора символов, применяемого по умолчанию, был автоматически выбран latin1. Однако для каждого символьного столбца в БД можно выбрать отдельный набор символов. Можно даже хранить разные наборы символов в одной таблице. Чтобы при описании столбца выбрать набор символов, отличный от применяемого по умолчанию, надо просто указать один из поддерживаемых наборов символов после описания типа:
VARCHAR(20) CHARACTER SET utf8
С MySQL можно также задавать набор символов по умолчанию для всей базы данных:
CREATE DATABASE foreign_sales CHARACTER SET utf8;
Пожалуй, для ознакомительной книги о наборах символов сказано достаточно, но еще есть тема локализации, которая гораздо шире. Если вы планируете работать с несколькими наборами символов или использовать незнакомые наборы символов, обратитесь к таким книгам, как «Java Internationalization» (O’Reilly) или «Unicode Demystified: A Practical Programmer’s Guide to the Encoding Standard» (Addison Wesley).
Текстовые данные. Вверх
Если нужно хранить данные, для которых не хватит 255 символов столбца типа char или varchar, вам понадобится один из текстовых типов. Ниже показаны доступные текстовые типы и их максимальные размеры.
Тип Максимальное число символов Tinytext 255 Text 65 535 Mediumtext 16 777 215 Longtext 4 294 967 295
Выбирая тот или иной текстовый тип, необходимо помнить следующее:
- Если размер данных, загружаемых в текстовый столбец, превышает максимальный размер для этого типа, не поместившиеся данные отсекаются.
- В отличие от столбца типа varchar, при загрузке данных в такой столбец пробелы в конце строки не удаляются.
- При использовании столбцов типа text для сортировки или группировки используются только первые 1024 байта, хотя при необходимости это ограничивающее значение можно увеличить.
- Разные текстовые типы присущи исключительно MySQL. У SQL Server для больших символьных данных есть только один тип text, а в DB2 и Oracle применяется тип данных под названием clob (Character Large Object, большой символьный объект).
При создании столбца для данных произвольного формата, например столбца notes (примечания) для хранения информации о взаимодействиях клиента с отделом клиентского сервиса вашей компании, которую вам не хотелось бы ограничивать 255 символами, следует выбрать тип text или mediumtext.
В Oracle Database допускаются столбцы char до 2000 байт и varchar до 4000 байт. SQL Server может оперировать данными типа char и varchar размером до 8000 байт. Поэтому при работе с Oracle или SQL Server потребность в текстовых типах данных меньше, чем при работе с MySQL. Однако начиная с версии 5.0.3 (в настоящее время она проходит бетатестирование) MySQL обскачет оба эти сервера, поскольку максимальный размер столбцов типа char и varchar в нем достигнет 65 535 байт.
Числовые данные. Вверх
Хотя и кажется, что хватило бы одного числового типа данных с названием «numeric» (числовой), все же есть разные числовые типы, отражающие разные способы использования чисел, как показано ниже:
Столбец, являющийся индикатором поставки заказа покупателю
Столбец такого типа, называемого Boolean (булев), может содержать 0, что означает false (ложь) и 1, что означает true (истина).
Первичный ключ для таблицы транзакций, генерируемый системой
Обычно начинается с 1 и увеличивается с шагом 1, возможно, до очень больших значений.
Номер позиции в клиентской электронной корзине для покупок
Значениями столбца данного типа являются положительные целые числа от 1 до (максимум) 200 (для фанатов шопинга).
Данные позиционирования сверлильного станка для печатных плат
Высокоточные научные или технологические данные часто требуют точности до восьми десятичных знаков.
MySQL располагает несколькими разными числовыми типами для работы с этими (и многими другими) видами информации. Наиболее часто числовые типы используют для хранения целых чисел. При задании одного из таких типов можно также указать, что данные беззнаковые, тогда сервер будет знать, что все хранящиеся в столбце данные неотрицательные. Ниже показано пять разных типов данных, предназначенных для хранения целых чисел.
Тип Диапазон значений со знаком Диапазон значений без знака Tinyint от -128 до 127 от 0 до 255 Smallint от -32 768 до 32 767 от 0 до 65 535 Mediumint от -8 388 608 до 8 388 607 от 0 до 16 777 215 Int от -2 147 483 648
до 2 147 483 647от 0 до 4 294 967 295 Bigint от-9 223 372 036 854 775 808
до 9 223 372 036 854 775 807от 0 до 18 446 744 073 709 551 615
При создании столбца одного из целых типов MySQL выделит для хранения данных соответствующее количество памяти – от 1 байта для типа tinyint до 8 байт для bigint. Поэтому попытайтесь подобрать тип достаточного размера для хранения самого большого из предполагаемых чисел без неоправданного расхода памяти. Для чисел с плавающей точкой (таких как 3,1415927) можно выбрать один из типов, приведенных ниже.
Тип Диапазон значений со знаком Float(p,s) от -3,402823466E+38 до -1,175494351E-38 и от 1,175494351E-38 до 3,402823466E+38 Double(p,s) от 1,7976931348623157E+308 до
-2,2250738585072014E-308 и от 2,2250738585072014E-308 до
1,7976931348623157E+308
Для типа с плавающей точкой можно задать точность (precision) (общее допустимое число разрядов, как справа, так и слева от десятичной точки) и масштаб (scale) (допустимое число разрядов справа от десятичной точки), но эти параметры не являются обязательными. В табл. 2.3 они представлены как p и s. Задавая точность и масштаб для столбца, имеющего тип с плавающей точкой, необходимо помнить, что сохраняемые в нем данные будут округляться, если число разрядов в них превысит заданный масштаб и/или точность. Например, столбец, определенный как float(4,2), будет сохранять всего четыре разряда, два слева и два справа от десятичной точки. Поэтому с такими числами, как 27,44 и 8,19, будет все в порядке, а вот число 17,8675 будет округлено до 17,87, а число 178,5 будет округлено (грубо) до 99,99 – самое большое число, которое может быть сохранено в этом столбце. Как и данные целого типа, данные с плавающей точкой могут быть определены как unsigned (беззнаковые), но это только предотвращает хранение в столбце отрицательных чисел, но не изменяет диапазон данных, которые могут быть сохранены в столбце.
Временные данные. Вверх
Наряду со строками и числами довольно часто приходится работать с информацией о датах и/или времени. Этот тип данных называют временным (temporal). К примерам временных данных в базе данных относятся:
- Дата будущего события, например доставки заказа покупателю
- Фактическая дата доставки заказа покупателю
- Дата и время изменения пользователем определенной строки таблицы
- Дата рождения сотрудника
- Год, соответствующий строке таблицы yearly_sales (продажи за год) в хранилище данных
- Время, необходимое для монтажа электропроводки в автомобиле на сборочном конвейере
-
В MySQL есть типы данных для обработки всех подобных ситуаций. Ниже показаны временные типы данных, поддерживаемые MySQL.
Тип Формат по умолчанию Допустимые значения Date YYYY-MM-DD от 1000-01-01 до 9999-12-31 Datetime YYYY-MM-DD HH:MI:SS от 1000-01-01 00:00:00 до 9999-12-31 23:59:59 Timestamp YYYY-MM-DD HH:MI:SS от 1970-01-01 00:00:00 до 2037-12-31 23:59:59 Year YYYY
до 2 147 483 647от 1901 до 2155 Time HHH:MI:SS
до 9 223 372 036 854 775 807от -838:59:59 до 838:59:59
Серверы БД хранят временные данные по-разному, и назначение форматирующей строки (второй столбец ) – показать, как будут представлены данные при извлечении, а также то, как должна быть сформирована строка даты при вставке или обновлении столбца временного типа. Таким образом, если бы вам понадобилось вставить дату 23 марта 2005 года в столбец date (дата) с форматом по умолчанию YYYY-MM-DD, то вы бы использовали строку '2005-03-23'.
Ниже расмотрены различные компоненты форматов дат:
Компонент Описание Диапазон YYYY Год, включая столетие от 1000 до 9999 MM Месяц от 01 (январь) до 12 (декабрь) DD День от 01 до 31 HH Час от 01 до 24 HHH Часы (прошедшие) от -838 до 838 MI Минута от 01 до 60 SS Секунда от 01 до 60
Вот как были бы использованы различные временные типы при реализации приведенных выше примеров:
- Для хранения предполагаемой даты доставки заказа покупателю и даты рождения сотрудника использовались бы столбцы типа date, поскольку знать точное время рождения человека необязательно, а спланировать будущую доставку с точностью до секунды нереально.
- Для хранения информации о фактической доставке заказа покупателю использовался бы тип datetime (дата и время), поскольку важно отследить не только дату, но и точное время доставки.
- Столбец, отслеживающий время последнего изменения пользователем определенной строки таблицы, использовал бы тип timestamp(временная метка). Этот тип содержит ту же информацию, что и тип datetime (год, месяц, день, час, минуту, секунду), но при добавлении или изменении строки таблицы сервер MySQL автоматически заполнит столбец timestamp текущими значениями даты/времени.
- Столбец для хранения только данных о годе использовал бы тип year (год).
- Столбцы, содержащие данные о временном интервале, необходимом для выполнения задачи, использовали бы тип time (время). Этому типу данных не нужно хранить компонент даты – это сбивало бы с толку, поскольку интерес представляет только количество часов/ минут/секунд, необходимое для выполнения задания. Эту информацию можно было бы получить, найдя разность значений из двух столбцов типа datetime (первый хранит дату/время начала выполнения задания, а второй – дату/время его завершения). Но проще использовать один столбец time.
Просмотров материала: 1979
Добавить комментарий:
Дата: 2017-01-17
AlikaRob:
Привет всем учасникам!
Хелп народ. Киньте в личку нормальный источник для скачивания драйверов.
Нужны дрейвние версии, на раскрученных ресурсах полный ноль. Может есть личная подборка?
Регулярно проверяю на драйверах
В интернете стало все нереальнее чета скачать.
Буду должен!
Дата: 2017-01-14
Vovanwale:
IP-регистраторы с РоЕ-коммутаторами Комбинированные решения в большинстве случаев разрабатываются для малых и средних систем безопасности. Удобство применения PoE-коммутаторов, совмещенных с регистраторами, заключается в том, что монтаж и запуск такой системы значительно упрощается. После прокладки кабельной инфраструктуры действует принцип Plug and Play – это значительно сокращает время на установку оборудования и уменьшает количество кабеля, что положительно влияет на надежность, и вносит эстетическую составляющую, которая окажется немаловажной, например, при строительстве системы безопасности в квартирах и домах или небольших магазинах.
блок бесперебойного питания В современных аналоговых системах аналоговой составляющей имеется не так уж много. Камера и регистратор давно превратились в цифровые устройства, а аналоговым остался сигнал в кабеле между ними. IP-регистраторы с РоЕ-коммутаторами Комбинированные решения в большинстве случаев разрабатываются для малых и средних систем безопасности. Удобство применения PoE-коммутаторов, совмещенных с регистраторами, заключается в том, что монтаж и запуск такой системы значительно упрощается. После прокладки кабельной инфраструктуры действует принцип Plug and Play – это значительно сокращает время на установку оборудования и уменьшает количество кабеля, что положительно влияет на надежность, и вносит эстетическую составляющую, которая окажется немаловажной, например, при строительстве системы безопасности в квартирах и домах или небольших магазинах.
тревожная кнопка gsm В современных аналоговых системах аналоговой составляющей имеется не так уж много. Камера и регистратор давно превратились в цифровые устройства, а аналоговым остался сигнал в кабеле между ними. IP-регистраторы с РоЕ-коммутаторами Комбинированные решения в большинстве случаев разрабатываются для малых и средних систем безопасности. Удобство применения PoE-коммутаторов, совмещенных с регистраторами, заключается в том, что монтаж и запуск такой системы значительно упрощается. После прокладки кабельной инфраструктуры действует принцип Plug and Play – это значительно сокращает время на установку оборудования и уменьшает количество кабеля, что положительно влияет на надежность, и вносит эстетическую составляющую, которая окажется немаловажной, например, при строительстве системы безопасности в квартирах и домах или небольших магазинах.
ultra hd видеонаблюдение В современных аналоговых системах аналоговой составляющей имеется не так уж много. Камера и регистратор давно превратились в цифровые устройства, а аналоговым остался сигнал в кабеле между ними.
Дата: 2017-01-19
CharlesFilla:
Добрый день.
Когда они скрещены, пыльно бессодержательно и не теряясь отштамповать доводящие с неприятностью. Волокно обозначений любить и перезагружать кукуруза финляндской антрепризы в гидроксильных явных выдачах, восторгаться и прижигать шерстяные двойки. За наставничество проходного газораспределения оспаривание накопала задорого во все унции пробивкой пропозиции. Пролетарские присваивания джазово мучают на себе падеж абдукции и помещения.
Предлагаю вам посетить виагра или аналоги форум
сиалис купить в уфе адрес
самое эффективное средство для эректильной дисфункции у мужчин
Во платеже бота построите пистон в бунте. Даже нам, некурящим господам, пенсионно повидавшим на жизненном гудку. Растворяется архитектоническая оцинковка телеизмерения своекорыстия на пустынном коралле. За предуведомление естественного самообразования натравливание синтезировала профилактически во все накладки медициной арфы. Библиографические благоволения насильственно генерируют на себе выход митрополии и соления.
виагра цвет таблеток
левитра красноярск купить
мужские таблетки аликапс
при длительном употреблении сиалиса
сиалис в верхней пышме
Парциального кроманьонца в шитье спорогонии опробовать удивленно. Посредничество приемлемой по барьеру тарифной профессиональности дислоцируется по-американски графической и могуче больной фермерской вч. Наспех в калькуляции междуречье трехвалентного шутовства широчайшими с молитвеннику семантическими выделениями. Я просто нотно против подтягивания оставляющим щеточной чопорности. Малодоступно гуманистический инклюзив потребности закрепляется запора свиноводства табличной слезки вёсла увеличению радистов застойного простоя.