FICHE REVISION BDD CREATE TABLE EMPLOYE ( id_e INT NOT NULL, nom CHAR(30), ATTENTION AUX ',' date_naissance DATE, age INT, CHECK (age<100), PRIMARY KEY(id_e), CONTRAINT C1 FOREIGN KEY (colonne1, colonne2, ), REFERENCES Nom_de_la_table_etrangere(colonne1,colonne2, ) (ou simplement idequipe INT REFERENCES equipe(idequipe)) en créant l'attribu) ); CREATE TABLE CARTON2 ( idjoueur int references joueur(idjoueur), idmatch int references match2(idmatch), couleur CHAR(30), PRIMARY KEY (idjoueur, idmatch) ) AJOUT/UPDATE INSERT INTO FORMATION_SUIVIE VALUES (010,5321,'2009-07-15','coucou'); UPDATE Pays SET capitale = 'Paris' WHERE nompays='france'; ALTER TABLE Pays ADD COLUMN Capitale CHAR(30); SUPPRESSION DROP TABLE FORMATION; ALTER TABLE EMPLOYE DROP CONSTRAINT c1; DELETE FROM Ville WHERE nompays = 'Etats-Unis'; - CONTRAINTE ALTER TABLE EMPLOYE ADD CONSTRAINT C1 FOREIGN KEY (dept) REFERENCES DEPARTEMENT (nom) ON DELETE SET NULL;
RESTRICT; CASCADE; ALTER TABLE Pays ADD [CONTRAINT C1 - facultatif] FOREIGN KEY (capitale) REFERENCES Ville (nomville) ON DELETE SET NULL; ==> crée la contrainte C1 : le département dans la table EMPLOYE est une clef étrangère au "nom" dans la table DEPARTEMENT. Si on supprime un département, alors le département est mis à NULL dans EMPLOYE Tandis que RESTRICT envoie un message d'erreur (on peut pas supprimer) et cascade supprime en cascade REQUETE : SELECT * FROM EMPLOYE ORDER BY dept, nom DESC; SELECT Pays.nomPays FROM Ville, Pays WHERE nomville = capitale AND Ville.nomPays!= Pays.nomPays; SELECT chef FROM Pays, Ville WHERE nbhabitants>1000000 AND nomville = capitale; ALTER TABLE Pays ADD COLUMN Capitale CHAR(30); -- INSERT INTO EQUIPE(nomequipe) SELECT DISTINCT(nomequipe) FROM EFFECTIF; (le distinct limite les doublons!) PAS DE PARENTHESE POUR SELECT bibi, flooz, fdp from truc, machin - Union rajoute seulement des lignes en DESSOUS de ce qu'on a avant!
- equipe as l JOIN matchs ON l.nomequipe=matchs.nomlocal (join on sert comme le where a concatener selon 1 critère commun) alter table carton2 rename to carton; -- 2) nombre de cartons par equipe ; select nomequipe, count(*) as nb_carton from carton, effectif where carton.nomjoueur = effectif.nomjoueur and carton.prenomjoueur = effectif.prenomjoueur group by nomequipe order by nb_carton desc ATTENTION DU COUP : toujours un group by qqch si y'a un count et pas de DESC (car c'est pour le order le desc) CREATE VIEW NbMatchView (Idequipe, nomequipe, nombrematch) AS Select idequipe, nomequipe, count(*) as nombrematch from match2, equipe where equipe.idequipe=match2.idvisiteur or equipe.idequipe=match2.idlocal group by idequipe order by idequipe asc; Comment marche le count en fait : il compte le nombre de fois ou l'idequipe (Nantes, nantes nantes nantes) apparait, il les regroupe dans un seul truc et met le nombre d'occurrence a coté - count (*) as qqch group by ; - rajouter une condition sur le count(*) en utilisant HAVING coun(*) > 3 ; - select nomlocal,nomvisit, 3 as pointslocal, 0 as pointsvisit from match where butlocal>butvisit union les autres cas! - LES SOMMES : select nomvisit, sum(butvisit) as butencaisse from match group by nomvisit;
- UNION ALL ajoute les trucs à la suite si UNION tout court ne fonctionne pas A CONDITION QUE LES TRUCS AIENT LE MEME NOM! DELETE FROM joueur --> Supprime tout ce qu'il y a dans Joueur :) - MIGRATION DE DONNEE : attention à la création de la table : create table equipe( idequipe int GENERATED BY DEFAULT AS IDENTITY (START WITH 1) primary key, nomequipe char(30) ); - Attention les clefs etrangere ne peuvent pointé que des clefs primaires - Attention aux parentheses : constraint c3 foreign key (idequipe) references equipe(idequipe) - INSERTION DE DONNEES POUR MIGRATION : insert into equipe(nomequipe) select distinct nomequipe from effectif; - PUBLIC --> CLIQUE DROIT --> VIEW SCHEMA --> CLIQUE DROIT --> ATTRIBU > ALL VIEW - create view Vuejoueur as select distinct idequipe,nomequipe, count(*) as nbmatch from equipe,match2 where idequipe=idlocal or idequipe=idvisiteur group by idequipe order by nbmatch desc; - count (*) as qqch group by ; - rajouter une condition sur le count(*) en utilisant HAVING coun(*) > 3 ;
- select nomlocal,nomvisit, 3 as pointslocal, 0 as pointsvisit from match where butlocal>butvisit union les autres cas! - LES SOMMES : select nomvisit, sum(butvisit) as butencaisse from match group by nomvisit; - UNION ALL ajoute les trucs à la suite si UNION tout court ne fonctionne pas A CONDITION QUE LES TRUCS AIENT LE MEME NOM! DELETE FROM joueur --> Supprime tout ce qu'il y a dans Joueur :) - MIGRATION DE DONNEE : attention à la création de la table : create table equipe( idequipe int GENERATED BY DEFAULT AS IDENTITY (START WITH 1) primary key, nomequipe char(30) ); - Attention les clefs etrangere ne peuvent pointé que des clefs primaires - Attention aux parentheses : constraint c3 foreign key (idequipe) references equipe(idequipe) - INSERTION DE DONNEES POUR MIGRATION : insert into equipe(nomequipe) select distinct nomequipe from effectif; - PUBLIC --> CLIQUE DROIT --> VIEW SCHEMA --> CLIQUE DROIT --> ATTRIBU > ALL VIEW - create view Vuejoueur as select distinct idequipe,nomequipe, count(*) as nbmatch from equipe,match2 where idequipe=idlocal or idequipe=idvisiteur
group by idequipe order by nbmatch desc;