Section courante

A propos

Section administrative du site

 Langage  Installation  Elément  Programmation  CLI  GUI  Web GUI  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
FreeBSD/Apache/PHP/MySQL
Linux Debian
MyODBC
Windows XP avec MySQL 4
Windows 7 avec MySQL 5
Les remarques
Les opérateurs
Type de données élémentaires
Type de tables
Référence des variables systèmes dynamiques
Référence des instructions
Référence des fonctions
Vue avec prototype
Vue par catégorie
Astronomie
Temps
Planète
Année bissextile
mysqladmin
mysql
myisamchk
mysqldump
Linux
Windows
Linux
Windows
HeidiSQL
MySQL Workbench
Navicat
SQLyog
phpMyAdmin
Code d'erreur
Déboguage
Optimisation
Bibliographie
Préface
Notes légal
Dictionnaire
Recherche

SELECT

Sélectionne
MySQL  

Syntaxe

SELECT [STRAIGHT_JOIN]
  [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
  [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
  [DISTINCT | DISTINCTROW | ALL]
  select_expression,...
  [INTO {OUTFILE | DUMPFILE} 'nom_fichier' export_options]
  [FROM table_references
  [WHERE where_definition]
  [GROUP BY {unsigned_integer | nom_de_colonne | formula} [ASC | DESC], ...
  [HAVING where_definition]
  [ORDER BY {unsigned_integer | nom_de_colonne | formula} [ASC | DESC] ,...]
  [LIMIT [offset,] lignes]
  [PROCEDURE procedure_name(argument_list)]
  [FOR UPDATE | LOCK IN SHARE MODE]]

La syntaxe pour les «jointures» :

nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)], reference_table
nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)] [CROSS] JOIN reference_table
nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)] INNER JOIN reference_table [ON expr_conditionnelle | USING (column_list)]
nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)] STRAIGHT_JOIN reference_table
nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)] LEFT [OUTER] JOIN reference_table [ON expr_conditionnelle | USING (column_list)]
nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)] LEFT [OUTER] JOIN reference_table
nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)] NATURAL [LEFT [OUTER]] JOIN reference_table
{ OJ nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)] LEFT OUTER JOIN reference_table ON expr_conditionnelle }
nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)] RIGHT [OUTER] JOIN reference_table [ON expr_conditionnelle | USING (column_list)]
nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)] RIGHT [OUTER] JOIN reference_table
nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)] NATURAL [RIGHT [OUTER]] JOIN reference_table

La syntaxe pour les unions :

SELECT ...
UNION [ALL | DISTINCT]
SELECT ...
[UNION [ALL | DISTINCT]
SELECT ...]

Paramètres

Nom Description
select_expression Ce paramètre permet d'indiquer la liste des expressions, soit généralement les champs de la table.
lignes Ce paramètre permet d'indiquer la nombre de ligne que la liste doit sortie au maximum.
offset Ce paramètre permet d'indiquer la position à partir de la laquelle la liste doit être sortie.
table_references Ce paramètre permet d'indiquer la table ou les tables à sortir de la base de données.
DISTINCT Ce paramètre permet d'indiquer les lignes d'enregistrements lorsqu'elles sont identiques, ne peuvent sortir qu'une seule fois.
ORDER BY {unsigned_integer | nom_de_colonne | formula} Ce paramètre permet d'indiquer l'ordre de tri de la liste des colonnes :
Formule Description
column!=expression Cette formule permet de mettre la colonne correspondant à l'expression spécifié au début.
column=expression Cette formule permet de mettre la colonne correspondant à l'expression spécifié à la fin.
column ASC Cette formule permet d'effectuer un tri dans le sens normal.
column DESC Cette formule permet d'effectuer un tri dans le sens inverse.
LENGTH(column) Cette formule permet d'effectuer un tri de la plus petite chaine de caractères à la plus longue chaine de caractères du champs spécifié.
column LIKE search Cette formule permet d'effectuer un tri par la colonne spécifié en fonction des lettres spécifié dans l'expression search.
... ...
WHERE where_definition Ce paramètre permet d'indiquer les critères de recherche. Ainsi, seul les lignes correspondant à la définition peuvent être affiché.
GROUP BY nomdecolonnes Ce paramètre permet d'indiquer qu'il faut regrouper les données en fonction de la colonne ou des colonnes spécifiés.
UNION Ce paramètre permet de jumelé le résultat de plusieurs «SELECT» en une seule.
... ...
LIMIT [offset,] lignes Ce paramètre permet d'indiquer respectivement la position départ suivi du nombre d'enregistrement retournés. Par défaut la position est de début est 0, et la quantité est tous les enregistrements de la table.

Description

Cette instruction permet de sortie une liste de données à partir d'une ou plusieurs tables.

Remarques

Exemples

Prenons pour base la table «cdmworkgroup» avec le contenu suivant :

Cin WorkGroupId Name_EN Name_FR Description Status CreateDate CreateUserId LastUpdate UpdateUserId
000 0000023901 Coder Développement Groupe de programmeur effectuant de la recherche et développement (R&D). A 2006/03/09 SYSADM 2006/03/09 SYSADM
000 0000023902 Maintenance Maintenance Groupe maintenant les divers services réseaux, implantant les développements, maintenant l'état actuel du matériel et administrant les accès. A 2006/03/09 SYSADM 2006/03/09 SYSADM
000 0000023903 Direction Direction Direction Groupe de travail s'occupant des divers orientations à prendre sur les projets et les produits. I 2006/03/09 SYSADM 2006/03/09 SYSADM
075 0000000068 Test Teste Groupe désigné pour le contrôle de la Qualité A 2006/03/09 STREMBLAY 2006/03/09 STREMBLAY

Si vous voulez retourner tous les champs de cette table vous entrez donc les instructions suivantes :

  1. SELECT * from cdmworkgroup

Si vous voulez retourner tous les champs de cette table contenu dans le CIN égalant «000» vous entrez donc les instructions suivantes :

  1. SELECT * from cdmworkgroup WHERE Cin='000'

Si vous voulez retourner seulement le champs d'identification «ID» représenté par «WorkGroupId» et son nom français dans le champs «Name» de cette table contenu dans le «CIN» égalant «000» et un «Status» actif (A) vous entrez donc les instructions suivantes:

  1. SELECT
  2.   WorkGroupId As ID,
  3.   Name_FR As Name
  4. FROM cdmworkgroup
  5. WHERE Cin='000' AND Status='A'

Et les informations vous seront retourner sous la forme suivante  :

ID Name
0000023901 Développement
0000023902 Maintenance

Pour le problème suivant, sachant que nous avons une table «cdmuser» ressemblant à ceci :

Cin UserId FirstName LastName Password DefLang DefEmail Status NumVisit CreateDate CreateUserId LastUpdate UpdateUserId
000 SYSADM Sylvain Maltais PASSWORD FR support @gladir.com A 615 2006/03/09 SYSADM 2006/03/09 SYSADM
000 STREMBLAY Steve Tremblay PASSWORD FR stremblay @mail.com A 615 2006/03/09 SYSADM 2006/03/09 SYSADM

Si en plus de deux autres champs vous voulez connaitre l'auteur (AuthorName) se trouvant dans la table «cdmuser» voici une des méthodes comment procéder :

  1. SELECT
  2.   cdmworkgroup.WorkGroupId As ID,
  3.   cdmworkgroup.Name_FR As Name,
  4.   CONCAT(cdmuser.FirstName,' ',cdmuser.LastName) As AuthorName
  5. FROM cdmworkgroup
  6. LEFT JOIN cdmuser ON cdmuser.Cin='000' and cdmuser.UserId=cdmworkgroup.CreateUserId
  7. WHERE cdmworkgroup.Cin='000' AND cdmworkgroup.Status='A'

Et les informations vous seront retourner sous la forme suivante :

ID Name AuthorName
0000023901 Développement Sylvain Maltais
0000023902 Maintenance Sylvain Maltais

Il aurait également été possible d'écrire :

  1. SELECT
  2.   cdmworkgroup.WorkGroupId As ID,
  3.   cdmworkgroup.Name_FR As Name,
  4.   CONCAT(cdmuser.FirstName,' ',cdmuser.LastName) As AuthorName
  5. FROM cdmworkgroup,cdmuser
  6. WHERE cdmuser.Cin='000' and cdmuser.UserId=cdmworkgroup.CreateUserId AND cdmworkgroup.Cin='000' AND cdmworkgroup.Status='A'

Mais je déconseille la seconde méthode car il y a une possibilité d'avoir des résultats irrégulier si vous avez de la corruption de données, des contraintes extérieures à rajouter et sans compter qu'elle a une moins bonne lisibilité du problème.

L'exemple suivant permet de sortir le résultat d'un SELECT à partir d'un SELECT (SELECT FROM SELECT) :

  1. SELECT id FROM (SELECT WorkGroupId AS id FROM cdmworkgroup WHERE `Status`='A') AS matable

N.B. : Il ne faut pas oublier d'indiquer un alias à la table (dans ce cas si «matable») car sinon vous aurez un message d'erreur «Error Code: 1248» ou «Every derived table must have its own alias».

L'exemple suivant permet d'afficher la taille de chacune des tables en Mo pour la base de données «mabasededonnees» :

  1. SELECT table_name AS "Table", 
  2. ROUND(((data_length + index_length) / 1024 / 1024), 2) "Taille en Mo" 
  3. FROM information_schema.TABLES 
  4. WHERE table_schema = "mabasededonnees";

Cet exemple permet d'indiquer le nombre de courriels identiques dans la table «membres» (ou si vous préférez les doublons de courriel) :

  1. SELECT COUNT(1) AS Compte,courriel FROM membres GROUP BY courriel HAVING Compte > 1

L'exemple suivant permet de retourner la valeur actuelle de l'AUTO_INCREMENT dans la table «matable» de la base de données «nombasededonnees» :

  1. SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = "nombasededonnees" AND TABLE_NAME = "matable" 

L'exemple suivant permet de forcer la table «article» à utiliser l'index «critere_index» lors d'une recherche avec le champ «critere» :

  1. SELECT `id` FROM `article` USE INDEX(`critere_index`) WHERE critere = 1

L'exemple suivant permet de retourner le pourcentage d'utilisateur n'ayant pas de mot de passe dans la table «utilisateur», sachant qu'il existe un champ «passwd» contenant le mot de passe :

  1. SELECT (SELECT COUNT(passwd) FROM utilisateur WHERE passwd='')/(SELECT COUNT(passwd) FROM utilisateur)

Voir également

Article - Les géants de l'informatique - Oracle

Références

MySQL - Référence, Edition Micro Application, Nicolas Rivereau, Antoine Pichot, 2002, ISBN: 2-7429-2560-0, page 909.
MySQL: The definitive guide to using, programming, and administering MySQL 4 databases - Second Edition, Paul Dubois, 2003, ISBN: 0-7357-1212-3, page 885

PARTAGER CETTE PAGE SUR
Dernière mise à jour : Samedi, le 3 octobre 2015