3 Introduction au langage SQL (1) : création, mise à jour et administration de. tables

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

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

Création et Gestion des tables

Olivier Mondet

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

Langage SQL : créer et interroger une base

CREATION WEB DYNAMIQUE

Le Langage De Description De Données(LDD)

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

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

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

TP3 : Creation de tables 1 seance

Bases de données relationnelles

Les bases de données

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

I4 : Bases de Données

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

Historisation des données

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

1. Base de données SQLite

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

MySQL / SQL EXEMPLES

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

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

1/ Présentation de SQL Server :

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

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

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

Compétences Business Objects

Les BASES de DONNEES dans WampServer

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

A QUOI SERVENT LES BASES DE DONNÉES?

TP Contraintes - Triggers

Bases de données relationnelles & SQL

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

Intégrité des données

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

A QUOI SERVENT LES BASES DE DONNÉES?

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

OpenPaaS Le réseau social d'entreprise

SQL Historique

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

I. MySQL : Serveur et SGBD

Bases de données élémentaires Maude Manouvrier

Application web de gestion de comptes en banques

SQL Server 2000, Analysis Services et DTS

16H Cours / 18H TD / 20H TP

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

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

Le Langage SQL version Oracle

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

Auto-évaluation Oracle: cours de base

1 Position du problème

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

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

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

Modélisation de bases de données : Le modèle relationnel

INTRODUCTION : Données structurées et accès simplifié

Corrigés détaillés des exercices

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

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

Master Exploration Informatique des données DataWareHouse

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

Bases de données et sites WEB

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

Vincent Augusto

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Bases de données. PTSI Lycée Eiffel. 28 février 2014

SQL Server Cyril Gruau. 11 février 2003

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Objectifs du TP : Initiation à Access

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

LE LANGAGE SQL2 1. INTRODUCTION

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

Gestion de base de données

Cours Base de données relationnelles. M. Boughanem, IUP STRI

NF26 Data warehouse et Outils Décisionnels Printemps 2010

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

BASES DE DONNEES TP POSTGRESQL

Ora2Pg Performances. (C) 2013 Gilles Darold

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

IFT3030 Base de données. Chapitre 1 Introduction

Bases de Données Avancées

Cours: Administration d'une Base de Données

BTS/CGO P10 SYSTEME INFORMATION Année

INTEGRITE ET BD ACTIVES

Pratique et administration des systèmes

FileMaker 13. Guide de référence SQL

Principes de la conception des bases de données

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

Introduction aux Bases de Données

Bases de données et sites WEB Licence d informatique LI345

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

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

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

UML et les Bases de Données

Transcription:

3 Introduction au langage SQL (1) : création, mise à jour et administration de Création de tables Insertion d enregistrements tables Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille (PEIP1) Novembre 2013 Modification et suppression d enregistrements Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 1

1 Création de tables en SQL Déclaration des attributs d une table avec leur typage Déclaration des clés primaires Déclaration des clés étrangères 2 Compléments Insertion d enregistrements : INSERT Modification d enregistrements : UPDATE Suppression d enregistrements : DELETE Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 2

Modèle Conceptuel de Données (MCD) : - permet de modéliser la sémantique des informations d une façon compréhensible par l utilisateur de la future base de données - utilise le formalisme (graphique) Entité-Relation - ne permet pas d implémentation informatique de la base de données dans un SGBD donné Modèle Logique de Données (MLD) : - permet de modéliser la structure selon laquelle les données seront stockées dans la future base de données - est adapté à une famille de SGBD : ici les SGBD relationnels (MLD Relationnels) - utilise le formalisme graphique Merise - permet d implémenter la base de données dans un SGBD donné Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 3

MCD : Modèle Conceptuel de Données MLD-R : Modèle Logique de Données Relationnel NIVEAU CONCEPTUEL / ORGANISATIONEL MCD En formalisme Entité-Relation NIVEAU LOGIQUE MLD (Relationnel) En formalisme «Merise» Création des tables de la base de données en langage SQL Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 4

1 Création de tables en SQL Déclaration des attributs d une table avec leur typage Déclaration des clés primaires Déclaration des clés étrangères Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 5

1. MCD (Entité-Relation) : CLIENT n client nom age adresse type CA annuel taux remise 1,n PASSER 1,1 COMMANDE n commande date statut FOURNISSEUR 1,n 0,n LIGNE_CMD qtо_cmdоe qtо_livrоe prix_unitaire FOURNIR 0,1 0,n ARTICLE n article dоsignation qtо stock poids prix d'achat prix de vente n fournisseur nom adresse 2. MLD (Relationnel) dérivé : COMMANDE LIGNE_CMD CLIENT cli_num cli_nom cli_age cli_adresse cli_type cli_ca cli_tremise PASSER cmd_num cmd_cli cmd_date cmd_statut FOURNISSEUR four_num four_nom four_adresse lcd_cmd lcd_art lcd_qté lcd_liv lcd_pu FOURNIR ARTICLE art_num art_four art_nom art_stock art_poids art_pa art_pv Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 6

2. MLD (Relationnel) dérivé : COMMANDE LIGNE_CMD CLIENT cli_num cli_nom cli_age cli_adresse cli_type cli_ca cli_tremise PASSER cmd_num cmd_cli cmd_date cmd_statut FOURNISSEUR four_num four_nom four_adresse lcd_cmd lcd_art lcd_qté lcd_liv lcd_pu FOURNIR ARTICLE art_num art_four art_nom art_stock art_poids art_pa art_pv 2. Schémas relationnels associés : CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise) ARTICLE (art_num, art_nom, art_four, art_stock, art_poids, art_pa, art_pv) COMMANDE (cmd_num, cmd_cli, cmd_date, cmd_statut) LIGNE_CMD (lcd_cmd, lcd_art, lcd_qte, lcd_liv, lcd_pu) FOURNISSEUR (four_num, four_nom, four_adresse) Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 7

Origine : SQL (Structured Query Language) est un langage de requêtes standard pour les SGBD relationnels 3 niveaux de normes : SQL86 (standard ANSI en 86 puis ISO en 87) : la base puis SQL89 ou SQL1 : l intégrité: SQL91 ou SQL2 : on se situe ici dans le cadre de ce cours SQL3 (98) : SQL devient un langage de programmation et évolue vers l objet Dans cette séance 3, nous ne verrons que : - la commande CREATE TABLE permettant de créer les tables de la base de données en langage SQL, - les commandes INSERT permettant d insérer et DELETE de supprimer des tuples (enregistrements) dans une base de données créée. Dans cette séance 4, nous verrons d autres commandes du langage SQL (SELECT, UPDATE) permettant d exploiter la base de données remplie d enregistrements. Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 8

Soit le MLD suivant : CLIENT cli_num cli_nom cli_age cli_adresse cli_type cli_ca cli_tremise COMMANDE cmd_num cmd_cli cmd_date cmd_statut Schémas relationnels : Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise) - cli_num = clé primaire Table COMMANDE (cmd_num, cmd_cli, cmd_date, cmd_statut) - cmd_num = clé primaire - cmd_cli, = clé étrangère : elle permet le lien entre les 2 tables Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 9

CHAR(taille) Chaînes de caractères de longueur fixe CHAR(3) VARCHAR(taillemax) Chaînes de caractères de longueur variable VARCHAR(10) SMALLINT Entier court (sur 16 bits : de -32768 à 32757) INTEGER Entier long (sur 32 bits : de -2 147 483 648 à 2 147 483 647) NUMBER(n,[d]) Nombres décimaux qui ont n chiffres dont d chiffres après la virgule REAL Nombre à virgule flottante (faible précision) FLOAT Nombre à virgule flottante (grande précision) DOUBLE PRECISION DATE Date (jour, mois, année) 10/01/2002 TIME Heures, minutes et secondes (les secondes peuvent 10:12:42.85 comporter un certain nombre de décimales) TIMESTAMP Moment précis : date avec heures, minutes et secondes (6 chiffres après la virgule, c'est-à-dire en microsecondes) Nombre à 5 chiffres avant la virgule et 2 après la virgule : NUMBER(7,2) Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 10

Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise) CREATE TABLE Client (cli_num CHAR(8) NOT NULL, cli_nom CHAR(25) NOT NULL, cli_age INTEGER NOT NULL, cli_adresse VARCHAR(80), cli_type VARCHAR(16), cli_ca INTEGER, cli_tremise INTEGER NOT NULL, PRIMARY KEY (cli_num)) ; NOT NULL : on n accepte pas que l attribut puisse avoir une valeur nulle (valeur inconnue) PRIMARY KEY (cli_num): l attribut cli_num est clé primaire de la table Client. Remarque : un attribut déclaré clé primaire doit être défini avec l'option NOT NULL Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 11

Table COMMANDE (cmd_num, cmd_cli, cmd_date, cmd_statut) Création de la table COMMANDE : CREATE TABLE Commande (cmd_num CHAR(8) NOT NULL, cmd_cli CHAR(8) NOT NULL, cmd_date DATE NOT NULL, cmd_statut VARCHAR(16), PRIMARY KEY (cmd_num), FOREIGN KEY (cmd_cli) REFERENCES client); PRIMARY KEY (cmd_num): l attribut cmd_num est clé primaire de la table Commande. FOREIGN KEY (cmd_cli) REFERENCES client: l attribut cmd_cli est une clé étrangère qui réfère à la table Client Remarques : 1- la table client doit déjà exister 2- l'attribut cmd_cli de la table commande est du même type que celui de la clé primaire de la table client. Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 12

Table ARTICLE (art_num, art_nom, art_four, art_stock, art_poids, art_pa, art_pv) ; Création de la table ARTICLE : CREATE TABLE Article (art_num CHAR(8) NOT NULL, art_nom VARCHAR(25) NOT NULL, art_four CHAR(8), art_stock INTEGER NOT NULL, art_poids NUMERIC (8,1), art_pa INTEGER NOT NULL, art_pv INTEGER NOT NULL, PRIMARY KEY (art_num), FOREIGN KEY (art_four) REFERENCES Fournisseur); PRIMARY KEY (art_num): l attribut art_num est clé primaire de la table article. FOREIGN KEY (art_four) REFERENCES Fournisseur: l attribut art_cli est une clé étrangère qui réfère à la table Fournisseur. Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 13

Table LIGNE_CMD (lcd_cmd, lcd_art, lcd_qte, lcd_liv, lcd_pu) CREATE TABLE Ligne_cmd (lcd_art CHAR(8) NOT NULL, lcd_cmd INTEGER NOT NULL, lcd_qte INTEGER NOT NULL, lcd_liv INTEGER, lcd_pu INTEGER NOT NULL, FOREIGN KEY (lcd_cmd) REFERENCES Commande, FOREIGN KEY (lcd_art) REFERENCES Article, PRIMARY KEY (lcd_cmd, lcd_art)) ; <- Clé primaire composée FOREIGN KEY (lcd_cmd) REFERENCES commande: l attribut lcd_cmd est une clé étrangère qui réfère à la table Commande. FOREIGN KEY (lcd_art) REFERENCES commande: l attribut lcd_art est une clé étrangère qui réfère à la table Article. PRIMARY KEY (lcd_cmd, lcd_art): la clé primaire de la table Ligne_cmd est composée des attributs lcd_cmd et lcd_art qui sont ici clés étrangères. Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 14

2 Compléments Insertion d enregistrements : INSERT Modification d enregistrements : UPDATE Suppression d enregistrements : DELETE Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 15

Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise) CREATE TABLE Client (cli_num CHAR(8) NOT NULL, cli_nom CHAR(25) NOT NULL, cli_age INTEGER NOT NULL, cli_adresse VARCHAR(80), cli_type VARCHAR(16), cli_ca INTEGER, cli_tremise INTEGER NOT NULL, PRIMARY KEY (cli_num)) ; Insertion d un nouvel enregistrement dans la table Client : INSERT INTO client VALUES ( C2345, Tranvouez, 29, Marseille, particulier, 3680, 25) ; Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 16

Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise) CREATE TABLE Client (cli_num CHAR(8) NOT NULL, cli_nom CHAR(25) NOT NULL, cli_age INTEGER NOT NULL, cli_adresse VARCHAR(80), cli_type VARCHAR(16), cli_ca INTEGER, cli_tremise INTEGER NOT NULL, PRIMARY KEY (cli_num)) ; Suppression d un enregistrement dans la table client : DELETE FROM client WHERE (cli_nom = Tranvouez ); Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 17

Table ARTICLE (art_num, art_nom, art_four, art_stock, art_poids, art_pa, art_pv) ; Mise à jour du prix de vente du produit «lasure» : UPDATE Article SET art_pv = 12 WHERE art_nom = lasure Augmenter les prix de vente de tous les produits fournis par Castorama de 10% : UPDATE Article SET art_pv = art_pv *1.1 WHERE art_four IN (SELECT four_num FROM FOURNISSEUR WHERE FNOM = Castorama ) Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 18

MLD (Relationnel) dérivé : COMMANDE LIGNE_CMD CLIENT cli_num cli_nom cli_age cli_adresse cli_type cli_ca cli_tremise PASSER cmd_num cmd_cli cmd_date cmd_statut FOURNISSEUR four_num four_nom four_adresse lcd_cmd lcd_art lcd_qté lcd_liv lcd_pu FOURNIR ARTICLE art_num art_four art_nom art_stock art_poids art_pa art_pv Schémas relationnels associés : CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise) ARTICLE (art_num, art_nom, art_four, art_stock, art_poids, art_pa, art_pv) COMMANDE (cmd_num, cmd_cli, cmd_date, cmd_statut) LIGNE_CMD (lcd_cmd, lcd_art, lcd_qte, lcd_liv, lcd_pu) FOURNISSEUR (four_num, four_nom, four_adresse) Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 19

TABLE Client cli_num CHAR(8) cli_nom CHAR(25) cli_age INTEGER cli_adresse VARCHAR(80) cli_type VARCHAR(16) cli_ca INTEGER cli_tremise INTEGER TABLE Article art_num CHAR(8) art_nom VARCHAR(25) art_four CHAR(8) art_stock INTEGER art_poids NUMERIC (8,1), art_pa INTEGER NOT NULL, art_pv INTEGER NOT NULL TABLE Ligne_cmd lcd_art CHAR(8) lcd_cmd INTEGER lcd_qte INTEGER lcd_liv INTEGER lcd_pu INTEGER TABLE Fournisseur four_num CHAR(8) four_nom CHAR(25) four_adresse VARCHAR(80) TABLE Commande cmd_num CHAR(8) cmd_cli CHAR(8) cmd_date DATE cmd_statut VARCHAR(16) Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 20

CREATE TABLE Client (cli_num CHAR(8) PRIMARY KEY CONSTRAINT PK_CLIENT, cli_nom CHAR(25) UNIQUE, CONSTRAINT UNIQUE_CLIENT, cli_age INTEGER CHECK (cli_age > 0 AND cli_age < 120), CONSTRAINT AGE_CLIENT, cli_adresse VARCHAR(80), cli_type VARCHAR(16) DEFAULT 'Particulier', cli_ca INTEGER DEFAULT 0 cli_tremise INTEGER NOT NULL); CHECK (cli_type IN ('Particulier', 'Administration, 'Entreprise')) CONSTRAINT TYPE_CLIENT); CREATE TABLE Article (art_num CHAR(8) DEFAULT 0 PRIMARY KEY CONSTRAINT PK_ARTICLE, art_nom VARCHAR(25) NOT NULL, art_four CHAR(8) REFERENCES Fournisseur ON UPDATE CASCADE ON DELETE SET NULL CONSTRAINT FK_FOURNISSEUR art_stock INTEGER DEFAULT 0 CHECK (art_stock > 0) CONSTRAINT STOCK_ARTICLE, art_poids NUMERIC (8,1), art_pa INTEGER NOT NULL, art_pv INTEGER NOT NULL, CHECK (art_pv > art_pa / 0.8) CONSTRAINT PVPA_ARTICLE); CREATE TABLE Fournisseur (four_num CHAR(8) PRIMARY KEY CONSTRAINT PK_FOURNISSEUR, four_nom CHAR(25) UNIQUE, CONSTRAINT UNIQUE_FOURNISSEUR, four_adresse VARCHAR(80); CREATE TABLE Ligne_cmd (lcd_art CHAR(8) NOT NULL, lcd_cmd INTEGER NOT NULL, lcd_qte INTEGER NOT NULL, lcd_liv INTEGER DEFAULT 0, lcd_pu INTEGER NOT NULL, PRIMARY KEY (lcd_cmd, lcd_art) CONSTRAINT PK_LIGNCDE FOREIGN KEY (lcd_cmd) REFERENCES Commande ON UPDATE CASCADE ON DELETE CASCADE CONSTRAINT FK_COMMANDE FOREIGN KEY (lcd_art) REFERENCES Article ON UPDATE CASCADE ON DELETE NO ACTION CONSTRAINT FK_ARTICLE CHECK (lcd_pu >=0.75 * (SELECT art_pv FROM Article WHERE art_num = lcd_art)) CONSTRAINT PU_LIGNCDE); CREATE TABLE Commande (cmd_num CHAR(8) PRIMARY KEY CONSTRAINT PK_COMMANDE, cmd_cli CHAR(8) NOT NULL REFERENCES Client ON UPDATE CASCADE ON DELETE NO ACTION CONSTRAINT FK_CLIENT cmd_date DATE NOT NULL, cmd_statut VARCHAR(16) DEFAULT 'Prévisionelle' CHECK (cmd_statut IN ('Prévisionnelle', 'Validée', 'Urgente') CONSTRAINT STATUT_COMMANDE); Bernard ESPINASSE PEIP 2013 Séance 3 : MLD 21