Découvrez les dernières modifications apportées au Guide sur la confidentialité dans les applications
GeminiS’ouvre dans une nouvelle fenêtre
Conversation avec Gemini
Je veux des exercices chronologique sur le langage de définition de données en SQL sachant qu’il ne
doit avoir que les requêtes suivantes :create,drop, rename et alter
Afficher les suggestions
Absolument ! Voici une progression d’exercices pour vous familiariser avec les requêtes DDL (Data
Definition Language) de base en SQL, en se concentrant sur CREATE, DROP, RENAME et ALTER.
Objectif : Maîtriser la création, la modification et la suppression d’objets de base de données (tables,
colonnes, etc.)
Niveau 1 : Les bases
Création de tables simples :
Créez une table clients avec les colonnes id (clé primaire), nom, prenom et date_naissance.
Créez une table commandes avec les colonnes id (clé primaire), date_commande et id_client (clé
étrangère référençant la table clients).
Suppression de tables :
Supprimez les tables clients et commandes que vous venez de créer.
Renommage de tables :
Créez à nouveau la table clients.
Renommez-la en personnes.
Niveau 2 : Manipulation des colonnes
Ajout de colonnes :
Ajoutez une colonne email à la table personnes.
Ajoutez une colonne telephone à la table personnes, en précisant un type de données approprié.
Modification de colonnes :
Modifiez le type de données de la colonne date_naissance de la table personnes pour une meilleure
précision.
Renommez la colonne id de la table personnes en personne_id.
Suppression de colonnes :
Supprimez la colonne telephone de la table personnes.
Niveau 3 : Contraintes d’intégrité
Clés primaires :
Créez une table produits avec les colonnes id (clé primaire), nom et prix.
Ajoutez une contrainte de clé primaire sur la colonne id de la table commandes.
Clés étrangères :
Ajoutez une colonne id_produit à la table commandes et définissez-la comme clé étrangère
référençant la table produits.
Contraintes NOT NULL :
Assurez-vous que les colonnes nom et prenom de la table personnes ne peuvent pas être nulles.
Niveau 4 : Indexation
Création d’index :
Créez un index sur la colonne nom de la table personnes pour accélérer les recherches.
Créez un index composite sur les colonnes nom et prenom de la table personnes.
Suppression d’index :
Supprimez l’index créé sur la colonne nom.
Niveau 5 : Structures plus complexes
Création de vues :
Créez une vue clients_actifs qui ne sélectionne que les clients ayant passé au moins une commande.
Modification de vues :
Modifiez la vue clients_actifs pour inclure une colonne calculée représentant le nombre total de
commandes passées par chaque client.
Conseils supplémentaires :
Utilisez un système de gestion de base de données (SGBD) : PostgreSQL, MySQL, SQL Server ou Oracle
sont des choix populaires.
Testez vos requêtes : Vérifiez toujours que vos modifications n’ont pas d’effets indésirables sur vos
données.
Consultez la documentation de votre SGBD : Chaque SGBD peut avoir des syntaxes légèrement
différentes et des fonctionnalités supplémentaires.
Variez les exercices : N’hésitez pas à créer des scénarios plus complexes pour vous entraîner
davantage.
Exemple de requête (PostgreSQL) :
SQL
CREATE TABLE personnes (
Personne_id SERIAL PRIMARY KEY,
Nom VARCHAR(50) NOT NULL,
Prenom VARCHAR(50) NOT NULL,
Date_naissance DATE
);
Utilisez ce code avec précaution.
En suivant cette progression, vous acquerrez une solide base en DDL et serez capable de créer et de
gérer efficacement vos bases de données SQL.
Souhaitez-vous des exercices plus spécifiques ou avez-vous d’autres questions ?
Peut tu reprendre en donnant plus d’exemple
Afficher les suggestions
Absolument ! Reprenons les exercices en détaillant davantage chaque étape et en ajoutant des
exemples plus concrets pour chaque requête DDL.
Rappels :
DDL (Data Definition Language) : Langage utilisé pour définir la structure d’une base de données.
Requêtes DDL de base : CREATE, DROP, RENAME, ALTER.
Niveau 1 : Les bases
Créer une table clients :
SQL
CREATE TABLE clients (
Id SERIAL PRIMARY KEY, -- Numéro de client auto-incrémenté
Nom VARCHAR(50) NOT NULL, -- Nom du client
Prenom VARCHAR(50) NOT NULL, -- Prénom du client
Date_naissance DATE
);
Utilisez ce code avec précaution.
Ajouter une colonne email :
SQL
ALTER TABLE clients ADD COLUMN email VARCHAR(100) ;
Utilisez ce code avec précaution.
Renommer la table clients en personnes :
SQL
ALTER TABLE clients RENAME TO personnes ;
Utilisez ce code avec précaution.
Supprimer la table personnes :
SQL
DROP TABLE personnes ;
Utilisez ce code avec précaution.
Niveau 2 : Manipulation des colonnes
Modifier le type de la colonne date_naissance :
SQL
ALTER TABLE personnes ALTER COLUMN date_naissance TYPE DATE USING date_naissance ::DATE ;
Utilisez ce code avec précaution.
Renommer la colonne id en personne_id :
SQL
ALTER TABLE personnes RENAME COLUMN id TO personne_id ;
Utilisez ce code avec précaution.
Ajouter une contrainte NOT NULL sur nom et prenom :
SQL
ALTER TABLE personnes ALTER COLUMN nom SET NOT NULL ;
ALTER TABLE personnes ALTER COLUMN prenom SET NOT NULL ;
Utilisez ce code avec précaution.
Niveau 3 : Contraintes d’intégrité
Créer une table produits avec une clé primaire :
SQL
CREATE TABLE produits (
Id SERIAL PRIMARY KEY,
Nom VARCHAR(100),
Prix NUMERIC(10,2)
);
Utilisez ce code avec précaution.
Ajouter une clé étrangère id_produit dans la table commandes :
SQL
ALTER TABLE commandes ADD COLUMN id_produit INTEGER REFERENCES produits(id) ;
Utilisez ce code avec précaution.
Niveau 4 : Indexation
Créer un index sur la colonne nom :
SQL
CREATE INDEX idx_personnes_nom ON personnes(nom) ;
Utilisez ce code avec précaution.
Créer un index composite sur nom et prenom :
SQL
CREATE INDEX idx_personnes_nom_prenom ON personnes(nom, prenom) ;
Utilisez ce code avec précaution.
Supprimer l’index sur nom :
SQL
DROP INDEX idx_personnes_nom ;
Utilisez ce code avec précaution.
Niveau 5 : Structures plus complexes
Créer une vue clients_actifs :
SQL
CREATE VIEW clients_actifs AS
SELECT p.*
FROM personnes p
INNER JOIN commandes c ON [Link] = c.id_client ;
Utilisez ce code avec précaution.
Exercices supplémentaires :
Créer une base de données pour une bibliothèque :
Tables : livres, auteurs, emprunts, lecteurs.
Relations : un livre peut avoir plusieurs auteurs, un lecteur peut emprunter plusieurs livres.
Contraintes : un livre doit avoir au moins un auteur, un emprunt doit avoir un livre et un lecteur.
Créer une base de données pour un magasin en ligne :
Tables : produits, catégories, commandes, clients, lignes de commande.
Relations : un produit appartient à une catégorie, une commande peut contenir plusieurs lignes de
commande.
Modéliser une base de données relationnelle pour un réseau social simplifié :
Utilisateurs, publications, commentaires, amitiés.
Conseils :
Utilisez un outil de visualisation de base de données : Pour mieux comprendre la structure de vos
tables et les relations entre elles.
Testez vos requêtes régulièrement : Assurez-vous qu’elles fonctionnent comme prévu et qu’elles ne
provoquent pas d’erreurs.
Variez les types de données : Utilisez des types numériques, des dates, des chaînes de caractères, etc.
pour enrichir vos exercices.
Explorez les fonctionnalités avancées de votre SGBD : Fonctions d’agrégation, sous-requêtes,
fenêtres, etc.
N’hésitez pas à poser d’autres questions ou à me demander des exercices plus spécifiques !
Quel serait le thème de votre prochain exer
e-Exercices
20 Déc
2015
Les requêtes SELECT- Base de données RH
CHAOULID | SQL | Chapitre : Langage de manipulation de données | 74593 visites | Moyen |
Corrigé
Enoncé
Solution
Objectif : Écrire des requêtes SELECT comportant la projection, le regroupement, le tri et les jointures.
Soit le schéma relationnel suivant :
Rh2
Modèle Relationnel : RH
Travail à faire :
Écrire les requêtes SELECT répondant aux questions suivantes :
Donner la liste des numéros et noms des employés du département 20
Donner la liste des numéros et noms des ouvriers et leur numéro de département
Donner les noms des vendeurs du département 30 dont le salaire est supérieur à 1500
Donner la liste des noms, fonctions et salaires des directeurs et des présidents
Donner la liste des noms, fonctions et salaires des directeurs et des employés qui ont un salaire >
5000
Donner la liste des noms et fonctions des directeurs du département 10 et des ouvriers du
département 20.
Donner la liste des noms, des fonctions et des numéros du département des employés qui ne sont pas
ni ouvrier ni directeur
Donner la liste des noms, fonctions et salaires des employés qui gagnent entre 2200 et 2800
Donner la liste des noms, des fonctions et des numéros du département des employés ouvrier,
secrétaire ou vendeur
Donner la liste des employés dont le responsable est connu
Donner la liste des employés dont le responsable n’est pas connu
Donner la liste des salaires, fonctions et noms des employés du département 20, selon l’ordre
croissant des salaires
Donner la liste des salaires, fonctions et noms des employés du département 20, selon l’ordre
décroissant des salaires
Donner la liste des employés triée selon l’ordre croissant des fonctions et l’ordre décroissant des
salaires
Donner la moyenne des salaires des tous les employés
Donner la moyenne des salaires des ouvriers.
Donner le plus haut salaire et le plus bas salaire de tous les employés
Donner le nombre d’employés du départment 10
Donner le nombre de différentes fonctions occupées par les employés du département 10
Donner la moyenne des salaires pour chaque département (afficher numéro de département et
moyenne),
Donner pour chaque département, le salaire annuel moyen des employés qui ne sont pas ni directeurs
ni président
Donner pour chaque fonction de chaque département le nombre d’employés et le salaire moyen.
Donner la liste des salaires moyens pour les fonctions comportant plus de deux employés.
Donner la liste des numéros de départements avec au moins deux secrétaires.
Donner le nom de chaque employé et la ville dans laquelle il/elle travaille.
Donner la ville dans laquelle travaille l’employé 1035.
Donner les noms, fonctions et noms des départements des employés des départements 20 et 30
Donner les noms des tous employés et les noms de leur responsable (renommer l’attribut responsable
en ‘CHEF’)
Donner la liste des noms et salaires des employés qui gagnent au moins que leur responsable (afficher
aussi les noms des responsables)
Donner la liste des noms, salaires, fonctions des employés qui gagnent plus que l’employé 1035.
Donner les noms des tous employés et, s’il est connu, les noms de leur responsable (renommer
l’attribut responsable en ‘CHEF’)
Donner les noms des employés et les noms de projets aux quels ils participent.
Donner les projets aux quels l’employé 1035 participe.
Donner les noms des ingénieurs qui participent au projet ‘EAST_MARKETS’
Donner les noms des tous les employés et les noms de projets aux quels ils participent (même s’ils ne
participent à aucun projet)
Donner les noms des tous les directeurs et les noms de projets aux quels ils participent (même s’ils ne
participent à aucun projet)
Donner les noms et fonctions des employés qui gagnent plus que ‘Mahmoudi’.
Donner les noms département où il y a des employés qui gagnent plus de 3000.
Donner les fonctions dont la moyenne des salaires est inférieure à la moyenne de celle des ingénieurs
Donner les employés qui ont occupé les fonctions de vendeurs et d’ouvriers
Donner les employés qui n’ont jamais été vendeurs
Donner les projets où ne travaillent que des ingénieurs
//Source : [Link]