SQL 4 rubriques d'instructions : - Language de definitions de données Create ta
SQL 4 rubriques d'instructions : - Language de definitions de données Create table Créer une table Alter table Modifier la structure d'une table Drop table Supprimer une table Create view Créer une vue, requette enregistrée Drop view Supprimer une vue - Language transactionnel insert => Créer des enregistrements dans une table Executer des transactions : update => Modifier un enregistrement delete => Supprimer un enregistrement - Intérogation de base de données Select ... Lecture et mise en forme des données - Language d'administration create user Gestion d'utilisateur alter user drop user Gerer des droits Grant Donner des droits ou des groupes de droit à des utilisateurs ou groupes d'utilisateur Revoke Retirer les droits Gerer des groupe de droit ou d'utilisateur create role drop role Instruction d'interrogation de BD : Select - L'instruction select est la seule instruction premettant d'extraire de l'information d'une BD - Une application cliente envoie un ordre select à un serveur de BD (communication client/serveur) Le serveur qui ecoute la requete traite celle ci en cherchant dans des tables les informations demandées. Ensuite le serveur produit et stocke en interne un tableau de resultat contenant autant de colonne que de champs specifié par la requette select et autant de ligne spécifiée par la clause where du select. Le serveur renvoie ensuite au client un curseur qui permet à celui-çi de consulter ligne par ligne le contenu du tableau résultat. Quand le client a terminé de consulter le tableau resultat il ferme le curseur et permet de la sorte au serveur de libérer l'espace mémoire utilisé pour stocker le tableau de résultat. Ex : Php $db = mysqlconnect(...) ; // Connexion au serveur de base de données mysqlselect( $db, "nom BD"); //Selection de la base de donnée $curseur = mysql.query("select nom, prenom, age from etudiant") // Récuperer le contenu de 3 champs de la table étudiant => Envoi la requette au serveur => Le serveur traite cette requette Produit un tableau de resultat : nom prenom age Il contient 3 colonnes car dans Select on a mis 3 champs. Au départ le curseur sera placé sur la première ligne du tableau de résultat. Examiner les informations du tableau à l'aide d'une boucle : while( $ligne = mysqlfetchrow( $curseur ) ) => Lire le contenu d'une ligne du tableau de resultat => Renvoi un tableau avec les valeur de la ligne et passe à la ligne suivante { echo ( $ligne [0] ) ; echo ( $ligne [1] ) ; echo ( $ligne [2] ) ; Affiche la deuxieme valeur de ligne lue } Clause select : Syntaxe generale du select : L'instruction select contient plusieurs clauses, certaines obligatoires, d'autres optionnelles. Les clauses apparaissent toujours dans le même ordre. select ( expression 1 as alias 1, expression 2 as alias 2, ... => Colonnes du tableau de resultat from table 1 as alias 1, table 2 as alias 2, vue 1 as alias 3, ...=> Où on cherche les données where condition => Filtrer les lignes de données groupe by expression 1, expression 2 ,. .. => Regrouper les lignes de données havinng conditions sur agrégat. => Filtrer sur opération agrégation order by expression 1, expression 2 , .... =>Trier les lignes données. Permet de definir les colonnes du tableau resultat, leur contenu et leur titre (avec alias) Select expression 1 as titre 1, expression 2 as titre 2 , ... - Il y autant de colonne dans le tableau resultat que d'expression dans la clause select. - Les colonnes apparaissent dans le même ordre que les expressions et sont souvent numéroté à partir de 0. - Le mot clé as permet de renommer le titre d'une colonne. expression => Nom de champ de table ou de vue Ex : select nom, prenom, age ... => nomdetable.nom de champ Ex : Select etudiant.nom, etudiant.prenom from etudiant => nom d'alias de table . nom de champ Ex : select e.nom, e.prenomfrom etudiant as e On renomme localement la table etudiant avec l'alias e; => Valeur constante numérique, date, chine de carractère Ex: Select 'monsieur' as civilite, nom, prenom .... Créé une colonne nommé civilité qui contient pour chacun la valeur Monsieur. Civilité nom prenom monsieur monsieur => calcul avec champ de table, constante, etc ... Ex : select prixht, prixht*1,196 as prix ttc, ... => calcul utilisant des fonctions Souvent les fonctions sont spécifique au SGBD Ex : Select to-char( ( sysdate -datenais ) / 365 , 'DD/MM/YYYY' ) as age to-char : fonction de convertion d'une date en chaine de caractère sysdate : date systeme datenais : champ date de naissance => Fonction d'agrégats => sum ( expression ) Calcul la somme des valeurs données par l'expression => min ( expression) max (expression) Calcul respectivement la valeur mini et maxi des valeurs données par l'expression Ex : Select min ( age ), max (age ) from etudiants where section = 'sio' min(age) max(age) 18 34 Exercice : lignefacture (numfacture#, reference#, qté) articles( référence , libellé, prix HT ) Clé etrangère : rajout d'un # après la variable Clé primaire : souligné select sum ( qte * prixht ) as total ht , sum( qte * prixht * 1,196 ) as total ttc ... => avg (expression) Calcul de moyenne arithemtique (non pondéré) Ex : select avg( note ) as moyenne from evaluation where matiere = MATH' => count ( expression ) Compte les valeurs distinctes données par l'expression. Ex : select count( prenom ) from etudiants nombre de prénom differents parmis les étudiants => count( * ) Compte le nombre de ligne du tableau intermédiaire issu du filtrage de la clause where. Ex : select count( * ) as nbfille from etudiants where section 'SIO' and sexe = 'F' Renvoi un tableau de resultat à 1 colonne : nbfille 2 Remarques : - Le mot "distinct" permet de récupérer des lignes distinctes dans le tableau de resultat : select distinct nom, prenom from etudiants - * : permet de ramener tous les champs de la table dans l'ordre de définition de celle ci select * from etudiants Avec des requettes sur plusieurs tables on peut specifier tous les champs d'une vue table avec : nomtable.* Clause from : Permet de specifier la liste des tables et vues dans lesquelles le serveur de BD cherche les données pour effectuer la requête. from table1 as alias 1, table2 as alias2, ... Dans le cas de plusieurs tables mentionnées dans la clause from le serveur construit un tableau intermédiaire rempli par le resultat du produit cartésien de tous les enregistrements de toutes les tables figurant dans la clause. Le serveur créé toutes les combinaisons possibles d'enregistrements pris dans toutes les tables de la clause from. Ex : Articles Référence libellé Code cat.# 123 carte réseau INF 456 mémoire INF 789 lave linge ELT Catégories Code cat. Libcat INF Informatique ELT Electromenager Code cat. est une clé étrangère qui fait référence à une clé primaire d'une autre table, ici catégorie. On veut ecrire la requette qui affiche la liste des articles selon : référence, libellé, libellé catégorie : select reference, libellé, libecat from articles, catégories Cette requette génére le tableau intermediaire suivant : Il récupère les colonnes venant de article et catégories et va faire toutes les associations entre les lignes des differents tableaux possibles => On parle de produit cartesiens entre la table article et catégorie. Article Catégorie reference libellé codecat codecat libcat 123 cartereseau INF INF Informatique 123 cartereseau INF ELT Electromenager 456 Memoire INF INF Informatique 456 Memoire INF ELT Electromenager 789 Lave linge ELT INF Informatique 789 Lave linge ELT ELT Electromenager Le nombre de combinaison produite est : nombre de ligne de la table article x nombre de ligne de la table catégorie = 3 x 2 = 6 Ce qui nous interesse est la liste des articles avec le libellé et le libellé de catégorie qui correspond à la catégorie de l'article. Nous voulons retirer uniquement les lignes pour lesquel le code catégorie de la table article est égal à celui venant de la table catégorie. Le Where nous permet de faire cette selection selon la condition mentionnée dans le tableau intermediaire generé par le produit cartésien. where articles.codecat = categories.codecat Dans l'absolu le moteur de BD genere un tableau intermediaire d'un produit cartésien des tables selectionnéesmais pour ne pas utiliser trop de ressource le moteur de SGBD va s'appuyer sur les clauses where pour limiter le nombre de données. Les conditions sont appellés conditions de jointure : - Jointure interne : clé etrangere pointant vers une clé primaire - Jointure externe : champ hors clé etrangère pointant vers une clé primaire. Ex : Etudiants Numetu nom prenom sexe section Liste des couples d'étudiants possible : Select filles.nom, filles.prenom, garçon.nom, garçon.prenom from etudiants as filles, etudiants as garçon => Permet de renomer une table avec un alias where filles.sexe='F' and garçon.sexe='M' (Permet egalement de raccourcir les requetes et and filles.numetu <> garcons.numetu avoir moins à taper pour les conditions.) Generer de l'information par combinaison, qui est ensuite uploads/s3/ base-de-donnee.pdf
Documents similaires
-
15
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 27, 2022
- Catégorie Creative Arts / Ar...
- Langue French
- Taille du fichier 0.0814MB