jeudi 23 juillet 2015

'Learn MySQL in one video' by Derek Banas on Aug 29, 2014

http://www.newthinktank.com/2014/08/mysql-video-tutorial/
https://www.youtube.com/watch?v=yPu6qV5byu4

Tutoriel intéressant et très bien fait. Il y a quelques adaptations à faire comme toujours. Juste des détails, peut-être que ça pourra servir à quelqu'un... Si ça va trop vite, rappelez vous que vous pouvez réduire la vitesse des vidéo Youtube ;-)

1) MySQL en ligne de commande

La commande proposé n'a pas fonctionné chez moi :
mysql5 -u mysqladmin -p

Ayant installé MySQL vie XAMPP, j'ai du d'abord me positionner dans le bon répertoire.
cd c:\xampp\mysql\bin

J'ai ensuite entrée :
.\mysql.exe -u root

Je n'ai pas encore de mot de passe pour l'utilisateur root de ma base MySQL. Sinon j'aurais ajouté --password en fin de ligne. Signalons que le -u sert à indiquer le nom d'utilisateur, ici 'root'. Dernière remarque : j'ai commencé par .\ parce que j'ai utilisé PowerShell (et non CMD) qui ne charge pas de commandes à partir de l'emplacement actif.

2) Recréer la base...

En suivant le tutoriel, vous allez entrer à un moment donné :
DROP DATABASE IF EXISTS test3
Ensuite, même si ce n'est pas indiqué, vous devrez créer une autre base et vous y connecter :
CREATE DATABASE university;
USE university;
Il appelle sa base 'teste3', mais vu que la base contiendra une table 'test' (c'est à dire contrôle/épreuve), je vous conseille de la nommer autrement (par exemple 'university') pour plus de clarté.

3) Les INSERT INTO

Vous devez les copier-coller à partir du site de Derek. Malheureusement la plateforme web sur laquelle il a publié son tuto vient d'ajouter des numéro de ligne au début de chaque ligne. Je vous laisse entrer le premier INSERT à la main, mais pour la suite, voici le copié-collé :

INSERT INTO student VALUES('Harry', 'Truman', 'htruman@aol.com',
'202 South St', 'Vancouver', 'WA', 98660, '792-223-9810', "1946-1-24",
'M', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Shelly', 'Johnson', 'sjohnson@aol.com',
'9 Pond Rd', 'Sparks', 'NV', 89431, '792-223-6734', "1970-12-12",
'F', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Bobby', 'Briggs', 'bbriggs@aol.com',
'14 12th St', 'San Diego', 'CA', 92101, '792-223-6178', "1967-5-24",
'M', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Donna', 'Hayward', 'dhayward@aol.com',
'120 16th St', 'Davenport', 'IA', 52801, '792-223-2001', "1970-3-24",
'F', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Audrey', 'Horne', 'ahorne@aol.com',
'342 19th St', 'Detroit', 'MI', 48222, '792-223-2001', "1965-2-1",
'F', NOW(), 3.50, NULL);

INSERT INTO student VALUES('James', 'Hurley', 'jhurley@aol.com',
'2578 Cliff St', 'Queens', 'NY', 11427, '792-223-1890', "1967-1-2",
'M', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Lucy', 'Moran', 'lmoran@aol.com',
'178 Dover St', 'Hollywood', 'CA', 90078, '792-223-9678', "1954-11-27",
'F', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Tommy', 'Hill', 'thill@aol.com',
'672 High Plains', 'Tucson', 'AZ', 85701, '792-223-1115', "1951-12-21",
'M', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Andy', 'Brennan', 'abrennan@aol.com',
'281 4th St', 'Jacksonville', 'NC', 28540, '792-223-8902', "1960-12-27",
'M', NOW(), 3.50, NULL);

Et un autre.

INSERT INTO class VALUES
('English', NULL), ('Speech', NULL), ('Literature', NULL),
('Algebra', NULL), ('Geometry', NULL), ('Trigonometry', NULL),
('Calculus', NULL), ('Earth Science', NULL), ('Biology', NULL),
('Chemistry', NULL), ('Physics', NULL), ('History', NULL),
('Art', NULL), ('Gym', NULL);

Un dernier.

INSERT INTO score VALUES
(1, 1, 15),
(1, 2, 14),
(1, 3, 28),
(1, 4, 29),
(1, 5, 15),
(1, 6, 27),
(2, 1, 15),
(2, 2, 14),
(2, 3, 26),
(2, 4, 28),
(2, 5, 14),
(2, 6, 26),
(3, 1, 14),
(3, 2, 14),
(3, 3, 26),
(3, 4, 26),
(3, 5, 13),
(3, 6, 26),
(4, 1, 15),
(4, 2, 14),
(4, 3, 27),
(4, 4, 27),
(4, 5, 15),
(4, 6, 27),
(5, 1, 14),
(5, 2, 13),
(5, 3, 26),
(5, 4, 27),
(5, 5, 13),
(5, 6, 27),
(6, 1, 13),
(6, 2, 13),
# Missed this day (6, 3, 24),
(6, 4, 26),
(6, 5, 13),
(6, 6, 26),
(7, 1, 13),
(7, 2, 13),
(7, 3, 25),
(7, 4, 27),
(7, 5, 13),
# Missed this day (7, 6, 27),
(8, 1, 14),
# Missed this day (8, 2, 13),
(8, 3, 26),
(8, 4, 23),
(8, 5, 12),
(8, 6, 24),
(9, 1, 15),
(9, 2, 13),
(9, 3, 28),
(9, 4, 27),
(9, 5, 14),
(9, 6, 27),
(10, 1, 15),
(10, 2, 13),
(10, 3, 26),
(10, 4, 27),
(10, 5, 12),
(10, 6, 22);

Les lignes qui commence par # sont des commentaires, vous pouvez les laisser.
Et n'oubliez pas les absences :

INSERT INTO absence VALUES
(6, '2014-08-29'),
(7, '2014-08-29'),
(8, '2014-08-27');

4) Mais comment fait-il pour effacer l'écran ?

La vidéo a été réalisé avec la version Mac OS X de MySQL qui permet d'utiliser le raccourci :
ctrl-L

Sous Windows, c'est pour l'instant impossible, à cause d'un bug connu.
Même : system clear; ne fonctionne pas...

5) Mettre le nom des tables au pluriel ou au singulier ?

À 21mn30, on vous propose de renommer au pluriel.
C'est un bon exercice, mais je vous conseille si vous avez le choix de nommer les tables au singuliers, de façon à conserver le pluriel pour nommer les collections.
À lire : http://stackoverflow.com/a/342623

6) Moins vite ?

Youtube permet désormais de ralentir la vitesse de ses vidéos de moitié (dans paramètre). Par contre, les sous-titres anglais générés automatiquement n'aident vraiment pas. Déjà que les sous-titre pour un tuto, comment dire...

7) Auto-complétion ?

Sur la vidéo, on remarque que la touche tab est utilisé pour l'auto-complétion : c'est à dire qu'on écrit un début de nom de table ou de colonne, puis un simple appuie sur TAB permet de compléter. Ça fonctionne sur Linux et OS X, pas sur Windows à ma connaissance.

Conclusion

Ce tutoriel présente entre autre une très simple et très efficace présentation de
  • group by
  • having
  • join...
Il permet de se remémorer les bases de SQL en une heure. À garder sous le coude en cas de besoin ;-)