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

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

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

CREATION WEB DYNAMIQUE

Bases de données relationnelles

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

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

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

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

Le Langage De Description De Données(LDD)

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

Olivier Mondet

SQL Historique

TP3 : Creation de tables 1 seance

TP Contraintes - Triggers

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

Le Langage SQL version Oracle

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

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

Cours: Administration d'une Base de Données

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

Les BASES de DONNEES dans WampServer

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

OpenPaaS Le réseau social d'entreprise

Historisation des données

1/ Présentation de SQL Server :

Création et Gestion des tables

MySQL / SQL EXEMPLES

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

A QUOI SERVENT LES BASES DE DONNÉES?

Information utiles. webpage : Google+ : digiusto/

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

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Licence Professionnelle Commerce Electronique. MySQL. Michel DUBOIS Michel Dubois : Support de cours SGBD N 1

Pratique et administration des systèmes

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

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

Langage SQL : créer et interroger une base

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

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

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

Structured Query Language

PHP 4 PARTIE : BASE DE DONNEES

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

I. MySQL : Serveur et SGBD

Les bases de données

Bases de SQL. Hacks 1-6 CHAPITRE UN

BASES DE DONNEES TP POSTGRESQL

Cours Bases de données

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

Bases de données Outils de gestion

Installation et Mise en œuvre de MySQL

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.

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

Mysql. Les requêtes préparées Prepared statements

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

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

LE LANGAGE SQL2 1. INTRODUCTION

Auto-évaluation Oracle: cours de base

Compétences Business Objects

IFT3030 Base de données. Chapitre 1 Introduction

A QUOI SERVENT LES BASES DE DONNÉES?

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

Gestion de base de données

Bases de données relationnelles & SQL

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

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

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

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

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

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

FileMaker 13. Guide ODBC et JDBC

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

Module BD et sites WEB

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

1 Introduction et installation

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

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

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

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

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

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

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

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

CHAPITRE 1 ARCHITECTURE

Les bases de données. Historique

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

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

Mysql avec EasyPhp. 1 er mars 2006

Bases de Données Avancées

FileMaker 10. Guide ODBC et JDBC

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

Transcription:

Le langage SQL (première partie)

1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes

2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley) Successeur du projet Ingres (d ou son nom)

2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley) Successeur du projet Ingres (d ou son nom) http://www.postgresql.org/ (livre intégré au site)

2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley) Successeur du projet Ingres (d ou son nom) http://www.postgresql.org/ (livre intégré au site) Fonctionne sous Unix (linux, solaris, Mac OS X) Portage sous windows (version 8.0)

2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley) Successeur du projet Ingres (d ou son nom) http://www.postgresql.org/ (livre intégré au site) Fonctionne sous Unix (linux, solaris, Mac OS X) Portage sous windows (version 8.0) Gratuit, mais il existe des versions commerciales

2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley) Successeur du projet Ingres (d ou son nom) http://www.postgresql.org/ (livre intégré au site) Fonctionne sous Unix (linux, solaris, Mac OS X) Portage sous windows (version 8.0) Gratuit, mais il existe des versions commerciales S.G.B.D.O.R.

2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley) Successeur du projet Ingres (d ou son nom) http://www.postgresql.org/ (livre intégré au site) Fonctionne sous Unix (linux, solaris, Mac OS X) Portage sous windows (version 8.0) Gratuit, mais il existe des versions commerciales S.G.B.D.O.R. Architecture client/serveur (processus, TCP-IP)

3 Quelques mots sur Postgres (2/2) Compatible SQL-92 De nombreux éléments de SQL-99 Langage QBE (pgaccess)

3 Quelques mots sur Postgres (2/2) Compatible SQL-92 De nombreux éléments de SQL-99 Langage QBE (pgaccess) Plusieurs interfaces de programmation (C, python, php, tcl-tk, JDBC, ODBC,...)

3 Quelques mots sur Postgres (2/2) Compatible SQL-92 De nombreux éléments de SQL-99 Langage QBE (pgaccess) Plusieurs interfaces de programmation (C, python, php, tcl-tk, JDBC, ODBC,...) Gère plusieurs utilisateurs (sécurité)

3 Quelques mots sur Postgres (2/2) Compatible SQL-92 De nombreux éléments de SQL-99 Langage QBE (pgaccess) Plusieurs interfaces de programmation (C, python, php, tcl-tk, JDBC, ODBC,...) Gère plusieurs utilisateurs (sécurité) Définitions de contraintes d intégrité

3 Quelques mots sur Postgres (2/2) Compatible SQL-92 De nombreux éléments de SQL-99 Langage QBE (pgaccess) Plusieurs interfaces de programmation (C, python, php, tcl-tk, JDBC, ODBC,...) Gère plusieurs utilisateurs (sécurité) Définitions de contraintes d intégrité Gère les accès concurrents

3 Quelques mots sur Postgres (2/2) Compatible SQL-92 De nombreux éléments de SQL-99 Langage QBE (pgaccess) Plusieurs interfaces de programmation (C, python, php, tcl-tk, JDBC, ODBC,...) Gère plusieurs utilisateurs (sécurité) Définitions de contraintes d intégrité Gère les accès concurrents Procédures intégrées

3 Quelques mots sur Postgres (2/2) Compatible SQL-92 De nombreux éléments de SQL-99 Langage QBE (pgaccess) Plusieurs interfaces de programmation (C, python, php, tcl-tk, JDBC, ODBC,...) Gère plusieurs utilisateurs (sécurité) Définitions de contraintes d intégrité Gère les accès concurrents Procédures intégrées Spécificités objet

4 Les utilisateurs Postgres L utilisateur postgres dispose de tous les droits (root), création bases, utilisateurs, destruction,...

4 Les utilisateurs Postgres L utilisateur postgres dispose de tous les droits (root), création bases, utilisateurs, destruction,... Les utilisateurs-administrateurs : peuvent créer des bases, peuvent autoriser d autres utilisateurs à accèder à ces bases. Certains utilisateurs-administrateurs peuvent créer d autres utilisateurs.

4 Les utilisateurs Postgres L utilisateur postgres dispose de tous les droits (root), création bases, utilisateurs, destruction,... Les utilisateurs-administrateurs : peuvent créer des bases, peuvent autoriser d autres utilisateurs à accèder à ces bases. Certains utilisateurs-administrateurs peuvent créer d autres utilisateurs. Les utilisateurs peuvent accéder à des bases (selon les droits)

5 Le réseau Polytech Lille Un serveur postgres situé sur le serveur weppes.studserv.deule.net Chaque étudiant à un compte utilisateur-administrateur Accès disponible à distance sur toutes les machines Configuration initiale (.bashrc) : export PGHOST=weppes.studserv.deule.net Par défaut : comptepostgres = compteunix, password (postgres) Modifier le mot de passe (sous psql) : ALTER USER comptepostgres WITH password motdepasse

6 Les commandes de base Commandes sous unix Création d une base ([] facultatif) : createdb nombase [ -U comptepostgres ]

6 Les commandes de base Commandes sous unix Création d une base ([] facultatif) : createdb nombase [ -U comptepostgres ] Destruction d une base : dropdb nombase [ -U comptepostgres ]

6 Les commandes de base Commandes 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 ]

7 Interface texte :-) ou :-( Environnement psql

7 Environnement psql Interface texte :-) ou :-( Reconnait toutes les requêtes SQL!

7 Environnement psql Interface texte :-) ou :-( Reconnait toutes les requêtes SQL! Et bien plus encore (aide en ligne,...)

8 Le langage SQL Structured Query Language Historique : En 70, Travaux de Codd De 72 à 75, IBM invente SEQUEL.

8 Le langage 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.

8 Le langage 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

8 Le langage 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

8 Le langage 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

9 Le langage SQL (2/2) Standard de fait, puis véritable standard - Norme ISO

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

9 Le langage 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 Beaucoup plus facile que l utilisation directe des opérateurs algébriques! Objectif des SGBD : applicable aux non-informaticiens?

9 Le langage 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 Beaucoup plus facile que l utilisation directe des opérateurs algébriques! 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é)

10 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

11 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 (programme de GIS 2), modification de structure de tables. Les commandes d utilisation : consultation, modification de lignes, suppression de lignes.

12 Les domaines par défaut Les numériques : integer, smallint, double, float,... exemple : 23, -122, 3.4, -6.7,...

12 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...

12 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

12 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

12 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...

13 Création de tables Syntaxe postgres (très simplifiée) ([] : 0 ou 1 occurrence, {} 0 ou plusieurs occurrences, :alternative) : CREATE TABLE table_name ( { column_name type [ column_constraint [... ] ] table_constraint } ) column_constraint :: [ CONSTRAINT constraint_name ] PRIMARY KEY REFERENCES table_name [ ( column [,... ] ) ] table_constraint:: [ CONSTRAINT constraint_name ] PRIMARY KEY ( column_name [,... ] ) FOREIGN KEY ( column_name [,... ] ) REFERENCES table_name [ ( column [,... ] ) ]

14 Exemple Création (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) ) ;

15 Exemple Création (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, auteur INTEGER REFERENCES auteur, PRIMARY KEY (num_l) ) ;

16 Exemple Création (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) ) ;

17 Optimisation d accès au tables Mécanisme d index pour favoriser l accès

17 Optimisation d accès au tables Mécanisme d index pour favoriser l accès Pour chaque clé, création automatique d un index

17 Optimisation d accès au tables Mécanisme d index pour favoriser l accès Pour chaque clé, création automatique d un index Avantage : accès rapide lors d une consultation

17 Optimisation d accès au tables Mécanisme d index pour favoriser l accès Pour chaque clé, création automatique d un index Avantage : accès rapide lors d une consultation Inconvénient : modification, suppression de lignes mise à jour du ou des index Exemple : create index livre_titre_index on livre (titre) ;

18 Suppression de tables, d index A chaque commande CREATE, une commande DROP

18 Suppression de tables, d index A chaque commande CREATE, une commande DROP Syntaxes : DROP TABLE name {, name} DROP INDEX index_name [,...]

19 Insertion de lignes Parfois considéré comme une commande purement administrateur

19 Insertion de lignes Parfois considéré comme une commande purement administrateur Syntaxe (simplifiée) : INSERT INTO table [ ( column {,...} ) ] VALUES ( expression {,...} ) SELECT query

20 On insère une ligne complète : Exemples insertion INSERT INTO auteur VALUES (1, Uderzo ) ; Respecter l ordre des colonnes définies à la création (et le type)

20 On insère une ligne complète : Exemples insertion INSERT INTO auteur VALUES (1, Uderzo ) ; Respecter l ordre des colonnes définies à la création (et le type) On insère une ligne complète en spécifiant les colonnes : INSERT INTO auteur (nom, num a) VALUES ( Franquin, 2) ;

20 On insère une ligne complète : Exemples insertion INSERT INTO auteur VALUES (1, Uderzo ) ; Respecter l ordre des colonnes définies à la création (et le type) 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 ) Attention aux incohérences de la base!

21 Suppression de lignes Syntaxe : DELETE FROM nom_table [ WHERE condition ] Exemples : DELETE FROM utilisateurs ;

21 Suppression de lignes Syntaxe : DELETE FROM nom_table [ WHERE condition ] Exemples : DELETE FROM utilisateurs ; DELETE FROM livres where num_l=1 ;

22 Modification de lignes Syntaxe : UPDATE nom table SET col = expression {, col = expression} [ WHERE condition ]

22 Modification de lignes Syntaxe : UPDATE nom table SET col = expression {, col = expression} [ WHERE condition ] Exemples : Modifier une colonne, pour une ligne : UPDATE livre SET auteur=1 WHERE num l=1

22 Modification de lignes Syntaxe : UPDATE nom table SET col = expression {, col = expression} [ WHERE condition ] Exemples : 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

23 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...