Valid XHTML     Valid CSS2    

Cours CMI / L2 - séance 2

 

Résumé de la séance 2

Si la partie conception d'une base de données et de ses tables est une étape primordiale et parfois difficile ou délicate, savoir exécuter des requêtes pour consulter ces tables est une autre étape cruciale. Nous essaierons dans cette séance de nous entrainer à exploiter au mieux les commandes MySQL prévues à cet effet, dont la fameuse commande SELECT. On pourra consulter notre page base de données pour les aspects conceptuels des bases de données.

 

1. Requêtes MySQL

Il a plusieurs catégories de requêtes MySQL : celles qui permettent de créer, celles qui permettent de remplir, celles qui permettent de mettre à jour, celles qui permettent d'interroger...

Après avoir lu notre tuteur MySQL, on pourra consulter par exemple le wiki book MySQL ou la carte de référence MySQL (copie locale) pour avoir une bonne compréhension de l'ensemble des commandes MySQL, sachant que le site officiel pour la documentation se nomme http://dev.mysql.com/.

Comme indiqué sur la page française du Wiki pour MySQL, la version Open Source de MySQL se nomme désormais MariaDB.

          

non su

          

non su

2. La commande SELECT

La principale commande à savoir utiliser en SQL est SELECT dont le détail de la syntaxe est ici pour MySQL et que nous reproduisons ci-dessous :


     SELECT
     
         [ALL | DISTINCT | DISTINCTROW ]
           [HIGH_PRIORITY]
           [MAX_STATEMENT_TIME = N]
           [STRAIGHT_JOIN]
           [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
           [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
         select_expr [, select_expr ...]
         [FROM table_references
           [PARTITION partition_list]
         [WHERE where_condition]
         [GROUP BY {col_name | expr | position}
           [ASC | DESC], ... [WITH ROLLUP]]
         [HAVING where_condition]
         [ORDER BY {col_name | expr | position}
           [ASC | DESC], ...]
         [LIMIT {[offset,] row_count | row_count OFFSET offset}]
         [PROCEDURE procedure_name(argument_list)]
         [INTO OUTFILE 'file_name'
             [CHARACTER SET charset_name]
             export_options
           | INTO DUMPFILE 'file_name'
           | INTO var_name [, var_name]]
         [FOR UPDATE | LOCK IN SHARE MODE]]
     

Comme indiqué sur la page française du Wiki pour SQL SELECT, la pratique courante de SELECT utilise -- et dans cet ordre -- les options F, W, GB, H, OB, L, à savoir FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT. Comme indiqué au bas de la page anglaise du Wiki pour SQL SELECT, chaque implémentation de SQL a sa propre syntaxe étendue.

Le but de la commande SELECT est de fournir des valeurs de champs (SEXE, AGE...) ou des calculs sur champs (POUCES* 2.54, MIN(PRIX)... à partir d'enregistrements dans des tables (FROM) éventuellement filtrés par des conditions (WHERE), à l'aide d'options de regroupement (GROUP BY), groupes eux-aussi éventuellement sélectionnés (HAVING), et dont l'affichage peut être trié (ORDER BY). Enfin, au lieu d'afficher tous les résultats, on peut demander seulement l'affichage des lignes tant à tant (LIMIT).

SELECT peut aussi être une option de la commande INSERT, ce qui permet de remplir une table à partir d'autres tables.

Si les commandes SELECT pour des interrogations usuelles sur une table sont assez faciles à maitriser, de même que les interrogations pour plusieurs tables lorsqu'on croise des informations présentes, les options de "JOINTURE" pour trouver ce qui n'est pas présent demandent nettement plus d'expérience, ne serait-ce que parce que les jointures peuvent être effectuées sur les tables de gauche ou sur les tables de droite, ce qui n'aboutit pas forcément aux mêmes résultats. Par exemple avec une table de clients et une table de commandes, dans un cas on pourra trouver les clients qui n'ont pas commandé et dans l'autre, les commandes sans client courant (en supposant un filtrage par date notamment...).

          non su

Sur le site de sqlpro, via l'URL sqlaz/select on trouvera une longue page en français sur cette fameuse commande SELECT. Pour comprendre les jointures en SQL, nous vous conseillons de lire dans cet ordre jointures 1 puis jointures 2.

3. MySQL par la pratique

Pour celles et ceux qui ont réussi à faire tous les exercices de notre tuteur MySQL, voici quelques questions dédiées aux bases LEAPdb et sHSPdb :

Rappel : la connexion MySQL se fait en local à la faculté des sciences d'Angers (dans un terminal sur forge) par


      mysql --host=localhost --user=anonymous --password=anonymous
     

Vous pouvez tester vos réponses dans votre navigateur Web préféré via la page  execute Mysql .

Question 3.1

Combien y a-t-il de tables dans la base LEA ?

Question 3.2

Quels sont les champs de la table proteins dans la base LEA et à quoi servent-ils ?

Question 3.3

Combien y a-t-il de protéines en tout dans la base LEA ? Et dans la classe 1 ? Et dans chaque classe ?

Question 3.4

Dans quelle(s) classe(s) se situent les cinq plus grandes séquences Fasta ? Et les cinq plus petites ? Et si on se restreint aux treize premières classes ?

Question 3.5

Quelle est la moyenne de l'indice de repliement pour chacune des classes 1 à 12 dans la base LEA ? Est-ce "raisonnable" ?

Question 3.6

Quel est le motif lié à chaque classe dans la base LEA ? Comment les motifs ont-ils été construits ?

          

non su

          

non su

Source : Stress responsive TranscrIption Factor Database

Source : Li & He (2009)

Question 3.7

Quelle est la moyenne de l'indice de repliement pour chacune des classes 1 à 23 dans la base HSP ? Est-ce "raisonnable" ? Et est-ce très différent des moyennes pour la base LEA ?

Question 3.8

Est-ce que toutes les protéines des 24 premières classes des la base HSP ont un domaine ACD ? Est-ce "normal" ?

Question 3.9

Peut-on facilement afficher la taxonomie complète d'une protéine dans les bases LEA et HSP ?

Question 3.10

Y a-t-il une différence significative au niveau de longueurs pour les protéines des 24 premières classes de la base HSP ?

Question 3.11

Dans quelle mesure peut-on considérer que la plupart de ces résultats sont inexacts (et non pas faux) ?

Solutions :    afficher les solutions  

 

Cliquer  ici  pour revenir à la page de départ des cours CMI / L2.

 

 

retour gH    Retour à la page principale de   (gH)