[BDO] SQL

Aller en bas

[BDO] SQL

Message par Joker le Dim 10 Mai - 16:17

Voilà Smile une petite synthese sur les slides en SQL, perso j'ai eu plus facile de bosser
Code:
Organisation et exploitation des données
CIA : Confidentiality, Intergity, Authroisation
- Tout programme qui manipule des données doit garantir le maintien de la qualités des informations
- Autorisation & confidentialité :  gestion des accès à définir, fichier par fichier

SGBD : Système de Gestion de Base de Données
- base de données = collection de données reliées entres elles de façoon logiquement cohérente(+sémantique). --> SGBD permet d'assurer la manipulation de ces BD
==> ensemble de logiciels qui : sert a traiter de l'info(save, write, update)
                assure la sécurité, la confidentialité et l'intégrité
                autorise l'accès aux données par un grand nombre de users.

Schéma p,8

Modele relationnel : basé sur la théorie des ensembles(réunion dans une meme entité de certains objets bien déterminés). Element de base = table(a un nom, presentes les informations sous la forme: colonnes = attributs, lignes = tuples) ou relation.
Table : chaque ligne doit etre unique --> utilisation de clé primaire
   les valeurs des attributs respecteront un certain nombre de règles d'intégrité(type,limites)
   --> Controllé au max dans le SGBDR
   Atributs qui ne contiennent pas de valeurs = null
Algèbre relationnelle : tables SGBDR sont soumis a des opérations :
             Ensemblistes (union, intersection,différence,produit cartésien)
             Relationnelles(jointure, projection, restriction)
Relations compatibles :
Deux tables sont compatibles si elles ont le même schéma(même nombre d'attributs du même type).

Union :
Opération portant sur deux tables compatibles R1 et R2 consistant a construire une relation de schéma compatible R3 ayant pour tuples ceux appartenant à R1 OU R2. R1 UNION R2


Intersection :         
Opération portant sur deux tables compatibles R1 et R2 consistant à construire une relation de schéma compatible R3 ayant pour tulpes ceux appartenant à R1 ET R2. R1 INTERSECTION  R2   

Différence :
Opération portant sur deux tables compatibles R1 et R2 consistant à construire une relation de schéma compatible R3 ayant pour tulpes ceux appartenant à R1 ET n'appartenant pas à R2.
 R1Minus  R2             

Produit Cartésien :
Opération portant sur deux tables compatibles R1 et R2 consistant à construire une relation  compatible R3 ayant pour schéma la concaténation des schémas des relations opérandes et pour tuples toutes les combinaisons des tuples des realtions opérandes. R1 x R2
     Relationnelles   
Jointure :
Opération consistant à rapprocher selone une condition les tuples de deux relations r1 et r2 afin de former une troisième relation R3 qui contient l'ensemble de tous les tuples obtenus en concaténant un tuple r1 et un tuple r2 vérifiant la condition de rapprochement. JOIN R1 AND R2 OVER condition ou JOIN(R1,R2,cond)
(dans les cmd ce sera souvent: JOIN maTable ON linkAttrib)

Clé Etrangère :
Une clé étrangère est un attribut ou ensemble d'attributs d'une relation R1 apparaissant comme clé primaire ou candidate dans une relation R2. Cette contrainte sur R1 s'appelle contrainte d'intégrité référentielle.

Projection:
Opération sur une relation R1 consistant à composer une realtion R2 en enlevant à la relation R1 tous les attributs non mentionnés en opérandes et en éléminant les tuples en double qui sont conservés une seule fois. PROJECT R1 OVER attrib,attrib1,attrib2...

Restriction :
Opération sur une relation R1 produisant une relation R2 de même schéma mais comportant les seuls tuples qui vérifient la condition précisée en argument
RESTRICT R1 WHERE Condition

Langage d'interrogation des BD relationneles:
Non procédurale :
permet de demander le résultat d'opérations relationnelles.
SQL : Structured Query Language:
DDL : manipulation du schéma conceptuel des données (create,drop, alter)
DML : manipulation des données (select, update, insert , delete)
Dcl : manipule la gestion de la sécurité des données(grant)

DML ==> Recherche : SELECT
     insertion : ajouter des tuples dans une relation
     suppression : supprimer un tuple d'une relation
     modification : mettre à jour des tuples ou des parties de tuples.
Regles d'utilisation :
 Requetes SQL ne sont pas sensible à la case, peuvent etre écrits sur plusieurs lignes, les tokens ne peuvent etre abrégés ni coupés entre 2 lignes. Pour une certaine clarté on conseil d'écrire chaque partie de la requete sur des lignes différentes(+retour a la ligne + indentations). Les tokens sont souvent écrits en MAJ tandis que les attributs en min(attention aux accents).

COMMANDE

SELECT * FROM maTable : donne toutes les occurrences de maTable.
SELECT leNom, lePrenom FROM maTable: donne leNom et lePrenom de toutes les                         occurrences de maTable
SELECT leNom AS Nom FROM maTable:
Donne leNom de toutes les ocurences de maTable en affichant au dessus Nom au lieu de leNom. Concaténation de 2 colonnes possible via le ||.
SELECT UPPER(leNom),LOWER(lePrenom) FROM maTable:
Donne leNom en MAJ et lePrenom en min de toutes les occurrences de maTable.

Utilisation d'opérateurs arithmétiques:
SELECT creditsHeure/12,5 AS Credits FROM maTable :
Donne le nombre de creditsHeure divisé par 12 sous le nom de Credits.
!! si une des opérandes est NULL, le résultat sera toujours égal à NULL.

SELECT DISTINCT nomJumeaux FROM maTable:
Donne toutes les différents nomJumeaux de maTable (pas de doublons).

SELECT  nomBelge, prénomBelge FROM maTable where nomBelge LIKE  Dupont :
Donne tous les nomBelge et prénomBelge  de la table quand nomBelge est égal à « Dupont » .
Comparaisons : =,!=,>,>=,<,<= artihmétique
          LIKE ou NOT LIKE chaine(où % remplace 0 ou plusieurs caracteres
                        et _ 1 caractères).
Opérateurs logiques : AND, OR, NOT condition, IS NULL, IS NOT NULL.


Fonctions d'agrégation : Aplléqiués à toutes les lignes d'une table,chacune de ces fonctions retourne qu'une seule valeur.

COUNT(nomCol)=+> compte toutes les valeurs non nulles d'une collones ou COUNT(*):
compte toutes les lignes de séléction.
   
SUM(nomCol) =+> donne la somme de la collone
MIN(nomCol)=+> donne la valeur minimale
MAX(nomCol) =+> donne la valeur maximale
AVG(nomCol)=+> donne la moyenne
================================> Ignorent les NULL

GROUP BY : Regroupement en sous-ensembles pour chacun desquelles on calcule un résultat agrégé. Regroupe les valeurs NULL.
/!\ Pour un SELECT comprenant un GROUP BY, tous les champs demandés dans l'affichage doivent etre monovalué par groupe !!!
 
Si on fait appel à une fonction d'agrégation sans spécifier de regroupement cela suppose que la fonction s'applique à toute la table concernée.

HAVING
Apllique une condition de résultat de la clause GROUP BY
==> le résultat contient les groupes de lignes où les conditions du HAVING sont vraies.
         
JOINTURE :
Permet de transformer SELECT etuNom,Etuprenom,insAnac
            FROM ETUDIANT,INSCRIPTION
            WHERE etuID = insEtu
         en
SELECT eutNom,EtuPrenom,insAnac
FROM ETUDIANT JOIN INSCRIPTION ON etuId = insEtu

Dans le cas où des noms de champs seraient les mêmes, il faudra utiliser un préfixe.







         

le lien sur pocoo comme d'hab Smile : http://paste.pocoo.org/show/6sCUofuumfaniidvnnhi/

Si quelqun pouvait rajouter els solutions des différentes séries Smile j'ai fait des requete( ok je sors) pour les avoir Smile mais bon bounce
avatar
Joker

Nombre de messages : 5294
Age : 28
Cercle : CEI
Année Baptême : 2008
Date d'inscription : 28/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [BDO] SQL

Message par Nicki le Dim 10 Mai - 16:20

j'ai.

je mettrais ca lundi soir ou mardi Wink

merci joker
avatar
Nicki

Nombre de messages : 3696
Age : 31
Cercle : CEI
Année Baptême : 2007
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [BDO] SQL

Message par Sardine le Dim 10 Mai - 16:46

Code:
SQL: Série 1
*************

1. select * from etudiant

2. select oriraccourci, orinom from etudiant

3. select * from etudiant where oriraccourci like 'I%'

4. select * from etudiant where year(etudn) > 1980

5. select * from etudiant where year(etudn) > 1980 order by etunom

6. select * from etudiant where year(etudn) > 1980 order by etuid

7. select * from groupe order by grpanac
  select * from groupe order by grpstruc
  select * from groupe order by grpnom

8. select * from groupe where grpmaitre = 1 and grpanac = 2000 order by grpstruct

9. select * from etudiant where etusexe = 'F' order by year(etudn)

10. select * from suit where suidisp = 1

11. select * from groupe where grppere is null

12. select distinct insanac from inscription order by insanac

13. select sum(crsnbheures) / 12.5 from cours where crslib like '%stage%'

SQL: Série2
************

1. select count(*) from etudiant

2. select count(*) from inscription where year(insd) = 1998

3. select etudn from etudiant order by etudn desc

4. select count(*) from inscription where year(insd) = 1980 or year(insd) = 1985...

5. select count(*) from suit where suireport = 1 and suirepcote = 15 and suianac = 2000

6. select min(crsnbheures), max(nbheures), avg(crsnbheures) from cours

7. select avg(suirepcote) from suit where suianac = 2000

8.

9. select count(*), insanac from inscription group by insanac

10. select count(*), insanac, insanet from inscription group by insanet, insanac

11. select count(*), etusexe from etudiant group by etusexe

12. select count(*), insori from inscription where year(insd) = 2002 group by insori

13. select count(*), year(etudn) from etudiant where etusexe = 'F' group by year(etudn) order by year(etudn) asc

14. select suianac from suit group by suianac having count(*) > 2000

15.

16. select max(suirepcote), suicours from suit group by suicours

17.

18. select insanac from inscription where insanet = 2 group by insanac having count(*) > 200

SQL: Série 3
*************

1. select etunom from etudiant join inscription on insetu = etuid where insanac = 2003

2. select etunom from etudiant join inscription on insetu = etuid where insanet = 1 and etunom like '%an%' and etusexe = 'F'

3.

4. select count(*) from etudiant join suit on suietu = etuid group by etusexe

5. select count(*), orinom from orientation join inscription on insori = oriid group by orinom

6. select count(*) from etudiant join inscription on insetu = etuid join orientation on oriid = insori where orinom = 'base de données'

7. select etunom, etuprenom, grpnom from groupe left join appartient on appgrp = grpid left join etudiant on etuid = appetu order by etunom, etuprenom group by grrnom

8. select etunom, etuprenom from etudiant left join inscription on insetu = etuid left join orientation on insori = oriid left join suit on suietu = insetu left join cours on crsid = suicours where orinom = 'Informatique de gestion' and crslib = 'Base de données'

9. select distinct orinom from orientation left join inscription on insetu = oriid where insanet = 1 and orinom like 'Info%'

10. select count(grpid) from etudiant left join inscription on insetu = etuid left join appartient on appetu = insetu left join groupe on grpid = appgrp group by etuid

11. select etunom, etuprenom, insanet, orinom, crslib, grpnom from etudiant left join inscription on insetu = etuid left join appartient on appetu = insetu left join groupe on appgrp = grpid left join orientation on insori = oriid left join suit on insetu = suietu left join cours on crsid = suicours where etunom = 'qqch' and etuprenom = 'qqch'

12. select g1.grpnom, g2.grpnom from groupe g1 left join groupe g2 on g1.grppere = g2.grpid

13.

SQL: Série 4
********

1. select count(*) from inscription where insdoub = 1 and year(insd) = 2000 group by insori, insanet

2. select count(*) from inscription where insdoub = 1 and year(insd) = 2004

3. select grpnom from groupe join appartient on appgrp = grpid join inscription on insetu = appetu where insdoub = 0 and year(insd) = 2000 group by grpnom having count(*) > 5

4. select min(etudn) from etudiant

5. select distinct etunom from etudiant group by etunom having count(*)
 >= 2                                                             

6. select count(suireport) from suit where suireport = 1 group by suianac

J'ai aussi réussi à avoir un résumé d'ANL, mais j'ai pas spécialement envie de le scanner, donc si qqun le veut, faudra me trouver lundi après math Very Happy
avatar
Sardine

Nombre de messages : 3703
Age : 28
Cercle : CEI
Année Baptême : 2008
Date d'inscription : 04/10/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [BDO] SQL

Message par Joker le Dim 10 Mai - 17:01

après math ?
moi j'ai un cours de math 2eme partie de dispo donc Wink
avatar
Joker

Nombre de messages : 5294
Age : 28
Cercle : CEI
Année Baptême : 2008
Date d'inscription : 28/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [BDO] SQL

Message par Sardine le Dim 10 Mai - 17:13

J'ai aussi la 2nd partie de math, je voulais dire que, si quelqu'un veut le résumé d'ANL (j'ai aussi un cours de physique), faudra me trouver à l'école après l'examen de math, pour faire des photocopies
avatar
Sardine

Nombre de messages : 3703
Age : 28
Cercle : CEI
Année Baptême : 2008
Date d'inscription : 04/10/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [BDO] SQL

Message par Joker le Dim 10 Mai - 18:44

ah oki je pensais que tu parlais de demain Wink
avatar
Joker

Nombre de messages : 5294
Age : 28
Cercle : CEI
Année Baptême : 2008
Date d'inscription : 28/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [BDO] SQL

Message par Nicki le Dim 10 Mai - 23:54

rien empeche de s retrouver dans bxl pour faire un echange... haha on dirait qu ion parle de drogu'

sinon j suis interresser par math phy anal... atta heu... bah tout en faite
avatar
Nicki

Nombre de messages : 3696
Age : 31
Cercle : CEI
Année Baptême : 2007
Date d'inscription : 14/07/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [BDO] SQL

Message par Joker le Lun 11 Mai - 1:10

phys sarko a récupéré un cours et me l'a tjrs pas filé Twisted Evil
avatar
Joker

Nombre de messages : 5294
Age : 28
Cercle : CEI
Année Baptême : 2008
Date d'inscription : 28/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [BDO] SQL

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum