2011-01-09 5 views
0

Когда создано поле для таблицы, я не знаю, какой тип (int, char, varchar ....) и размер я должен использовать в поле. например: адрес электронной почты, время, адрес, телефон и т. д.mysql --- какой тип я должен использовать?

+3

Сделать догадки, по крайней мере ...? – BoltClock

+0

Очевидно, что вам необходимо использовать ** наиболее подходящий тип **. – zerkms

ответ

2

Вот общий набор правил. Применяют их в указанном порядке:

  1. Если это время или дату, используйте TIME или тип DATE
  2. Если вы собираетесь делать математику на него, используйте числовой тип, такой как INTEGER, FLOAT, REAL или DECIMAL. Номера, такие как номера телефонов или идентификаторы учащихся, не обязательно должны быть числовыми типами, но некоторые из них могут быть, если хотите. Если вы собираетесь добавлять, вычитать, умножать или сравнивать диапазоны чисел, определенно сделать их числовыми. Если вы этого не сделаете, то, вероятно, не обязательно быть числовым. Хорошим связанным правилом является то, что если число «00» совпадает с номером «0» для вашей ситуации, то оно должно быть числовым. Если в некоторых случаях это разные номера (например, номера номеров или идентификаторы учеников), то это не должно быть числом. (Я опишу эмпирические правила для выбора того, какой тип цифр ниже.)
  3. Для всего остального используйте строковые типы. В частности, если вы знаете длину либо точно, либо в пределах нескольких символов, используйте CHAR этой длины.
  4. Если вы не знаете длину, используйте VARCHAR и выберите разумную максимальную длину. То есть, что-то, что вы уверены, будет достаточно длинным, без глупости. Например, VARCHAR (15) для фамилии только потому, что ни у кого из ваших друзей не было фамилии более 15 символов, пока не понадобится вставить мистера Швиццера-Маккалоу. Но VARCHAR (100000), вероятно, перебор. Для фамилий, вероятно, было бы целесообразно что-то по порядку VARCHAR (50), но VARCHAR (100) было бы разумным.

Выбор числовых типов:

  1. Если это целое число, и всегда будет целым числом, выбрали тип INTEGER. Опять же, вам придется выбирать размер, основываясь на наибольшей ценности, которую он мог бы иметь. Здесь есть страница: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html, которая содержит диаграмму наибольших значений для разных типов типов INT в MySQL.
  2. Если это десятичное число, такое как денежные значения, проценты, температуры или большинство обычных десятичных значений, используйте DECIMAL. (NUMERIC означает то же, что и DECIMAL в MySQL.) Вы выберете два числа, чтобы согласиться с этим (например, DECIMAL (6,2)). Первое число - это общее количество сохраняемых цифр. Второе число - это число цифр справа от десятичной точки. То есть, если вам нужно хранить цены на зубную пасту, которая варьируется от примерно 1 до 10 долларов США, вы можете сделать DECIMAL (4,2), который будет хранить номера от 0,00 до 99,99. Если вам нужно хранить цены на акции, которые могут включать дробные центы и быть достаточно высокими, вам, вероятно, понадобится DECIMAL (10,3), которые будут варьироваться от 0.000 до 9999999.999.
  3. Если у вас есть номера, которые должны быть выражены в научной нотации и на которых вы будете делать много математики, и вам нужно, чтобы она была эффективной, используйте REAL или DOUBLE. Не используйте их для хранения цен или процентов или таких вещей (см. 2), потому что они будут вводить тонкие неточности. Но если ваш ответ может варьироваться от 8x10^-5 до 2.58x10^34, тогда да, для подобных вещей, используйте DOUBLE.Имейте в виду, что они фактически не хранятся в виде X * 10^Y, а скорее X * 2^Y, потому что компьютеры работают в двоичном формате, поэтому некоторые числа могут немного отличаться от их десятичных представлений. Вот почему мы не используем их для валюты.
  4. Если у вас есть номер, похожий на 3, но вы действительно нажаты для хранения, используйте FLOAT. Действительно, на практике вы, вероятно, никогда не будете использовать FLOAT. Они похожи на ДВОЙНЫЕ, но вдвое больше.
+1

Огромное спасибо, вы меня много узнали. – runeveryday

+1

На самом деле я должен добавить небольшую заметку о том, что типы времени и даты иногда могут быть больными, особенно при работе в разных системах, поэтому некоторые люди используют альтернативные способы хранения времени и дат, что не обязательно является плохими идеями, но я бы использовал TIME и DATE, если у вас нет конкретной причины. –

+0

, когда я использую идентификатор в качестве первичного ключа и делаю его автоинкрементным, какой тип я должен использовать? последовательный или int? и к номеру комнаты и идентификатору студента, я должен использовать varchar (10) и varchar (15) .am i right. спасибо – runeveryday

2

Не используйте целое число для чисел, не используйте varchar для строк с переменной шириной. Если вы используете размер меньший, чем фактический вход, вы сэкономите дисковое пространство, потеряв данные.

-1

Ну, вы можете использовать поле varchar для всех полей, кроме времени. для поля времени вы можете использовать тип данных, называемый временем, поскольку это поможет вам легко манипулировать данными.

+0

Худший совет, который может быть когда-либо задан на этот вопрос. – zerkms

+0

Я не понимаю, почему это плохой совет. Был задан вопрос о том, как указать типы данных для адреса, электронной почты. Вы можете использовать varchar для того же самого. Также применяется к поля времени, а также. Это гораздо лучший ответ по сравнению с выражением «не использовать целое число для чисел и т. Д.». – programmer

Смежные вопросы