SQL (Première partie) Walter RUDAMETKIN

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)

Bases de données relationnelles

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

CREATION WEB DYNAMIQUE

Olivier Mondet

TP3 : Creation de tables 1 seance

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

MySQL / SQL EXEMPLES

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

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

TP Contraintes - Triggers

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

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

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

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

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

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

I4 : Bases de Données

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

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

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

Bases de données relationnelles & SQL

16H Cours / 18H TD / 20H TP

INTEGRITE ET BD ACTIVES

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

OpenPaaS Le réseau social d'entreprise

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

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

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

UML et les Bases de Données

NF26 Data warehouse et Outils Décisionnels Printemps 2010

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 Avancées

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

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

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

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

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

Introduction aux Bases de Données

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

FileMaker 13. Guide de référence SQL

TP 8: LES OPERATEURS ENSEMBLISTES

Auto-évaluation Oracle: cours de base

SQL Server ressource SOMMAIRE

Bases de données avancées

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 données. PTSI Lycée Eiffel. 28 février 2014

AGRÉGATION «ÉCONOMIE ET GESTION»

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

Comprendre les bases de données

SQL Server 2000, Analysis Services et DTS

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

Transcription:

SQL (Première partie) Walter RUDAMETKIN Bureau F011 Walter.Rudametkin@polytech-lille.fr

Les commandes de base sous Unix 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 3

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é) 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 5

Les domaines par défaut Les numériques : integer, smallint, double, float,... exemple : 23, -122, 3.4, -6.7,... Les alphanumé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 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. 7

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 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> 9

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]* ) ] 10

Exemple de création de tables (1/3) CREATE TABLE utilisateur ( num_u INTEGER PRIMARY KEY, nom VARCHAR(30), prenom VARCHAR(30) ) ; CREATE TABLE auteur ( ) ; num_a INTEGER, nom VARCHAR(30), CONSTRAINT cle_auteur PRIMARY KEY (num_a) 11

Ex. de création de tables (2/3) CREATE TABLE editeur ( ) ; num_e INTEGER PRIMARY KEY, nom VARCHAR(30), adresse1 VARCHAR(30), adresse2 VARCHAR(30), code_postal integer, ville VARCHAR(30) CREATE TABLE livre ( ) ; num_l INTEGER, titre text, n_auteur INTEGER REFERENCES auteur, PRIMARY KEY (num_l) 12

Ex. de création de tables (3/3) CREATE TABLE reserve ( num_l INTEGER REFERENCES livre, num_u INTEGER REFERENCES utilisateur, PRIMARY KEY (num_l, num_u) ) ; CREATE TABLE emprunte ( num_l INTEGER REFERENCES livre, num_u INTEGER REFERENCES utilisateur, PRIMARY KEY (num_l, num_u) ) ; CREATE TABLE edite_par ( ) ; num_l INTEGER references livre, num_e INTEGER references editeur, date_edition date, PRIMARY KEY (num_l,num_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, num_a) VALUES ('Franquin', 2) ; On insère une ligne incomplète : INSERT INTO livre(num_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 num_l=1 ; DELETE FROM utilisateurs ; 16

Modification de lignes Syntaxe : UPDATE table_name SET col = expression {, col = expression} [ WHERE condition ] Modifier une colonne, pour une ligne : UPDATE livre SET auteur=1 WHERE num_l=1 Modifier plusieurs colonnes pour une ligne : UPDATE auteur SET nom='victor Hugo', num_a=4 where num_a=3 Modifier toutes les lignes : UPDATE personnel SET salaire=salaire+0.10*salaire 17

Modifier une table De plus en plus de possibilités au cours des versions (ex : supprimer une colonne) 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... 18

Définition de contraintes Walter RUDAMETKIN Bureau F011 Walter.Rudametkin@polytech-lille.fr

Notion de contrainte d'intégrité 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 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') ERREUR : nom n'est pas renseigné 23

Contrainte de domaine (2/4) DEFAULT : «L'attribut X a, par défaut, la valeur Y» CREATE TABLE article ( ) num INT NOT NULL, quantite INT DEFAULT 1, date_creation DATE DEFAULT now() Note : La clause NOT NULL est implicite (pour DEFAULT) (sauf si DEFAULT NULL!) 24

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 (num INT NOT NULL UNIQUE, nom TEXT... La clé peut être constituée de plusieurs attributs : CREATE TABLE reserve_par (num_client INT NOT NULL, num_livre INT NOT NULL, UNIQUE (num_client,num_livre)) 25

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 ( num INT NOT NULL UNIQUE, age INT CHECK (age >= 18), sexe CHAR DEFAULT 'F' CHECK (sexe IN ('M','F')), agefuturepromotion INT CHECK (agefuturepromotion > age)) 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) Exemple : CREATE TABLE personnel (num INT PRIMARY KEY, ) 27

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 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) num nom Personne 0..* affecte_a> 0..1 num libelle Poste CREATE TABLE poste (num INT PRIMARY KEY, libelle TEXT NOT NULL UNIQUE ) CREATE TABLE personne (num INT PRIMARY KEY, nom TEXT NOT NULL, num_poste INT REFERENCES poste) 29

Contr. d'intégrité référentielle (3/5) Poste num libelle 1 'directeur' 2 'ingénieur' 3 'agent' Exécution : INSERT INTO personne VALUES (1,'dupont', 1) -> OK INSERT INTO personne VALUES (2,'durant', 4) -> ERREUR DELETE FROM poste WHERE num=1 -> ERREUR UPDATE personne SET num_poste=null WHERE num=1 -> OK DELETE FROM poste WHERE num=1 -> OK 30

Contr. d'intégrité référentielle (4/5) num nom Joueur 0..* joue> 0..1 num libelle Poste CREATE TABLE poste (num INT PRIMARY KEY, libelle TEXT NOT NULL UNIQUE ) CREATE TABLE joueur (num INT PRIMARY KEY, nom TEXT NOT NULL) CREATE TABLE joue (num_joueur INT NOT NULL REFERENCES joueur, num_poste INT NOT NULL REFERENCES poste, 31 PRIMARY KEY (num_joueur, num_poste))

Contr. d'intégrité référentielle (5/5) Joueur num nom 1 'Blanc' 2 'Barthez' Poste num libelle 1 'goal' 2 'défenseur' 3 'milieu' 4 'attaquant' Joue num_joueur num_poste 1 2 1 3 2 1 Exécution : INSERT INTO joue VALUES (2,1) -> ERREUR INSERT INTO joue VALUES (2,5) -> ERREUR DELETE FROM poste where num=3 -> ERREUR DELETE FROM poste where num=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