0 évaluation0% ont trouvé ce document utile (0 vote) 101 vues14 pagesMemento MySQL
Copyright
© All Rights Reserved
Formats disponibles
Téléchargez aux formats PDF ou lisez en ligne sur Scribd
Rodolphe Rimelé
| EYROLLESCréation d‘une base et de tables
Un serveur MySQL contient une ou plusieurs bases de données, interrogeables par un
programme client. Chaque base contient au moins une table, structurée en champs
(colonnes) définis A sa création, et contenant zéro A plusieurs enregistrements (lignes|.
ReWARGUE Ce memento offre tine sélection des commanties les plus utiles, n’hésitez pas
a consulter ka documentation officielle sur hitp:/| ([Link]/doc/,
Créer une base de données ou une nouvelle table
CREATE DATABASE nom de la base;
CREATE TABLE nom_de_la_fable {
nom_champ] typs_champiflongueur) altributs,
nom_champ2 type_chomp2{longueur) attributs,
type_clé] nom_clél, lype_clé2 nom _clé2, ...
) TYPE = type _de table;
Chaque champ {colonne) est défini par un nom, un type dont la longueur est spéci-
fige (voir plus loin « Types de champs »), et des attributs, séparés par des virgules,
pouvant prendre ces valeurs :
NULL / NOT NULL Le champ peut étre vide, en prenant ou non la
valeur NULL
DEFAULT 'valeur_par_defau? Le champ a une valeur par défaut.
AUTO_INCREMENT Sa valeur est auto-incrémentée a chaque nouvelle
insertion (clé primaire et type numérique requis)
RewAkave La longubur est facultative pour les types llmhériques “CHAR et VARCHAR.
File n’est pas permise pour les autres types (dates, TEXT, BLOB, ENUM, SET...
‘Les clés (index) de la table sont indiqués par leur type (voir plus loin « Types d’'in-
dex ») et leur nom (champ @ indexer}
Le type de table est spécifié 4 la création par la clause TYPE=type_de_fable en fin
d/instruction CREATE TABLE. Les types par défaut sont :
MylSAM Format par défaut
MEMORY (HEAP) En mémoire vive, rapide mais perte des données au
redémarrage du serveur
InnoDB Permet les transactions et les locks avances
Exewrie
CREATE TABLE adresses (id INT NOT NULL UNSIGNED AUTO. INCREMENT,
nom CHAR(50] NOT NULL prenom CHARI4O), anniversaire DATE,
PRIMARY KEY|ic)
) TYPE = MyiSAM;
Créer une table ayant la méme structure qu'une autre
CREATE TABLE nouvelle table LIKE ancianne_table;
Créer un index
CREATE [type_index] INDEX nom_index ON nom_table (cal_indexea,...);
Met en place tine clé nom_index de type type_index (UNIQUE, FULLTEXT ou SPATIAL)
Sur une on plusieurs colonnes, dont les noms sont séparés par des virgules.
PERFORMANCES Il est possible de spécifier la longueur du champ a indexer entre paren-
théses, notamment lorsqu’ll s'agit de champs texte et il est inutile d’indexer toute la
chaine de caractéres pour des raisons de performances.
Exempus ; CREATE INDEX debut prenom ON camet_adresses|prenom(5});
Btape préliminaire avant toute epération ; la connexion a la base se fait via un client
mysql, en ligne de commande ou en mode graphique (MySQL Query Browser...), ou
encore 4 travers un langage (PHP, C, Ruby...
Connexion en ligne de commande avec le client mysql
Sous Linux/Unix, Mac 08 X, et sous Windows {invite de commandes} :
mysql -ulogin -[Link] passe Connexion sans spécifier de base de données
mysql -ulogin -pmot_de_passe Connexion spécifiant une base de données
nom, base
Une fois connecté, saisir directement les requétes closes d'un point-virgule.
Proouctvrt Instructions utiles en ligne de commande
source nom_de fichier Exécute les commandes SQl. stockées dans un fichier.
quit OU exit Quitte le client mysql.
use Choisit la base de données & utiliser.
status Affiche l'état du serveur,
? Alffiche Yaide
tee nom_de_fichier Enregistre les commandes entrées et leurs résultats dans
un fichier journal
LE x oF srConnexion 4 une base de données
Commandes utiles |
mysqldump Exporte vers un fichier texte pour sauvegarde cu transfert entre
serveurs, une (--opt nom_base| ou toutes [-—all-datoboses} les
pases.
Exeupte mysqldump ~—opt nom_base > [Link]
Meade —-alrceacbcsas > Auer se |
myisamehke Verifie, optimise et répare les tables ati format MyISAM.
ATTENTION Le serveur doit étre stoppé durant les opérations.
mysqlimport Importe un fichier texte dans une table (similaire & LOAD DATA
INFILE}.
mysqladmin Permet de créer/supprimer une base, exporter des tables, |
recharger les droits d'accés, etc. |
ExeMPLE Pour changer le mat de passe root
myanledmin -u root password mot de paws
mysqlchect Utilitaire client de maintenance des tables, pour les vérifier, j
Téparer, analyser et optimiser,
ATTENTION Le serveur doit éire démarré durant les opérations.
mysalshaw Affiche des informations sur une table ow tin index.
mysqidumpslow Affiche le journal des requétes les plus lentes, si l'option log-
slow-queries est activée sur le serveur.
|
Connexion via PHP
MySQL est souvent utilisé conjointement avec PHP. Les fonctions connect et select_db
établesent une connexion MySQL, la fonction query exécute la requéte. Diverses foric~
tions permettent de lire les résulta's retournés.
Avec MySQLi (PHP version 5 et supérieures) |
imyaali_ connect $mysqi_ server Smysa]_ login, 4mmysqi_password);
mysqli_select_db($mysql_base);
$resull = mysqli_query|'SELECT * FROM fable’);
while($ligne = mysqli fetch_assoc|$resulf} echo $lignet'champ');
mysqli_close();
MySQlLi en mode objet
$sql = new mysqli($mysql_server, $mysq]
$result = $sql->-query('SELECT * FROM tal
whilel$ligne = $resulh>fetch ossoc|)) echo Sligne[!champ');
Ssql->close();
MySQL standord (PHP versions 3 et 4)
mysql_connect{$ mysq!_server,$mysql_login, $mysql_password;
mysql select db($mysqi_base|;
$result = saillcuelyiSHEG) * FROM table’);
whilel$lane = mysql_fetch_assoc($resulf) echo $lignel'chomp');
mysql_close();
Fonctions courantes
ATENTION Le préfixe mysoli est’& remplacer par mysql dans ces noms de fonctions si
le serveur n'est pas Equipe de MySQLi, En ontre, en mode objet, on omet le préfixe
Ja fonction est appelée en tant que méthode de V'instance utilisé (exemPte Smysql
sfeich assoel), $mysqli->-query($requete)) cu en tant qu’attribut dans le cas de valeurs
simples (ex. $result>num_rows, Ssq/->error).
in, $mysql_ password, $mysql_base];
mysqli_querylSrequete) Execute une requéte et renvoie le résultat
mysgli_fetch_row{$resulf Renvoie la ligne dans une liste.
Exenmte whilellist(S champ 1,Schamp2) = mysqli_fetch_row/$resulf) { ... }
mysqli_fetch_assoc($resulf Renvois la ligne dans un tableau associatif,
mysqli_fetch_array(Sresu/f Renvoie la ligne dans un tableau,
mysqli_offected_rows() Renvoie le nombre de lignes affectées par la demiere
commande,
mysqli_insert_id) Renvoie l'identifiant unique (exemple PRIMARY KEY en
AUTO_INCREMENT) de la derniére commande INSERT.
mysqli_errorf) Renvoie le message d’erreur né de la derniére requéte.
mysqli_num_rows(Sresuj Renvoie le nombre de lignes d'un résultat,
mysqli_closel) Perme la connexion MySQL.
AUTRES OUTS
MySQL Administrator: console graphique officielle de MySQL
MySQL Query Browser ; outil on ‘MySQL pour créer, executer et optimiser des re-
quétes SQL
PhpMyAdmin: cutil PHP c’administration MySQL via une interface web, le plus ré-
pandu chez les hébergeurs ([Link] net/)
ae ae a aeRenommer/supprimer bases,
tables et clés
RENAME TABLE oncien_nom TO nouveau_nom: Renomme une table
Remarque Pour renommer paar tables, Sénarer les instructions par des virgules,
eee les priviléges ALTER et DROP sur l'ancienne table, CREATE et INSI
sur la nouvelle:
DROP TABLE nom_de_lo_table, nom_de_/a_toble2,...; Supprime une ou plusieurs
tables
DROP DATABASE nom_de_la_base; Supprime une base de
données
DROP INDEX nom_index ON nom_table: Supprime un index
Eee eet
Perrorwances Le choix du type de champ influe sur les performances et économie de
stockage, ainsi que sur la simplicité des Tequetes qui en découléront. 11 definit un
“nombre fixe ou variable d’cétets pour le stockage de chaque valeur.
"INT pour le stockoge de nombres entiers
Type Nb d'octets De... Bae
TINYINT 1 “128° 127
SMALLINT 2 =32 768 32767
MEDIUMINT 3 -8 388 608 8388 607
INT 4 =21147 483 648 2147483647
BIGINT 8 — -9223372036854775808 9223372036854775 807
ReMarques Si le mot-clé UNSIGNED est specifie, Ja limite inférieure est O [seuls des
‘Tombres positiis sont stackés), 6tla limite supérieure est doublée car on s‘afffanchit
dui signe (ex. TINYINT UNSIGNED : 0 4 255}. INTEGER est un synonyme pour INT. On
pelt spécifier la longueut maximale du champ, entre parentheses, apres le type.
EXEMPLES
oge TINYINT(3) UNSIGNED NOT NULL,
code_postal MEDIUMINT(5) UNSIGNED NOT NULL
Lattribut ZEROFHL définit le caractére « 0» comme remplissage par défaut. Exenre en
stockant la valeur 3:-dans une colonne INT(4) ZEROFILL la valeur lue sera 0003.
BIT, BOOL, BOOLEAN: types booléens pour valeurs binaires
Expriment tne variable née prenaht que deux valeurs (vrai ou faux|, Equivalent 4 un
TINYINT(1) stockant 1 ou © dans un champ numérique.
FLOAT, DOUBLE, DECIMAL pour les nombres a ule flottante
FLOAT et DOUBLE (équiv. REAL) stockent des nombres a virgule flottante. DECIMAL
(equiv. NUMERIC) stocke sous forme littérale : chaque caractére représemte un chiffre
stocké.
REMARGUE Les attributs UNSIGNED et ZEROFILL sont la eusal applicables,
CHAR ef VARCHAR pour les chaines de caractéres
Stockent des chaines sur un nombre maximal d'octets indiqué entre parentheses — les
chaines excédant ce maximum sont tronquées. Sila chaine stockée ocoupe moins d’es-
pace, CHAR réserve quand méme ce nombre d’octets en complétant de blanes, a la
différence de VARCHAR qui ne stocke que la chaine utile.
REMARGUE Si une table comporte au moins un champ de taille variable (VARCHAR,
TEXT, BLOB...), tous les champs CHAR sont automatiquement convertis en VARCHAR
a la création de la table, car il n'y a aucun intérét 4 les laisser en taille fixe.
BINARY et VARBINARY pour les chaines binaires
Différent de la méme fagon que CHAR et VARCHAR (voir ci-avant). Ils n’ont pas de jeu
de caracteres associé, les tis et comparaisons sont basés sur la valeur numérique de
Yostet, et on spécifie leur taille maximale de la méme fagon que CHAR et VARCHAR,
a la difference pres qu’elle est définie en octets.
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, BLOB, TINYBLOB,
MEDIUMBLOB, LONGBLOB pour les chaines longues
Une colonne de type TEXT est assimilable 4 une colonne VARCHAR de grande capa-
cite, Ce type petit contenir une quantité variable de données, en fonction de l'un des
4 types. Les types BLOB (Binary Long Object) different des types TEXT : ils sont sen-
sibles 4 a case (majuscules/minuscules) et triés sur leur valeur binaire.
Rewaraue On ne peut spécifier de valeur par défaut pour les types BLOB et TEXT.
ee ee Oe @Types de champs
Type Capacité de stockage en caractéres
TINYTEXT / TINYBLOB 288
TEXT / BLOB 65535
MEDIUMTEXT / MEDIUMBLOB 16777215
LONGTEXT / LONGBLOB 4294967205 (4 Go)
Extyetes
prix DECIMAL(6,2}, poids FLOAT UNSIGNED, nom CHAR(30), prenom CHAR(5Q),
article TEXT NOT NULL
ENUM et SET pour proposer une liste de choix
ENUM permet le choix d'une valeur parmi une liste definie a la création de la table.
Test possible d’utiliser une chaine vide (' '). La valeur par défaut sera le premier é1é-
ment de I'énumeration si la colonne est declaree NOT NULL ou NULL si 1a colonne
dispose de cet attribut. Une énumeration peut avoir un maximum de 65535 élements.
SET différe a’ENUM car il peut avoir 0 ou plusteurs valeurs choisies dans 1a liste dé-
finie 4 la creation de la table. Les valeurs sont s¢parees par des virgules.
REMARQUE Pour ‘Selectionner des champs selon des valeurs de SET, Je plus simple est
@utiliser Ia fonction FIND_IN_ SET.
EXEMPLE
peluche ENUM(lapin','éléphant ornitharynque'),
couleur ENUM('bleu!,"vert! indigo),
quolites SET|'chormante’,'intelligenie','perspicace'),
SELECT * FROM nom_iable WHERE FIND_IN_SET|'charmante' qualites)=0;
Gestion des dates avec TIME, DATETIME, DATE, TIMESTAMP, YEAR
= TIME stocke un format de date en heures, minutes et secondes 'HH:MM:S5' ou
'HHMMSS', ou 'HHH:MM:SS' pour un grand nombre d’heures (intervalle de -838:39:59
4 838:59:59). Les valeurs TIME non valides sont transformées en date zéro '00:00:00'
= DATETIME permet de stocker une date et une heure, sous la forme ‘AAAA-MM-JJ
HH?! §$' (l'intervalle va de 1000-01-01 00:00:00 4 9999-12-31 23:59:59).
= DATE permet de stocker une date, sous la forme 'AAAA-MM-JJ' (l'intervalle ya de
1000-01-01 @ 9988-12-31}
= TIMESTAMP différe des autres types date, car il stocke automatiquement I’heure
courante lors d‘une commande INSERT ou UPDATE sur les enzegistrements affectes. En
d'autres termes, MySQL applique automatiquement la fonction NOW() lorsqu’aucune
valeur par défaut n‘est spécifiée lors de 'insertion ou de la modification.
Rewraue Pour empécher la mise a jour uitérieure du champ lors de la modification du
‘champ, tui affecter sa propre valeur :
UPDATE nem_fable SET colonne_timestamp=colenne_fimesiamp,
Le type YEAR représente une année, de 190] 4 2195. Son stockage nécessite un octet.
ExeMPLES
UPDATE rendezvous SET heure=! 14:30:20" WHERE contact='Corinne!;
INSERT INTO rendezvous (description jour] VALUES ('Paintbalh,’2006-05-06');
annee YEAR NOT NULL
SELECT * FROM nom_foble WHERE annee=2006;
13
Pour la bonne performance d'une base de données a travers le temps et 4 me=
sure de son remplissage, il est souvent nécessaire dy adjoindre un ou plusieurs
index accélérant la recherche de champs. Rappelons qu'un index est employé
dans une clause WHERE, que tout type de colonne peut étre indexé, qu'il se
orée avant ou apres la création de 1a table (voir CREATE INDEX) ot que KEY est
sSynonyme de INDEX.
EXEMPLE
CREATE TABLE fivres (id INT UNSIGNED, titre CHAR(50)}, editeur CHAR(100)}, descrip-
tion TEXT, INDEX ide _fiire (fifre) INDEX idx_fitre_editeur (Htreediteur );
A
= PRIMARY KEY définit la clé primaire d'une table SQL et porte aussi sur un ou plu-
Sieurs champs, pour identifier de fagon unique et rapide un enregistrement précis (ex. :
numéro de sécurité sociale). Exemeie PRIMARY KEY (ic)
= UNIQUE n’autorise que l'insertion de valeurs ne figurant pas déja dans la colonne.
il interdit les doublons car rend impossibie d'obtenit deux enregistrements pour les-
quels le chamip est strictement idéntique. Exewpie UNIQUE KEY [titre]
m FULLTEXT est voué a l'indexation de texte et permet la recherche d'un ou plusieurs
qots avec évaluation de la pertinence (voir “Requétes avancées”, FULLTEXT et MATCH
.» AGAINST). Nindexe que des VARCHAR ou TEXT de tables MyISAM. Exempt FULL-
TEXT KEY (description)Gestion des utilisateurs
CREATE USER /ogin IDENTIFIED BY Crée un nouvel utilisateur
‘mot de_passet-
RENAME USER ancien login TO nouveau_login; Renomme un utilisateur
SET PASSWORD FOR /agin = Change un mot de passe
PASSWORD{'nouveau_mot_de_passe');
DROP USER login; Supprime un utilisateur
GRANT droils ON cible TO login WITH Modifie ou attribue des droits
options; A un utilisateur
REmaRQue Voir ci-aprés le détoil des options paur la gestion des droits.
REVOKE dois ON cible FROM login; Révoque les droits d'un utilisateur
FLUSH PRIVILEGES; Recharge les droits MySQL
ATTENTION Ncubliez pas de recharger les droits aprés loule modification |
REMARQUE Options pour Ia gestion des droits
cible : nom d'une table nom_table (nom complet : nom_! [Link], 1_fable). Pour attri-
“Duer les droits’ a oo des tables d'une base : nom |
login ares par des virgules, avec .éventuellement Je mot de
passe @ localhost IDENTIFIED | BY 'mot_de_ passe’.
droits ; combinaison d'une ou plusieurs des clauses suivantes (liste non exhaustive) ;
ALL Tous les droits
ALTER Autorise ALTER TABLE
CREATE Autorise CREATE TABLE
CREATE VIEW Autorise CREATE VIEW
DELETE Aamtorise DELETE
DROP Autorise DROP TABLE
EXECUTE Autorise l'emploi de procédures stock#es
FILE Autorise SELECT ... INTO OUTFILE et LOAD DATA INFILE
INDEX Autorise CREATE INDEX et DROP INDEX
INSERT Autorise INSERT
LOCK TABLES Autorise LOCK TABLES
PROCESS Autorise SHOW FULL PROCESSLIST
RELOAD Autorise FLUSH
‘SELECT Autorise SELECT !
SHOW DATABASES Autorise SHOW DATABASES.
SHUTDOWN Autorise mysqladmin shutdown
SUPER Autorise entre autres KILL et SET GLOBAL
UPDATE Autorise UPDATE
USAGE Synonyme de “pas de privilges”
GRANT OPTION Synonyme de WITH GRANT OPTION (voir ci-dessous)
options est facultatif et peut étre combinaison des valeurs suivantes :
WITH GRANT OPTION Donne le droit de modifier les droits
des autres utilisateurs
WITH MAX_QUERIES_PER_HOUR n WNautorise que n requétes par heure '
WITH MAX_UPDATES_PER_HOUR n Nrautorise que n requétes UPDATE par
heure
‘WITH MAX_CONNECTIONS PER HOUR n N'autorise que n connexions par heure
WITH MAX_USER_CONNECTIONS n Wautorise que n connexions
simultanées
EXEMPLE
GRANT SELECT,UPDATE DELETE INSERT ON jumbo.t TO ‘dumbo'@" localhost IDENT-
FIED BY 'pHpmySqlo0wa' WITH GRANT OPTION;
LY)
Pour changer la structure d'une table existante : ALTER TABLE nom_fable ...
Suivi, au choix, des instructions suivantes :
:
RENAME nouveau_nom_table Renomme la table
MODIFY nom_champ nouveau_type Modifie le type d'un champ |
CHANGE nom_champ Change le champ nom_champ vers
nouveau_nom_champ nouveau _type nouveau_nom_champ avec le type
nouveau_lype
ADD nom cham np, tyPe cham Ajoute un champ |
Exempts ALTER TAB BLE fable ‘ADD code. ae GRARE AFTER ville:
Ruiunalé On précisera la position du chomp dams ke sructura tec les clauses AFTER
laprés un quire champ & préciser) et FIRST (en premier).
ADD INDEX nom_index type_index Ajoute un index de type fype_index sur
(champ, champ2...) champ, chomp2...
ADD PRIMARY KEY nom_index Ajoute une clé primaire de type !ype_index
type_index (champ, champ2...) sur champ, champ2.
rer eer-
ier la structure d‘une table
ADD UNIQUE nom_index type_index Ajoute un index unique sur champ de type
(chomp, champ2...)
“ADD FULLTEXT nom_index
{champs chanya?
DROP nom champ
DROP PRIMARY KEY
DROP INDEX nom_inclex
type_index sur champ, champ?...
Ajoute un index de type FULLTEXT sur
champ, champ2.
Supprime le champ de la structure de la table.
Supprime la primaire de la structure de la lable.
Supprime un index de la structure de la table.
SELECT champ1,champ2 FROM
nom. table: clause_where clause_group
clause_order clause limit;
Sélectionne tous (*} ou certains
enregistrements d'une table, répondant
éventuellement 4 des conditions.
ClauseS CONDIMONNELIES Voir plus loin las clauses WHERE, GROUP BY, ORDER BY,
UMIT pour les requétes conditionnelles et triées.
SELECT nom,ROUND
(2006-annee_naissance) AS age FROM
adresses ORDER BY age DESC;
SELECT @.jour,[Link] FROM anniversaires
AS a.cornel_adresses AS p WHERE
[Link] = paid:
INSERT INTO nom_table
(champ 1.champ2....)
VALUES ['voleur!','valeur2...);
Le mot clé AS crée un alias sur un
nom de colonne ou de table. Il est
ainsi possible de raccourcir les noms
utilisés pour des sommodités
d’écriture, (Ci-contre alias sur champ
puis sur table)
Insére de nouveaux enregistrements
dans une table.
ReMaRues Si une colonne n'est pas spécifiée dans ka lise, elle prend la valeur
par géfout qui lie 6 csianée los dl eration de table: Sune colorne
sséde lattribut AUTO_IN
REMENT il suffit de ne pos préciser la colonne &
‘insertion, ou de lui donner la valeur NULL. INS| i i
permet les insertions multiples :
INSERT INTO mementos (titre,ecliteur] VALUES ('MySQL','Eyrolles'),"XHTML',"Eyralles');
DELAYED
En précisant la clause DELAYED aprés INSERT, le serveur rend la
main au client et n'insére les lignes que lorsque la table est
inutilisée.
LOW_PRIORITY La clause LOW_PRIORITY retarde insertion jusqu’a ce qu'il n‘y ait
plus de client lisant la table, mais ne rend pas la main.
INSERT INTO mementos
(titre_memento, description_memento,
prix_memento} SELECT fitre,description,
‘5’ FROM livres WHERE type='memenio';
UPDATE nom_fable SET champ ]=
‘nouvelle_valevr'.champ2="aulre_valeur
WHERE champ3=champ2+7;
Exeniple UPDATE produit
prod id=catalogue.
INSERT... SELECT permet d'insérer des
valeurs partir d’une ow plusieurs
autres tables grace a une sous-requéte
SELECT.
Met & jour des enregistrements dans
une table, concemés ou non par une
condition, L'UPDATE peut porter sur
plusieurs tables.
talogue SET produit,prie=[Link] WHERE
eMARQUE Il est passible d'utiliser [a clause LIMIT ov ORDER BY pour limiter lo portée
des modifications. lg clause WHERE est facultative, dans ce cas tous les enregistrements
de la table seront affectés. Si LOW_PRIORITY est spécifié oprés UPDATE, les
modifications auront lieu lorsqu’cueun client ne lire: plus la table. Le nombre
'enregistrements affectés est retourné.
INSERT INTO participants
(ON DUPLICATE KEY UPDATE procéde a
[aom_joueur,score} VALUES ['Manw’,1337) une requéte UPDATE si V'insertion
ON DUPLICATE KEY UPDATE
score=score+ 1337;
REPLACE INTO animaux (id,espece,nom)
VALUES |2'Lapin','Trudy’);
engendre un doublen pour une clé
PRIMARY ou UNIQUE
Insére ou remplace des
enregisttements dans une table.
Remaraue REPLACE fenclionne similairement INSERT sauf dans le cas oi Iinsertion
erée un doublon dans une table munie d'un index UNIQUE ou PRIMARY KEY. Il n'a.
dilleurs de sers qu’avec ces deux lypes dindex. Dans ce cas, 'ancien enregistrement
est e'
DELETE FROM nom_fable WHERE
condition ORDER BY champ_de_tri
UMIT limite;
TRUNCATE TABLE nom_table;
LOAD DATA INFILE ‘[Link]?’ INTO
TABLE estomac FIELDS TERMINATED
BY '\P LINES TERMINATED BY '\n';
cé avani que le nouveau ne soit inséré.
Efface les enregistrements d'une table
répondant ou non & une condition, et
renvoie le nombre de lignes effacées,
éventuellement avec une clause
limitative et un ordre de suppression.
Equivaut en plus rapide 4 DELETE
FROM nom_table; car assimilé & une
destruction/création de table.
Tnsére dans la base de données un
fichier texte qui peut avoir été oréé
grace 4 la commande SELECT ... INTO
OUTFILE.
Reywsoue Lintrpréintion du fichier depend des closes FIELDS ot LINES,
inissant Ia facon dont sont separé:
Fichier texte,
les champs (colonnes) et les lignes du
-
[ee|
|
|
Cr rd
FIELDS peut étre spécifié par une (ew moins) ou plusieurs instructions
FERMINA ED BY ‘MI’ : colonnes séparées par. = tabulation)
ENCLOSED BY" : colonnes entourées d'un caraciére précis (ex. quillemets)
ESCAPED BY '\\" = caractére c’échappement (ici un anfislash simple}
mLINES est défini por, STARTING BY "* [les lignes commencent par...) ef
[eehuyareD BY ‘\n! {les lignes terminent par...) oU \n est une nouvelle ligne ou
line
Pour ignorer les lignes superflues an début de fichier, IGNORE nb_de_lignes LINES.
SELECT * INTO OUTFILE ‘sangria. t<* Exporte les enregistrements retournés
FIELDS TERMINATED BY ',' FROM boissons; par une instruction SELECT vers un
fichier texte. (Voir ci-dessus pour la
syntaxe des clauses FIELDS et LINES.)
Requétes conditionnelles
avec Vie
L'essentiel étant d’effectuer des requétes SELECT, REPLACE, DELETE ou UPDATE
sur les enregistrements d'une table répondant 4 une condition, WHERE se ré—
vele indispensable pour mettre en jeu un ou plusieurs tests, portant sur un ou
plusieurs champs. Toutes sortes de fonctions peuvent étre utilisées pour com-
pater les champs entre eux, ou a des constantes, sauf les fonctions d’aggréga-
tion (AVG, MIN, MAX, SUM...}.
ExEMPLE
SELECT * FROM nom_toble WHERE colonne='valeur';
Ces conditions peuvent étre multiples grace aux opérateurs de comparaison.
‘OPERATEURS DE COMPARAISON
Booléens : AND (&&) : ETlogique OR {II} : OU logique
Comparateurs : < inférieur 4 égal <= inférieur ou égal
> supérieur & different de >= supérieur ou égal
Parenthéses de priorité :
SELECT * FROM cornet WHERE age>20 AND (code _postal='67' OR age<=35);
UKE Teste la validité d'une chaine de caractéres ou d'un nombre par
Tapport 4 uné expression pouvant contenir deux caractéres joker :
% [aucun ou plusieurs caractéres) : _ (un caractére exactement].
EXEMPLES
SELECT prenom FROM camet WHERE prenom LIKE 'Cx'; + Charles, Corinne, Claire
SELECT mot,definition FROM dico WHERE mot LIKE 'Fu's + Fusée, Fusil, Futur
NOT UKE Seuls les champs ne correspondant pas a I'expression sont valides,
REGEXP Teste qu'une chaine est conforme 4 une expression réquliére.
EXEMPLE
SELECT filre FROM livres WHERE titre REGEXP 'E} si c\'élait +';
STRCMP Compare deux chaines et renvoie 0 si elles sont identiques, -1 si
la premiére chaine est plus petite que la seconde, | sinon.
STRCMP est insensible 4 la casse.
ExeMpLe
SELECT titre FROM livres WHERE STRCMPttitra,'mysq!') >= 0;
IN / NOTIN Teste I'appartenance d'une valeur une liste. Depuis MySQL 4.1,
IN() peut contenir une sous-requéte.
EXeMPLe
Teen FROM desserts WHERE fruit IN(SELECT nom FROM fruits WHERE nom
BETWEEN Teste la présence d'une valeur dans un intervalle, bores inciuses
(min <= valeur AND valeur <= max]
EXEMPLE
SELECT nom,age FROM carnel_adresses WHERE age BETWEEN 20 and 35;
NOT Seules les valeurs hors de T'intervalle sont prises en compte
BETWEEN
FULLTEXT Recherche en texte intégral. N’est possible que sur les colonnes
MATCH... dotées d'un index FULLTEXT. Elle est insensible a la casse et la
AGAINST taille minimale des mots recherches est de 4 lettres.
‘EXEMPLE
SELECT * FROM livres WHERE MATCH(titre,resume)] AGAINST ('mysq!];
Permence Quand MATCH() est ufilisé comme condition de WHERE les lignes retournées
sont aulamatiquement organisée par lo pertinence. Exprimée sous forme de décimal po-
sifif, elle peut etre sélectionnée pour opérer un tri personnalisé.
SELECT id, MATCH(titre,resume| AGAINST |'mysqf') AS pertinence FROM livres;
Dans le résultat abtenu figurent tous les enregistrements de Iq table, assortis d'une colonne
pertinence dont lo valeur est comprise entre O (pas de similarité) et 1 (Irés pertinent}.
ae [ ieDéclencheurs (TRIGGER
Un déclencheur (trigge) s‘active lorsqu’un événement survient sur une table.
CREATE TRIGGER nom_déclencheur BEFORE|AFTER événement ON nom_foble FOR
EACH ROW requéte_d_exécuter,
Lévénement peut étre une commande telle que INSERT, UPDATE ou DELETE.
Dans la requéte a exécuter, la référence a une colonne doit s'accompagner des
mots-clés OLD et NEW : OLD.nom_ligne et NEW.nom_ligne désiqnent respec-
tivement la ligne avant et aprés sa modification (ou avant effacement et apres
insertion respectivement).
ATENTION II ne peut y avoir deux déclencheurs de méme évenement au méme mo-
ment. CREATE TRIGGER nécessite le privilége SUPER,
Exemple
CREATE TRIGGER insertion BEFORE INSERT-ON compiles FOR EACH ROW SET @somme
= @samme + [Link];
Supprimer un déclencheur :
DROP TRIGGER nom_fable.nom_déclencheur;
DISTINCT Permet de ne sélectionner qu'une fois chaque valeur
dans une table (sans doublon).
Exemrie
SELECT DISTINCT ville FROM onnuaire WHERE code postal LIKE '67%';
ORDER BY —Ordonne le résultat de la requéte en triant sur au moins une
colonne.
Par défaut, le tri est croissant. Pour inverser l'ordre, ajouter la
Clause DESC (tri décroissant}.
EXEMPLe
SELECT nom,prenom FROM ORDER BY age DESC;
GROUP BY Groupe Jes résultats d'une requéte selon une ou plusieurs
: colonnes, en qénéral pour effectuer dessus des calculs (sommes...J.
SKEMPLE
SELECT [Link][parties! FROM golf GROUP BY ioveur,
TOTAL En ajoutant la clause WITH ROLLUP aprés GROUP BY, une dermiére ligne
comprenant le total des valeurs groupees est ajoutée au jeu de résultats,
HAYING Ne peut étre utilisé qu’aprés GROUP BY, et, s'il y en a, avant une
clause ORDER BY. Opére une sous-sélection des résultats 4 l'aide
@une condition supplémentaire (calcul...). Permet d'utiliser des
fonctions non autorisées dans une clause WHERE, telles que SUM,
AVG, MIN, MAX.
ExempLe
SELECT clientachats,pays FROM clients WHERE poys='France' GROUP BY
client,achats HAVING MAX{achats}> 1000;
UMIT Limite a n lignes le résultat retourné, si nécessaire en débutant 4
partir d'une ligne m.
Exempie SELECT * FROM nom_iable LIMIT m,n
SELECT nom,prenom FROM contacts LIMIT 5,10;
La plupart des fonctions sont exploitables dans'un SELECT et/ou dans une clause
WHERE
SELECT CONCAT|nom,prenom) FROM adresses WHERE LENGTH{ville)>T0:
SELECT COUNTI*] FROM nom toble; Compte Jes lignes aun résultat.
SELECT ABSI-1337); -% 1337 Renveie la valeur absolue de I'argument.
SELECT CEILING(3.21}; > 4
SELECT FLOOR(3.21); 2 3 Waleur entiére supérieure/inférieure de x.
SELECT RAND(); > 0.25508742100189 Renvoie un nombre a virgule flottante
entre O et | inclus.
Remarque Peut servir G ordonner un résultat aléatoirement
SELECT * FROM fable ORDER BY RAND|];
SELECT ROUNDI4.7); + 5 Renvoie l'arrendi entier le plus proche.
‘Nomore ce pécmaves = Un deuxiéme araument n peut étre précisé pour orrondir la
valeur a n décimales,
SELECT TRUNCATE(4.7); > 4 Renvoie l'arqument x tronqué.
Nomere be pécimales §= Un deuxiéme argument n peut étre précisé pour ironquer la va-
leur 4 n décimales.
Fy eR oRUnions et jointures
UNION combine les résultats de plusieurs requétes SELECT en un seul résultat.
Les colonnes de chaque requeéte doivent étre du méme type.
(SELECT champ!.champ2,... FROM nom_tablel) UNION (SELECT champi.champ2.
FROM nom_table2\;
Le mot-clé ALL renvoie toutes les lignes concemées par:chaque SELECT. Par dé-
faut, les lignes retournces sont uniques (comme avec DISTINCT) pour l ensemble
du résultat.
‘SELECT a,b FROM table] UNION ALL SELECT c,d FROM table2;
Les jointures mettent en relation plusieurs tables grace a uns seule requéte (pro-
duit cartésien sur lequel on applique des conditions). Pour préciser le type de
jointure
INNER JOIN _Sélectionne uniquement les lignes correspondantes qui se
trouvent dans les deux tables.
LEFT JOIN Sélectionne toutes les lignes de la table de gauche et si tel est
le cas les entrées correspondantes dans la table de droite. S'
n'y a pas d'entrée correspondante dans la table de droite, elle
est remplacée par des valeurs NULL.
RIGHT JOIN Sélectionne toutes les lignes dans la table de droite et les
entrées comrespondantes dans la table de gauche. S'il n'y en a
pas, elle est remplacée par des valeurs NULL.
STRAIGHT_JOIN Identique a JOIN, mais la table de gauche est lue avant celle de
droite.
NATURAL JOIN Jointure sur les colonnes qui possédent le méme nom et le
méme type dans les deux tables.
Ces clauses JOIN sont utilisées conjointement avec ON ou USING : la clause
ON s'eécrit comme une condition utilis¢e dans une clause WHERE ; USING
nomme les colonnes communes a exploiter pour la jointure
EquivAleNce Ces deux instructions sont équivalentes ;
fable? LEFT JOIN jeble2 USING (champ! .champ2.champ3]
table!.champ|—table2.champ1 AND toble!,champ2=table2.champ2 AND:
fable [Link]=table2.champ3
EXemPes
SELECT * FROM foblel, table? WHERE table] id=table2 id:
SELECT * FROM fablel LEFT JOIN fable? ON table? id=[Link];
SELECT * FROM tablel LEFT JOIN table? USING (id);
SELECT * FROM table? LEFT JOIN fable? USING (champ1,champ2,champ3);
SELECT fable!.champ/,table2.champ2 FROM table? JOIN table2 ON
table |.champ3=table2 champ:
SELECT Renvoie la clé de hachage MDS (Message-Digest Algoxithm)
MDS5I'Cygnus"); de la chaine en argument (hexadécimal de 32 caractéres).
+ del4d8235828 |ObedeOde92ce034b721
SHA1|) ou SHA) =—“Renvoie la somme SHA1 [Secure Hash Algorithm) de la
chaine passée en argument (hexadécimal de 40 caractéres}.
SELECT SHAI("Cygnus'); ~® ccf25b0c992a7e2fad731 1 107dcfl Oe71 9c269ec
PASSWORD), Calcule un mot de passe MySQL a partir de la chaine.
Cette fonction est utilisée pour l'encodage des mots de
passe stockés dans la table [Link].
SELECT PASSWORD|'banane)); * 33b8ada77dé84dab
ENCODE() DECODE() Ces fonctions encodent et décodent respectivement un texte
passé en argument 4 l'aide d'une cle elle aussi spécifiée.
SELECT ENCODE('C\est un secret’,'banane'); + GcZiF38B4e
SELECT DECODE(' Gc2iF38B4e','banane'); = C'est un secret
FOUND_ROWSi) Renvoie le nombre d’enregistrements trouvés lors de la
demiére requéte.
LAST_INSERT_ID) Renvoie le demier identifiant unique {ex : clé en
AUTO_INCREMENT) créé par une requéte INSERT.
VERSION( Renvoie la version du serveur MySQl. utilisé.
USER() Renvoie |'identité de l'utilisateur courant.
SELECT USER(); + dumbo@locathost
ee - oe BFManipulation de chaines
de caractéres
CONCATIchoine!,
chaine?,...)
LENGTH(chaine)
Concaténe des champs ou des chaines de texte.
SELECT CONCAT|"ki’, ‘wil, > kivi
Renvoie la longueur en octets de ta chaine de texte.
SELECT LENGTH|'kiwi'); -® 4
Renvoie la position de la 1° occurrence de la
sous-chaine.
SELECT INSTR{'J\‘cime Jes kiwis','kiwi'); -® 12
INSTRIchaine,
sous-chaine]
LEFT(chaine,n) Renvoie les n premiers/derniers caractéres de chaine.
RIGHT(chaine,n) SELECT LEFT(‘\'aime les kiwis', 6); -» J'cime
LOWER(chaine} Met les caractéres de chaine en minuscules/majuscules.
UPPER(choine) SELECT UPPERI‘\ ‘aime les kiwis}; -> J'AIME LES KIWIS
REPLACE(chaine, Remplace les sous-chaines chaine_a par chaine_b dans
chaine.
SELECT REPLACE(‘J\'aime les kiwi
+ Jaime les oranges
cheiine_a,chaine_b}
ii
orange’);
REVERSE(chaine) Renyoie une chaine inversee.
SELECT REVERSE('kiwi'|; > iwik
SUBSTRING(chaine, Renvoie une sous-chaie de chaine, de longueur na
position,nl partir de la position position:
SELECT SUBSTRING|'J\ ‘aime les kiwis',8,9}; > les kiwis
SELECT NOW|); > 2007-01-27 13:37:00. Renvoie la date actuelle au format
H:MiM:SS'.
"OYY-MM-DD_
Synonymes SYSDATE(), LOCALTIME(), CURRENT_TIMESTAMP|), LOCALTIMESTAMP()
SELECT CURDATE); - 2007-01-27
‘SELECT CURTIMED; - 13:37:00
‘SELECT UNIX_TIMESTAMP]);
> 1147550227
Renvoie la date au format "YYYY-MM-DD',
Renvoie 'heure au format 'HH:MMiSS!
Renvoie le timestamp UNIX actuel
{nombre de secondes écoulées depuis
le I janvier 1970 & 00:00:00)
Renarque Si UNIX TIMESTAMP) est appelée avec un argument date, elle renvoie
le timestamp correspondant & cette date.
SELECT FROM_UNIXTIME(] 147556444);
> 2006-05-13 23:44:01
SELECT YEAR('2007-01-27); + 2007
SELECT DAY('2007-01-27"); - 27
SELECT MONTH(|'2007-01-27); » O1
SELECT HOUR['2007-01-27 13:37:00); #13
SELECT MINUTE('13:37:00'); 2 37
SELECT SECOND(' 13:37:00"); + 00
SELECT DAYNAME\NOW()); - Saturday
SELECT MONTHNAME(' 2607-01-27");
> January
SELECT DAYOFWEEK(|' 2007-01-27); @ 5
Renvoie une date sous la forme
“YYYY-MM-DD HH:MM:$S' a partir
d’un timestamp UNIX.
Renvoient respectivement l'année, le
jour et le mois d’une date.
Renvoient respectivement l'heure, les
minutes et les secondes d'une date.
Renvoient respectivement le nom du
jour et le nom du mois de la date
passée en argument
Renvoie l'index du jour dé la semaine
(1 =Dimanche..., 7 = Samedi).
SELECT DAYOFYEAR(' 2007-01-27"); + 117 Renvoie le jour de l'année (1 4 366}.
SELECT WEEK('2007-01-27); + 17
SELECT DATE('2007-01-27 13:27:00");
=» 2007-01-27
SELECT TIME('2007:01-27 13:37:00');
> 13:37:00
SELECT QUARTER(' 2007-01-27"); 1
Renvoie le numéro de la semaine.
Extrait la partie date d’une expression,
Extrait la partie horaire d'une
expression.
Renvoie le trimestre de la date (1 a 4).
SELECT SEC_TO_TIME|49050); + 13:37:90 Renvoie argument donné en secondes
SELECT TIME _TO_SEC(' 13:37:30");
> 49050
SELECT ADDTIME('2007-01-27'00:00:00',
‘13:37:30; > 2007-01-27 13:37:30
SELECT DATEDIFF('2007-01-27 00:00:00",
'2007-01-17)); 10
SELECT STR_TO_DATE('2007/01/27
13.37,30', “6X7 %m/%d WH. %i.%s';
® 2007-01-27 13:37:30
SELECT DATE_FORMAT('2007-01-27
au format 'HH:MM:SS':
Convertit en secondes l'argument
donné en heures, minutes et secondes:
Ajoute une valeur de type TIME 4 une
valeur DATE ou DATETIME,
Renvoie le nombre de jours entre une
date de début et une date de fin
(types DATE ou DATETIME).
Applique un format date 4 une chaine
de caractéres pour renvoier une valeur
DATETIME.
Pormate une date.
13:37:30", "8W %M WY, %H:%i%%s'|; -% Saturday January 2007, 13:37:30
SELECT DATE_ADD('2007-01-27 23:59:59,
INTERVAL 1 SECOND);
> 2007-01-28 00:00:00
SELECT DATE _SUB('2007-01-27',
INTERVAL 37 DAY); 2006-12-27,
Ee
‘Opérations arithmetiques d’addition
et de soustraction sur des dates,
Remargue Se référer 4 la documentation
MySQL pour la syntaxe des intervalles
ee fFProcédures stockées et fonctions
Une procedure stockee est créée avec CREATE PROCEDURE et appelee avec la
commande CALL ; elle renvoie un résultat via les paramétres de retour (OUT).
Une procédure peut renvoyer une valeur scalaire, et etre appelée depuis une
commande SQL, comme toute autre fonction. Une fonction est créée avec CREATE
FUNCTION.
Remarque La commaide delimiter permet d'utiliser "/ dans la détlaration de 1a proc
dure ou de 1a fonction: : i
CREATE PROCEDURE
CREATE PROCEDURE nom_procedure (paramétres) instructions
poraméires Liste des paramétres acceptés par la fonction, suivis de leur type
(ex. nom CHAR(20), age TINYINT). Chaque paramétre est de type
IN par défaut. Il est possible de spécifier OUT ou INOUT pour les
paramétres de sortie
instructions Suite d'instructions SQL, entourées par BEGIN et END.
Example delimiter //
CREATE PROCEDURE prac (OUT poids INT)
BEGIN SELECT SUM[poids_kg) INTO poids FROM commande; END
Jf delimiter ;
Usage CALL proc|@nom variable);
Autres éléments de langage :
DECLARE nom_variable fype_variable;
SET nom_voriable = expression:
REPEAT ... UNTIL conclition END REPEAT;
WHILE condition DO ... END WHILE;
Déclaration de variable locale
Affectation de variable
Boucles. Pour sortir d'une
boucle LOOP ; LEAVE.
LOOP ... END LOOP;
IF condition THEN ... ELSE ... END IF;
CASE variable WHEN valeur THEN ... END CASE;
DECLARE nom_curseur CURSOR FOR requefe_select; Déclaration de curseur
OPEN nom_curseur; ‘Ouverture de curseur
FETCH nom_curseur INTO variables; Lecture de curseur
CLOSE nom_curseur; Fermeture de curseur
CREATE FUNCTION
CREATE FUNCTION nom_fenction (paramétres) RETURNS typs_retour instructions
paraméires Liste des paramétres acceptés par la fonction, suivis de leur type
(ex. nom CHAR(20), age TINYINT)
type_retour Type MySQL retoumé par la fonction (ex. CHAR(IO), INT)
instructions Suite d'instructions SOL, terminées par RETURN variable
Exemrle delimiter |
CREATE FUNCTION presentation (nom CHAR|20), age TINYINT] RETURNS:
CHAR(SO}
RETURN CONCAT|nom,' a ‘,age,’ ans);
Idelimiter ;
USAGE SELECT presentation( Vocelyat24)/-¥ Uocelm 624 ons
Conditions
SHOW CREATE PROCEDURE | FUNCTION
SHOW CREATE PROCEDURE nom_pracedure; Renvoie l'instruction permettant de
SHOW CREATE FUNCTION nom_fonetion; recréer la procédure ou la fonction.
DROP PROCEDURE nom_pracedure; Supprime une procédure ou
DROP FUNCTION nom_fonction; une fonction.
Une transaction n'est effective que sur une table de type InnoDB et BDB (mode
autocommit désactivé : SET AUTOCOMMIT=0;}. Elle permet de revenir si né-
cessaire [en cas d’erreur) 4 l'état initial de la table, avant le début de Ja tran—
saction, Elle débute par START TRANSACTION et se termine par COMMIT, ROLL-
BACK restaure l'état initial de la table avant la fin de la transaction et les
Modifications ne sont pas appliquées.
START TRANSACTION; START TRANSACTION;
UPDATE nom_fable SET modifications; UPDATE nom_foble SET modifications;
UPDATE nom_table SET autres modifications; ROLLBACK;
ee eeAirey
CREATE VIEW nom_de_la_vue fae uné nouvelle vue d’aprés une raquéte
AS requete_select; {CT qui fournit la définition de la vue.
CREATE VIEW memento AS seuecr} ie » pti FROM livres WHERE type='memenic';
SHOW CREATE VIEW memenio —Affiche la commande qui a créé la vue.
“> SELECT titre, description,prix FROM livres WHERE type—'memento!
ALTER VIEW nom_de_la_ye AS Modifie une vue existante en
nouvelle requete_ select; lui assignant une nouvelle définition.
ALTER VIEW memenio AS SELECT titre, descriplion FROM livres WHERE prix='5';
DROP VIEW nom_de_la_vuei, Supprime une ou plusieurs Yues
nom_de_la_vue2,. (séparées par des virgules).
mM
SHOW GRANTS
SHOW GRANTS FOR login; Affiche les droits attribués a l'utilisateur
SHOW GRANTS FOR CURRENT_USER: login sous forme de requéte SQL.
SHOW INDEX
SHOW INDEX FROM nom_table; Affiche les index de la table.
Les champs suivants sont retoumés :
Table Nom de ta table.
Non_unique _1 si les doublons sont autorisés, 0 sinon.
Key_name Nom de Yindex
Seq in_index Position de la colonne dans I'index
Column_name Nom de la colonne indexée
Collation Mode de tri de I’index ('A’ tri ascendant, NULL pas de tri)
Cardinality Nombre de valeurs uniques de l'index
Sub_part Nombre de caractéres si la colonne est partiellement indexée,
NULL sinon.
Packed Mode de compactage de la clé
Null YES si la colonne peut contenir NULL
Index type ‘Type dl'iridex (BTREE, FULLTEXT, HASH,RTREE]
‘Comment Informations complémentaires
SHOW STATUS
SHOW STATUS; Informe sur le statut du serveur :
SHOW STATUS LIKE 'Toble%'; wariables du serveur, liste des processus
SHOW VARIABLES; en cours d’exécution, avec la requéte
SHOW VARIABLES LIKE 'max%e'; exécutée correspondante, l'utilisateur
SHOW PROCESSLIST; et le numéro de processus, etc.
KILL
KILL numero_processus; ‘Termine un processus grace a la commande KILL
suivie du numéro de processus concerné.
ReMangUe Seuls les droits d'administrateur (SUPER) permettent de yoir la liste de tous
les prooessus et de les terminer, 2 défaut seuls les processus ublisaleur courant eont
Accessinles.
EXPLAIN
PERFORMANCES Cette commande est essentielle a I'optimisation de tables.
En faisant précéder une requéte SELECT avec le mot-clé EXPLAIN, MySQL renvoie un
enregistrement indiquant comment il traitera la requéte :
id Identifiant de requéte
select_type Type de requéte SELECT
table Table utilisée pour la requéte
type Type de jointure
pane Index utilisables pour effectuer la requéte
¢} Index réellement utilisé
key_len Taille de la clé d'index utilisée (plus la valeur est petite plus
Vindex est rapide}
ref Références utilisées avec Ja clé key pour effectuer la requéte
rows Estimation du nombre de lignes a parcourir dans la table pour
effectuer la requéte
extra Informations complémentaires sur la méthode appliquée.
Ce, oe ~~ eemac quts acts
Réporer et restaurer
ANALYZE TABLE nom_table; Analyse et stocke la clé de distribution de la table
qui permet de décider dans quel ordre les tables
doivent étre rassemblées lors des jointures qui
ne s‘effectuent pas sur une constante.
OPTIMIZE TABLE nom_toble; Défragmente une table. Optimise les performances
suite 4 un grand nombre d'insertions et effacements,
CHECK TABLE nom_foble; —Vérifie 'intégrité d'une table,
REPAIR TABLE nom_foble; _ Tente la réparation d'une table corrompue.
LOCK TABLES fablel,table2 READ; Verrouille une ou plusieurs tables en lecture.
LOCK TABLES fablel,icble2 WRITE; Verrouille une ou plusieurs tables en écriture.
Remaraue Seule la connexion courante peut lire et écrire sur cette table. Les autres
connexions sont bloquées en écriture.
UNLOCK TABLES; Déverrouilie les tables précédemment spécifiées.
BACKUP TABLE nom_fable Sauvegarde les fichiers de definition et
TO '/chemin/sur/le/disque'; de données de la table vers le chemin spécifié,
afin de la restaurer ultérieurement,
Seules les tables MylSAM sont supportées.
RESTORE TABLE nom_toble Restaure une table a partir d‘une
FROM ‘/chemin/sur/le/disque'; sauvegarde effectuée avec BACKUP TABLE,
stockée sur le disque dans le dossier chemin.
Les variables serveur sont définies en priorité par les commandes passées en
argument au démarrage du serveur mysqld et dans les fichiers de configura-
tion : /etc/mysql/[Link] ou /etc/[Link] sous Linux et C:\Windows \[Link] OU.
C:\[Link] sous Windows. Leur liste est consultable avec la commande SHOW
VARIABLES; .
Variables courantes
port = 3306 Port utilisé par le serveur. Par défaut : 3306
socket = /var/run/mysqld/ Socket 4 utiliser
mysqld. sack
usr Dossier d'installation de MySQL
/var/lib/mysql Dossier de données de MySQL
Chemin utilisé pour le stockage des fichiers
temporaires
languoge = Langue utilisée par le serveur pour afficher les
/usr/share/mysql/french messages
key buffer size = 16M Taille du buffer utilisé pour le cache des
blocs d'index
log = /var/log/mysql/[Link] Log de toutes les requétes
log-bin = /var/log/mysql/ Log binaire
[Link]
leg tececres = /var/log/ Log des requétes les plus lentes, dont la durée
mysql/[Link] est spécifiée par la variable long_query_time, en
secondes
max_connections = 128 Nombre maximal de clients MySQL simultanés
query_cache_limit = 1M Ne met pas en cache les résultats plus grands
que la valeur spécifiée
query_cache size = 16777216 Mémoire allouée pour la mise en cache
des requétes précédentes
Remarciements.¢ Corinne Schillinaer—
‘MEMENTO MYSQL/RIMELE PRIX EDITEL)
Dee SEU!
0A
9 12012
“INFORMATIQUE DENT
782212
‘2425 010969 01559673 038053 3a
Conapion Now Compo
Vous aimerez peut-être aussi