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

Pratique de MySQL et PHP- P98 ppsx

5 145 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Afin de préserver cette précision, MySQL les stocke comme des chaỵnes de caractères.. Caractères et chaỵnes de caractères Les deux types principaux de la norme ANSI, disponibles égalemen

Trang 1

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, 232−1], tandis

que INTEGER correspond à l’intervalle [−231

, 231− 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]

ó 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]

Trang 2

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, ni TEXT, 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 Le type DATETIME 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 )]

ó 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

Trang 3

Les typesENUMetSET

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é

Trang 4

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}

Trang 5

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

des index sur une table

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

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