1 / 24

Création de tables

Création de tables. Syntaxe CREATE TABLE. CREATE TABLE nom de la table ( { colonne | contrainte_table } [ ,...] ) où colonne est : n om type [ CONSTRAINT nom contrainte ] On peut spécifier des contraintes pour la table et pour certaines colonnes .

erica
Download Presentation

Création de tables

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Création de tables

  2. Syntaxe CREATE TABLE • CREATE TABLE nom de la table ( { colonne | contrainte_table } [ ,...] ) • où colonne est : nomtype [CONSTRAINTnom contrainte] • On peut spécifier des contraintes pour la table et pour certaines colonnes. • Une table peut avoir : • jusqu'à 1,000 colonnes, • nombre illimité de rangées

  3. Nom des tables et des colonnes • Maximum 30 caractères. • Doivent commencer par une lettre. • Les caractères permis sont: • a-z, 0-9, $, # et _ • Un utilisateur ne peut avoir 2 tables portant le même nom. • Une table ne peut avoir 2 colonnes portant le même nom. • On ne peut utiliser les mots réservés (TABLE, SELECT, etc.).

  4. Type de données • VARCHAR2(taille) ou VARCHAR(taille) • chaîne de caractères de longueur variable • maximum: 4000 caractères • NUMBER(p,s) • nombre • p, le nombre de chiffres total • s, le nombre de chiffres après le point. • DATE • date • CLOB • Character Large Objects • Permet de sauvegarder du texte jusqu’à 4Gig • CHAR(taille) • chaîne de caractères de longueur fixe • maximum: 255 bytes • longueur par défaut: 1 byte

  5. Les contraintes de tables et de colonnes • Elles permettent de limiter le nombre de valeurs acceptables pour une colonne ou un groupe de colonnes. • Les règles que l'on peut imposer aux valeurs d'une colonne ou d'un groupe de colonnes: • qu'une colonne ou groupe de colonnes ne puissent pas contenir de valeurs nulles, • que la valeur d'une colonne ou d'un groupe de colonnes soit unique dans la table, • identifier une colonne ou un groupe de colonnes comme étant l'identifiant (clé primaire), • exiger que la valeur d'une colonne ou d'un groupe de colonnes existent dans une autre table (clé étrangère), • exiger que la valeur d'une colonne ou d'un groupe respecte une condition. • Avantages: • ces contraintes n'ont pas à être implantées dans chaque programme, • assure une meilleure intégrité des données.

  6. Les contraintesSyntaxe • CREATE TABLE Table ( { Élément_colonne | Contrainte_table } [,...] ) où Élément_colonne est: Nom_Colonne Type [ Contrainte_colonne ] • Contrainte_table {UNIQUE|PRIMARY} ( Nom_Colonne [,...]) FOREIGN KEY (Nom_Colonne [,...] ) REFERENCES Table (Nom_Colonne [,...]) [ON DELETE CASCADE] CHECK (Condition) • Contrainte_colonne { NULL | NOT NULL } { UNIQUE | PRIMARY KEY } REFERENCES Table ( Nom_Colonne ) [ON DELETE CASCADE] CHECK (Condition)

  7. Contraintes de tables et de colonnes • Contraintes de colonnes: • ces contraintes font référence à une seule colonne. • Contraintes de tables: • ces contraintes peuvent faire références à plusieurs colonnes. • Les contraintes sont spécifiées lors d’un CREATE TABLE ou d’un ALTER TABLE

  8. Ne peut être utilisée que comme contrainte de colonnes • Exemple: CREATE TABLE departement ( id NUMBER(2) NOT NULL, nom VARCHAR2(20), Ville VARCHAR2(13) ); • Spécifie qu'une rangée doit avoir une valeur dans cette colonne

  9. CONSTRAINT • Permet d’assigner un identifiant significatif à une contrainte. Si non spécifié, le système assignera un nom automatique (ex.: C10345678). • Exemple : CREATE TABLE departement ( id NUMBER(2) CONSTRAINT nn_dep_idNOT NULL, nom VARCHAR2(14), ville VARCHAR2(13) );

  10. UNIQUE • Spécifie que chaque rangée de la table doit avoir une valeur différente dans cette colonne. • Peut être spécifiée comme contrainte de table ou de colonne. • Les colonnes spécifiées doivent également avoir la contrainte NOT NULL. • Cette contrainte n'est pas compatible avec la contrainte PRIMARY KEY.

  11. Exemples pour la contrainte UNIQUE • Exemple de contrainte de ligne: • On ajoute un courriel à chaque employé : ALTER TABLE employeADD (Courriel VARCHAR2(50) UNIQUE); • Exemple de contrainte de table : • On ajoute à la table employe les colonnes code régional et numéro de téléphone avec la contrainte UNIQUE pour le numéro complet (code régional plus téléphone): ALTER TABLE employeADD ( code_regional VARCHAR2(3) NOT NULL, telephoneVARCHAR2 (7) NOT NULL, UNIQUE ( code_regional, telephone));

  12. PRIMARY KEY • Indique que la (ou les colonnes) servent d'identifiant pour les rangées de la table. • Implique les contraintes UNIQUE et NOT NULL. • Exemple: pour créer une table departementet indiquer que le numéro de département en est la clé primaire: CREATE TABLE departement (id NUMBER(2) PRIMARY KEY, nom VARCHAR2(13), ville VARCHAR2(13) ); • Si la clé primaire est formée de plusieurs colonnes ont doit utiliser une contrainte de table. • Exemple : pour créer la table employeet indiquer que le nom et le prénom forment la clé primaire: CREATE TABLE employe (nom VARCHAR2(15), prenom VARCHAR2(15), ... , PRIMARY KEY (nom, prenom) );

  13. FOREIGN KEY • Permet de spécifier une intégrité référentielle entre les rangées de 2 tables departement employe

  14. FOREIGN KEY / REFERENCES • syntaxe: • Contrainte de table: FOREIGN KEY ( Nom_Colonne[, ...]) REFERENCES Table [( Nom_Colonne[, ...]) Exemple: ALTER TABLE employe ADD CONSTRAINT fk_emp_depart ( FOREIGN KEY (id_departement) REFERENCES departement (id)); • Contrainte de colonne REFERENCES Table [( Nom_Colonne[, ...]) Exemple : ALTER TABLE employe ADD (id_departement REFERENCES departement(id));

  15. FOREIGN KEY / REFERENCES (suite) Exemple: CREATE TABLE employe ( ... id_departement NUMBER(2) REFERENCES departement (id) ; ); Ou CREATE TABLE employe ( ... id_departement NUMBER(2), … CONSTRAINT fk_emp_dept FOREIGN KEY (id_departement) REFERENCES departement(id) );

  16. Notes surFOREIGN KEY / REFERENCES • On doit faire référence à une clé primaire ou une colonne ( ou groupe de colonnes ) UNIQUE. • La référence sera à la clé primaire si aucune colonne n'est spécifiée. • D'autres contraintes peuvent spécifier des références sur la même table ou colonnes. • Les colonnes doivent être de même type. • Peut faire référence à une colonne de la même table.

  17. CHECK • Syntaxe: ( contrainte de table ou de colonne) CHECK ( Condition ) • Pour une contrainte de table, la condition peut impliquer n'importe quelle colonne de la table. • Exemple: CREATE TABLE departement ( id NUMBER (2) CHECK ( id BETWEEN 10 AND 99 ), nom VARCHAR2(9) CHECK ( nom = UPPER ( nom ) ), ville VARCHAR2(10) CHECK ( ville IN ( ‘MTL, ' QC‘) ); • Exemple: ALTER TABLE employe ADD ( CHECK ( salaire+ commission<= 5000 ) );

  18. Contrainte en cascade • La clause « ON DELETE CASCADE » permet, lors de la destruction d’un enregistrement d’une table, de détruire du même coup les enregistrements d’autres tables liés par une clé lointaine. • Exemple : • Si on supprime le département, les employés du département sont automatiquement supprimés ALTER TABLE employeADD CONSTRAINT fk_emp_dept FOREIGN KEY (id_departement) REFERENCES departement(id) ON DELETE CASCADE ;

  19. Modificationdes contraintes • On utilise l'énoncé ALTER TABLE ALTER TABLE table [ ADD ( { définition_colonne | contrainte_table } ,...) ] [ MODIFY ( { définition_colonne} ,...) ]

  20. Les index • Pour les requêtes qui sontrégulièrementutilisées, ilestextrèmement important d’utiliser des index. • En supposantquecetterequêteestconstammentutilisé. SELECT nom, prenom FROM usager WHERE nom_usager = ‘Arthax’ AND mot_de_passe = ‘md5asdd’; • Afind’avoirunerequêteperformante, ilfaudra y ajouter un index sur les colonnesnom_usager et mot_de_passe

  21. Les index (suite) • On ne met pas des index n’importeoù, ilfaut identifier les requêtes les plus communes • Exemple : • Comme on fait régulièrement des requêtessur la colonne “ville” de la table “departement”, on y ajoute un index CREATE INDEX idx_dept_ville ON departement (ville)

  22. Les index (suite) • Les clésprimaires, étrangères et les contraintesuniques font automatiquement des index. Il n’estdonc pas nécessaired’enajouter. • Imaginonsunerequête qui possèdeune clause WHERE sur un champ non indexé, et surune table de 1,000,000 de lignes. • Exemple de performance de la requête: • Sans index sur le champ : 4 secondes • Avec index sur le champ : 0.01 seconde

  23. Les tables d’association • Il arrive qu’une relation entredeux tables soit de plusieurs-à-plusieurs Exemple : Table personne et Table intérêt (ex: cinéma, lecture) Unepersonnepeutavoirplusieursintérêts Un intérêtpeutêtrepartagé par plusieurspersonnes • Il fautdonc faire une table d’associationafin de pouvoir les relier ensemble

  24. Les tables d’association (suite) personne interet_personne interet

More Related