Connexion Client
mysql -h localhost u root -pmotdepassetopsecret l'hte : c'est--dire l'endroit o est localis le serveur ; le nom d'utilisateur ; et le mot de passe de l'utilisateur.
Dconnexion
Commande : quit ou exit
Syntaxe
1. 2. 3. 4. 5. 6. SELECT ou SELECT SELECT ou SELECT 'Hello World !'; 'Salut l\'ami'; (5+3)*2; (5+3)*2, 5+3*2;
Pour terminer une instruction SQL, on utilise le caractre ; En SQL, les chanes de caractres doivent tre entoures de guillemets simples ' Commentaires avec 2 tirets (Accepte uniquement si les deux tirets sont suivis d'un espace au moins)
Quelques autres caractres spciaux : \n retour la ligne \t tabulation \ % _ antislash (il faut chapper le caractre d'chappement) pourcent soulign
Utilisateur
1. GRANT ALL PRIVILEGES ON elevage.* TO 'nomutilisateur'@'localhost' IDENTIFIED BY 'mot_de_passe'; GRANT ALL PRIVILEGES : Cette commande permet d'attribuer tous les droits (c'est--dire insertions de donnes, slections, modifications, suppressions) ON elevage.* : dfinit les bases de donnes et les tables sur lesquelles ces droits sont acquis. Donc ici, on donne les droits sur la base "elevage" (qui n'existe pas encore, mais ce n'est pas grave, nous la crerons plus tard), pour toutes les tables de cette base (grce *). TO 'nomutilisateur' : dfinit l'utilisateur auquel on accorde ces droits. Si l'utilisateur n'existe pas, il est cr. @'localhost' : dfinit partir d'o l'utilisateur peut exercer ces droits. Dans notre cas, 'localhost', donc il devra tre connect partir de cet ordinateur. IDENTIFIED BY 'mot_de_passe': dfinit le mot de passe de l'utilisateur.
-9223372036854775808 9223372036854775807
Nombre dcimaux
Le mot-cl FLOAT peut s'utiliser sans paramtre, auquel cas quatre octets sont utiliss pour stocker les valeurs de la colonne FLOAT est normalement plus prcis, stockage dans 8 octets.
Types alphanumriques
Pour stocker un texte relativement court (moins de 255 octets), vous pouvez utiliser les types CHAR(x) et VARCHAR(x). Sinon, pour un plus grand texte : Type TINYTEXT TEXT Longueur maximale 2^8 octets 2^16 octets Mmoire occupe Longueur de la chane + 1 octet Longueur de la chane + 2 octets Longueur de la chane + 3 octets Longueur de la chane + 4 octets
Types temporels
Type DATE Date par dfaut ("zro") '0000-00-00'
Cration
CREATE DATABASE nom_base CHARACTER SET 'utf8';
Suppression
1. DROP DATABASE nom_base; 2. -- ou 3. DROP DATABASE IF EXISTS nom_base; -- Pour viter ce message d'erreur, si vous n'tes pas srs que la base de donnes existe
Utilisation de la base
1. USE nom_base
VARCHAR(30) Oui
1. CREATE TABLE Animal ( 2. id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, 3. espece VARCHAR(40) NOT NULL, 4. sexe CHAR(1), 5. date_naissance DATETIME NOT NULL, 6. nom VARCHAR(30), 7. commentaires TEXT, 8. PRIMARY KEY (id) 9. ) 10. ENGINE=INNODB; -- ou MyISAM (mais ne gre pas les cls trangres)
Vrifications
1. SHOW DATABASES; 2. SHOW TABLES; 3. DESCRIBE Animal;
-- liste les bases de donnes -- liste les tables de la base de donnes -- liste les colonnes de la table avec leurs caractristiques
exemple)
Ajout
1. 2. 3. 4. 5. ALTER TABLE nom_table ADD [COLUMN] nom_colonne description_colonne; -- Exemple ALTER TABLE Test_tuto ADD COLUMN date_insertion DATE NOT NULL;
Suppression
1. ALTER TABLE nom_table 2. DROP [COLUMN] nom_colonne;
Exemple :
1. ALTER TABLE Test_tuto 2. CHANGE prenom nom VARCHAR(30) NOT NULL; -- Changement du type + changement du
nom
3. ALTER TABLE Test_tuto 4. CHANGE id id BIGINT NOT NULL; -- Changement du type sans renommer 5. ALTER TABLE Test_tuto 6. MODIFY id BIGINT NOT NULL AUTO_INCREMENT; -- Ajout de l'auto-incrmentation 7. ALTER TABLE Test_tuto 8. MODIFY nom VARCHAR(30) NOT NULL DEFAULT 'Blabla'; -- Changement de la
Insertion de donnes
Insertion sans prciser les colonnes
1. 2. 3. 4. 5. INSERT VALUES -- ou INSERT VALUES INTO Animal (1, 'chien', 'M', '2010-04-05 13:43:00', 'Rox', 'Mordille beaucoup'); INTO Animal (NULL , 'chat', 'F', '2010-09-13 15:02:00', 'Schtroumpfette', NULL);
Insertion multiple
1. 2. 3. 4. INSERT INTO Animal (espece, sexe, date_naissance, nom) VALUES ('chien', 'F', '2008-12-06 05:18:00', 'Caroline'), ('chat', 'M', '2008-09-11 15:38:00', 'Bagherra'), ('tortue', NULL, '2010-08-23 05:18:00', NULL);
Pour vrifier
1. SELECT * FROM Animal;
Slection de donnes
Syntaxe de SELECT
1. 2. 3. 4. 5. 6. 7. 8. SELECT colonne1, colonne2, ... FROM nom_table; exemple SELECT * FROM Animal; ou SELECT espece, nom, sexe FROM Animal;
Combinaisons de critres
Oprateur Symbole Signification AND OR XOR NOT ! && || ET OU OU exclusif NON
Exemple :
1. SELECT * 2. FROM Animal 3. WHERE espece='chat' 4. AND sexe='F'; 5. -- OU 6. SELECT * 7. FROM Animal 8. WHERE espece='chat' 9. && sexe='F'; 10. -- OU 11. SELECT * 12. FROM Animal 13. WHERE espece='tortue' 14. OR espece='perroquet'; 15. -- OU 16. SELECT * 17. FROM Animal 18. WHERE espece='tortue' 19. || espece='perroquet';
1. 2. 3. 4. 5.
SELECT * FROM Animal WHERE date_naissance > '2009-12-31' OR ( espece='chat' AND ( sexe='M' OR ( sexe='F' AND date_naissance < '2007-06-01' )) 6. );
Le cas de NULL
1. SELECT * 2. FROM Animal 3. WHERE nom <=> NULL; -- slection des animaux sans nom 4. -- OU 5. SELECT * 6. FROM Animal 7. WHERE nom IS NULL; 8. -- OU 9. SELECT * 10. FROM Animal 11. WHERE commentaires IS NOT NULL; -- slection des animaux pour lesquels un
commentaire existe
5. 6. 7. 8. 9.
Recherche approximative
L'oprateur LIKE : '%' : qui reprsente n'importe quelle chane de caractres, quelle que soit sa longueur (y compris une chane de longueur 0) ; '_' : qui reprsente un seul caractre (ou aucun).
Exemple : 1. 2. 3. 4. 5. 6. 7. SELECT * FROM Animal WHERE nom LIKE '%Lu%'; -- insensible la casse -- ou SELECT * FROM Animal WHERE nom LIKE BINARY '%Lu%'; -- sensible la casse
Ou BETWEEN minimum AND maximum 1. SELECT * 2. FROM Animal 3. WHERE date_naissance BETWEEN '2008-01-05' AND '2009-03-23'; BETWEEN BINARY 'a' AND BINARY 'd' Sensible la casse Bien videmment, on peut aussi exclure un intervalle avec NOT BETWEEN.
Modification ligne
1. UPDATE nom_table 2. SET col1 = val1 [, col2 = val2, ...] 3. [WHERE ...]; 4. ou sur toutes les lignes 5. UPDATE Animal 6. SET commentaires='modification de toutes les lignes'; 7. exemple 8. UPDATE Animal 9. SET sexe='F', nom='Pataude' lanimal tait une femelle 10. WHERE id=21;
Suppression ligne
1. 2. 3. 4. DELETE FROM nom_table WHERE critres; ou pour supprimer toutes les lignes DELETE FROM Animal;
Suppression
1. DROP USER 'login'@'hote';
Exemple :
1. 2. 3. 4. CREATE USER 'max'@'localhost' IDENTIFIED BY 'maxisthebest'; CREATE USER 'elodie'@'194.28.12.4' IDENTIFIED BY 'ginko1'; CREATE USER 'gabriel'@'arb.brab.net' IDENTIFIED BY 'chinypower';
-- thibault peut se connecter partir de n'importe quel hte dont l'adresse IP commence par 194.28.12.
5. CREATE USER 'thibault'@'194.28.12.%' IDENTIFIED BY 'basketball8'; 6. 7. -- joelle peut se connecter partir de n'importe quel hte du domaine brab.net 8. CREATE USER 'joelle'@'%.brab.net' IDENTIFIED BY 'singingisfun'; 9. 10. -- hannah peut se connecter partir de n'importe quel hte 11. CREATE USER 'hannah'@'%' IDENTIFIED BY 'looking4sun';
Renommer l'utilisateur
1. RENAME USER 'max'@'localhost' TO 'maxime'@'localhost';
Mot de passe
1. SET PASSWORD FOR 'thibault'@'194.28.12.%' = PASSWORD('basket8');
CREATE TEMPORARY TABLE Cration de tables temporaires CREATE VIEW Cration de vues (il faut galement avoir le privilge SELECT sur les colonnes slectionnes par la vue)
Action autorise Modification de tables (avec ALTER TABLE) Suppression de tables, vues et bases de donnes
Autres privilges
Privilge Action autorise
CREATE ROUTINE Cration de procdures stockes (et de fonctions stockes - non couvert dans ce cours) ALTER ROUTINE EXECUTE INDEX TRIGGER LOCK TABLES CREATE USER Modification et suppression de procdures stockes (et fonctions stockes) Excution de procdures stockes (et fonctions stockes) Cration et suppression d'index Cration et suppression de triggers Verrouillage de tables (sur lesquelles on a le privilge SELECT) Gestion d'utilisateur (commandes CREATE USER, DROP USER, RENAME USER et SET PASSWORD)
Ajout de privilges
1. GRANT privilege [(liste_colonnes)] [, privilege [(liste_colonnes)], ...] 2. ON [type_objet] niveau_privilege 3. TO utilisateur [IDENTIFIED BY mot_de_passe]; privilege : le privilge accorder l'utilisateur (SELECT, CREATE VIEW, EXECUTE,) ; (liste_colonnes) : facultatif - liste des colonnes auxquelles le privilge s'applique ; niveau_privilege : niveau auquel le privilge s'applique (*.*, nom_bdd.nom_table,) ; type_objet : en cas de noms ambigus, il est possible de prciser quoi se rapporte le niveau : TABLE ou PROCEDURE.
Rvocation de privilges
REVOKE privilege [, privilege, ...] ON niveau_privilege FROM utilisateur;
Privilges particuliers
1. GRANT ALL Tous les privilges 2. ON elevage.Client 3. TO 'john'@'localhost'; 1. GRANT USAGE -- signifie "aucun privilge", mais dans ce cas on modifie le mot de passe de 'john'@'localhost'. Ses privilges ne changent pas. 2. ON *.* 3. TO 'john'@'localhost' IDENTIFIED BY 'test2012usage'; Pour accorder des privilges d'autres utilisateurs, on peut accorder GRANT OPTION de deux manires : comme un privilge normal, aprs le mot GRANT ; la fin de la commande GRANT, avec la clause WITH GRANT OPTION.
1. GRANT SELECT, UPDATE, INSERT, DELETE, GRANT OPTION 2. ON elevage.* 3. TO 'joseph'@'localhost' IDENTIFIED BY 'ploc4';
OU
4. 5. 6. 7. GRANT SELECT, UPDATE, INSERT, DELETE ON elevage.* TO 'joseph'@'localhost' IDENTIFIED BY 'ploc4' WITH GRANT OPTION;