Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
В главе 15 «Справочник по SQL» дается полное справочное руководство по типам 
SQL, поддерживаемым MySQL и mSQL. В таблице 6-1 дан сокращенный список, 
состоящий из наиболее употребительных типов, поддерживаемых в обоих языках.
Таблица 6-1. Наиболее употребительные типы, данных, поддерживаемые как MySQL, 
так и mSQL
Тип данныхОписаниеINTЦелое число. В MySQL INT может быть со знаком или без 
знака, в то время как mSQL имеет отдельный тип UINT для беззнаковых целых.REAL
Число с плавающей запятой. Этот тип допускает больший диапазон значений, чем 
INT, но не обладает его точностью.TEXT(length)Символьная величина переменной 
длины. В mSQL значение length используется как предположение о том, какой длины 
будут хранимые строки. Можно сохранять и строки большей длины, но ценой потери 
производительности. В MySQL TEXT - лишь один из нескольких типов данных 
переменного размера.DATEСтандартное значение даты. Хотя формат хранения даты 
различен в MySQL и mSQL, оба ядра могут использовать тип DATE для хранения 
произвольных дат, относящихся к прошлому, настоящему и будущему. Оба ядра 
правильно решают «проблему 2000».TIMEСтандартное значение времени. Этот тип 
используется для хранения времени дня безотносительно какой-либо даты. При 
использовании вместе с датой позволяет хранить конкретную дату и время. В MySQL 
есть дополнительный тип DATETIME для совместного хранения даты и времени в 
одном поле.CHAR(length)Символьная величина фиксированной длины. Поля типа CHAR 
не могут содержать строки длины большей, чем указанное значение. Поля меньшей 
длины дополняются пробелами. Вероятно, это наиболее употребительный тип в любой 
реализации SQL.  
«MySQL поддерживает атрибут UNSIGNED для всех числовых типов. Этот модификатор 
позволяет вводить в колонку только положительные (беззнаковые) числа. 
Беззнаковые поля имеют верхний предел значений вдвое больший, чем у 
соответствующих знаковых типов. Беззнаковый TINYINT - однобайтовый числовой тип 
MySQL - имеет диапазон от 0 до 255, а не от -127 до 127, как у своего знакового 
аналога.
Та и другая СУБД имеют больше типов, чем перечислено выше. Особенно большое 
число типов поддерживает MySQL. Однако на практике в основном используются 
перечисленные типы. В mSQL выбор типа данных сводится к выбору типа, наиболее 
близкого к данным, которые вы собираетесь хранить. Размер данных, которые вы 
собираетесь хранить, играет гораздо большую роль при разработке таблиц MySQL.
Числовые типы данных
Прежде чем создавать таблицу, вы должны хорошо представить себе, какого рода 
данные вы будете в ней хранить. Помимо очевидного решения о том, будут это 
числовые или символьные данные, следует выяснить примерный размер хранимых 
данных. Если это числовое поле, то каким окажется максимальное значение? Может 
ли оно измениться в будущем? Если минимальное значение всегда положительно, 
следует рассмотреть использование беззнакового типа. Всегда следует выбирать 
самый маленький числовой тип, способный хранить самое большое мыслимое значение.
 Если бы, к примеру, требовалось хранить в поле численность населения штата, 
следовало бы выбрать беззнаковый INT. Ни в каком штате не может быть 
отрицательной численности населения, и для того, чтобы беззнаковое поле типа 
INT не могло вместить число, представляющее его население, численность 
населения этого штата должна примерно равняться численности населения всей 
Земли.
Символьные типы
С символьными типами работать немного труднее. Вы должны подумать не только о 
максимальной и минимальной длине строки, но также о среднем размере, частоте 
отклонения от него и необходимости в индексировании. В данном контексте мы 
называем индексом поле или группу полей, в которых вы собираетесь осуществлять 
поиск — в основном, в предложении WHERE. Индексирование, однако, значительно 
сложнее, чем такое упрощенное определение, и мы займемся им далее в этой главе. 
Здесь важно лишь отметить, что индексирование по символьным полям происходит 
значительно быстрее, если они имеют фиксированную длину. В действительности, 
mSQL даже не позволяет индексировать поля переменной длины. Если длина строк не 
слишком колеблется или, что еще лучше, постоянна, то, вероятно, лучше выбрать 
для поля тип CHAR. Пример хорошего кандидата на тип CHAR — код страны. 
Стандартом ISO определены двухсимвольные коды для всех стран (US для США, FR 
для Франции и т. д.). Поскольку эти коды состоят ровно из двух символов, 
CHAR(2) будет правильным выбором для данного поля.
Чтобы подходить для типа CHAR, поле необязательно должно быть фиксированной 
длины, но длина не должна сильно колебаться. Телефонные номера, к примеру, 
можно смело хранить в поле CHAR(13), хотя длина номеров различна в разных 
странах. Просто различие не столь велико, поэтому нет смысла делать поле для 
номера телефона переменным по длине. В отношении поля типа CHAR важно помнить, 
что, вне зависимости от реальной длины хранимой строки, в поле будет ровно 
столько символов, сколько указано в его размере — не больше и не меньше. 
Разность в длине между размером сохраняемого текста и размером поля заполняется 
пробелами. Не стоит беспокоиться по поводу нескольких лишних символов при 
хранении телефонных номеров, но не хотелось бы тратить много места в некоторых 
других случаях. Для этого существуют текстовые поля переменной длины.
Хороший пример поля, для которого требуется тип данных с переменной длиной, 
дает URL Интернет. По большей части адреса Web занимают сравнительно немного 
места - http://www.ora.com, http:// www.hughes.com.au, http://www.mysql.com - и 
не представляют проблемы. Иногда, однако, можно наткнуться на адреса подобного 
вида: http://www.winespectator.com/Wine/Spectator/ 
_notes\5527293926834323221480431354? Xvl I =&Xr5=&Xvl =& type-region-search- 
 
<<-[Весь Текст]
Страница: из 157
 <<-