Outils pour utilisateurs

Outils du site


Panneau latéral

mysql

Ceci est une ancienne révision du document !


MySQL

Cela fait trop longtemps que je traine un fichier texte qui contient mes notes à propos du langage SQL, dans le but à l'époque d'être utilisé avec MySQL, puis MariaDB suite au rachat de Sun par Oracle… Une volonté (inutile ?) d'avoir un outil le plus ouvert possible ?

Les types de données

Avant de commencer le vif du sujet, il faut connaître quel type de données on peut stocker

Numérique

NOM Taille Nombres stockables
TINYINT 1o -128 à 127
SMALLINT 2o -32 768 à 32 767
MEDIUMINT 3o -8 388 608 à 8 388 607
INT 4o -2 147 483 648 à 2 147 483 647
BIGINT 8o -9223372036854885808 à …

UNSIGNED permet de ne pas avoir de nombre négatif et donc une plage positive 2x plus grand

NUMERIC ou DECIMAL : définit un nombre de chiffres avant et après la virgule, valeurs exactes conservées
FLOAT, DOUBLE REAL : valeur approchée stockée sous forme scientifique

Alphanumérique

NOM DESCRIPTION
VARCHAR(25) permet de stocker une chaine de caractère (moins de 255 octets)
TEXT permet de stocker un texte de 2^16 octets
BINARY chaine binaire sur 1 octet
ENUM permet de prendre une valeur parmi celles prédéfinies (par exemple 'chien', 'chat')

Temporel

NOM DESCRIPTION
DATE permet de stocker une date, plusieurs formats possibles (par défaut : aaaa-mm-jj )
DATETIME permet de stocker une date et une heure “aaaa-mm-jj hh:mm:ss”
TIME permet de stocker une heure ou une durée (par défaut : “D HH:MM:SS.fraction”)
YEAR permet de stocker une année (par défaut : YYYY)

Gérer les UTILISATEURS

CREATE USER 'nom'@'localhost' IDENTIFIED BY 'password' ; -- crée un utilisateur
 
GRANT ALL ON nomBase.* TO 'nom'@'localhost' ;            -- donne les pleins droits à un utilisateur sur les bases de données

Gérer les BASES de données du serveur

CREATE DATABASE nom [CHARACTER SET 'utf8'] ;	-- permet de créer une base de données [avec un encdage en utf-8]
DROP DATABASE nom ;				-- permet de supprimer une base de données
USE nom ;					-- spécifie quelle base de données on doit utiliser

mysqldump est un client en console qui permet d'effectuer une sauvegarde de la base de données.

Gérer les TABLES d'une base

créer

CREATE TABLE nom (				-- permet la création d'une table qui s'appelera nom
	colonne1 description_colonne1,		-- par exemple : id INT NOT NULL AUTO_INCREMENT
	..					-- par exemple : prenom VARCHAR(25)
	[PRIMARY KEY (colonnex)]
)
[ENGINE=moteur] ;				-- MYISAM, INNODB

Visualiser la structure

DESCRIBE table ;				-- permet de d'afficher la structure de la table

Modifier la structure

ALTER TABLE nom_table 				    -- permet de modifier une table, plusieurs fonctions sont disponibles :
	ADD nom_colonne description ;		    -- ajouter une colonne
	DROP nom_colonne ;			    -- supprimer une colonne
	CHANGE ancien_nom nouveau_nom desciption ;  -- changer le nom de la colonne et de la description (sauf si identique)
	MODIFY nom_colonne nouvelle_description ;   -- changer le type de données

Supprimer

DROP TABLE nom_table ;				-- permet de supprimer une table, irréversible...

Gérer les INDEX d'une table

ils peuvent être créés directement à la création de la table ou par modification de celle ci :

ALTER TABLE nom-table                          -- méthode 1 pour créer un index
	ADD INDEX [nom index](col,..)	       -- un index tout simple, pour accélérer les recherches
	ADD UNIQUE			       -- un index avec contrainte d'unité
	ADD FULLTEXT			       -- MyISAM seulement, sur les colonnes de texte; caractères...
 
CREATE [UNIQUE/FULLTEXT] INDEX nom_index       -- méthode 2 pour créer un index
	ON nom_table (col,..)
 
ALTER TABLLE nom_table			       -- requete pour supprimer un index
	DROP INDEX nom_index

- AGIR SUR LES DONNEES -


– INSERTION DE DONNEES – INSERT INTO table (col1, col2) requete pour l'insertion de données

VALUES (valeur1,valeur2) [,(valeur,valeur)] ;	ajout de plusieurs lignes possibles

INSERT requete permettant l'ajout d'une ligne ou la mise à jour d'un ligne

INTO table (col1,col2)							si l'ajout causerait un doublon (selon un index/clé UNIQUE)
VALUES (valeur, valeur)
ON DUPLICATE KEY UPDATE col=valeur, ..

SOURCE fichier.sql; effectue toutes les requetes contenues dans le fichier

LOAD DATA LOCAL INFILE 'fichier.csv' permet de charger des valeurs à partir d'un fichier au format spécifié

INTO TABLE nom_table
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(col1,col2..) ;

– SELECTION DE DONNEES – SELECT 'xxx' ; renvoi 'xxx' SELECT col1, Col2 FROM nom_table ; renvoi toutes les valeurs contenu dans col1 et col2 de la table nom_table SELECT * FROM nom_table ; renvoi tout le contenu de la table (tout le contenu de toutes les colonnes) SELECT colonne renvoi le contenu de colonne de la table dans le cas où col=…

FROM table 
WHERE col=... AND/OR ...

= < ⇐ > >= != ⇔(égal pour NULL) AND OR XOR NOT IS NOT NULL

SELECT col FROM table WHERE .. ORDER BY .. permet de trier les données avant de les afficher ORDER BY col DESC/ASC permet de définir l'ordre croissant/descroissant ORDER BY col1 , col2 trier selon col1, puis col2

SELECT DISTINCT col FROM table permet de ne pas afficher de doublon

SELECT col FROM table LIMIT n OFFSET o limite le nombre de ligne affichée, éventuellement avec un offset

– SUPPRESSION DE DONNEES – DELETE FROM table WHERE critères ; supprime les lignes de la table pour lesquels le critère est vrai

– MODIFICATION DE DONNES – UPDATE table permet de modifier toutes les lignes pour lesquelles le critère est vrai, la modification porte sur les arguments spécifiés

SET col1=valeur, col2=valeur
WHERE critère

– SAUVEGARDE D'UNE BASE – outil console : mysqldump -u user -ppassword -B base > file

mysql.1420466704.txt.gz · Dernière modification: 2018/10/13 20:32 (modification externe)