WinEvolution >Langage de programmation: les bases de données mySql > Sachez créer des requêtes sur une BD MySql
Les requêtes SQL avec les commandes, clauses et fonctions MySql
SQL est un langage normalosé d'intérogation de bases de données - Structured Query Language - Il s'agit d'un langage indépendant du type de base de données. Les commandes SQl sont par conséquent exploitables par toutes bases de donn&es: Access, MySql, SQL...Ces commandes gèrent également les différentes actions sur le serveur de bases de données
Le serveur de bases de données
la transmission des commandes SQL au serveur
La transmission des requêtes SQL se fait en utilisant des logiciels tels que phpMyAdmin. Un compte administrateur peut être crée. L'accès à l'administration de la base de données nécessite alors l'utlisation d'un mot de passe et d'un nom d'utilisateur.
En utilisant le client MySql, les commandes sont alors saisies en ligne de code directement sur le serveur phpMyAdmin
Les requêtes sur une base de données>
La commande de création d'une base de données
CREATE
Les commandes de création, modification ou de supreesion d'une base de données ou d'éléments d'une base
Les mêmes commandes sont utilisées pour créer, modifier ou supprimer une table ou certains de ces éléments
La commandes ALTER autorise la suppression ou l'ajout d'un élément d'unetable: colonne, de modifier la clé primaire ainsi que d'autres données.
Syntaxe
CREATE DATABASE (IF NOT EXISTS) nom-de-la-base;
ALTER DATABASE (IF EXISTS) nom-de-la-base;
{ MODIFY NAME= nouveau-nom; };
DROP DATABASE (IF EXISTS) nom-de-la base;
CREATE TABLE remanente;
ALTER remanente num-tel tel INT(10):
num-tel est remplaçé par tel INT(10)
DROP TABLE remanente;
A partir du logiciel Dreamweaver, des jeux d'enregistrement ou utilisation de comportement serveur (il s'agit de la création de pages dynamiques qui vont autoriser des requêtes directement au serveur SQL, afin d'afficher des données de votre base, sous forme de tableau)peuvent être crée
Il est &galement possible de développer des scripts PHP, donc des pages dynamiques, afin de réaliser des requêtes dans votre base de données
L'utilisation standard de donnéespeut se faire par les jeux d'enregistrement et avec l'éditeur de code.
Les commandes standards sont: SELECT, INSERT, UPDATE, REPLACE, DELETE
Définitions et syntaxe
Définition
SELECT: il s'agit d'une commande utilisée pour toutes les requètes de recherche ou d'extraction de données. Des options vous autorisent d'affiner vos requêtes
Construire des requêtes avec la commande SELECT en utilisant des alias
Avec les alias, on détermine des noms de champs de la base de données. Les alias sont utilisés lorsqu'on effectue une sélection mais aussi dans les fonctions.
La syntaxe
SELECT champ champ-de-la-table AS Alias
FROM table;
SELECT ville, mairieID AS identifiant
FROM mairies
WHERE mairieID <= 10 ORDER BY ville ASC;
SELECT champ1, champ1,...
FROM table1, table2
WHERE vos critères de sélection
ORDER BY votre mode de tri;
Les options de sélection
SELECT table1.champ ou SELECT * ie tous les champs
ou SELECT DISTINCT champ1, champ2, champ3...
FROM table1, ...
WHERE éléments de sélection
GROUP BY table.champ
HAVING éléments de sélection
ORDER BY ASC; ou ORDER BY DESC;
La clause DISTINCT évite les redondances elle retourne un seul résultat, si les données retournées en compte plusieurs identiques
Des exemples avec la commande SELECT
SELECT * FROM hotels; Affiche tous les champs, il n'y a pas de critères de sélection (*).
SELECT clients.nom
FROM clients WHERE langue='Anglais';
Affiche tous les champs contenant des clients anglais.
SELECT clients.nom, hotels.ville
FROM clients, hotels
WHERE clients.hotelsID = hotelsID;
SELECT nom, prénom, email FROM adresses;
Affiche les champs énumés
SELECT paysID, continentID
FROM pays, continent;
Les ID des tables sont affichés
SELECT paysID AS ID, Département
FROM pays;
Affiche les clés primaires sous l'alias ID et les noms de Département sous l'alias Département.
SELECT ID, nom, prenom, email, sociétés
FROM adresses
Affiche les champs, sélectionnés, une ou plusieurs fois.
SELECT DISTINCT ID, nom, prenom, email
FROM adresses
Parmi les résultats sélectionnés, un seul enregistrement est affiché. S'il s'agit par exemple des coordonnées de consultants qui travaillent avec plusieurs sociétés
Les opérateurs de comparaison
Les opérateurs de comparaison dans les requètes SQL:
|
Opérateurs |
|
|
= |
Égal |
|
> |
Supérieur |
|
< |
Inférieur |
|
>= |
>Supérieur ou égal |
|
<= |
Inférieur ou égal |
|
<> |
Différent |
|
|
Les opérateurs déterminent les conditions mathémathiques de sélection de données dans la base. La comparaison est faite sous forme de jointure: elle concerne alors deux champs,celle un champ et un nombre ou bien une chaîne de caractères: notée entre des guillemets simple. Ces opérateurs interviennent après la clause WHRE
Syntaxe de requêtes avec les opérateurs
SELECT champ
FROM table1
WHERE expression-de-sélection
LIKE expression-de-sélection
Exemples de requètes avancées avec différentes clauses.
SELECT sociétéID, trimestre, ventes
WHERE ventes > 10000000€;
Affiche les champs sélectionnés qui correspondent à un chiffre d'affaires supérieur à 10000000€
SELECT Pays
WHERE continent ='Europe'; Affiche les pays du continent Européen;
SELECT consultant
WHERE consultantID=23; Affiche les données du consultant dont l'identifiant est égal à 23.
SELECT consultant.nom, société.ville
WHERE consultant.sociétéID= sociétéID
AND consultantID= 23;
Affiche les champs de la table contenant les données enregistrées du consultant dont L'identifiant est 23.
SELECT vendeurID, semestre, CA,
FROM vendeur
WHERE CA BETWEEN 45000€ AND 60000€;
Affiche les résultats appartenant à l'intervalle [45000 , 60000]
SELECT nom
FROM adresses
WHERE nom LIKE 'B';
Affiche tous les noms commençant par B contenu dans la table adresses
SELECT ID, ville
FROM société
WHERE siège IN ('Val d'Oise', 'Saint-Denis');
Affiche les champs villes et ID avec les sièges sociaux des sociétés qui sont dans le Val d'Oise et à Saint-Denis.
La clause GROUP BY: Cette option autorise le regroupement d'enregistrements selon un champ spécifique tel que l'identifiant ou clef primaire.
La clause ORDER BY: Cette clause autorise d'avoir un enregistrement dans un ordre ascendant ou descendant: ASC ou DESC. Plusieurs ordres peuvent être indiqués pour les différents champs sélectionnés. Il ne s'agit par conséquent pas d'auto-incrémentation de la clef primaire, ordre par défaut.
La clause HAVIING (ou WHERE): il s'agit d'une clause qui spécifie les éléments agrégés après la clause d'agrégation GROUP BY.
Syntaxe de requêtes avec les clauses HAVING, ORDER BY, GROUP BY, LIMIT
SELECT champ ou * ( ie tous les champs)
FROM table1
WHERE expression-de-sélection
ORDER BY champ ASC / DESC;
Syntaxe de sélection avec la clause GROUP BY
SELECT champ 1, 2, 3 ou *
FROM table1
GROUP BY champID
La clause LIMIT (clause MySql)
Il s'agit d'une clause qui spécifie le nombre maximal d'enregistrements qui sera retourné.
SELECT champ champ 1, 2, 3 ou *
FROM table1
GROUP BY champ HAVING expression-de sélection;
SELECT champ a , ou champ * ,...
FROM table1
WHERE expression-de-sélection
ORDER BY champ ASC /DESC, champ* ASC / DESC
LIMIT a, b; ( la sélection est limité au nombre "b" mais commence à partir du nombre "a".);
SELECT champ 1 champ 2 ... , COUNT(*)
// compte par exemple les toutes quantités vendues d'un produit
FROM table1
GROUP BY champ ID
HAVING champID > = n;
Exemples de requêtes avec les clauses HAVING, ORDER BY, GROUP BY, LIMIT
SELECT vendeurID, MAX(résultat)
FROM ventes
GROUP BY vendeurID;
Affiche les champs, le résultat de la fonction par identifiant
SELECT consultantID, nom, prénom count(*)
FROM mission
GROUP BY consultantID;
Affiche les champs, les résultat de la fonction par identifiant NB la clause GROUP BY n'est pas utilisée avec la clause WHERE.
SELECT Département, sociétéID, AS identifiant
FROM société
WHERE sociétéID < 12
ORDER BY Département ASC;
SELECT DISTINCTROW consultantID, nom, prénom
FROM consultant
WHERE consultantID > 2
ORDER BY nom ASC, consultantID DESC;
SELECT consultantID, nom, prénom
FROM consultant
WHERE consultantID > 4
ORDER BY nom ASC
LIMIT 20, 55;
Affiche une sélection de 55 lignes, en commençant par la 20ième ligne.
Exemples de requêtes avec opérateurs de recherche
SELECT consultantID, nom, prénom, SUM (résultat) AS somme
FROM missions
GROUP consultantID
HAVING consultantID <=1 AND consultantID >=5
Affiche les champs et le résultat de la fonction des consultants dont l'identifiant est compris entre 1 et 5.
SELECT consultantID, COUNT(ID) AS nbre-enreg
FROM mission
GROUP BY consultantID
HAVING COUNT(ID) > 10;
Affiche les champs et résultat si le nombre d'enregistrement est supérieur à 10.
SELECT caissièreID, COUNT(*)
FROM ventes_jr
GROUP BY caissièreID
HAVING caissièreID >=3;
SELECT caissièreID, SUM(résultat) AS somme
FROm ventes_jr
GROUP BY caissièreID
HAVING caissièreID;
SELECT vendeurID, COUNT(ID) AS nbr_enreg
FROM ventes
GROUP BY vendeurID
HAVING COUNT(ID) > 9 Affiche le nombre d'enregistrements des vendeurs dès lors que leur ID apparait plus de neuf fois.
Les opérateurs de recherche: LIKE, BETWEEN, IN, IS NULL, IS NOT NULL
Les opérateurs de recherche et expression de requètes SQL
|
Opérateurs |
Définition |
|
LIKE |
Sélection d'un champ dont la valeur contient ou commence ou se termine par une chaîne de caractères. Les caractères % et'-' suivent LIKE et indique les caractères sustiués |
|
BETWEEN |
Sélection d'un champ dont la valeur est comprise dans une fourchette. |
|
IN |
Recherche d'un champ dont la valeur est comprise dans une liste. |
|
IS NULL |
Recherche d'un champ dont la valeur est nulle |
|
IS NOT NULL |
Recherche d'un champ dont la valeur est non nulle |
|
% |
Substitut de tout caractère et caractère de soulignement. |
Les fonctions MySql et la commande de SELECT
|
Fonctions |
Résultat de la fonction |
|
ABS(a) |
Valeur absolue du nombre a. |
|
ASCII(a) |
Code ASCII du caractère a. |
|
CONCAT (a, b ) |
Concaténation des deux données a et b. |
|
COUNT(champ µ) |
Nombre d'enregistrement total contenu dans le champ µ. |
|
COUNT(*) |
Nombre d'enregistrement total contenu dans la table. |
|
CURDATE() |
Date courante au format AAAA-MM-JJ. |
|
CURTIME |
Heure courante au format HH:HH:HH. |
|
NOW() |
Date et heure courante. |
|
ENCRIPT(chaine, clef) |
Chaine criptée avec une clef si elle est indiquée. |
|
PASSWORD(chaîne-caractères) |
Valeur criptée de la chaine de caractères. |
|
HEX(a) |
Hexadécimale du nombre a. |
|
IF NULL(a,b) |
Si la valeur a est nulle, elle est retournée, sinon b est retourné. |
|
LAST-INSERT-ID() |
La dernière valeur inséré dans un champ auto-incrémenté |
|
MAX(champ µ) |
Valeur maximale existante du champ µ. |
|
MIN(champ µ) |
Valeur minimale existante du champ µ. |
|
SIGN(a) |
Signe de a. |
|
SUM(champ) |
Somme des éléments du champ. |
|
REVERSE(chaîne) |
Miroir de chaîne. |
|
TRIM(chaîne) |
chaîne sans les espaces au début et à la fin. |
|
USER() |
Nom de l'utilisateur. |
|
VERSION() |
Version MySql. |
Les fonctions MySql avancées et les commande de SELECT, INSERT, UPDATE, DELATE, REPLACE,
SELECT trimestre, COUNT (quantité)
FROM ventes
CONCAT(résultat, euros)
AS résultateuros;
INSERT: Il s'agit d'une commande qui autorise l'insertion ou l'ajout de données dans une table
INSERT INTO table1 (champ1, Champ2, Champ3,...)
VALUES = (valeur1, valeur2, valeur3,...); ou INSERT INTO table1 SET champ1='valeur1', champ2='valeur2'...;
UPDATE: Il s'agit d'une commande qui autorise la modification ou mise à jour des données enregistrées
UPDATE table1
SET champ= valeur du champ
WHERE vos critères de sélection;
DELETE: il s'agit d'une commande de supression des enregistrements.
DELETE FROM table1
WHERE vos critères de sélection;
REPLACE: il s'agit d'une commande qui autorise la suppression d'un élément par son remplacement par un autre. Si vous exécutez successivement les commandes DELETE et INSERT, vous obtenez le même résultat qu'avec REPLACE.
REPLACE FROM table1
WHERE vos critères de sélection;
|