1/28. I Utiliser à bon escient les types de données proposés par SQL, ou. Introduction 3/28

Documents pareils
Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Bases de Données relationnelles et leurs systèmes de Gestion

Le Langage De Description De Données(LDD)

Création et Gestion des tables

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Olivier Mondet

Pour les débutants. langage de définition des données

Le langage SQL (première partie) c Olivier Caron

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Le Langage SQL version Oracle

TP3 : Creation de tables 1 seance

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Exercices sur SQL server 2000

MySQL / SQL EXEMPLES

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Bases de données relationnelles

Introduction au Système de Gestion de Base de Données et aux Base de Données

Intégrité des données

Langage SQL : créer et interroger une base

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Intégrité sémantique dans les bases de données relationnelles

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

TP Contraintes - Triggers

PHP 5. La base de données MySql. A. Belaïd 1

Les BASES de DONNEES dans WampServer

CREATION WEB DYNAMIQUE

1/ Présentation de SQL Server :

Historisation des données

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

I4 : Bases de Données

Cours Bases de données 2ème année IUT

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Modélisation et Gestion des bases de données avec mysql workbench

FileMaker 13. Guide de référence SQL

Compétences Business Objects

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

SQL Historique

Bases de données relationnelles & SQL

Mejdi BLAGHGI & Anis ASSÈS

Devoir Data WareHouse

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Auto-évaluation Oracle: cours de base

I. MySQL : Serveur et SGBD

Bible MySQL! La première version de MySQL est apparue en Cette première version est créée pour un usage personnel à partir de msql.

Bases de données Cours 4 : Le langage SQL pour ORACLE

1 Position du problème

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

1. Base de données SQLite

OpenPaaS Le réseau social d'entreprise

Ora2Pg Performances. (C) 2013 Gilles Darold

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

Cours: Administration d'une Base de Données

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Corrigés détaillés des exercices

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Administration des bases de données. Jean-Yves Antoine

Bases de données avancées

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Notes de cours : bases de données distribuées et repliquées

Master Exploration Informatique des données DataWareHouse

Encryptions, compression et partitionnement des données

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Les bases de données

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Gestion de base de données

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Application web de gestion de comptes en banques

Introduction aux Bases de Données 2004/2005

A QUOI SERVENT LES BASES DE DONNÉES?

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

INTEGRITE ET BD ACTIVES

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Systèmes de Gestion de Bases de Données

LE LANGAGE SQL2 1. INTRODUCTION

Objectifs du TP : Initiation à Access

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

UML et les Bases de Données

Le langage SQL Rappels

TD n 10 : Ma première Base de Données

A QUOI SERVENT LES BASES DE DONNÉES?

Exploitation de bases de données relationnelles et orientées objet IFT287

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Transcription:

Introduction 1/28 2/28 Anne-Cécile Caron Licence MIAGE - BDD 2015-2016 Objectifs Après ce cours, les TD et TP correspondants, vous devez être capables de I Créer des tables à partir d un modèle I Utiliser à bon escient les types de données proposés par SQL, ou plus particulièrement par Oracle, et les contraintes de domaine. I Expliquer ce qu est une clef primaire et traduire en SQL les contraintes d intégrité d entité. I Expliquer ce qu est une clef étrangère et traduire en SQL les contraintes d intégrité référentielles. I Supprimer une table, ou modifier son schéma (ajout de colonne, renommage de colonne, ) Introduction Introduction 3/28 4/28 Définition d un schéma en SQL Instruction SQL CREATE TABLE I liste d attributs (nom + type) I définition de contraintes, afin d avoir un schéma : I plus lisible I plus sûr I plus e cace create table client( num_client NUMBER(3) constraint client_pkey primary key, nom VARCHAR2(20) not null, prenom VARCHAR2(20) not null, solde NUMBER(6,2) default 0.0 not null ) ; Restrictions syntaxiques I Ne pas utiliser un mot réservé SQL comme nom de table ou d attribut I Les majuscules et minuscules sont équivalentes I On peut avoir deux attributs de même nom dans deux tables di é r e n t e s. CLIENT.num_client et COMMANDE.num_client I On peut avoir deux tables de même nom dans deux comptes Oracle (schéma) di é r e n t s. CARON.ARTICLE et SEDOGLAVIC.ARTICLE

5/28 Types numériques 6/28 Les types de données Les types numériques I Types simples : numériques, caractères, binaires, dates et intervalles de dates. I Définis dans la norme SQL I Malheureusement, pas toujours suivie! I Oracle accepte la plupart des types de la norme, mais les traduit dans un type propre à Oracle. Types SQL : I NUMERIC(p,s) ou Decimal(p,s) : nombres à virgule fixe. p est le nombre total de chi res et s est le nombre de chi res après la virgule. équivalent au type Oracle Number(p,s) I INTEGER, INT, SMALLINT : entiers I REAL, DOUBLE PRECISION, FLOAT(p) : nombre à virgule flottante. Types numériques 7/28 Types caractères 8/28 Les types numériques Oracle Les types caractères Types Oracle : I NUMBER(p,s) : Nombre à virgule fixe. p est la précision, c est à dire le nombre total de chi res utilisés, et peut atteindre 38. s est l échelle, où le nombre de chi res à la droite du point. L échelle prend une valeur entre -84 et 127.Lorsqu elle est négative, cela signifie que le nombre est arrondi à gauche de la virgule. Par exemple Number(8,-2) signifie qu on va arrondir à la centaine. I NUMBER(p) : Nombre entier sur p chi res. (équivalent à Number(p,0)). I NUMBER : Nombre à virgule flottante. I il existe deux autres types qui permettent de stocker des nombres à virgule flottante : BINARY FLOAT (32 bits) et BINARY DOUBLE (64 bits). Types SQL : I CHARACTER(n) ou CHAR(n) : chaînes de n caractères I CHARACTER VARYING(n) ou VARCHAR(n) : chaînes d au plus n caractères. I NATIONAL CHARACTER(n) ou NCHAR(n) : chaînes de n caractères codés en Unicode. L ensemble des caractères nationaux est un paramètre de la base. I NATIONAL CHARACTER VARYING(n) ou NCHAR VARYING(n) : chaînes d au plus n caractères codés en Unicode. I CHARACTER LARGE OBJECT ou CLOB : très grande chaîne de caractères. I NATIONAL CHARACTER LARGE OBJECT ou NCLOB : très grande chaîne de caractères unicode.

Types caractères 9/28 Types binaires 10 / 28 Les types caractères Oracle Les types binaires Types Oracle : I CHAR(n) : chaînes de n caractères I VARCHAR2(n) : chaînes d au plus n caractères. I NCHAR(n), NVARCHAR2(n) : variantes de CHAR et VARCHAR2 avec des caractères unicodes. I CLOB et NCLOB : texte, jusqu à (4 Go - 1) * (taille d un bloc). (avant, on utilisait le type LONG, d au maximum 2Go) I Il existe un type VARCHAR mais il est déconseillé de l utiliser : Do not use the VARCHAR datatype. Use the VARCHAR2 datatype instead. Although the VARCHAR datatype is currently synonymous with VARCHAR2, the VARCHAR datatype is scheduled to be redefined as a separate datatype used for variable-length character strings compared with di erent comparison semantics. 1. Types SQL : I BIT(n) : chaîne de n bits. I BIT VARYING(n) : chaîne d au plus n bits. I BINARY LARGE OBJECT ou BLOB : très grande séquence d octets, qui ne représentent pas des caractères. 2. Types Oracle : I BLOB : données binaires jusqu à (4 Go - 1) * (taille d un bloc) I BFile : données binaires stockées dans un fichier externe à la base. jusqu à 4Go. Types temporels 11 / 28 12 / 28 Les types temporels 1. Types SQL : I DATE : date (année, mois, jour) I TIME : heure (heure,minute,seconde,) I TIMESTAMP : estampille, i.e date au sens OS I INTERVAL : intervalle de temps. On peut définir des intervalles à des échelles de temps érentes di ( intervalles day - time ou year - month ). I TIME WITH TIME ZONE et TIMESTAMP WITH TIME ZONE : avec le décalage par rapport à Greenwich 2. Types Oracle : I DATE : date et heure (sur 7 octets) I TIMESTAMP : date et heure incluant des fractions de secondes (précision selon l OS) I INTERVAL YEAR TO MONTH : période représentée en années et mois. I INTERVAL DAY TO SECOND : période représentée en jours, heures, minutes, secondes. I TIMESTAMP WITH TIME ZONE I Très complètes depuis la norme SQL2. I Elles sont vérifiées automatiquement par le SGBD. I I I moins de programmation. plus de sécurité. moins d échanges réseaux. I Contrainte non satisfaite ) annulation de la mise à jour + message d erreur. I Contraintes déclaratives, exprimées dans le schéma, présentes dans le dictionnaire des données.

13 / 28 domaine 14 / 28 Di érentes contraintes de domaine I Contraintes de domaines = valeurs prises par les attributs. I NOT NULL ne peut pas prendre la valeur NULL I Contraintes d intégrité d entité = clefs primaires I DEFAULT valeur par défaut I Contraintes d intégrité référentielles = clefs étrangères I Contraintes générales = assertions I UNIQUE groupe d attributs dont la valeur (si non nulle) permet d extraire 1 seul tuple. Entraine souvent la création d un index. I CHECK contrainte qui porte sur les valeurs du tuple check (quantite >= 0) check (datedeb < datefin) check (couleur in ( blanc, vert, rouge )) I Dans la norme SQL2, on peut définir des domaines qui définiront les valeurs de colonnes des tables. Clef primaire 15 / 28 Clef primaire 16 / 28 Intégrité d entité Intégrité d entité (2) Définition des clefs primaires. I Les colonnes composant la clef primaire sont not null I Clef formée d une seule colonne I L ensemble est unique create table client( num_client NUMBER(3) constraint client_pkey primary key, I Entraîne la création d un index (qui porte le nom donné à la contrainte) I Clef composée de plusieurs colonnes create table salle( nom_salle varchar2(20), nom_bat varchar2(20),, constraint salle_pkey primary key(nom_salle, nom_bat)

Clef primaire 17 / 28 18 / 28 Génération des clés primaires Intégrité référentielle La norme SQL 2003 comporte deux techniques afin de générer des valeurs numériques auto incrémentées, mécanisme très pratique pour les clés primaires. I l attribut de colonne IDENTITY (comme avec SQL Server) I la création d objets séquenceurs. Lien entre deux tables. I clef étrangère : groupe d attributs d une table T1 dont les valeurs doivent exister dans une table T2, comme valeurs d une clef candidate de T2 (souvent clef primaire). C est la deuxième technique qui peut être utilisée sous Oracle. CREATE SEQUENCE ma_sequence INCREMENT BY 1 START WITH 1 ; I table référencée : la table T2 qui contient la clef candidate. I table qui référence : la table T1 qui contient la clef étrangère. Dans un programme PL/SQL ou une instruction SQL, on utilise une séquence grâce à ses pseudo-colonnes NEXTVAL et CURRVAL. I NEXTVAL permet de générer et récupérer un nouveau nombre. I CURRVAL permet de récupérer le dernier nombre généré (sans en générer de nouveau). select ma_sequence.currval from dual ; insert into T values (ma_sequence.nextval,v2,v3 19 / 28 20 / 28 Intégrité référentielle (2) Intégrité référentielle (3) Autre exemple (clef composée de 2 colonnes) : Exemple : create table client( num_client NUMBER(3) constraint client_pkey primary key, create table commande( num_client number(3) constraint commande_client_fkey references client create table salle( nom_salle varchar2(20), nom_bat varchar2(20), constraint salle_pkey primary key(nom_salle, nom_bat) create table cours( nom_salle varchar2(20), nom_bat varchar2(20),, constraint cours_salle_fkey foreign key(nom_salle,nom_bat) references salle(nom_salle,nom_bat)

21 / 28 22 / 28 Intégrité référentielle et mises à jour Intégrité référentielle et mises à jour (2) Que faire si on supprime une ligne référencée (clause ON DELETE), ou si on modifie une clef référencée (clause ON UPDATE)? I NO ACTION (anciennement RESTRICT) interdit la mise à jour de la table référencée. I SET NULL clef étrangère mise à NULL (si autorisé) I SET DEFAULT clef étrangère remplacée par une valeur par défaut I CASCADE les lignes qui font référence sont détruites (on delete cascade) ou modifiées (on update cascade) Sous Oracle : I on update / delete no action (par défaut) I on delete cascade I on delete set null create table commande( num_commande number(3) constraint commande_pkey primary key, create table produit( num_produit number(3) constraint produit_pkey primary key, create table contient( num_commande constraint contient_com_fkey references Commande on delete cascade, num_produit constraint contient_prod_fkey references Produit, 23 / 28 24 / 28 Domaines et assertions Modifier le schéma d une table I SQL2 : Définition d un domaine indépendant des tables, qui peut servir à typer une colonne d une table : CREATE DOMAIN valeur_note INTEGER CHECK (VALUE >= 0 AND VALUE <= 20) I SQL2 : Définition d une assertion, i.e. contrainte globale sur le schéma CREATE ASSERTION exemple_assert CHECK ( 50 > (select count(*) from client where num_client not in (select num_client from commande))) il n est malheureusement pas possible de définir sous Oracle des domaines ou des assertions. Instruction ALTER TABLE (voir doc Oracle pour la syntaxe!) I On peut ajouter une ou plusieurs colonnes, une ou plusieurs contraintes ALTER TABLE <nom_de_la_table> ADD alter table tt add constraint tt_pkey primary key(c1) ; alter table tt add (c3 number(4) default 0 not null ) I On peut supprimer une colonne ou une contrainte ALTER TABLE <nom_de_la_table> DROP <type_element_supprimé> <nom_colonne> alter table tt drop column cc ; -- dangereux! alter table tt drop constraint tt_pkey ;

25 / 28 26 / 28 Modifier le schéma d une table (suite) Sur notre exemple - tables Produit et Contient ALTER TABLE <nom_de_la_table> MODIFY alter table tt modify (c3 number(5)) --> change la taille de la colonne, le NOT NULL et la valeur par défaut restent alter table tt modify (c3 null) --> supprime le NOT NULL -- la colonne produit.nom passe d une taille 30 à une taille 25, -- autorisé car les noms stockés ont moins de 25 caractères. -- le not null est conservé, m^eme si on ne l écrit pas à nouveau. alter table produit modify (nom VARCHAR2(25)) -- ajout d une contrainte alter table contient add constraint quantite_positive check (quantite > 0) On ne peut pas réellement supprimer la valeur par défaut, mais on peut mettre une valeur par défaut à NULL. alter table tt modify (c3 default null) 27 / 28 28 / 28 Renommer une table ou une colonne RENAME <nom_table> TO <autre_nom_table> Par exemple : rename t1 to ma_table ALTER TABLE <nom_table> RENAME COLUMN <nom_col> TO <autre_nom> alter table tt rename column c3 to cc Supprimer une table Instruction SQL DROP TABLE DROP TABLE Produit ; DROP TABLE Produit CASCADE CONSTRAINTS ; -- supprime Produit et les contraintes qui y font référence. I Sous Oracle, il existe une corbeille où sont mises les tables supprimées (avec des noms barbares BIN$) I on peut récupérer une table que l on a supprimée : flashback table Produit to before drop I on peut vider la corbeille : purge recyclebin