[mysql] format de champs

  • Auteur de la discussion THEniluje
  • Date de début

THEniluje

Grand Maître
Quel est le format le plus économique pour stocker un entier naturel ? un réel ? un réel positif ?

Si l'entier ne comporte qu'un chiffre un char(1) peut etre mieux qu'un champs spécialisé ?

C'est quoi cet histoire d' "autoincrementation" ? faut un type particulier ?
 

mrbebert

Expert
L'auto-incrémentation permet, comme son nom l'indique, d'avoir une colonne (d'un type entier) où le SGBD va automatiquement attribuer une valeur si tu fais une insertion sans préciser la valeur de cette colonne. C'est pratique pour avoir un identifiant unique sans avoir à le gérer soi même.

Par exemple, si tu as une table avec 2 champs, Id (autoincrémenté) et txt, si tu fais les insertions suivantes :
INSERT INTO table(txt) VALUES('aaa');
INSERT INTO table(txt) VALUES('bbb');
INSERT INTO table(txt) VALUES('ccc');
tu auras dans ta table :
Id | txt
---+----
1 | aaa
2 | bbb
3 | ccc

Tu peux récupérer la dernière valeur qu'il a attribué automatiquement par LAST_INSERT_ID()

Il y a des conditions pour qu'une colonne puisse être définie auto-incrémentée :
- qu'elle ait un type entier (int, smallint...)
- que la colonne soit une clé
- une seule colonne auto-incrémentée par table
 

THEniluje

Grand Maître
S'il y a delet d'une entrée donc ca continue le compte sans donner deux fois le meme numero où faut préciser en unique ?

Sinon c'est quoi la place prise par un int ?
 

rinazz

Expert
existe-t-il un champs n'acceptant ke du texte, et ne l'interpretant pas en html (s'il contient du code html) ?
 

mrbebert

Expert
[citation=905,1][nom]THEniluje a écrit[/nom]S'il y a delet d'une entrée donc ca continue le compte sans donner deux fois le meme numero où faut préciser en unique ?

Sinon c'est quoi la place prise par un int ?
[/citation]Par défaut, je pense que ca prend 4 octets. Mais tu as d'autres types entiers qui prennent un peu moins de place (mais l'intervalle de valeurs est alors plus faible).

Quand tu supprimes une entrée, non, il ne reprends pas le numéro (il ne bouche pas les trous). Sauf peut être dans certaines versions où, si tu supprimes le(s) dernier(es) entrée(s), il peut décrémenter d'autant le compteur.

Mais si tu veux boucher des trous, rien ne t'empêche de faire une insertion en précisant explicitement la valeur qui t'intéresse :)
 

mrbebert

Expert
[citation=906,1][nom]rinazz a écrit[/nom]existe-t-il un champs n'acceptant ke du texte, et ne l'interpretant pas en html (s'il contient du code html) ?
[/citation] :??:
Tu as les champs CHAR(n), VARCHAR(n) ou TEXT qui permettent de stocker du texte. Mais le serveur SQL n'interprète pas le HTML. Pour lui, c'est du texte, rien de plus.
 

rinazz

Expert
oui pardon
en fait je voulais savoir comment afficher le code html dans une page a partir d'un champs SQL sans ke cette page n'interprete ce code.
 

THEniluje

Grand Maître
mr>> en fait me question c'etait pour savoir si dans le cas ou j'ai "1, 2, 3" et que je supprimais l'enrengistrement "2", ce que ferait mysql : du moment qu'il ne met pas "3" sur la prochaine c'est impect :)

rinazz>> echo htmlentities($ton_text_brut);
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 073
Membres
1 586 286
Dernier membre
petitangebleu1977
Partager cette page
Haut