UPPREVIOUSNEXT  Technologies Internet et Education, © TECFA
  3. Interrogation (selection)

3. Interrogation (selection)

Voici la syntaxe (sans les détails):

SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [DISTINCT | DISTINCTROW | ALL]
    select_expression,...
    [INTO OUTFILE ’file_name’ export_options]
    [FROM table_references
        [WHERE where_definition]
        [GROUP BY col_name,...]
        [HAVING where_definition]
        [ORDER BY {unsigned_integer | col_name} [ASC | DESC] ,...]
        [LIMIT [offset,] rows]
        [PROCEDURE procedure_name] ]

 

Nous allons ici travailler surtout avec la forme suivante

SELECT select_expression 1
FROM table_references WHERE where_definition 2 ORDER BY col_name

 

1 select_expression:
une liste de colonnes à chercher

2 where_definition:
voir 3.2 “Sélection conditionnelle (SELECT .... WHERE)” [10]

3.1 SELECT simple

SELECT champs1,champs2,... FROM table OU

SELECT * FROM table

Exemple 3-1: Simple selections

SELECT id,login,fullname,love,sports FROM demo1
+----+-----------+------------------+------+--------+

| id | login     | fullname         | love | sports |
+----+-----------+------------------+------+--------+
|  1 | test      | Tester Test      |    3 |      3 |
| 34 | colin2    | Patrick Jermann2 |    1 |      4 |
....

SELECT * FROM demo1

+----+-----------+----------------------------------+------------------+------------------------+------+--.....| id | login     | password                         | fullname         | url                    | food | w.....+----+-----------+----------------------------------+------------------+------------------------+------+---.....|  1 | test      | 098f6bcd4621d373cade4e832627b4f6 | Tester Test      | http://tecfa.unige.ch  |    3 |    ...| 34 | colin2    | b9hhhfa9347all893u483            | Patrick Jermann2 | http://tecfa.unige.ch/ |    1 |    ...

3.2 Sélection conditionnelle (SELECT .... WHERE)

SELECT .... FROM table WHERE condition

A. Quelques opérateurs pour les conditions:

 

Opérateur

Explication

opérateurs de comparaison simple

=

égal

<> or !=

pas égal

<

Less Than

>

Greater Than

<=

Less Than or Equal To

>=

Greater Than or Equal To

opérateurs de combinaison

AND

ET (les 2 propositions doivent être vraie)

OR

OU (une au moins des propositions est vraie )

opérateurs spéciaux

expr IN (..., ...)

DANS (une liste)

expr NOT IN (..., ..., ...)

PAS dans ....

expr BETWEEN min AND max

Entre ... ET ...

expr NOT BETWEEN ...

(le contraire)

opérateurs de comparaison pour strings seulement

expr1 LIKE expr2

comme ....

wildcards: %=plusieurs chars, _=1 char

expr NOT LIKE expr2

pas comme ...

expr REGEXP pattern

comme regexp

expr NOT REGEXP pattern

pas comme regexp

STRCMP(exp1, exp2)

strcmp comme dans php, C, etc.

Flux de contrôle

IF (expr1, expr2, expr3)

Si expr1 est vraie, retourne expr2, sinon expr3

IfNull (expr1, expr2)

Si expr1 est vraie, retourne expr1, sinon expr2

Fonctions mathématiques

voir le manuel ...

 

Note:

  • Priorités: Opérateurs de comparaison, AND, OR
    en cas de doute: mettre des parenthèses (...)
  • Les strings doivent être mises entre ’...’ ou "..." MAIS:
    Utilisez des quotes de préférence (’...’), pas des guillemets mal supportés par certaines bases de données.

Exemple 3-2: Simple Select ... where

SELECT id,login,fullname,love,sports FROM demo1 WHERE love>4+----+----------+------------------+------+--------+| id | login    | fullname         | love | sports |+----+----------+------------------+------+--------+|  3 | colin    | Patrick Jermann  |    6 |      4 ||  4 | schneide | Daniel Schneider |    6 |      6 |+----+----------+----------------+------+--------+

Exemple 3-3: Select ... where

SELECT * from demo1 WHERE login = ’colin’ AND food < 6

Exemple 3-4: Select ... where ... IN

SELECT fullname from demo1 WHERE login in (’colin’, ’blurp’)

Exemple 3-5: Select ... where ... BETWEEN

SELECT * from demo1 WHERE food BETWEEN 3 AND 5

SELECT fullname from demo1 WHERE food BETWEEN 3 AND 5 AND love > 2

Exemple 3-6: Select ... where ... LIKE

SELECT id,login,fullname,love,sports FROM demo1

WHERE fullname LIKE ’%Patrick%’;

+----+----------+------------------+------+--------+
| id | login    | fullname         | love | sports |
+----+----------+------------------+------+--------+
|  3 | colin    | Patrick Jermann  |    6 |      4 |
| 93 | michelon | Michelon Patrick |    6 |      6 |
+----+----------+------------------+------+--------+

Exemple 3-7: Select ... where ... REGEXP

SELECT * from demo1 WHERE fullname REGEXP ’P.*J.*’

SELECT login,fullname from demo1 WHERE fullname REGEXP ’P.*J.*’;

+--------+------------------+
| login  | fullname         |
+--------+------------------+
| colin2 | Patrick Jermann2 |
| blurp  | Patrick Jermann2 |

3.3 Tri des lignes (SELECT ... ORDER)

SELECT * from demo1 ORDER by id
SELECT * from demo1 ORDER by id DESC

3.4 Compter des lignes

SELECT COUNT(*) FROM demo1
SELECT login, COUNT(*) FROM demo1 GROUP BY login;

3.5 Utilisation de plus d’une table

Exemple 3-8: Select dans 2 tables, voir surtout 4.6 “Tables relationnelles” [23]

SELECT demo1.fullname 
FROM demo1, test WHERE demo1.login = test.login
+-------------+
| fullname    |
+-------------+
| Tester Test |
 

UPPREVIOUS NEXT -- TIE