TP 1 – Création de tables et initiation à la
Transcription
TP 1 – Création de tables et initiation à la
TP 1 – Création de tables et initiation à la manipulation de données Création des tables : Create TABLE DEPARTEMENT ( dept_no CHAR(4) NOT NULL, dept_nom VARCHAR(40), PRIMARY KEY (dept_no) ); Create TABLE FONCTIONS ( no_fonction int NOT NULL, nom_fonction VARCHAR(50), salmin FLOAT, salmax FLOAT, PRIMARY KEY (no_fonction) ); Create TABLE EMPLOYES ( no_emp int NOT NULL, nom_emp VARCHAR(16) NOT NULL, prenom_emp VARCHAR(14) NOT NULL, sexe CHAR(1) CHECK (H|F), commission int NULL, no_fonction int, PRIMARY KEY (no_emp), FOREIGN KEY (no_fonction) ); Create TABLE TRAVAILLER ( dept_no CHAR(4), no_emp int, FOREIGN KEY (dept_no + no_emp), PRIMARY KEY (dept_no, no emp) ); Ajout de no_sup : Create TABLE EMPLOYES ( no_emp int NOT NULL, nom_emp VARCHAR(16) NOT NULL, prenom_emp VARCHAR(14) NOT NULL, sexe CHAR(1) CHECK (sexe : H or sexe : F), commission int NULL, no_fonction int, no_sup int NOT NULL UNIQUE, PRIMARY KEY (no_emp), FOREIGN KEY (no_fonction) ); Champs de données no_emp Type de données int nom_emp prenom_emp sexe varchar(16) varchar char commission no_sup no_fonction int int int Longueu r 16 14 1 Contraintes Clé primaire NOT NULL NOT NULL NOT NULL NOT NULL valeur =‘M’ ou ‘F’ NOT NULL NOT NULLUNIQUE Clé étrangère Ajouter une valeur par défaut : Rajouter l'instruction : ALTER TABLE employes ALTER COLUMN sexe SET DEFAULT 'M'; Manipulation de données. 1 - Dans l’onglet SQL, écrire l’instruction suivante : - Directeur avec un salaire variant de 52 000 à 65 000€ par an : INSERT INTO Fonctions VALUES (‘1’, ‘ Directeur’, 52000, 65000) Ajout de INSERT INTO Fonctions VALUES ('1', 'Directeur', 52000, 65000); 2 - Cliquez sur l’onglet Affichage : Affichage. 3 - Que fait cette instruction ? Cette instruction définie une nouvelle valeur dans la table fonction. En effet, elle indique que la fonction de la personne qui a l'identifiant 1 est le directeur et qu'il a un salaire variant entre 52000 et 65000€ par an. 4 - Ajouter une nouvelle ligne dans la table Fonctions avec les informations suivantes : - Commercial avec un salaire variant de 12 000 à 35 000€ par an (identifiant n°2) Ajout de INSERT INTO Fonctions VALUES ('2', 'Commercial', 12000, 35000); 5 - Insertion de deux départements : 1-Recherche et 2- Commercial Ajout de INSERT INTO departement VALUES ('1', 'Recherche'); Ajout de INSERT INTO departement VALUES ('2', 'Commercial'); 6 - Le directeur est rattaché au département Recherche et développement et les commerciaux au département Commercial Ajout de INSERT INTO TRAVAILLER VALUES ('2','1') ; Ajout de INSERT INTO TRAVAILLER VALUES ('2', '2'); Ajout de INSERT INTO TRAVAILLER VALUES ('1', '3'); Ajout de INSERT INTO TRAVAILLER VALUES ('1', '4') ; 7 - Insertion de 4 employés : deux commerciaux ayant une commission et deux directeurs n’ayant pas de commission. Ajout de INSERT INTO employes VALUES ('1', 'Enzo', 'e', 'M', 500, '2', '1'); Ajout de INSERT INTO employes VALUES ('2', 'Lucie', 'l', 'F', 300, '2', '1'); Ajout de INSERT INTO employes VALUES ('3', 'Adeline', 'a', 'F', NULL, '1', '2'); Ajout de INSERT INTO employes VALUES (''4', 'Jules', 'j', M', NULL, '1', '3); 8 - Ecrire le code SQL suivant : UPDATE Fonctions Set dept_nom = ‘Recherche et Développement’ WHERE dept_no = 1 ; UPDATE Fonctions Set nom_fonction = ‘Recherche et Développement’ WHERE no_fonction = 1 ; Que fait cette instruction ? Cette instruction modifie les valeurs d'une table. Ici, il s'agit de la table fonction. En effet l'instruction sélectionne la valeur de 'Recherche et Développement' de la colonne dept_nom et la qualifie avec un nom de sous-champ ou un indice de tableau, ici le chiffre 1 pour la valeur Recherche et Dévelopement. Cela revient à dire que le directeur qui porte le numéro 1 est rattaché à la valeur Recherche et Développement. (L'instruction sert à modifier le nom de dept_nom en Recherche et Développement là où la dept_no est égal à 1.) 9 - Modifier le salaire maximum de la fonction commercial à 20 000€ UPDATE Fonctions Set salmax = 20000 WHERE numfonction = '2'; 10 - Nom, prénom et commission des employés ayant une commission, classée par commission décroissante. Select nom_emp, prenom_emp, commission From employes Where commission = integer DESC; 11 - Liste des employés classés par fonction. Select nom_emp From employes Order by fonction;