1. Trang chủ
  2. » Công Nghệ Thông Tin

Pratique de MySQL et PHP- P98 ppsx

5 140 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 152,62 KB

Nội dung

B.1 Types de données MySQL 463 Le type INTEGER peut être complété par le mot-clé UNSIGNED qui spécifie si le stockage comprend un bit de signe ou non. Cette option (qui ne fait pas partie de la norme SQL) a un impact sur l’intervalle des valeurs possibles. Par exemple INTEGER UNSIGNED pourra stocker des valeurs dans l’intervalle [0, 2 32 −1],tandis que INTEGER correspond à l’intervalle [−2 31 , 2 31 − 1]. Il existe de nombreuses variantes du type INTEGER : TINYINT, SMALLINT, MEDIUMINT, BIGINT, avec la même syntaxe et les mêmes options. Ces types diffèrent par la taille utilisée pour le stockage : voir le tableau 2.1. Le type DECIMAL (M, D ) correspond à un numérique de taille maximale M,avec un nombre de décimales fixé à D. L’option ZEROFILL est acceptée, mais pas l’option UNSIGNED. La syntaxe est donc : DECIMAL (M, D ) [ZEROFILL] Le type NUMERIC est un synonyme pour DECIMAL. Ces types sont surtout utiles pour manipuler des valeurs dont la précision est connue, comme les valeurs moné- taires. Afin de préserver cette précision, MySQL les stocke comme des chaînes de caractères. Types numériques flottants Ces types s’appuient sur la représentation des numériques flottants propre à la machine, en simple ou double précision. Leur utilisation est donc analogue à celle que l’on peut en faire dans un langage de programmation comme le C. 1. Le type FLOAT correspond aux flottants en simple précision. 2. Le type DOUBLE PRECISION correspond aux flottants en double précision. Le raccourci DOUBLE est accepté. 3. Le type REAL est un synonyme pour DOUBLE. La syntaxe complète de MySQL pour FLOAT (identique pour DOUBLE et REAL) est : FLOAT[(M, D )] [ZEROFILL] où les options M et D indiquent respectivement la taille d’affichage et le nombre de décimales. Caractères et chaînes de caractères Les deux types principaux de la norme ANSI, disponibles également dans MySQL et la plupart des SGBD relationnels, sont CHAR et VARCHAR. Dans MySQL, ils permettent de stocker des chaînes de caractères d’une taille maximale fixée par le paramètre M, M devant être inférieur à 255. Les syntaxes sont identiques. Pour le premier : CHAR(M ) [BINARY] 464 Annexe B. Référence MySQL et pour le second : VARCHAR(M ) [BINARY] La différence essentielle entre les deux types est qu’une valeur CHAR a une taille fixée. MySQL la complète avec des blancs si sa taille est inférieure à M. En revanche une valeur VARCHAR a une taille variable et MySQL la tronque après le dernier caractère non blanc. Si on n’utilise pas l’option BINARY, les comparaisons de chaînes de caractères ne distinguent pas les minuscules des majuscules (donc ’AAA’ sera considéré comme identique à ’aaa’). Pour stocker des chaînes de caractères plus longues que 255, il faut utiliser une des variantes des types BLOB ou TEXT. Les comparaisons sur une valeur de type TEXT ne distinguent pas majuscules et minuscules. TEXT et BLOB peuvent donc être considérés comme des VARCHAR de grande taille, avec l’option BINARY pour le second. Les variantes TINY, MEDIUM, LONG des types BLOB et TEXT diffèrent par la taille des valeurs acceptées : voir tableau 2.1. La norme SQL ne propose ni BLOB,niTEXT, mais un type BIT VARYING qui correspond également à de longues chaînes de caractères. Dates Un attribut de type DATE stocke les informations « jour », « mois » et « année » (sur 4 chiffres). La représentation interne à MySQL occupe 3 octets, mais les dates sont affichées par défaut au format AAAA-MM-JJ. Les nombreuses opérations de conversion de la fonction DATE_FORMAT() permettent d’obtenir un format d’affi- chage quelconque (voir page 475). Un attribut de type TIME stocke les informations « heure », « minute » et « seconde ». L’affichage se fait par défaut au format HH:MM:SS.LetypeDATETIME permet de combiner une date et un horaire, l’affichage se faisant au format AAAA-MM-JJ HH:MM:SS. Le type TIMESTAMP stocke une date et un horaire sous la forme du nombre de secondes écoulées depuis le premier janvier 1970. La syntaxe est TIMESTAMP[(M )] où M indique optionnellement la longueur de l’affichage (mais pas la taille de la représentation interne). Par défaut, elle est fixée à 14, ce qui permet d’afficher un TIMESTAMP au format AAAAMMJJHHMMSS. Le comportement d’un attribut de type TIMESTAMP est particulier : si de tels attributs ne sont pas spécifiés explicitement dans un ordre SQL d’insertion (INSERT) ou de mise à jour (UPDATE), MySQL leur affecte automatiquement comme valeur le moment de la mise à jour. Il s’agit alors véritablement d’un « estampillage » de chaque ligne par le moment de la dernière modification affectant cette ligne. Enfin, le type YEAR[2|4] permet de stocker des années sur 2 ou 4 positions. B.2 Commandes de MySQL 465 Les types ENUM et SET Ces deux types sont particuliers à MySQL. Le premier permet d’indiquer un type énuméré dont les instances ne peuvent prendre leur (unique) valeur que dans un ensemble explicitement spécifié. La syntaxe est : ENUM (’valeur1’, ’valeur2’, ’valeurN’ ) MySQL contrôle, au moment de l’affectation d’une valeur à un attribut de ce type, qu’elle appartient bien à l’ensemble énuméré {’valeur1’, ’valeur2’, ’valeurN’ }. MySQL stocke alors l’indice de la valeur, sur 1 ou 2 octets selon la taille de l’ensemble énuméré (au maximum 65535 valeurs). Le type SET est déclaré comme le type ENUM, mais un attribut de type SET (’valeur1’, ’valeur2’, ’valeurN’ ) peut prendre plusieurs valeurs dans l’ensemble {’valeur1’, ’valeur2’, ’valeurN’ }. Il peut y avoir au maximum 64 valeurs dans l’ensemble, et MySQL stocke un masque de bits sur 8 octets au plus pour représenter la valeur d’un attribut. B.2 COMMANDES DE MySQL Cette section présente l’ensemble des commandes de MySQL. Tous les termes en italiques indiquent des constructions syntaxiques qui reviennent dans plusieurs commandes et sont détaillées séparément. Commande ALTER TABLE ALTER [IGNORE] TABLE nomTable commandeAlter commandeAlter : ADD [COLUMN] commandeCr´eation [FIRST | AFTER nomAttribut ] ou ADD INDEX [nomIndex ](nomAttribut, ) ou ADD PRIMARY KEY (nomAttribut, ) ou ADD UNIQUE [nomIndex ](nomAttribut, ) ou ALTER [COLUMN] nomAttribut {SET DEFAULT literal | DROP DEFAULT} ou CHANGE [COLUMN] ancienNomColonne commandeCr´eation ou MODIFY [COLUMN] commandeCr´eation ou DROP [COLUMN] nomAttribut ou DROP PRIMARY KEY ou DROP INDEX nomIndex ou RENAME [AS] nomTable ou optionTable MySQL commence par copier la table existante, effectue les modifications deman- dées sur la copie, et remplace l’ancienne table par la nouvelle si tout s’est bien passé. 466 Annexe B. Référence MySQL L’option IGNORE indique à MySQL de ne pas annuler la commande si celle-ci crée des doublons de clés. Si IGNORE est employée, seule la première ligne de chaque ensemble de doublons est prise en compte. Les commandes de modification de schéma ont été illustrées page 204 et suivantes. Commande CREATE DATABASE CREATE DATABASE nomBase MySQL crée un répertoire vide de nom nomBase. Commande DROP DATABASE DROP DATABASE [IF EXISTS] nomBase Cette commande détruit tous les fichiers d’une base ! Le script s’interrompt si la base n’existe pas, sauf si l’option IF EXISTS est utilisée. Commande CREATE TABLE CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nomTable (commandeCr´eation, ) [optionsTable ][optionSelect ] commandeCr´eation : nomAttribut type [NOT NULL | NULL] [DEFAULT literal ] [AUTO_INCREMENT] [PRIMARY KEY] [r´ef´erence ] ou PRIMARY KEY (nomAttribut, ) ou KEY [nomIndex ](nomAttribut, ) ou INDEX [nomIndex ](nomAttribut, ) ou UNIQUE [INDEX] [nomIndex ](nomAttribut, ) ou [CONSTRAINT contrainte ] FOREIGN KEY nomIndex (nomAttribut, ) [r´ef´erence ] ou CHECK (expression ) optionsTable : TYPE = {ISAM | MYISAM | HEAP | InnoDB} ou AUTO_INCREMENT = # ou AVG_ROW_LENGTH = # ou CHECKSUM = {0 | 1} ou COMMENT = "commentaires" ou MAX_ROWS = # ou MIN_ROWS = # ou PACK_KEYS = {0 | 1} ou PASSWORD = "motDePasse" ou DELAY_KEY_WRITE = {0 | 1} B.2 Commandes de MySQL 467 optionSelect : [IGNORE | REPLACE] SELECT (requ^ete SQL) r´ef´erence : REFERENCES nomTable [(nomAttribut, )] [MATCH FULL | MATCH PARTIAL] [ON DELETE optionR´ef ] [ON UPDATE optionR´ef ] optionR´ef : RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT Cette commande crée une table dans la base courante : voir page 197. L’option TEMPORARY indique que la table est créée pour la connexion courante uniquement. L’option optionTable permet de choisir le type de table. Le type InnoDB est le stockage le plus sophistiqué : il supporte les transactions et les clés étrangères. Le nom d’un index est optionnel. En son absence, MySQL engendre automa- tiquement un nom constitué du nom du premier attribut suivi éventuellement des suffixes ’_1’, ’_2’, etc. La commande SHOW INDEX FROM nomTable donne la liste desindexsurunetable. Il est possible de créer un index sur une partie seulement d’un attribut avec la syntaxe nomAttribut(taille). C’est obligatoire pour les types BLOB et TEXT. Les options FOREIGN KEY, CHECK et CONSTRAINT existent pour des raisons de compatibilité avec SQL ANSI, mais sont ignorées par MySQL (voir chapitre 4). L’option optionSelect permet d’ajouter à la table les attributs d’un ordre SQL. Commande OPTIMIZE TABLE OPTIMIZE TABLE nomTable Cette commande réorganise une table en récupérant les espaces vides et en défrag- mentant la table. On peut aussi utiliser l’utilitaire myisamchk. Commande DELETE DELETE [LOW_PRIORITY] FROM nomTable [WHERE clauseWhere ] [LIMIT nbLignes ] Cette commande détruit toutes les lignes vérifiant les critères de la clause WHERE. L’option LOW_PRIORITY indique à MySQL que les destructions sont moins priori- taires que toutes les requêtes courantes qui accèdent à la table. . l’ensemble, et MySQL stocke un masque de bits sur 8 octets au plus pour représenter la valeur d’un attribut. B.2 COMMANDES DE MySQL Cette section présente l’ensemble des commandes de MySQL. Tous. affectant cette ligne. Enfin, le type YEAR[2|4] permet de stocker des années sur 2 ou 4 positions. B.2 Commandes de MySQL 465 Les types ENUM et SET Ces deux types sont particuliers à MySQL. Le. chaînes de caractères Les deux types principaux de la norme ANSI, disponibles également dans MySQL et la plupart des SGBD relationnels, sont CHAR et VARCHAR. Dans MySQL, ils permettent de stocker des

Ngày đăng: 06/07/2014, 00:20