Mysql Tutorial PDF
Mysql Tutorial PDF
Introduction MySQL
Introduction MySQL
Introduction MySQL
Au sujet de ce support
NOTICE de COPYRIGHT
Ce support de cours a t ralis par Pierre Calame. Ce document est disponible
ladresse suivante : [Link] Il est fourni tel quel, l'auteur ayant
fait de son mieux pour ladapter au cours Introduction PHP & MySQL. Vous avez le droit
de copier, distribuer et/ou modifier ce document selon les termes de la licence de
documentation libre, version 1.1 ou toute version postrieure publie par la Free
Software Fundation. Toute remarque ou erreur peut tre notifie l'auteur l'adresse
lectronique suivante : [Link]@[Link]
Fin de la NOTICE de COPYRIGHT
Ce support est utilis dans le cadre de cours dont les participants suivent une formation
complte. Des sujets complmentaires comme linstallation de MySQL sont traits dans
un autre module. Vous devriez trouver les supports concernant ces autres modules
galement sur [Link]
Conventions utilises dans ce support
Les caractres en courrier italique identifient les commandes passes au shell sous Linux.
Ce symbole reprsente lappui sur la touche Return ou Enter.
Les lments contenus dans des crochets [TEMPORY | AUTRES] sont facultatifs.
Prsentation gnrale
Le logiciel MySQL (TM) est un serveur de base de donnes SQL. MySQL est une marque
dpose de MySQL AB. Le logiciel MySQL dispose de deux licences. Les utilisateurs
peuvent choisir entre utiliser MySQL comme un logiciel Open Source/Logiciel libre, sous
les termes de la licence GNU General Public License ([Link] ou
bien, ils peuvent acheter une licence commerciale auprs de MySQL AB.
Consultez [Link] pour obtenir les dernires informations sur le serveur
MySQL.
Dfinition officielle de MySQL :
MySQL est un systme de gestion de bases de donnes relationnelles. Le SQL dans
MySQL signifie Structured Query Language : le langage standard pour les traitements
de bases de donnes.
MySQL est Open Source. Open Source (Standard Ouvert) signifie quil est possible
chacun dutiliser et de modifier le logiciel. Tout le monde peut le tlcharger sur Internet
et lutiliser sans payer aucun droit. Toute personne en ayant la volont peut tudier et
modifier le code source pour ladapter ses besoins propres. Toutefois, si vous devez
intgrer MySQL dans une application commerciale, vous devez vous procurer une licence
auprs de MySQL AB.
Ce qui rend MySQL trs intressant pour les Webmasters est le nombre dAPI (application
program interface) dont il dispose. Vous pouvez en effet lintgrer dans des applications
crites en : C, C++, Eiffel, Java, Perl, PHP, Python, Ruby et Tcl.
Introduction MySQL
Pour les commandes, jutilise le client MySQL en mode texte sous Linux. Il me semble
tre le meilleur pour une approche qui se veut didactique. Toutefois, vous trouverez
nombre de produits qui vous permettront de travailler laide de la souris.
Pour des raisons de clart, les commandes SQL seront crites en capitales. Le langage
nest pas sensible la casse.
Utilisation de base du client MySQL
Aprs linstallation du serveur, lutilisateur root est cr et possde tous les droits
lexception de la connexion distante. Il est donc important de crer un utilisateur
possdant un accs protg par un mot de passe, afin dadministrer votre serveur.
Reportez-vous la section Les droits sous MySQL si vous devez mettre votre serveur
en production.
Sous Linux en mode texte appelez le client MySQL :
mysql
(ou si vous devez fournir un mot de passe mysql u user p)
Le prompt de mysql client a la forme suivante :
mysql>
Cest depuis cette invite que nous entrerons les commandes SQL. Pour quitter le client
entrez la commande quit ou utilisez la combinaison de touches Ctrl+D
Vous pouvez interroger le serveur sur la version courante de MySQL de la manire
suivante :
mysql> SELECT VERSION() ;
Les commandes de base :
help
?
clear
connect
edit
ego
exit
go
nopager
notee
pager
print
quit
rehash
source
status
tee
use
(\h)
(\?)
(\c)
(\r)
(\e)
(\G)
(\q)
(\g)
(\n)
(\t)
(\P)
(\p)
(\q)
(\#)
(\.)
(\s)
(\T)
(\u)
Par dfaut le client mysql retourne les rsultats l'cran. A des fins de dbogage, vous
pourriez prfrer une sortie dans un fichier. La commande pager vous le permet :
Page cat >> mon_file.txt
Le double >> permet de ne pas craser les infos qui se trouvent dans le file, mais de les
ajouter au fur et mesure.
Introduction MySQL
Introduction MySQL
La premire parenthse contient les champs concerns par l'insertion, les autres champs
recevront la valeur par dfaut dfinie lors de la cration de la table. La deuxime
parenthse contient les valeurs qui seront mises dans les diffrents champs. Les "
permettent d'identifier les diffrentes chanes de caractres. Si une valeur devait contenir
explicitement un ", vous devez le faire suivre du caractre de protection \: Exemple ;
INSERT INTO films(titre,resume,pays)
values("Terminator","Un robot venu du futur (\"2025\")", "USA");
L'autre mthode consiste aller lire les diffrents datas dans un fichier texte.
Importation depuis un fichier texte :
Le contenu du fichier correspond ceci :
"titre
"titre
"titre
"titre
1","resume
2","resume
3","resume
4","resume
1","pays
2","pays
3","pays
4","pays
1"
2"
3"
4"
LOAD DATA LOCAL INFILE '[Link]' INTO TABLE films FIELDS TERMINATED BY ","
ENCLOSED BY "\"" (titre,resume,pays);
Le caractre \ devant le " permet de spcifier qu'il ne faut pas utiliser le " comme fin de
chane.
Pour plus de dtail sur la commande LOAD DATA, consultez "Les commandes en dtail"
Slectionner des enregistrements
La commande cl pour ce genre de requte est SELECT. C'est assurment la commande
que nous utiliserons le plus.
Syntaxe de la commande SELECT :
SELECT [champ1,champ2, | * ]
FROM [table 1, table 2, ]
WHERE [condition or, and ou like]
Pour bien comprendre cette commande, vous trouverez ci-dessous une srie d'exemples
documents :
SELECT titre FROM films ORDER BY titre;
Tous les titres de la table films tris de manire croissante par titre
SELECT titre FROM films ORDER BY titre DESC;
Tous les titres de la table films tris par titre de manire dcroissante
SELECT * from films where pays = "USA";
Tous les champs de la table films dont le pays est gal "USA"
Passons la pratique I
Crez tout d'abord une nouvelle base de donnes que nous appellerons cours.
Crez ensuite une table se composant des champs suivants :
id_film -> valeur entire, suprieure 0, pas de valeur nulle autorise, auto
Introduction MySQL
incrment et cl primaire
realisateur -> Chane de caractres maximum 200
titre -> Chane de caractres maximum 200
Vous trouverez sur les donnes qui vous ont t remises (ou sur le site web de votre
serviteur : [Link] un fichier texte [Link] . Ce fichier
contient une liste de titre de films et le nom du ralisateur. Les champs sont entours de
" et spars par des ;. Chaque enregistrement est spar par un retour de paragraphe.
Pour importer les datas contenus dans ce fichier, utilisez la commande LOAD
INFILE
En effectuant une simple commande SELECT * FROM films; vous devriez
pouvoir contrler si l'importation s'est bien passe. Si a ne devait pas tre le cas,
utilisez la commande DELETE FROM films; pour supprimer toutes les entres.
Maintenant que nous avons une table contenant plusieurs enregistrements, vous allez
pouvoir exprimenter la commande SELECT pour rpondre aux questions suivantes :
Note : Les exercices pratiques sont corrigs dans l'annexe "Exercices corrigs". Je vous
conseille vivement de ne consulter les corrections proposes quen dernier recours ou
pour contrle aprs votre pratique.
La commande WHERE
Nous l'avons vue dans les exercices prcdents, la commande WHERE permet d'imposer
une condition une requte. Les quelques exemples ci-dessus vous donneront une ide
de l'tendue des possibilits de cette commande :
SELECT * FROM films WHERE id_film > 12;
Tous les films dont le id_film est plus grand que 12
SELECT * FROM films WHERE id_film > 12 AND id_film < 40;
Tous les films dont le id_film est plus grand que 12 et plus petit que 40
L'oprateur AND peut tre compar un interrupteur qui laisse ou coupe le passage du
courant lectrique. Lorsque le courant passe, la condition est satisfaite, sinon le courant
est coup.
Introduction MySQL
Si vous multipliez les oprateurs AND, vous ajoutez des interrupteurs en reprenant la
requte ci-dessus :
Pour que l'ampoule s'allume, les deux interrupteurs doivent tre ferms. Autrement dit,
la ligne ne sera affiche que si les deux conditions retournent vrai, soit que le id_film soit
plus grand que 12, mais galement plus petit que 40.
L'oprateur OR peut aussi tre reprsent de cette manire. Il laissera passer le courant
pour autant que l'un des interrupteurs soit ferm. Exemple :
SELECT * FROM films WHERE titre = "Karnaval" OR realisateur = "Woody Allen";
Introduction MySQL
Pour que l'ampoule soit allume, titre doit tre gal Karnaval ou le ralisateur doit tre
Woody Allen. La requte retournera tous les films raliss par Woody Allen et sortira
galement le film dont le titre est "Karnaval"
On peut combiner les AND et les OR en les entourant de parenthses
SELECT * FROM films WHERE (id_film > 12 AND id_film < 40) OR (titre =
"KARNAVAL" or realisateur = "Woody Allen");
D'autres oprateurs :
L'oprateur LIKE permet de filtrer selon un masque
SELECT * FROM films WHERE titre LIKE "V%";
Tous les films dont le titre commence par "V"
SELECT * FROM films WHERE realisateur LIKE ="C______ %";
Tous les films dont le nom du ralisateur commence par un C suivi de 5 caractres
quelconques, suivi d'un espace et d'une chane.
Recherche selon une expression rgulire
Les expressions rgulires permettent d'aller beaucoup plus loin que les modles de LIKE
SELECT * FROM films WHERE titre REGEXP "^M";
Tous les films qui commencent pas un M. Le symbole ^ signifie dbut de la chane
SELECT * FROM films WHERE titre REGEXP "^M[er]";
Tous les films qui commencent pas un M suivi d'un e ou d'un r
SELECT * FROM films WHERE realisateur REGEXP "o{2}";
Tous les films dont le ralisateur a un nom contenant deux o qui se suivent
Les expressions rgulires sont trs puissantes, mais aussi trs complexes, nous nous
arrterons ces quelques exemples.
Les regroupements et les fonctions
Une requte permet galement de rpondre une question comme "Combien de films a
raliss Jean-Luc Godard
SELECT COUNT(id_film), realisateur FROM films WHERE realisateur = "Jean-Luc
Godard" GROUP BY realisateur;
Requte utilisant plus d'une table
Reprenons l'exemple de notre table films en y ajoutant une table qui contient les pays.
FILMS
id_film
realisateur
titre
id_pays
NUMERIC(6)
NUMERIC(6)
CHAR(200)
<non dfini>
pays
id_pays = id_pays
id_pays
pays
CHAR(233)
<non dfini>
Introduction MySQL
Si nous voulons slectionner tous les titres de films, ainsi que le nom du pays
correspondant, nous aurions :
SELECT titre, pays FROM films, pays WHERE films.id_pays = pays.id_pays;
Ou encore
SELECT titre, pays FROM films INNER JOIN pays ON pays.id_pays =
films.id_pays;
Sous MySQL, ces deux requtes sont identiques au niveau performance et au niveau
rsultat
Mettre jour le contenu d'une table
La commande qui permet la mise jour d'un contenu est UPDATE. Utilisons-la pour
modifier le film 3 de notre table :
mysql> UPDATE films SET titre = "Nouveau titre" WHERE id_film = 3;
La commande UPDATE permet de mettre jour plusieurs champs (spars par des
virgules). Comme par exemple :
Mysql> UPDATE films SET titre ="Nouveau titre", realisateur = "Woody Allen" WHERE
id_film = 3;
Effacer des enregistrements
DELETE permet d'effacer les lignes d'une table, mais attention, a ne pardonne pas :
mysql> DELETE FROM films;
La commande ci-dessus a nettoy votre table sans vous demander si vous tiez sr de
vouloir supprimer tous les enregistrements. Notez que si vous oubliez de spcifier un
critre une requte UPDATE, vous risquez aussi de causer pas mal de dommages vos
donnes. Pour viter cette erreur fort dsagrable, ajoutez la ligne suivante au fichier
/etc/my-cnf :
[mysql]
safe-updates
Avec cette directive, vous recevrez un message d'erreur lorsque vous aurez omis le
critre.
Pour supprimer le film ayant le id_film 3
mysql> DELETE FROM films WHERE id_film = 3;
Administration
L'administration d'une base de donnes MySQL sous-entend au minimum les oprations
suivantes :
Backup rgulier de la base
Paramtrer le serveur
Introduction MySQL
Introduction MySQL
Introduction MySQL
Notez que pour les options et les valeurs, tous les caractres blancs de dbut et de fin
seront automatiquement effacs. Vous pouvez utiliser les squences dchappement \b,
\t, \n, \r, \\ et \s dans votre chane la place (\s == espace).
Voici un exemple typique de fichier doptions globales :
[client]
port=3306
socket=/tmp/[Link]
[mysqld]
port=3306
socket=/tmp/[Link]
set-variable = key_buffer_size=16M
set-variable = max_allowed_packet=1M
[mysqldump]
quick
Voici un exemple typique de fichier doptions utilisateur :
[client]
# Le mot de passe suivant va tre utilis avec le serveur
password=mon_mot_de_passe
[mysql]
no-auto-rehash
set-variable = connect_timeout=2
safe-updates
prompt=(\u@\h) [\d] >\_s
[mysqlhotcopy]
interactive-timeout
Si vous avez une distribution source, vous trouverez des exemples de configuration dans
les fichiers nomms [Link] dans le dossier support-files. Si vous avez une
distribution binaire, regardez dans le dossier DIR/support-files, o DIR est le chemin de
linstallation MySQL (typiquement /usr/local/mysql). Actuellement, il y a des exemples
de configuration pour des systmes petits, moyens, grands et trs grands. Vous pouvez
copier lun des fichiers [Link] dans votre dossier utilisateur (renommez le fichier
en .[Link]) pour le tester.
Tous les clients MySQL qui supportent les fichiers doptions, acceptent les options
suivantes :
no-defaults
Ne lire aucun fichier doptions.
print-defaults
Affiche le nom du programme et toutes les options qui sy trouvent.
defaults-file=full-path-to-default-file
Utilise uniquement le fichier de configuration donn.
defaults-extra-file=full-path-to-default-file
Lit ce fichier de configuration aprs le fichier de configuration global, mais
avant le fichier de configuration utilisateur.
Introduction MySQL
Notez que les options ci-dessus doivent tre en ligne de commande pour tre utilises.
En scripts shell, vous pouvez utiliser la commande my_print_defaults pour analyser les
fichiers de configuration :
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/[Link]
--no-auto-rehash
La ligne ci-dessus affiche toutes les options pour les groupes client et mysql.
Mettre les messages d'erreur en franais
Dans le groupe mysqld ajoutez :
language = french;
Ou si le fichier de description de langue se trouve un endroit particulier :
language = /usr/share/mysql/french/
Quelques options relatives la scurit
--local-infile[=(0|1)]
Si cette option vaut 0, les utilisateurs ne peuvent pas lire un file avec LOAD DATA
LOCAL INFILE.
--safe-show-database
Avec cette option, la commande SHOW DATABASES ne retourne que les bases pour
lesquelles lutilisateur courant a des droits. Depuis la version 4.0.2, cette option est
abandonne et ne sert plus rien (elle est active par dfaut), car dsormais, il y a
le droit de SHOW DATABASES.
--safe-user-create
Si cette option est active, tout utilisateur ne peut crer dautres utilisateurs avec
les droits de GRANT, sil ne dispose pas des droits dinsertion dans la table
[Link]. Si vous voulez donner un accs un utilisateur pour quil puisse crer
des utilisateurs avec les droits dont il dispose, vous pouvez lui donner les droits
suivants :
mysql> GRANT INSERT(user) ON [Link] TO 'user'@'hostname';
Cela va sassurer que lutilisateur ne peut pars modifier une colonne directement,
mais quil peut excuter la commande GRANT sur dautres utilisateurs.
--skip-grant-tables
Cette option force le serveur ne pas utiliser les tables de droits. Cette option
donne donc tous les droits tout le monde sur le serveur !
--skip-name-resolve
Les noms dhtes ne sont pas rsolus. Toutes les valeurs de la colonne Host dans
les tables de droits doivent tre des adresses IP, ou bien localhost.
--skip-networking
Ne pas accepter les connexions TCP/IP venant du rseau. Toutes les connexions au
serveur mysqld doivent tre faites avec les sockets Unix. Cette option nexiste pas
pour les versions antrieures la 3.23.27, avec les MIT-pthread, car les sockets
Unix ntaient pas supports par les MIT-pthreads cette poque.
Introduction MySQL
Introduction MySQL
user
Host
User
Db
db_Host
db_Db
Password
Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv
Grant_priv
References_priv
Index_priv
Alter_priv
CHAR(60)
CHAR(16)
CHAR(64)
CHAR(60)
CHAR(64)
CHAR(16)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
host
Host = Host
Db = Db
Host
Db
Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Grant_priv
References_priv
Index_priv
Alter_priv
CHAR(60)
CHAR(64)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
Host = db_Host
Db = db_Db
User = User
db
Host
Db
User
Table_name
Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Grant_priv
References_priv
Index_priv
Alter_priv
CHAR(60)
CHAR(64)
CHAR(16)
CHAR(60)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
CHAR(1)
Host = Host
Db = Db
User = User
Table_name = Table_name
tables_priv
Host
CHAR(60)
Db
CHAR(64)
User
CHAR(16)
Table_name
CHAR(60)
Column_name
CHAR(64)
Grantor
CHAR(77)
Timestamp
TIMESTAMP
Table_priv
CHAR(68)
Column_priv
CHAR(31)
Host = Host
Db = Db
User = User
Table_name = Table_name
Column_name = Column_name
columns_priv
Host
CHAR(60)
Db
CHAR(64)
User
CHAR(16)
Table_name
CHAR(64)
Column_name
CHAR(64)
Timestamp
TIMESTAMP
Column_priv
CHAR(31)
Lors d'une connexion, le serveur commence contrler que le user ait les droits de
connexion dans la table [Link] ensuite, pour chaque requte, il contrle les droits
d'excution dans les tables db, tables_priv et columns_priv. Cest dans cette structure
que toute la gestion des droits est stocke. Il est donc important de ne laisser que
l'administrateur MySQL avoir les droits sur cette base.
Introduction MySQL
priv_type
ALL [PRIVILEGES]
Tous les droits sauf WITH GRANT OPTION.
ALTER
Autorise lutilisation de ALTER TABLE.
CREATE
Autorise lutilisation de CREATE TABLE.
CREATE TEMPORARY TABLES
Autorise lutilisation de CREATE TEMPORARY TABLE.
DELETE
Autorise lutilisation de DELETE.
DROP
Autorise lutilisation de DROP TABLE.
EXECUTE
Autorise lutilisateur excuter des procdures stockes (pour MySQL 5.0).
FILE
Autorise lutilisation de SELECT ... INTO OUTFILE et LOAD DATA INFILE.
INDEX
Autorise lutilisation de CREATE INDEX et DROP INDEX.
INSERT
Autorise lutilisation de INSERT.
LOCK TABLES
Autorise lutilisation de LOCK TABLES sur les tables pour lesquelles lutilisateur a les
droits de SELECT.
Introduction MySQL
PROCESS
Autorise lutilisation de SHOW FULL PROCESSLIST.
RELOAD
Autorise lutilisation de FLUSH.
REPLICATION CLIENT
Donne le droit lutilisateur de savoir o sont les matres et esclaves.
REPLICATION SLAVE
Ncessaire pour les esclaves de rplication (pour lire les historiques binaires du
matre).
SELECT
Autorise lutilisation de SELECT.
SHOW DATABASES
Affiche toutes les bases de donnes.
SHUTDOWN
Autorise lutilisation de mysqladmin shutdown.
SUPER
Autorise une connexion unique, mme si max connections est atteint, et lexcution
des commandes CHANGE MASTER,KILL thread, mysqladmin debug, PURGE MASTER
LOGS et SET GLOBAL.
UPDATE
Autorise lutilisation de UPDATE.
USAGE
Synonyme de pas de droits.
Quelques exemples d'attributions de droits
Cration d'un user et affectation de tous les droits sur la base nestle :
mysql> GRANT ALL PRIVILEGES ON nestle.* TO Dupont@localhost IDENTIFIED
BY "secret";
Affectation des droits sur la table [Link]
mysql> GRANT ALL PRIVILEGES ON [Link] TO Dupont@localhost;
Ajouter les droits de SELECT un user sur toutes les tables de la base nestle
mysql> GRANT SELECT ON nestle.* TO Dupont@localhost;
Supprimer les droits l'utilisateur Dupont@localhost
Mysql> REVOKE ALL PRIVILEGES ON nestle.* FROM Dupont@localhost;
Introduction MySQL
Le temps d'excution de cette requte est de 0.32 sec sur un Pentium II 400 Mhz de
0.12 secondes pour un Pentium III 600 Mhz et de 0.07 sur un Pentium IV 1.6Mhz
Les index
La premire chose faire pour acclrer les requtes de selection est de crer les bons
INDEX. En effet, dans la mesure du possible MySQL va les utiliser pour joindre les tables
lors de requte sur plusieurs tables.
Pour dterminer quels sont les index crer, vous pouvez utiliser la commande EXPLAIN
devant un SELECT. Elle vous permettra de voir comment MySQL a li les tables et surtout
de savoir comment MySQL exploite les index.
Pour les jointures complexes, EXPLAIN retourne une ligne dinformation pour chaque
table utilise dans la commande SELECT. Les tables sont listes dans lordre dans lequel
elles seront lues. MySQL rsout toutes les jointures avec une seule passe multi-jointure.
Cela signifie que MySQL lit une ligne dans la premire table, puis recherche les lignes qui
correspondent dans la seconde, puis dans la troisime, etc. Lorsque toutes les tables ont
t traites, MySQL attache les colonnes demandes, et il remonte dans les tables
jusqu la dernire qui avait encore des lignes traiter. La prochaine ligne est alors
traite de la mme faon.
Le rsultat de la commande EXPLAIN est constitu des colonnes suivantes :
(Cette partie du support est tire de la documentation officielle de MySQL)
select_type Type de clause SELECT, qui peut tre :
Introduction MySQL
eq_ref Une ligne de cette table sera lue pour chaque combinaison de ligne
des tables prcdentes. Cest le meilleur type de jointure possible,
lexception des prcdents. Il est utilis lorsque toutes les parties dun
index sont utilises par la jointure, et que lindex est UNIQUE ou PRIMARY
KEY.
ref Toutes les lignes avec des valeurs dindex correspondantes seront lues
dans cette table, pour chaque combinaison des lignes prcdentes. ref est
utilis si la jointure nutilise que le prfixe de gauche de la cl, ou si la cl
nest pas UNIQUE ou PRIMARY KEY (en dautres termes, si la jointure ne
peut pas slectionner quune seule ligne en fonction de la cl). Si la cl qui
est utilise nidentifie que quelques lignes chaque fois, la jointure est
bonne.
range Seules les lignes qui sont dans un intervalle donn seront lues, en
utilisant lindex pour slectionner les lignes. La colonne key indique quel
est lindex utilis. key_len contient la taille de la partie de la cl qui est
utilise. La colonne ref contiendra la valeur NULL pour ce type.
index Cest la mme chose que ALL, sauf que seul larbre dindex sera lu
et scann. Cest gnralement plus rapide que ALL, car le fichier dindex
est gnralement plus petit que le fichier de donnes.
ALL Une analyse complte de la table sera faite pour chaque combinaison
de lignes issues des premires tables. Ce nest pas bon si la premire table
nest pas une jointure de type const et cest trs mauvais dans les autres
cas. Normalement, vous pouvez viter ces situations de ALL en ajoutant
des index bass sur des parties de colonnes.
possible_keys : La colonne possible_keys indique quels index MySQL va
pouvoir utiliser pour trouver les lignes dans cette table. Notez que cette colonne
est totalement dpendante de lordre des tables. Cela signifie que certaines cls
de la colonne possible_keys pourraient ne pas tre utilises dans dautres cas
dordre de tables. Si cette colonne est vide, il ny a pas dindex pertinent. Dans
ce cas, vous pourrez amliorer les performances en examinant votre clause
WHERE pour voir si des colonnes sont susceptibles dtre indexes. Si cest le
cas, crez un index ad hoc et examinez le rsultat avec la commande EXPLAIN.
Pour connatre tous les index dune table, utilisez le code SHOW INDEX FROM
nom_de_table.
key La colonne key indique lindex que MySQL va dcider dutiliser. Si la
cl vaut NULL, aucun index na t choisi. Pour forcer MySQL utiliser un
index list dans la colonne possible_keys, utilisez USE KEY/IGNORE KEY
dans votre requte.
key_len La colonne key_len indique la taille de la cl que MySQL a dcid
dutiliser. La taille est NULL si la colonne key vaut NULL. Notez que cela
vous indique combien de partie dune cl multiple MySQL va rellement
utiliser.
ref La colonne ref indique quelle colonne ou quelles constantes sont
utilises avec la cl key, pour slectionner les lignes de la table.
rows La colonne rows indique le nombre de lignes que MySQL estime
devoir examiner pour excuter la requte.
Introduction MySQL
Introduction MySQL
Eviter les parenthses inutiles. Elles facilitent la lecture des conditions, mais
ralentissent le serveur.
La fonction COUNT(*) sans la clause WHERE lit directement les valeurs dans
les infos de la table
HAVING la place de la clause WHERE. Si vous utilisez GROUP BY ou les
fonctions de groupe COUNT(), MIN(),
Exemple :
SELECT AVG([Link]) AS MOYENNE FROM
CONDITIONNEMENTS INNER JOIN VINS ON CONDITIONNEMENT.ID_VIN =
VINS.ID_VIN GROUP BY [Link] HAVING MOYENNE>12
Les requtes "constantes" sont lues en premier. Une requte constante est un
rsultat vide ou ne contenant qu'une ligne
Exemple :
SELECT * FROM MA_TABLE WHERE PRIMARY_KEY=23;
Vous pouvez aussi amliorer vos requtes si elles sont tries sur un index et
utilises avec la clause LIMIT.
Exemple :
SELECT * FROM MA_TABLE ORDER BY KEY_1 DESC LIMIT 20;
La clause DISTINCT est convertie en GROUP BY par MySQL, ainsi d'ailleurs que
les INNER JOIN sont convertis en WHERE
Introduction MySQL
Dans tous les cas de figure, la commande LOAD DATA INFILE reste de loin la plus
performante pour de grandes insertions de datas
Autres possibilits d'optimisation
Optimiser ds la conception
Mysql vous fournit une gamme tendue de type de donnes, utilisez-les au mieux.
Evitez de donner des valeurs trop grandes. Par exemple, utilisez MEDIUMINT au
lieu de INT. Sur l'ensemble de la base, les effets se feront sentir.
Prenez galement l'habitude, bien videmment dans la mesure du possible, de
dclarer vos champs NOT NULL.
Le type CHAR est plus rapide que VARCHAR, mais cote en espace disque
Introduction MySQL
Valeurs possibles
Sign
TINYINT[(longueur)] [UNSIGNED] -128 127
[ZEROFILL]
ou SMALLINT[(longueur)]
- 32768 32767
[UNSIGNED] [ZEROFILL]
ou MEDIUMINT[(longueur)]
-8388608 8388607
[UNSIGNED] [ZEROFILL]
ou INT[(longueur)] [UNSIGNED]
-2147483648 2147483647
[ZEROFILL]
ou INTEGER[(longueur)]
Synonyme de INT
[UNSIGNED] [ZEROFILL]
ou BIGINT[(longueur)]
-9223372036854775808 et
[UNSIGNED] [ZEROFILL]
9223372036854775807
ou REAL[(longueur,decimales)]
[UNSIGNED] [ZEROFILL]
0- 65 535
0 16777215
0 4294967295
0 et
18446744073709551615
0
1.7976931348623157E+308 1.7976931348623157E+308
-2.2250738585072014E308
Synonyme de REAL
ou
DOUBLE[(longueur,decimales)]
[UNSIGNED] [ZEROFILL]
ou FLOAT[(longueur,decimales)] -3.402823466E+38 [UNSIGNED] [ZEROFILL]
1.175494351E-38
ou
DECIMAL(longueur,decimales)
[UNSIGNED] [ZEROFILL]
Non sign
0 255
FLOAT sign
0 de 1.175494351E-38
Introduction MySQL
ou
NUMERIC(longueur,decimales)
[UNSIGNED] [ZEROFILL]
ou CHAR(longueur) [BINARY]
ou VARCHAR(longueur) [BINARY]
ou DATE
ou TIME
ou TIMESTAMP
ou DATETIME
ou TINYBLOB
ou BLOB
ou MEDIUMBLOB
ou LONGBLOB
ou TINYTEXT
ou TEXT
ou MEDIUMTEXT
ou LONGTEXT
Synonyme de DECIMAL
De 0 255 caractres, la valeur est complte par des
espaces
De 0 255, la valeur est dynamique, mais ne peut
excder 255 caractres
De '1000-01-01' '9999-12-31'
De '-838:59:59' '838:59:59'.
De '1970-01-01 00:00:00' quelque part durant lanne
2037
De '1000-01-01 00:00:00' '9999-12-31 23:59:59'
Une colonne TINYBLOB o TINYTEXT a une longueur
maximale de 255 (2^8 - 1) caractres.
Une colonne BLOB o TEXT a une longueur maximale de
65535 (2^16 - 1) caractres.
Une colonne MEDIUMBLOB o MEDIUMTEXT a une
longueur maximale de 16777215 (2^24 -1) caractres.
Une colonne LONGBLOB o LONGTEXT a une longueur
maximale de 4294967295 (2^32 - 1) caractres.
Une colonne BLOB o TINYTEXT a une longueur maximale
de 255 (2^8 - 1) caractres
Une colonne TINYBLOB o TEXT a une longueur maximale
de 65535 (2^16 - 1) caractres.
Une colonne MEDIUMBLOB o MEDIUMTEXT a une
longueur maximale de 16777215 (2^24 -1) caractres.
Une colonne LONGBLOB o LONGTEXT a une longueur
maximale de 4294967295 (2^32 - 1) caractres.
Liste de valeurs possibles, maximum 65535
ou
ENUM(valeur1,valeur2,valeur3,...)
ou
Liste de valeurs allant de 0 toutes les valeurs
SET(valeur1,valeur2,valeur3,...)
mentionnes avec un maximum de 60
options_de_table
TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
BDB : Le format trs utilis dans le monde UNIX (Berkley DataBase)
HEAP : Les donnes de ces tables ne sont stockes quen mmoire.
ISAM : Format standardis. Utilis par dfaut sur les premires versions de MySQL.
Utilis galement par dautres produits, notamment MS-Acess 2.0
InnoDB : Format rcent des tables MySQL. Permet la gestion de plus grandes tables,
ainsi que les transactions et lintgrit rfrentielle.
MERGE : Un ensemble de tables MyISAM utilises comme une seule et mme table.
MRG_MYISQM : Un synonyme pour MERGE les tables.
MYISAM : La valeur par dfaut sur les installations standards
Quelques explications sur les options :
NOT NULL o NULL spcifie si une valeur null peut tre stocke dans le champ
DEFAULT valeur_par_defaut spcifie une valeur entrer lorsquaucune valeur nest
spcifie
AUTO_INCREMENT, concerne uniquement les valeurs numriques entires, la valeur
sera incrmente de 1 unit chaque insertion dun nouvel enregistrement. Il ne peut y
Introduction MySQL
avoir quune seule valeur AUTO_INCREMENT par table. On lutilise gnralement comme
cl primaire.
PRIMARY KEY dfinit la cl primaire.
KEY dfinit un index multiple, les index permettent dacclrer les recherches
UNIQUE dfinit un index unique, il ne peux pas y avoir deux fois la mme valeur dans le
champ
FULLTEXT permet de dfinir les champs qui seront utiliss pour une recherche full text.
Une recherche full texte effectue, selon un modle, une recherche multi-champs.
[CONSTRAINT symbol] FOREIGN KEY permet de spcifier des contraintes dintgrit
sous MySQL fonctionne uniquement si vous utilisez le format de table InnoDB
La commande LOAD DATA
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'nom_de_fichier.txt'
[REPLACE | IGNORE]
INTO TABLE nom_de_table
[FIELDS
[TERMINATED BY '\t']
[[OPTIONALLY] ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES TERMINATED BY '\n']
[IGNORE nombre LINES]
[(nom_de_colonne,...)]
La commande LOAD DATA INFILE lit les lignes dans un fichier texte et les insre dans
une table
Explication sur les diffrents lments de la commande
LOW_PRIORITY
MySQL attend qu'aucun client ne le sollicite pour excuter la requte, vite de surcharger
le serveur
CONCURRENT
Les clients pourront accder la table durant lexcution de la commande LOAD DATA.
Cette option ralentit un peu les performances de LOAD DATA, mme si aucune autre
requte n'interroge la table
LOCAL
Le mot cl LOCAL permet d'indiquer que le fichier se trouve sur la machine cliente.
REPLACE
Permet de spcifier la mthode utilise pour insrer les datas lors de doublon, avec
REPLACE les nouvelles donnes prendront la place des anciennes
IGNORE
Permet de spcifier la mthode utilise pour insrer les datas lors de doublon, avec
IGNORE les nouvelles donnes ne seront pas prises en compte
FIELDS
Lorsque cette option est spcifie, vous devez renseigner une des options suivantes :
TERMINATED BY ou ENCLOSED
Introduction MySQL
TERMINATED BY
Spcifie le sparateur de champ
ENCLOSED
Spcifie le caractre qui entoure chaque champ
LINES TERMINATED BY
Permet de spcifier le sparateur d'enregistrement
IGNORE nombre LINES
Permet de ne pas prendre en compte "nombre" de lignes
Replication de bases
Vous aurez besoin de deux serveurs MySQL, le matre et un esclave sur lequel
s'effectuera la duplication.
Configuration du matre
Crez un compte SQL ayant les droits ncessaires. Exemple :
GRANT FILE ON *.* TO BACKUPC@<IP_SLAVE> IDENTIFIED BY 'SECRET';
Dans le fichier /etc/[Link], modifiez la section [mysqld] :
log-bin
server-id=1
Ensuite, redmarrez le serveur
Configuration de l'esclave
Modifier /etc/[Link], en ajoutant dans la section [mysqld] :
master-host=<ip_master>
master-user=backup
master-password=secret
master-port=3306
server-id=2
A l'aide de la commande mysqldump rpliquez manuellement votre matre sur l'esclave.
Restartez votre serveur.
Si tout s'est bien pass, vous devriez voir dans le fichier
/var/mysql/<host>.err des lignes comme celles-ci :
020224 4:38:15 Slave: connected to master 'backup@<[Link]>:3306', replication
started in log 'master-bin.001' at position 73
Si vous souhaitez ne rpliquer qu'une seule base et que vous en possdez bien d'autres
sur le serveur master, ajoutez au [Link] master :
Introduction MySQL
Introduction MySQL
Vous pouvez aussi assigner une valeur une variable avec dautres commandes que SET.
Par contre, dans ce cas-l, loprateur dassignation est := au lieu de =, parce que = est
rserv aux comparaisons dans les requtes autres que SET :
SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
Variables systme
A partir de la version 4.0.3 de MySQL, fourni un meilleur accs beaucoup de variables
systme et variables de connexion. On peut changer la plupart dentre elles, sans avoir
stopper le serveur.
Syntaxe des commentaires
Le serveur MySQL supporte les commentaires de la forme
# jusqu' la fin de la ligne
jusqu' la fin de la ligne et
/* dans la ligne ou sur plusieurs lignes */ :
Exemple :
mysql> SELECT 1+1; # Ce commentaire se continue jusqu' la fin de la ligne
mysql> SELECT 1+1; -- Ce commentaire se continue jusqu' la fin de la ligne
mysql> SELECT 1 /* Ceci est un commentaire dans la ligne */ + 1;
mysql> SELECT 1+
/*
Ceci est un commentaire
sur plusieurs lignes
*/
1;
Les mots rservs
Evitez d'utiliser les mots suivants, pour dsigner des objets MySQL :
ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE AUTO_INCREMENT
BDB BEFORE BERKELEYDB
BETWEEN BIGINT BINARY
BLOB BOTH BTREE
BY CALL CASCADE
CASE CHANGE CHAR
CHARACTER CHECK COLLATE
COLUMN COLUMNS CONNECTION
CONSTRAINT CREATE CROSS
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP
CURSOR DATABASE DATABASES
DAY_HOUR DAY_MINUTE DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC DESCRIBE DISTINCT
DISTINCTROW DIV DOUBLE
DROP ELSE ELSEIF
ENCLOSED ERRORS ESCAPED
EXISTS EXPLAIN FALSE
FIELDS FLOAT FOR
FORCE FOREIGN FROM
FULLTEXT GRANT GROUP
Introduction MySQL
Introduction MySQL
ENUM
NO
TEXT
TIME
TIMESTAMP
Types de colonnes
MySQL supporte un grand nombre de types de colonnes, qui peuvent tre rassembls en
trois groupes : les nombres, les dates et les chanes de caractres. Cette section
prsente les types disponibles et leurs tailles de stockage
Les codes suivants sont utiliss dans les descriptions :
M Indique la taille maximale daffichage. Le maximum lgal est 255.
D sapplique aux nombres virgule flottante, et indique le nombre de dcimales qui
suivent la virgule. Le nombre maximum est de 30, mais ne doit pas tre plus grand que
M-2.
Les crochets ([ et ]) indiquent les spcifications optionnelles.
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
Un trs petit entier. Sil est sign, sa valeur varie entre -128 et 127, sinon elle varie de 0
255.
BIT
BOOL Ce sont des synonymes de TINYINT(1).
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
Un petit entier. Sil est sign, sa valeur varie entre -32768 et 32767, sinon elle varie de 0
65535.
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
Un entier de taille moyenne. Sil est sign, sa valeur varie entre -8388608 et 8388607,
sinon elle varie entre 0 et 16777215.
INT[(M)] [UNSIGNED] [ZEROFILL]
Un entier. Sil est sign, sa valeur varie entre -2147483648 et 2147483647, sinon elle
varie entre 0 et 4294967295.
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
Cest un synonyme de INT.
Un grand entier. Sil est sign, sa valeur varie entre -9223372036854775808 et
9223372036854775807, sinon elle varie entre 0 et 18446744073709551615.
FLOAT(prcision) [UNSIGNED] [ZEROFILL]
Un nombre virgule flottante. prcision<=24 pour un nombre virgule flottante de
prcision simple, entre 25 et 53 pour une prcision double. Ces types correspondent aux
types FLOAT et DOUBLE dcrits ci-dessus. FLOAT(X) a le mme intervalle de validit que
FLOAT et DOUBLE, mais la taille daffichage et le nombre de dcimale sont indfinis.
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
Un petit nombre virgule flottante (prcision simple). Lintervalle de validit va de 3.402823466E+38 -1.175494351E-38, 0 et de 1.175494351E-38 3.402823466E+38.
M reprsente la taille daffichage et D est le nombre de dcimales.
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
Un nombre virgule flottante (prcision double). Lintervalle de validit va de 1.7976931348623157E+308 -2.2250738585072014E-308, 0 et de
2.2250738585072014E-308 1.7976931348623157E+308. M reprsente la taille
daffichage et D est le nombre de dcimales.
REAL[(M,D)] [UNSIGNED] [ZEROFILL]
Cest un synonyme de DOUBLE.
Introduction MySQL
Introduction MySQL
Introduction MySQL
XOR XOR (OU exclusif) logique. Retourne NULL si lune des oprandes est NULL. Pour
les oprandes non-NULL, value 1 si un nombre pair doprandes est non-null, sinon 0
est retourn.
IFNULL(expr1,expr2) Si largument expr1 nest pas NULL, la fonction IFNULL()
retournera largument expr1, sinon elle retournera largument expr2. La fonction
IFNULL() retourne une valeur numrique ou une chane de caractres, suivant le
contexte dutilisation.
NULLIF(expr1,expr2) Si lexpression expr1 = expr2 est vrai, la fonction retourne NULL
sinon elle retourne expr1.
IF(expr1,expr2,expr3) Si largument expr1 vaut TRUE (expr1 <> 0 et expr1 <> NULL)
alors la fonction IF() retourne largument expr2, sinon, elle retourne largument expr3. La
fonction IF() retourne une valeur numrique ou une chane de caractres, suivant le
contexte dutilisation :
CASE valeur WHEN [compare-value] THEN rsultat [WHEN [compare-value] THEN
resultat ...] [ELSE rsultat] END
CASE WHEN [condition] THEN rsultat [WHEN [condition] THEN rsultat ...]
[ELSE rsultat] END La premire version retourne rsultat si valeur=compare-value. La
seconde version retourne le rsultat de la premire condition qui se ralise. Si aucune
des conditions nest ralise, alors le rsultat de la clause ELSE est retourn. Si il ny a
pas de clause ELSE, alors NULL est retourn
ASCII(str) Retourne le code ASCII du premier caractre de la chane de caractres str.
Retourne 0 si la chane de caractres str est vide. Retourne NULL si la chane de
caractres str est NULL :
ORD(str) Si le premier caractre de la chane str est un caractre multi-octets, la
fonction retourne le code de ce caractre, calcul partir du code ASCII retourn par
cette formule : ((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte
ASCII code...]. Si le premier caractre nest pas un caractre multi-octet, la fonction
retournera la mme valeur que la fonction ASCII() :
CONV(N,from_base,to_base) Convertit des nombres entre diffrentes bases. Retourne
une chane de caractres reprsentant le nombre N, convertit de la base from_base vers
la base to_base. La fonction retourne NULL si un des arguments est NULL. Largument N
est interprt comme un entier, mais peut tre spcifi comme un entier ou une chane
de caractres. Le minimum pour la base est 2 et son maximum est 36. Si to_base est un
nombre ngatif, N sera considr comme un nombre sign. CONV travaille avec une
prcision de 64 bits :
BIN(N) Retourne une chane de caractres reprsentant la valeur binaire de largument
N, o largument N est un nombre de type BIGINT. Cette fonction est un quivalent de
CONV(N,10,2). Retourne NULL si largument N est NULL
OCT(N) Retourne une chane de caractres reprsentant la valeur octal de largument N,
o largument N est un nombre de type BIGINT. Cette fonction est un quivalent de
CONV(N,10,8). Retourne NULL si largument N est NULL
HEX(N_or_S) Si largument N OR S est un nombre, cette fonction retournera une chane
de caractres reprsentant la valeur hexadcimale de largument N, o largument N est
de type BIGINT. Cette fonction est un quivalent de CONV(N,10,16).
CHAR(N,...) La fonction CHAR() interprte les arguments comme des entiers et retourne
une chane de caractres, constitue des caractres, identifis par leur code ASCII. Les
valeurs NULL sont ignores
CONCAT(str1,str2,...) Retourne une chane reprsentant la concatnation des
arguments.
CONCAT_WS(separator, str1, str2,...) La fonction CONCAT_WS() signifie CONCAT With
Separator, cest--dire "concatnation avec sparateur. Le premier argument est le
sparateur utilis pour le reste des arguments. Le sparateur peut tre une chane de
caractres, tout comme le reste des arguments. Si le sparateur est NULL, le rsultat
Introduction MySQL
sera NULL. Cette fonction ignorera tous les arguments de valeur NULL et vides, hormis le
sparateur. Le sparateur sera ajout entre tous les arguments concatner
LENGTH(str) Retourne le nombre de bits de la chane de caractres str
LOCATE(substr,str) POSITION(substr IN str) Retourne la position de la premire
occurrence de la chane substr dans la chane de caractres str. Retourne 0 si substr ne
se trouve pas dans la chane de caractres str:
LOCATE(substr,str,pos) Retourne la position de la premire occurrence de la chane
substr dans la chane de caractres str, partir de la position pos. Retourne 0 si substr
ne se trouve pas dans la chane de caractres str:
INSTR(str,substr) Retourne la position de la premire occurrence de la chane substr
dans la chane de caractres str. Cette fonction est exactement la mme que la fonction
LOCATE(), la diffrence que ces arguments sont inverss
LPAD(str,len,padstr) Retourne la chane de caractres str, complte gauche par la
chane de caractres padstr jusqu ce que la chane de caractres str atteigne len
caractres de long. Si la chane de caractres str est plus longue que len' caractres, elle
sera raccourcie de len caractres.
RPAD(str,len,padstr) Retourne la chane de caractres str, complte droite par la
chane de caractres padstr jusqu ce que la chane de caractres str atteigne len
caractres de long. Si la chane de caractres str est plus longue que len' caractres, elle
sera raccourcie de len caractres.
LEFT(str,len) Retourne les len caractres les plus gauche de la chane de caractres str
:
RIGHT(str,len) Retourne les len caractres les plus droite de la chane de caractres
str :
SUBSTRING(str,pos,len) SUBSTRING(str FROM pos FOR len) MID(str,pos,len) Retourne
une chane de len caractres de long de la chane str, partir de la position pos.
SUBSTRING(str,pos) SUBSTRING(str FROM pos) Retourne une portion de la chane de
caractres str partir de la position pos
SUBSTRING_INDEX(str,delim,count) Retourne une portion de la chane de caractres
str, situe avant count occurrences du dlimiteur delim. Si largument count est positif,
tout ce qui prcde le dlimiteur final sera retourn. Si largument count est ngatif, tout
ce qui prcde le dlimiteur final sera retourn
LTRIM(str) Retourne la chane de caractres str sans les espaces initiaux
RTRIM(str) Retourne la chane de caractres str sans les espaces finaux
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str) Retourne la chane de
caractres str dont tous les prfixes et/ou suffixes remstr ont t supprims. Si aucun
des spcificateurs BOTH, LEADING ou TRAILING sont fournis, BOTH est utilis comme
valeur par dfaut. Si remstr nest pas spcifi, les espaces sont supprims
SOUNDEX(str) Retourne la valeur Soundex de la chane de caractres str. Deux chanes
qui ont des sonorits proches auront des valeurs soundex proches. Une chane Soundex
standard possde 4 caractres, mais la fonction SOUNDEX() retourne une chane de
longueur arbitraire. Vous pouvez utiliser la fonction SUBSTRING() sur ce rsultat pour
obtenir une chane Soundex standard. Tout caractre non alphanumrique sera ignor.
Tous les caractres internationaux qui ne font pas partie de lalphabet de base (A-Z)
seront considrs comme des voyelles
REPLACE(str,from_str,to_str) Retourne une chane de caractres str dont toutes les
occurrences de la chane from_str sont remplaces par la chane to_str
REPEAT(str,count) Retourne une chane de caractres constitue de la rptition de
count fois la chane str. Si count <= 0, retourne une chane vide. Retourne NULL si str ou
count sont NULL
REVERSE(str) Retourne une chane dont lordre des caractres est linverse de la chane
str
Introduction MySQL
Introduction MySQL
EXP(X) Retourne la valeur de e (la base des logarithmes naturels) lev la puissance X
LN(X) Retourne le logarithme naturel de X (nprien)
LOG(X) LOG(B,X) Appele avec un seul paramtre, cette fonction retourne le logarithme
naturel (nprien) de X
POW(X,Y) POWER(X,Y) Retourne la valeur de X leve la puissance Y
SQRT(X) Retourne la racine carre de X
PI() Retourne la valeur de PI. Par dfaut, 5 dcimales sont retournes
COS(X) Retourne le cosinus de X, o X est donn en radians
SIN(X) Retourne le sinus de X, o X est donn en radians
TAN(X) Retourne la tangente de X, o X est donn en radians
ACOS(X) Retourne larc cosinus de X, cest--dire, la valeur de langle dont X est le
cosinus
ASIN(X) Retourne larc sinus de X, cest--dire, la valeur de langle dont le sinus est X.
Retourne NULL si X nest pas dans lintervalle -1 1
ATAN(X) Retourne larc tangente de X, cest--dire, la valeur de langle dont la tangente
est X
ATAN(Y,X) ATAN2(Y,X) Retourne larc tangente des variables X et Y
COT(X) Retourne la cotangente de X
RAND() RAND(N) Retourne un nombre alatoire virgule flottante compris dans
lintervalle 0 -1.0. Si largument entier N est spcifi, il est utilis comme initialisation du
gnrateur de nombres alatoires
LEAST(X,Y,...) Avec deux arguments ou plus, cette fonction retourne la plus petite des
valeurs des diffrents arguments.
GREATEST(X,Y,...) Retourne le plus grand des arguments
DEGREES(X) Retourne largument X, converti de radians en degrs
RADIANS(X) Retourne largument X, converti de degrs en radians
TRUNCATE(X,D) Retourne largument X, tronqu D dcimales. Si D vaut 0, le rsultat
naura ni sparateur dcimal, ni partie dcimale
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date) Retourne
lindex du jour de la semaine : pour date (1 = Dimanche, 2 = Lundi, ... 7 = Samedi). Ces
index correspondent au standard ODBC
WEEKDAY(date) Retourne lindex du jour de la semaine, avec la conversion suivante :
date (0 = Lundi, 1 = Mardi, ... 6 = Dimanche)
DAYOFMONTH(date) Retourne le jour de la date date, dans un intervalle de 1 31
DAYOFYEAR(date) Retourne le jour de la date date, dans un intervalle de 1 366
MONTH(date) Retourne le numro du mois de la date date, dans un intervalle de 1 12
DAYNAME(date) Retourne le nom du jour de la semaine, en anglais, de la date date
MONTHNAME(date) Retourne le nom du mois de la date date
QUARTER(date) Retourne le numro du trimestre de la date date, dans un intervalle de
14
WEEK(date) WEEK(date,first) Avec un seul argument, retourne le numro de la semaine
dans lanne de la date date, dans un intervalle de 0 53 (oui, il peut y avoir un dbut
de semaine numro 53), en considrant que Dimanche est le premier jour de la semaine.
Avec deux arguments, la fonction WEEK() vous permet de spcifier si les semaines
commencent le Dimanche ou le Lundi et la valeur retourne sera dans lintervalle 0-53 ou
bien 1-52. Voici un tableau explicatif sur le fonctionnement du second argument :
Value Meaning
0
La semaine commence le Dimanche et retourne une valeur dans lintervalle 0-53
1
La semaine commence le Lundi et retourne une valeur dans lintervalle 0-53
2
La semaine commence le Dimanche et retourne une valeur dans lintervalle 1-53
3
La semaine commence le Lundi et retourne une valeur dans lintervalle 1-53
YEAR(date) Retourne lanne de la date date, dans un intervalle de 1000 9999
Introduction MySQL
Introduction MySQL
%T
%S
%s
%p
%w
%U
%u
%V
%v
Introduction MySQL
Introduction MySQL