SQL Description des données : création, insertion, mise à jour. Définition des données. BD4 A.D., S.B., F.C., N. G. de R.



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

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

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

Langage SQL : créer et interroger une base

Olivier Mondet

Création et Gestion des tables

Les bases de données

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

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

Le Langage De Description De Données(LDD)

CREATION WEB DYNAMIQUE

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

Intégrité des données

Bases de données relationnelles

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

TP3 : Creation de tables 1 seance

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

1 Position du problème

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

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

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

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

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

OpenPaaS Le réseau social d'entreprise

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

Les BASES de DONNEES dans WampServer

SQL Historique

TP Contraintes - Triggers

Compétences Business Objects

I4 : Bases de Données

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

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

Historisation des données

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

Systèmes de Gestion de Bases de Données

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

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

TP Bases de données réparties

PHP 4 PARTIE : BASE DE DONNEES

MySQL / SQL EXEMPLES

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

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

INTEGRITE ET BD ACTIVES

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

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

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

FileMaker 13. Guide de référence SQL

I. MySQL : Serveur et SGBD

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

Le langage SQL Rappels

A QUOI SERVENT LES BASES DE DONNÉES?

Pratique et administration des systèmes

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

Le Langage SQL version Oracle

1. Base de données SQLite

Gestion de base de données

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

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

Application web de gestion de comptes en banques

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

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

Installation d'un serveur FTP géré par une base de données MySQL

Cours: Administration d'une Base de Données

Bases de données et sites WEB

Bases de données relationnelles & SQL

Master Exploration Informatique des données DataWareHouse

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Bases de données élémentaires Maude Manouvrier

LE LANGAGE SQL2 1. INTRODUCTION

Devoir Data WareHouse

Partie II Cours 3 (suite) : Sécurité de bases de données

Comprendre les bases de données

PROJET 1 : BASE DE DONNÉES REPARTIES

16H Cours / 18H TD / 20H TP

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

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)

Cours SQL. Base du langage SQL et des bases de données

Java DataBaseConnectivity

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

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

1 Introduction et installation

Auto-évaluation Oracle: cours de base

1/ Présentation de SQL Server :

Mercredi 15 Janvier 2014

Bases de données - Modèle relationnel

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

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

Objectifs du TP : Initiation à Access

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Transcription:

SQL Description des données : création, insertion, mise à jour BD4 AD, SB, FC, N G de R Licence MIASHS, Master ISIFAR, Paris-Diderot Mars 2015 BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 1/21 Mars 2015 1 / 21 Introduction Définition des données SQL est un monde à part entière On peut : Interroger des données par des requêtes (déjà vu) Administrer les bases de données C est-à-dire : Créer celles-ci : définition des tables (schémas, etc), contraintes Créer de nouvelles données, en insérer, supprimer, mettre à jour, etc Créer et gérer les utilisateurs, leurs droits sur les objets de la base, Dans ce cours : création des tables (version simplifiée) et des données BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 2/21 Mars 2015 2 / 21

Création de tables Création de tables Definition de tables Un atelier de conception comme WorkBench permet de définir les tables en dessinant, puis une fois que le graphique semble cohérent d engendrer le code SQL Instruction : CREATE TABLE Permet de définir : Les noms et les domaines (leur type ) des attributs ainsi que des contraintes d intégrité comme : Contraintes de clés primaires Contraintes référentielles (clés étrangères, par exemple) Des contraintes assez générales (de contrôle des données) Des index (pour la recherche et l exécution optimales) BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 3/21 Mars 2015 3 / 21 Création de tables Création de tables Chaque relation est définie par un nom de relation et une liste d attributs CREATE TABLE < nom_ relation > ( < element de relation > <, element de relation >* <, contrainte de relation >* ) ; Chaque attribut est défini par un nom d attribut et un type de données < element de relation > : := < nom_attrib >< type_donnees >[ < contrainte_attrib >*] < type_ donnees > : := VARCHAR < longueur > INT < longueur > REAL DATE BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 4/21 Mars 2015 4 / 21

Création de tables Remarques Une contrainte d attribut concerne un seul attribut Si valeur NULL impossible : NOT NULL Si l attribut est une clé : PRIMARY KEY Unicité de l attribut : UNIQUE Contrainte référentielle : REFERENCES <relation référencée>[(<attribut référencé>)] Définir une valeur par défaut : DEFAULT <valeur> Attention les types disponibles (mais pas seulement) diffèrent grandement suivant les SGBD (Mysql, PostgreSQL, Oracle, SQL Server, ) BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 5/21 Mars 2015 5 / 21 Exemple Création de tables Pour une table countrycodes(code,country) CREATE TABLE atp country_codes_big ( code character varying (3) NOT NULL, country character varying (100), ) ; ou bien : CREATE TABLE atp country_codes_big ( code character varying (3) NOT NULL, country character varying (100), CONSTRAINT country_codes_pkey PRIMARY KEY ( code ) ) ; BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 6/21 Mars 2015 6 / 21

Création de tables Exemple CREATE TABLE atp player ( pid integer NOT NULL DEFAULT nextval ( atp player_big_pid_seq : :regclass ), code character varying (3), name character varying, last_name character varying, first_name character varying, gender character varying (1), birth_date date, CONSTRAINT pk_player_pid PRIMARY KEY ( pid ), CONSTRAINT fk_player_code FOREIGN KEY ( code ) REFERENCES atp country_codes ( code ) ) ; BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 9/21 Mars 2015 9 / 21 Contenu des relations On peut gérer le contenu des tables directement dans le langage SQL On peut donc : Ajouter des tuples à une table : INSERT INTO Mettre à jour des tuples d une relation : UPDATE Supprimer des tuples : DELETE FROM BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 10/21 Mars 2015 10 / 21

Insertion de tuples Insertion Insertion tuples à tuples INSERT INTO < nom_ relation > [( nom_attrib [, nom_attrib ]*)] VALUES ( valeur [, valeur ]*) ; Exemple INSERT INTO atp country_codes_big ( code, country ) VALUES ( SRB, Serbia ) ; Les valeurs doivent être fournies dans l ordre de déclaration des attributs Les valeurs non spécifiées sont affectées à NULL BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 11/21 Mars 2015 11 / 21 Insertion de tuples Insertion On peut faire une insertion par le biais d une requête La clause VALUES est remplacée par une requête Les résultats de la requête sont insérés comme valeurs dans la table Exemple : Alimentation d une nouvelle table à l aide des données d une autre table située dans un autre schema : INSERT INTO atp game_big ( tid, round, registrnum1, registrnum2, mid ) SELECT g tid,g round,g registrnum1,g registrnum2,g mid FROM tennis game g JOIN atp tournament_big t ON (g tid =t tid ) WHERE t ttype = Doubles ; BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 12/21 Mars 2015 12 / 21

Mise à jour Mise à jour On peut mettre à jour des tuples existants par le biais d une requête Soit un par un, soit l ensemble des tuples vérifiants une condition donnée Syntaxe UPDATE nom_relation SET nom_attribut = < expression de valeur > [, nom_attribut = < expression de valeur > ]* [ WHERE < condition de recherche > ] ; BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 13/21 Mars 2015 13 / 21 Mise à jour de tuples Mise à jour Le WHERE permet de sélectionner les tuples à mettre à jour UPDATE atp player_big SET birth_date = CAST ( 1987 - May -22 AS DATE ) WHERE last_name = Djokovic ; On peut aussi effectuer des opérations sur les tuples à mettre à jour La clause <expression de valeur> peut être : NULL Une constante (explicite ou via une requête) Une expression arithmétique sur les attributs de la table à modifier BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 14/21 Mars 2015 14 / 21

Mise à jour Mise à jour de tuples Augmentation du prix d une pièce UPDATE tournament_big SET numrounds = numrounds +1 WHERE name LIKE French Open AND EXTRACT ( YEAR FROM startdate )=2015 ; BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 15/21 Mars 2015 15 / 21 de tuples On peut évidemment supprimer des tuples Syntaxe DELETE FROM < nom_ relation > [ WHERE < condition de recherche >] ; BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 16/21 Mars 2015 16 / 21

de tuples Un problème : essai =# SELECT tid, name, location, startdate FROM atp tournament_big WHERE name LIKE French Open AND EXTRACT ( YEAR FROM startdate )=2007 ; tid name location startdate -- -------------------------------------------------------------------- 2 French Open Roland Garros, Paris, France 2007-05 -26 3 French Open Roland Garros, Paris, France 2007-05 -26 720 French Open Paris 2007-05 -27 Exemple DELETE FROM tournament_big WHERE tid = 720 ) ; La requête suivante pose-t elle problème? DELETE FROM country_codes_big WHERE code IN ( SELECT code FROM player WHERE last_name LIKE Djoko % ) ; BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 17/21 Mars 2015 17 / 21 Maintien de l intégrité référentielle La dernière requête décrit un problème plus général Il y a problème quand : On cherche à insérer dans player un tuple dont la valeur de code n existe pas dans country_codes On cherche à mettre à jour un tuple de player avec une valeur de code qui n existe pas dans country_codes On efface de country_codes, un tuple dont la valeur du champs code apparait comme valeur d un tuple de player On met à jour le champs code d un tuple de country_codes alors que l ancienne valeur de ce champs est présente comme valeur de code dans player BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 18/21 Mars 2015 18 / 21

Maintien de l intégrité référentielle Plusieurs politiques pour régler ces problèmes Par défaut : le système rejette toute modification ne respectant pas les contraintes d intégrité En cascade : les modifications sur l attribut référencé sont effectués aussi sur l attribut qui référence (la clé étrangère) Exemple : mise à jour de country_codescode répercutée sur playercode Effacement répercuté aussi Set-Null : les modifications sur l attribut référencé sont répercuté sur l attribut qui référence en mettant sa valeur à NULL BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 19/21 Mars 2015 19 / 21 Maintien de l intégrité référentielle Exemple de syntaxe CREATE TABLE atp registration ( registrnum integer NOT NULL, pid integer, CONSTRAINT fk_registration_played_in FOREIGN KEY ( registrnum ) REFERENCES atp played_in ( registrnum ) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT fk_registration_player FOREIGN KEY ( pid ) REFERENCES atp player ( pid ) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT fk_registrnum_played_in FOREIGN KEY ( registrnum ) REFERENCES atp played_in ( registrnum ) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE ) Cette déclaration force : BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 20/21 Mars 2015 20 / 21 à répercuter l effacement d un tuple dans played_in sur registration à répercuter la mise à jour d un tuple dans played_in (pour ce qui concerne le champs registrnum) dans les tuples de registration

Résumé On a vu comment créer des tables (de façon simplifiée) et gérer le contenu de celles-ci On peut spécifier bien plus de contraintes dans la partie création de tables L ajout ou la suppression de données n est pas libre : les contraintes (de clés notamment) doivent être satisfaites après l exécution des mises à jour (cf dernier exemple) BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 21/21 Mars 2015 21 / 21