2009-02-27 5 views
2

Salut Je me demandais quand utiliser les différents types de données. Comme dans ma table, comment puis-je décider d'utiliser: nvarchar, nchar, varchar, varbinary, etc.SQL Quand utiliser quel type de données

Exemples:

Qu'est-ce que j'utiliser pour une ... colonne:

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

Merci pour toute aide!

Répondre

2

Varchar, entier, et la couverture de bits 99% de ma journée à jour utilise.

1

Les types de données N * (NVARCHAR, NCHAR, NTEXT) sont pour les chaînes Unicode. Ils prennent deux fois l'espace dont leurs pendentifs "normaux" (VARCHAR, CHAR, TEXT) ont besoin, mais ils peuvent stocker Unicode sans conversion et perte de fidélité possible. Les types de données TEXT peuvent stocker des quantités presque illimitées de données, mais ils ne sont pas aussi performants que les types de données CHAR car ils sont stockés en dehors de l'enregistrement.

Les types de données VARCHAR sont de longueur variable. Ils ne seront pas rembourrés avec des espaces à la fin, mais leurs pendentifs CHAR (un CHAR (20) aura toujours une vingtaine de caractères, même s'il ne contient que 5 lettres, les 15 autres seront des espaces).

Les types de données binaires sont destinés aux données binaires, quel que soit le type de stockage (les images en sont un exemple principal).

2

La question dépend vraiment de vos besoins. Je sais que ce n'est pas une réponse particulièrement satisfaisante, mais c'est vrai. Les types de données n.char sont pour les données Unicode, donc si vous avez besoin d'utiliser des jeux de caractères Unicode dans vos données, vous devez utiliser ces types par opposition à leurs analogues "non-n". le type nchar et char sont de longueur fixe, et les types nvarchar et varchar peuvent avoir une longueur variable, ce qui affectera la taille de la colonne sur le disque et en mémoire. Généralement, je dirais d'utiliser le type qui utilise le moins d'espace disque, mais correspond à vos besoins.

This page a des liens vers les descriptions Microsoft de ces types de données pour SQL Server 2005, dont beaucoup donnent des pointeurs pour savoir quand utiliser quel type. Vous pourriez être particulièrement intéressé par this page concernant les types char et varchar.

5

En règle générale, je ne définirais rien en tant que champ "nombre" si je n'allais pas faire d'arithmétique, même si les données elles-mêmes étaient numériques.

Votre champ "téléphone" en est un exemple. Je définirais cela comme un varchar.

+0

Bon point sur le calcul. – 71GA

0

D'autres personnes ont donné de bonnes réponses générales, mais j'ajouterais un point important: en utilisant VARCHAR() s (ce que je recommanderais pour ce type de champs), assurez-vous d'utiliser une longueur suffisante pour toute valeur raisonnable .Par exemple, je déclare généralement VARCHAR(100) pour un nom, une adresse de messagerie, un nom de domaine, un nom de ville, etc., et VARCHAR(200) pour une URL ou une adresse postale.

C'est plus que ce dont vous aurez besoin. En fait, 30 caractères suffisent pour presque toutes ces valeurs (sauf le nom complet, mais une bonne base de données doit toujours stocker le prénom et le nom séparément), mais c'est mieux que de devoir changer de type de données un jour. Il est très peu coûteux de spécifier une longueur supérieure à celle nécessaire pour un VARCHAR, mais notez que VARCHAR(MAX) et TEXT impliquent des frais généraux importants, ne les utilisez donc que lorsque c'est nécessaire.

Voici un poste qui signale un cas où une plus longue que nécessaire VARCHARpeut nui à la performance: Importance of varchar length in MySQL table. Va montrer que tout a un coût, bien qu'en général, je serais toujours favorable à long VARCHAR s.

Questions connexes