Le language SQL (2/2)



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

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

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

Le Langage De Description De Données(LDD)

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

TP3 : Creation de tables 1 seance

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

Bases de données relationnelles

Olivier Mondet

CREATION WEB DYNAMIQUE

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

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

Le Langage SQL version Oracle

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

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

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

MySQL / SQL EXEMPLES

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

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

Création et Gestion des tables

Langage SQL : créer et interroger une base

TP Contraintes - Triggers

Historisation des données

Les bases de données

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

SQL Historique

Intégrité des données

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

A QUOI SERVENT LES BASES DE DONNÉES?

1/ Présentation de SQL Server :

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

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

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

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

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

Les BASES de DONNEES dans WampServer

I4 : Bases de Données

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

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

Bases de Données Relationnelles. Le Modèle Relationnel

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

Introduction à JDBC. Accès aux bases de données en Java

Cours: Administration d'une Base de Données

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

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

INTEGRITE ET BD ACTIVES

Bases de données relationnelles & SQL

LE LANGAGE SQL2 1. INTRODUCTION

I. MySQL : Serveur et SGBD

Compétences Business Objects

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

16H Cours / 18H TD / 20H TP

Information utiles. webpage : Google+ : digiusto/

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

Bases de Données. Plan

BASES DE DONNEES TP POSTGRESQL

Application web de gestion de comptes en banques

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

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

OpenPaaS Le réseau social d'entreprise

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

A QUOI SERVENT LES BASES DE DONNÉES?

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

UML et les Bases de Données

Patrice BOURSIER. Professeur, Univ. de La Rochelle. Bases de Données. Notes de cours

1 Position du problème

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

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

Les bases de données Page 1 / 8

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

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

Mejdi BLAGHGI & Anis ASSÈS

Cours SGBD 1. Concepts et langages des Bases de Données Relationnelles

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

NF26 Data warehouse et Outils Décisionnels Printemps 2010

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

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.

Gestion de base de données

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

1. Base de données SQLite

Bases de Données Avancées

Introduction aux Bases de Données

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

FileMaker 13. Guide de référence SQL

SQL Server ressource SOMMAIRE

Auto-évaluation Oracle: cours de base

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

AGRÉGATION «ÉCONOMIE ET GESTION»

Comprendre les bases de données

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

Introduction à MySQL (ou MySQL en 3 heures montre en main)

Bases de SQL. Hacks 1-6 CHAPITRE UN

Structured Query Language

IFT3030 Base de données. Chapitre 1 Introduction

Transcription:

Les commandes de base sous Unix SQL (Première partie) Walter RUDAMETKIN Bureau F011 Walter.Rudametkin@polytech-lille.fr Création d'une base ([] facultatif) : createdb nombase [ -U comptepostgres ] Destruction d'une base : dropdb nombase [ -U comptepostgres ] Accès à une base : psql nombase [ -U comptepostgres ] 2 SQL : Structured Query Language Historique : En 70, Travaux de Codd De 72 à 75, IBM invente SEQUEL. Puis SEQUEL/2 en 77 pour le prototype System-R de SGBDR. Ce langage donne naissance à SQL Parallèlement, Ingres développe le langage QUEL en 76 Dès 79, Oracle utilise SQL En 81, IBM sort SQL/DS (même année que le PC) En 83, IBM sort DB2 (héritier de System-R) exploitant SQL Le language SQL (2/2) Standard de fait, puis véritable standard - Norme ISO Facile à utiliser car il se réfère toujours aux lignes ou colonnes d'une table Objectif des SGBD : applicable aux non-informaticiens? Langage tout en un : consultation mais aussi création, modification, suppression,... Langage en constante évolution : SQL-86, SQL-89, SQL-92 (SQL 2), SQL-99 (SQL 3, non terminé) 3 4 Syntaxe des commandes Les commandes commencent par un mot clé servant à nommer l'opération de base à exécuter. Chaque commande SQL doit remplir deux exigences : Indiquer les données sur lesquelles elle opère (un ensemble de lignes stockées dans une ou plusieurs classes) Indiquer l'opération à exécuter sur ces données Les domaines par défaut Les ériques : integer, smallint, double, float,... exemple : 23, -122, 3.4, -6.7,... Les alphaériques : char, varchar(n), char(n), text exemples : 'v', 'la vie est un long fleuve...' Le type date (format configurable) exemple : '2002-02-28' Le type boolean : bool exemples :'f', 't' Et bien d'autres encore 5 6

Distinction des commandes Les commandes d'administration (utilisateur-administrateur) : création, suppression de tables, d'index, de vues, de droits d'accès, de fonctions ou procédures, modification de structure de tables. Les commandes d'utilisation : consultation, modification de lignes, suppression de lignes. Création de tables Syntaxe postgres (très simplifiée) [] : 0 ou 1 occurrence, {} 0 ou plusieurs occurrences, : alternative CREATE TABLE table_name (table_element {, table_element} {, table_constraint } ) < table_element> ::= <column_name> <type> [ <column_constraint>*] type ::= VARCHAR <longueur> INT REAL DATE Chaque relation est définie par un nom de relation et une liste d'attributs Chaque attribut est défini par un nom d'attribut et un type de données 7 8 Contrainte d'attribut column_constraint :: [ CONSTRAINT constraint_name ] PRIMARY KEY REFERENCES table_name [ ( column [,... ] ) ] Concerne un seul attribut valeur NULL impossible : NOT NULL Attribut clé : PRIMARY KEY Unicité de l 'attribut : UNIQUE Valeur par défaut : DEFAULT <valeur> Contrainte référentielle : REFERENCES <relation référencée> [ (<attribut référencé>) ] Valeur par défaut : CHECK <condition> Contrainte de table table_constraint:: [ CONSTRAINT constraint_name ] PRIMARY KEY ( column_name [,... ] ) FOREIGN KEY ( column_name [,... ] ) REFERENCES table_name [ ( column [,... ] ) ] Concerne plusieurs attributs Clé composée : PRIMARY KEY (nom_attribut [, nom_attribut]* ) Contrainte référentielle : FOREIGN KEY (nom_attribut [, nom_attribut]* ) REFERENCES nom de relation [(nom_attribut [, nom_attribut]* ) ] 9 10 Exemple de création de tables (1/3) CREATE TABLE utilisateur ( _u INTEGER PRIMARY KEY, nom VARCHAR(30), prenom VARCHAR(30) CREATE TABLE auteur ( _a INTEGER, nom VARCHAR(30), CONSTRAINT cle_auteur PRIMARY KEY (_a) Ex. de création de tables (2/3) CREATE TABLE editeur ( _e INTEGER PRIMARY KEY, nom VARCHAR(30), adresse1 VARCHAR(30), adresse2 VARCHAR(30), code_postal integer, ville VARCHAR(30) CREATE TABLE livre ( _l INTEGER, titre text, n_auteur INTEGER REFERENCES auteur, PRIMARY KEY (_l) 11 12

Ex. de création de tables (3/3) CREATE TABLE reserve ( _l INTEGER REFERENCES livre, _u INTEGER REFERENCES utilisateur, PRIMARY KEY (_l, _u) CREATE TABLE emprunte ( _l INTEGER REFERENCES livre, _u INTEGER REFERENCES utilisateur, PRIMARY KEY (_l, _u) CREATE TABLE edite_par ( _l INTEGER references livre, _e INTEGER references editeur, date_edition date, PRIMARY KEY (_l,_e, date_edition) 13 Insertion de lignes Syntaxe (simplifiée) : INSERT INTO table [ ( column {,...} ) ] VALUES ( expression {,...} ) Les valeurs doivent être fournies dans l'ordre de déclaration des attributs de la liste ou, s'il n'y en n'a pas, celui défini à la création. Si la liste d'attributs est incomplète, les attributs non spécifiés sont insérés avec des valeurs NULL ou DEFAULT 14 Exemples d'insertion INSERT INTO <nom_relation> [(nom_attribut {, nom_attribut} )] VALUES ( valeur {, valeur} On insère une ligne complète : INSERT INTO auteur VALUES (1, 'Uderzo' On insère une ligne complète en spécifiant les colonnes : INSERT INTO auteur (nom, _a) VALUES ('Franquin', 2 On insère une ligne incomplète : INSERT INTO livre(_l, titre) VALUES (1, 'L \'Odyssée d\'astérix'); 15 Suppression de lignes Syntaxe : DELETE FROM table_name [ WHERE condition ] Exemples : DELETE FROM livres where _l=1 ; DELETE FROM utilisateurs ; 16 Modification de lignes Syntaxe : UPDATE table_name SET col = expression {, col = expression} [ WHERE condition ] Modifier une table De plus en plus de possibilités au cours des versions (ex : supprimer une colonne) Modifier une colonne, pour une ligne : UPDATE livre SET auteur=1 WHERE _l=1 Modifier plusieurs colonnes pour une ligne : UPDATE auteur SET nom='victor Hugo', _a=4 where _a=3 Modifier toutes les lignes : Syntaxes : ALTER TABLE nom_table ADD [ COLUMN ] nom_colonne type ALTER TABLE nom_table RENAME [ COLUMN ] nom_colonne TO nouveau_nom ALTER TABLE nom_table RENAME TO nouveau_nom_table ALTER TABLE nom_table DROP [ COLUMN] nom_colonne ALTER TABLE nom_table OWNER to nouveau_proprietaire UPDATE personnel SET salaire=salaire+0.10*salaire 17 18...

Notion de contrainte d'intégrité Définition de contraintes Walter RUDAMETKIN Bureau F011 Walter.Rudametkin@polytech-lille.fr Objectif : Assurer la cohérence logique de la base de données Définition : Assertion vérifiée par les données de la base à tout moment 20 Classification des CIs Structurelles liées au modèle relationnel Exemple : unicité valeur de clé, Comportementales liées aux applications Exemple : «la moyenne des salaires n'est pas inférieure à 1500» Intra-relation met en jeu une seule relation Exemple : non nullité d'un attribut Inter-relation met en jeu plusieurs relations Exemple : intégrité référentielle 21 Les types de contraintes Normalisation SQL-92 Les contraintes de domaine définissent les valeurs prises par un attribut. Les contraintes d'intégrité d'entité précisent la clé primaire de chaque table Les contraintes d'intégrité référentielle assurent la cohérence entre les clés primaires et les clés étrangères 22 Contrainte de domaine (1/4) NOT NULL : Toute valeur de l'attribut X est connue Contrainte de domaine (2/4) DEFAULT : «L'attribut X a, par défaut, la valeur Y» CREATE TABLE personnel (nom TEXT NOT NULL, prenom TEXT) INSERT INTO personnel(nom) VALUES ('dupont') CORRECTE : prenom est NULL INSERT INTO personnel(prenom) VALUES('henri') CREATE TABLE article ( INT NOT NULL, quantite INT DEFAULT 1, date_creation DATE DEFAULT now() ERREUR : nom n'est pas renseigné 23 24 ) Note : La clause NOT NULL est implicite (pour DEFAULT) (sauf si DEFAULT NULL!)

Contrainte de domaine (3/4) UNIQUE : «Toutes les valeurs de l attribut X sont différentes» Éviter les redondances, utile pour les clés CREATE TABLE article ( INT NOT NULL UNIQUE, nom TEXT... Contrainte de domaine (4/4) CHECK : spécifier une contrainte qui doit être vérifiée à tout moment par les tuples de la table : CREATE TABLE personnel ( INT NOT NULL UNIQUE, age INT CHECK (age >= 18), sexe CHAR DEFAULT 'F' CHECK (sexe IN ('M','F')), agefuturepromotion INT CHECK (agefuturepromotion > age)) La clé peut être constituée de plusieurs attributs : CREATE TABLE reserve_par (_client INT NOT NULL, _livre INT NOT NULL, UNIQUE (_client,_livre)) 25 La clause CHECK peut se placer après la définition de tous les attributs. Il est préférable de nommer la contrainte (facultatif) Utilisation de sous-requêtes SQL ( > postgres 7.4.5) CONSTRAINT moy_age CHECK ((select avg(age) from personnel) > 35)) 26 Les contraintes d'intégrité d'entité Permet de spécifier la clé primaire Analogue à NOT NULL UNIQUE Génère un index Peut être spécifié à part lorsque la clé est constituée de plusieurs attributs (idem clause UNIQUE) Contr. d'intégrité référentielle (1/5) Définition : Un attribut (ou groupe d'attributs) d'une relation apparaît comme clé dans une autre relation contrainte inter-relation Exemple : Une personne est affectée à un poste Exemple : CREATE TABLE personnel ( INT PRIMARY KEY, ) 27 Vérification : Insertion d'une personne le poste doit exister Suppression d'un poste ce poste ne doit pas être affecté 28 Contr. d'intégrité référentielle (2/5) Contr. d'intégrité référentielle (3/5) nom Personne 0..* affecte_a> 0..1 libelle libelle 1 'directeur' 2 'ingénieur' 3 'agent' CREATE TABLE poste ( INT PRIMARY KEY, libelle TEXT NOT NULL UNIQUE ) CREATE TABLE personne ( INT PRIMARY KEY, nom TEXT NOT NULL, _poste INT REFERENCES poste) 29 Exécution : INSERT INTO personne VALUES (1,'dupont', 1) -> OK INSERT INTO personne VALUES (2,'durant', 4) -> ERREUR DELETE FROM poste WHERE =1 -> ERREUR UPDATE personne SET _poste=null WHERE =1 -> OK DELETE FROM poste WHERE =1 -> OK 30

Contr. d'intégrité référentielle (4/5) Contr. d'intégrité référentielle (5/5) nom Joueur 0..* joue> 0..1 libelle Joueur nom 1 'Blanc' 2 'Barthez' libelle 1 'goal' 2 'défenseur' 3 'milieu' 4 'attaquant' Joue _joueur _poste 1 2 1 3 2 1 CREATE TABLE poste ( INT PRIMARY KEY, libelle TEXT NOT NULL UNIQUE ) CREATE TABLE joueur ( INT PRIMARY KEY, nom TEXT NOT NULL) CREATE TABLE joue (_joueur INT NOT NULL REFERENCES joueur, _poste INT NOT NULL REFERENCES poste, 31 PRIMARY KEY (_joueur, _poste)) Exécution : INSERT INTO joue VALUES (2,1) -> ERREUR INSERT INTO joue VALUES (2,5) -> ERREUR DELETE FROM poste where =3 -> ERREUR DELETE FROM poste where =4 -> OK 32 Conclusion Mécanisme de contraintes très développé Largement utilisé depuis SQL-92 Syntaxe classique (contraintes nommées) : CONSTRAINT nom [ UNIQUE NOT NULL... ] Mise à jour de contraintes via ALTER TABLE 33