SQL Когда использовать какой тип данных - PullRequest
4 голосов
/ 27 февраля 2009

Привет, мне было интересно, когда мне следует использовать разные типы данных. Как и в моей таблице, как я могу решить, какой использовать: nvarchar, nchar, varchar, varbinary и т. Д.

Примеры:

Что бы я использовал для ... колонки:

Phone number,
Address,
First Name, Last Name,
Email,
ID number,
etc. 

Спасибо за любую помощь!

Ответы [ 6 ]

5 голосов
/ 27 февраля 2009

Как правило, я бы не определял что-либо как поле "число", если бы не собирался выполнять арифметику с ним, даже если сами данные были числовыми.

Ваше поле "телефон" является одним из примеров. Я бы определил это как varchar.

2 голосов
/ 27 февраля 2009

Вопрос действительно зависит от ваших требований. Я знаю, что это не особенно удовлетворительный ответ, но это правда.

Типы данных n..char предназначены для данных Unicode, поэтому, если вам нужно использовать наборы символов Unicode в ваших данных, вы должны использовать эти типы в отличие от их «не n» аналогов. Типы nchar и char имеют фиксированную длину, а типы nvarchar и varchar могут иметь переменную длину, что влияет на размер столбца на диске и в памяти. Как правило, я бы сказал, чтобы использовать тип, который использует меньше места на диске, но подходит для ваших нужд.

На этой странице есть ссылки на описания Microsoft этих типов данных для SQL Server 2005, многие из которых содержат указатели на то, когда использовать какой тип. Вас может заинтересовать эта страница , касающаяся типов char и varchar.

2 голосов
/ 27 февраля 2009

Varchar, Integer и Bit покрывают 99% моего повседневного использования.

1 голос
/ 27 февраля 2009

N * типов данных (NVARCHAR, NCHAR, NTEXT) предназначены для строк Unicode. Они занимают в два раза больше места, чем нужно их «обычным» подвескам (VARCHAR, CHAR, TEXT), но они могут хранить Unicode без преобразования и возможной потери точности.

Типы данных TEXT могут хранить практически неограниченные объемы данных, но они работают не так хорошо, как типы данных CHAR, поскольку они хранятся вне записи.

Типы данных VARCHAR имеют переменную длину. Они не будут дополнены пробелами в конце, но их подвески CHAR будут иметь (CHAR (20) всегда имеет длину в двадцать символов, даже если он содержит только 5 букв. Остальные 15 будут пробелами).

Бинарные типы данных предназначены для двоичных данных, независимо от того, что вы хотите сохранить в них (изображения являются основным примером).

1 голос
/ 27 февраля 2009

Тип данных, начинающийся с n, означает, что его можно использовать для символов Юникода ... например, nVarchar.

Выбор целых чисел тоже довольно забавный.

http://www.databasejournal.com/features/mssql/article.phpr/2212141/Choosing-SQL-Server-2000-Data-Types.htm

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

0 голосов
/ 02 февраля 2011

Другие люди дали хорошие общие ответы, но я бы добавил один важный момент: при использовании VARCHAR() s (который я бы порекомендовал для таких полей), обязательно используйте длину, достаточно большую для любого разумного значение. Например, я обычно объявляю VARCHAR(100) для имени, адреса электронной почты, доменного имени, названия города и т. Д. И VARCHAR(200) для URL-адреса или уличного адреса.

Это больше, чем вам обычно нужно. На самом деле, 30 символов достаточно для почти всех этих значений (кроме полного имени, но хорошая база данных всегда должна хранить имя и фамилию отдельно), но это лучше, чем когда-либо менять типы данных в будущем. Указание длины, превышающей необходимую, для VARCHAR очень мало, но учтите, что VARCHAR(MAX) и TEXT влекут за собой значительные накладные расходы, поэтому используйте их только при необходимости.

Вот пост, в котором указан случай, когда более длинная, чем необходимо VARCHAR может снизить производительность: Важность длины varchar в таблице MySQL . Показывает, что все имеет стоимость, хотя в целом я бы все же предпочел длинные VARCHAR s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...