Maison  >  Article  >  base de données  >  Tutoriel de base MySQL 1 — Type numérique de type de données

Tutoriel de base MySQL 1 — Type numérique de type de données

黄舟
黄舟original
2017-02-24 10:54:501059parcourir

MySQL prend en charge tous les types de données numériques SQL standard. Ces types incluent des types de données numériques strictes (INTEGER, SMALLINT, DECIMAL et NUMERIC) et des types de données numériques approximatives (FLOAT, REAL et DOUBLE PRECISION). Le mot-clé INT est synonyme de INTEGER et le mot-clé DEC est synonyme de DECIMAL.

Le type de données BIT stocke les valeurs des champs de bits et prend en charge les tables MyISAM, MEMORY, InnoDB et BDB.

En tant qu'extension du standard SQL, MySQL prend également en charge les types entiers TINYINT, MEDIUMINT et BIGINT. Le tableau suivant montre le stockage et la plage requis pour chaque type entier.

类型 字节 最小值 最大值
    (带符号的/无符号的) (带符号的/无符号的)
TINYINT 1 -128 127
    0 255
SMALLINT 2 -32768 32767
    0 65535
MEDIUMINT 3 -8388608 8388607
    0 16777215
INT 4 -2147483648 2147483647
    0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
    0 18446744073709551615

MySQL prend également en charge l'option de spécifier la largeur d'affichage d'une valeur entière entre parenthèses après le mot-clé type (par exemple, INT(4)). La spécification facultative de la largeur d’affichage est utilisée pour remplir la largeur à partir de la gauche lorsque la largeur d’affichage est inférieure à la largeur de colonne spécifiée.

La largeur d'affichage ne limite pas la plage de valeurs pouvant être enregistrées dans la colonne, ni l'affichage des valeurs qui dépassent la largeur spécifiée de la colonne.

Lorsqu'ils sont utilisés en combinaison avec l'attribut étendu facultatif ZEROFILL, les espaces supplémentaires par défaut sont remplacés par des zéros. Par exemple, pour une colonne déclarée comme INT(5) ZEROFILL, la valeur 4 est récupérée sous la forme 00004. Veuillez noter que si vous stockez une valeur dans une colonne entière qui dépasse la largeur affichée, MySQL rencontrera des problèmes lors de la génération de tables temporaires pour des jointures complexes, car dans ces cas, MySQL pense que les données correspondent à la largeur de colonne d'origine.

Tous les types entiers peuvent avoir un attribut facultatif (non standard) UNSIGNED. Les valeurs non signées peuvent être utilisées lorsque vous souhaitez autoriser uniquement les nombres non négatifs dans une colonne et que la colonne nécessite une plage numérique supérieure plus grande.

Les types flottants et à virgule fixe peuvent également être NON SIGNÉS. Pour un même type de nombre, cette propriété empêche l'enregistrement de valeurs négatives dans la colonne. Cependant, contrairement aux types entiers, la plage supérieure des valeurs de colonne reste inchangée.

Si ZEROFILL est spécifié pour une colonne numérique, MySQL ajoute automatiquement l'attribut UNSIGNED à la colonne.

Pour les types de colonnes à virgule flottante, les valeurs simple précision utilisent 4 octets et les valeurs double précision utilisent 8 octets dans MySQL.

Le type FLOAT est utilisé pour représenter des types de données numériques approximatifs. La norme SQL vous permet éventuellement de spécifier la précision en bits (mais pas en plages exponentielles) entre parenthèses après le mot-clé FLOAT. MySQL prend également en charge des spécifications de précision facultatives qui sont utilisées uniquement pour déterminer la taille de stockage. Les précisions de 0 à 23 correspondent à la simple précision de 4 octets de la colonne FLOAT. Les précisions de 24 à 53 correspondent à la double précision sur 8 octets de la colonne DOUBLE.

MySQL permet l'utilisation d'une syntaxe non standard : FLOAT(M,D) ou REAL(M,D) Ou DOUBLE PRÉCISION(M,D). Ici, "(M,D)" signifie que la valeur affiche un total de M entiers, où se trouvent les D chiffres après la virgule. Par exemple, une colonne définie comme FLOAT(7,4) pourrait être affichée sous la forme -999,9999. MySQL arrondit la valeur lors de sa sauvegarde, donc si vous insérez 999.00009 dans la colonne FLOAT(7,4), le résultat approximatif est 999.0001.

MySQL traite DOUBLE comme synonyme de DOUBLE PRECISION (extension non standard). MySQL traite également REAL comme synonyme de DOUBLE PRECISION (extension non standard) sauf si le mode serveur SQL inclut l'option REAL_AS_FLOAT.

Pour garantir la plus grande portabilité possible, le code qui nécessite le stockage de valeurs de données numériques approximatives doit utiliser FLOAT ou DOUBLE PRECISION, sans spécifier de précision ou de nombre de chiffres.

Les types DECIMAL et NUMERIC sont traités comme le même type dans MySQL. Ils sont utilisés pour contenir des valeurs qui doivent être d'une précision exacte, telles que des données monétaires. Lorsque vous déclarez une colonne de ce type, vous pouvez (et vous le faites généralement) spécifier la précision et l'échelle, par exemple :

salary DECIMAL(5,2)

Dans cet exemple, 5 est la précision et 2 est l'échelle ; La précision indique combien de chiffres peuvent être enregistrés dans la valeur et l'échelle indique combien de chiffres peuvent être enregistrés après la virgule décimale.

Enregistrez les valeurs DECIMAL et NUMÉRIQUE au format binaire dans MySQL 5.1.

Le SQL standard exige que la colonne salaire puisse contenir n'importe quelle valeur avec 5 chiffres entiers et deux décimales. Par conséquent, dans ce cas, la plage de valeurs pouvant être enregistrées dans la colonne salaire va de -999,99 à 999,99.

En SQL standard, la syntaxe DECIMAL(M) est équivalente à DECIMAL(M,0). De même, la syntaxe DECIMAL est équivalente à DECIMAL(M,0), et la valeur de M peut être déterminée par calcul. Les formes variables des types de données DECIMAL et NUMERIC sont prises en charge dans MySQL 5.1. MLa valeur par défaut est 10.

Le nombre maximum de chiffres pour un DECIMAL ou un NUMERIC est de 65, mais la plage réelle d'une colonne DECIMAL ou NUMERIC spécifique est limitée par la précision ou l'échelle de la colonne spécifique. Si une telle colonne se voit attribuer une valeur comportant plus de chiffres après la virgule que ce qui est autorisé par l'échelle spécifiée, la valeur est convertie selon cette échelle. (L'opération spécifique dépend du système d'exploitation, mais généralement les résultats sont tronqués au nombre de chiffres autorisé).

Le type de données BIT peut être utilisé pour enregistrer les valeurs des champs de bits. Le type BIT(M) permet de stocker les valeurs de bits M. M va de 1 à 64.

Pour spécifier une valeur de bit, vous pouvez utiliser le symbole b'valeur'. value est une valeur binaire écrite avec 0 et 1. Par exemple, b'111' et b'100000000' représentent respectivement 7 et 128.

Si la longueur de la valeur attribuée à une colonne BIT(M) est inférieure à M bits, complétez le côté gauche de la valeur avec des 0. Par exemple, attribuer une valeur b'101' à la colonne BIT(6) a le même effet que attribuer b'000101'.

Lorsque vous souhaitez enregistrer une valeur dans une colonne numérique qui dépasse la plage autorisée de la colonne, le fonctionnement de MySQL dépend du mode SQL en vigueur à ce moment-là. Si le mode n'est pas défini, MySQL coupe la valeur au point final correspondant de la plage et enregistre la valeur coupée. Cependant, si le mode est défini sur traditionnel (« mode strict »), les valeurs hors plage seront rejetées avec une erreur et les insertions échoueront selon les normes SQL.

Si la colonne INT est UNSIGNED, la taille de la plage de colonnes sera la même, mais ses extrémités passeront à 0 et 4294967295. Si vous essayez de sauvegarder -9999999999 et 9999999999, les valeurs enregistrées dans la colonne en mode non strict sont 0 et 4294967296.

Si la valeur attribuée dans une colonne à virgule flottante ou à virgule fixe dépasse la plage spécifiée par la précision et l'échelle spécifiées (ou par défaut), MySQL enregistre la valeur représentant le point final correspondant de la plage dans un format non strict. mode.

Lorsque MySQL ne fonctionne pas en mode strict, les conversions dues à un écrêtage seront signalées sous forme d'avertissements pour les instructions ALTER TABLE, LOAD DATA INFILE, UPDATE et INSERT multi-lignes. Lorsque MySQL fonctionne en mode strict, ces instructions échoueront et certaines ou toutes les valeurs ne seront pas insérées ou modifiées, selon que la table est transactionnelle et d'autres facteurs.

Ce qui précède est le contenu du didacticiel de base MySQL 1 - Type numérique de type de données. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn