SQL : Structured Query Language



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

Le Langage De Description De Données(LDD)

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

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

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

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

TP Contraintes - Triggers

Langage SQL : créer et interroger une base

Le Langage SQL version Oracle

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

Bases de données relationnelles

CREATION WEB DYNAMIQUE

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Olivier Mondet

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

OpenPaaS Le réseau social d'entreprise

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

Bases de données et sites WEB

Intégrité des données

Auto-évaluation Oracle: cours de base

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

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

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

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

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

Devoir Data WareHouse

Création et Gestion des tables

Historisation des données

TP3 : Creation de tables 1 seance

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

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

Les BASES de DONNEES dans WampServer

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

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

Gestion de base de données

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

MySQL / SQL EXEMPLES

CHAPITRE 1 ARCHITECTURE

SQL Historique

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

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

Bases de données avancées

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

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

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

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

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

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Gestion des utilisateurs et de leurs droits

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Les bases de données

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

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

1 Position du problème

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

Configurer la supervision pour une base MS SQL Server Viadéis Services

A QUOI SERVENT LES BASES DE DONNÉES?

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Oracle Learning Library Tutoriel Database 12c Installer le logiciel Oracle Database et créer une Database

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

FileMaker 13. Guide de référence SQL

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

A QUOI SERVENT LES BASES DE DONNÉES?

Information utiles. webpage : Google+ : digiusto/

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

Compétences Business Objects

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

I4 : Bases de Données

Application web de gestion de comptes en banques

Systèmes de Gestion de Bases de Données

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

Bases de données - Modèle relationnel

Introduction aux Bases de Données 2004/2005

Bases de Données Avancées

Corrigés détaillés des exercices

I. MySQL : Serveur et SGBD

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

BASES DE DONNEES TP POSTGRESQL

TP Bases de données réparties

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

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

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

Présentation du module Base de données spatio-temporelles

Mejdi BLAGHGI & Anis ASSÈS

TP Administration Oracle

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

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

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

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

1/ Présentation de SQL Server :

Bases de données. Mihaela Mathieu

1. Base de données SQLite

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

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

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

Bases de SQL. Hacks 1-6 CHAPITRE UN

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

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)

Transcription:

SQL : Structured Query Language Langage de définition de données (LDD/DDL) Langage de manipulation de données (LMD /DML) Introduction à Oracle 1

Objectif On sait faire un schéma conceptuel Personne 1:1 1:n Travaille Entreprise On sait traduire ce schéma en un schéma logique relationnel On veut maintenant implémenter ce schéma relationnel dans une base de données Utilisation du langage SQL Personne(nom, num_ent.) Entreprise(numéro, ) 2

SQL: Trois langages Langage de définition de données (LDD/DDL) création de relations : CREATE TABLE modification de relations: ALTER TABLE suppression de relations: DROP TABLE vues, index. : CREATE VIEW... Langage de manipulation de données (LMD /DML) insertion de tuples: INSERT mise à jour des tuples: UPDATE suppression de tuples: DELETE Langage de requêtes (LMD/DML) SELECT... FROM... WHERE... 3

Terminologie Relation Tuple Attribut Identifiant > table > ligne > colonne (column) > clé primaire (primary key) clé secondaire (unique) Identifiant externe > clé externe (external key) 4

5 Langage de définition de données

Langage de Définition de Données Commandes pour créer, modifier et supprimer les éléments du schéma (pour l instant table et vue) CREATE TABLE : créer une table (une relation), CREATE VIEW: créer une vue particulière sur les données à partir d un SELECT, DROP {TABLE VIEW } : supprimer une table ou une vue, ALTER {TABLE VIEW } : modifier une table ou une vue. 6

CREATE TABLE Commande créant une table en donnant son nom, ses attributs et ses contraintes CREATE TABLE nom_table { ( nom-col type-col [DEFAULT val] [ [CONSTRAINT] contraintecol] )* [ [CONSTRAINT] contrainte-table] AS requête-sql }; Légende : {a b} : a ou b, [option]; * : applicable autant de fois que souhaité; mots en capitale : mots-clé. 7

CREATE TABLE CREATE TABLE nom_table { ( nom-col type-col [DEFAULT val] [ [CONSTRAINT] contrainte-col] )* [ [CONSTRAINT] contrainte-table] AS requête-sql }; Exemple: CREATE TABLE Doctorant (nom VARCHAR(20), prénom VARCHAR(15), année_insc NUMBER(4,2) DEFAULT 2002) 8 CREATE TABLE Doctorant AS SELECT nom, prénom, année_inscr from Etudiant where statut='doctorant';

Domaines de valeurs attributs Types caractères CHAR(nb) : créé avec cette taille VARCHAR(max) : taille variable Types numériques NUMBER(n,p) ex: NUMBER(9,2) 7456123.89 DATE TIMESTAMP (extension de DATE avec h.,min., sec.) 9

10 Contraintes contrainte-col : contrainte sur une colonne PRIMARY KEY UNIQUE NOT NULL REFERENCES nom_table [(nom-col)] [action] CHECK ( condition) contrainte-table : contraintes sur une table PRIMARY KEY (nom-col)* UNIQUE (nom-col)* FOREIGN KEY (nom-col)* REFERENCES nom_table [(nom-col)*] [action] CHECK ( condition)

Attribut obligatoire : NOT NULL Contrainte sur une colonne CREATE TABLE Pays (nom VARCHAR(20) NOT NULL, capitale VARCHAR(20) NOT NULL, surface NUMBER, ) 11

Identifiants : clé primaire / secondaire PRIMARY KEY (A1, A2, ) La clé primaire (si elle existe). attribut référencé par défaut dans les identifiants externes pas de valeur nulle possible c est à dire NOT NULL automatiquement UNIQUE (A1, A2, ) une clé secondaire (s'il en existe) contrainte d'intégrité pour les autres identifiants valeur nulle permise (sauf si NOT NULL) 12

Contraintes PRIMARY KEY PRIMARY KEY : IDENTIFIANT de la relation UNIQUE + NOT NULL Exemple: CREATE TABLE Dept (dpt_id NUMBER(4) PRIMARY KEY, CREATE TABLE Employé ( nom VARCHAR(30), prénom VARCHAR(30), adresse VARCHAR(60),, CONSTRAINT PK_emp PRIMARY KEY (nom, prénom)) UNIQUE et PRIMARY KEY sont incompatibles 13

Contrainte UNIQUE UNIQUE Clé secondaire, pas deux lignes avec la même valeur, évt null Contrainte colonne ou table Exemple: CREATE TABLE Etudiant ( no_etudiant NUMBER UNIQUE, CREATE TABLE Etudiant ( no_etudiant NUMBER CONSTRAINT no_etu_u UNIQUE, 14

UNIQUE : exemples CREATE TABLE Etudiant ( AVS CHAR(11) PRIMARY KEY, N Etudiant NUMBER UNIQUE, nom VARCHAR(20), prénom VARCHAR(30), CONSTRAINT UNIQUE (nom, prénom) ) PRIMARY KEY et UNIQUE sont incompatibles 15

Contraintes d'intégrité référentielle "Foreign key" : " att1 Référence att2" Référence soit une primary key soit une unique key. Exemple: CREATE TABLE Dept (dpt_id manager_id, ) NUMBER(4) PRIMARY KEY, NUMBER(4) CONSTRAINT fk_mgr REFERENCES EMPLOYEE(emp_id) 16 CREATE TABLE Dept (dpt_id NUMBER(4) PRIMARY KEY, manager_id NUMBER(4),, CONSTRAINT fk_mgr FOREIGN KEY (manager_id) REFERENCES EMPLOYEE(emp_id),

Exemple CREATE TABLE Dept (dpt_id manager_id group_id NUMBER(4) PRIMARY KEY, NUMBER(4) REFERENCES EMPLOYEE(emp_id), NUMBER(2) REFERENCES GROUP(group_id); CREATE TABLE Employee ( employee_id NUMBER(4) UNIQUE, last_name VARCHAR2(30), first_name VARCHAR2(30), salary NUMBER(7,2) DEFAULT 1, Commission NUMBER(7,2), department_id NUMBER(2) NOT NULL, CONSTRAINT PK_Emp_id PRIMARY KEY(last_name, first_name)); 17

Intégrité référentielle Maintenir l intégrité référentielle Lors de suppressions ou modifications d'un tuple dont l'identifiant est référencé par un clé étrangère Exemple de problème Pays(nom, capitale, population, surface) JO(lieu, pays, année) pays référence Pays.nom Suppression d'un tuple de Pays: DELETE FROM Pays WHERE nom='grèce'; Que fait-on pour le tuple de JO correspondant? 18

Maintenir intégrité référentielle Possibilités Interdire l'opération Mettre les valeurs de l'identifiant externe à NULL ou à une valeur défaut En cas du suppression: éliminer aussi le tuple avec l'identifiant externe En cas du modification: modifier également la valeur de l'identifiant externe 19

Maintenir intégrité référentielle Deux circonstances ON DELETE ON UPDATE Trois options SET NULL SET DEFAULT: valeur par défaut si elle existe, sinon NULL CASCADE : on répercute la MAJ CREATE TABLE Dept (dpt_id NUMBER(4) PRIMARY KEY, manager_id NUMBER(4) CONSTRAINT fk_mgr REFERENCES EMPLOYEE(emp_id) ON DELETE SET NULL ON UPDATE CASCADE ORACLE: que ON DELETE et SET NULL, CASCADE Si pas cette clause, on ne peut pas détruire le tuple. 20

Contraintes simples Condition que chaque ligne de la table doit vérifier Si contrainte de colonne, porte uniquement sur cette colonne sinon porte sur plusieurs colonnes. Exemple: CREATE TABLE divisions ( div_no NUMBER CONSTRAINT check_divno CHECK (div_no BETWEEN 10 AND 99), div_name VARCHAR2(9) CONSTRAINT check_divname CHECK (div_name = UPPER(div_name)), 21 ); office VARCHAR2(10) CONSTRAINT check_office CHECK (office IN ('BOSTON', 'PARIS','TOKYO'))

Contraintes sur plusieurs colonnes Maintenir les conditions logiques sur les tuples Exemple CREATE TABLE Account ( id NUMBER, income NUMBER(4,0), outcome NUMBER(4,0), balance NUMBER(4,0), PRIMARY KEY (id), CHECK(income - outcome=balance)); 22

23 Résumé, exemple CREATE TABLE Dept (dpt_id NUMBER(4) PRIMARY KEY, manager_id NUMBER(4) REFERENCES EMPLOYEE(emp_id) ON DELETE SET NULL, group_id NUMBER(2) REFERENCES GROUP(group_id) ON DELETE CASCADE ); CREATE TABLE Employee ( emp_id NUMBER(4) UNIQUE, last_name VARCHAR2(30), first_name VARCHAR2(30), salary NUMBER(7,2) DEFAULT 1, Commission NUMBER(7,2), department_id NUMBER(2) NOT NULL, CONSTRAINT check_sal CHECK (salary * commission <= 5000), CONSTRAINT PK_Emp_id PRIMARY KEY(last_name, first_name));

DROP TABLE DROP : supprimer une table supprime la table et tout son contenu DROP TABLE nom_table [CASCADE CONSTRAINTS]; CASCADE CONSTRAINTS Supprime toutes les contraintes référençant une clé primaire (primary key) ou une clé unique (UNIQUE) de cette table Si on cherche à détruire une table dont certains attributs sont référencés sans spécifier CASCADE CONSTRAINT, Oracle retourne une erreur. 24

ALTER TABLE Modifier la définition d une table: Changer le nom de la table, mot clé : RENAME Ajouter une colonne ou une contrainte, mot clé : ADD Modifier une colonne ou une contrainte, mot clé : MODIFY Supprimer une colonne ou une contrainte, mot clé : DROP Renommer une colonne ou une contrainte, mot clé : RENAME 25

ALTER TABLE sur les colonnes ALTER TABLE nom-table { RENAME TO nouveau-nom-table ADD ( [ (nom-col type-col [DEFAULT valeur] [contrainte-col])* ] MODIFY (nom-col [type-col] [DEFAULT valeur] [contrainte-col])* DROP COLUMN nom-col [CASCADE CONSTRAINTS] RENAME COLUMN old-name TO new-name }; 26

Renommer une table RENAME TO nouveau-nom-table ALTER TABLE country RENAME TO PAYS 27

Ajouter une colonne ADD ( [ (nom-col type-col [DEFAULT valeur] [contrainte-col])* ] ALTER TABLE Pays ADD (duty NUMBER(2,2) DEFAULT 1 CHECK (duty < 10), visa_needed VARCHAR2(3)); 28

Modifier une colonne MODIFY (nom-col [type-col] [DEFAULT valeur] [contrainte-col])* ALTER TABLE PAYS MODIFY (duty NUMBER(3,2));!! Tout ce qui n'est pas spécifié dans le MODIFY n'est pas modifié, par ex. ici default et check 29

Supprimer une colonne DROP COLUMN nom-col [CASCADE CONSTRAINTS] ALTER TABLE PAYS DROP COLUMN visa_needed CASCADE CONSTRAINTS; 30

Renommer une colonne RENAME COLUMN old-name TO newname ALTER TABLE PAYS RENAME COLUMN duty to taxe; 31

ALTER TABLE sur les contraintes ALTER TABLE nom-table { ADD contrainte-table DROP { PRIMARY KEY UNIQUE ( nom-colonne)* CONSTRAINT nom-contrainte } [CASCADE CONSTRAINTS] RENAME CONSTRAINT old-name TO new-name MODIFY [CONSTRAINT] nom-contrainte status-contrainte}; 32

Ajouter une contrainte ADD contrainte-table ALTER TABLE employees ADD CONSTRAINT check_comp CHECK (salary + (commission_pct*salary) <= 5000); ALTER TABLE country ADD CONSTRAINT pk_country primary key (name); 33

Supprimer une contrainte DROP { PRIMARY KEY UNIQUE ( nom-colonne)* CONSTRAINT nom-contrainte } [CASCADE CONSTRAINTS] ALTER TABLE departments DROP PRIMARY KEY CASCADE CONSTRAINTS; 34

Exemples 35 ALTER TABLE employees ADD CONSTRAINT check_comp CHECK (salary + (commission_pct*salary) <= 5000); ALTER TABLE country ADD CONSTRAINT pk_country primary key (name); ALTER TABLE departments DROP PRIMARY KEY CASCADE CONSTRAINTS; ALTER TABLE country RENAME CONSTRAINT pk_country to pkc;

36 Langage de Manipulation de données

Manipulation des données INSERT INTO: ajouter un tuple dans une table ou vue UPDATE: changer les tuples d une table ou vue DELETE FROM: éliminer les tuples d une table ou vue 37

INSERT INTO INSERT INTO olympics VALUES (1996, Atlanta, U.S.A ) 1996 Atlanta U.S.A. INSERT INTO olympics (year, location) VALUES (1996, Atlanta ) 38 1996 Atlanta null

INSERT INSERT INTO {nom_table nom_vue} [ (nom_col)* ] { VALUES (valeur)* sous-requête }; 39

UPDATE UPDATE country SET capital = Londres WHERE country = Ireland Londres 40

UPDATE UPDATE {nom_table nom_vue} SET { (nom_col)* = (sous-requête) nom_col = { valeur (sous-requête)} }* WHERE condition; 41

DELETE FROM DELETE FROM country WHERE population > 50 -> éliminer les pays dont la population est > 50 DELETE FROM country -> éliminer tous les tuples 42

DELETE DELETE FROM {nom_table nom_vue} WHERE condition; 43

44 Oracle

Oracle : Architecture 45 SQL*Plus Administration Tools - Server Manager (UNIX) - Oracle Enterprise Manager (Windows NT) - CASE Tools - WebDB - Oracle Designer - Oracle Developer - JDeveloper Suite - Dedicated Applications Application Interfaces -SQL, PL/SQL, -Pro*C/C++, OCI, -JDBC, SQLJ - Oracle Clients Net8 Network Listener Protocole réseau Oracle Instance Server Processes Systen Global Area - SGA - (memory) Database Control files, Datafiles And Redo Log Files Oracle Server

Accès aux données SQL*Plus Permet d ouvrir une session sur oracle PL/SQL Suivant le username on pourra faire des actions différentes Extention procédurale d oracle à SQL Embedded-SQL C/C++ Cobol Java 46

SQL*Plus, Invocation SQL*Plus : commande: Sqlplus [username][/password][@net_service_name] exemple : sqlplus BDR1/BDR1 SQL>sql_statement;<return> SQL>select * from emp;<return> Quitter SQL*Plus: SQL>exit;<return> 47

SQL*Plus, quelques commandes DESC[RIBE] [schema.]object Liste les colonnes de l objet spécifié (table, view, etc.) ex: DESC Employe STA[RT] file_name[.ext] [arg...] ou @file_name[.ext] [arg...] exécute le script SQL spécifié. SPO[OL] [file_name[.ext] OFF OUT] Stocke le résultat de la requête dans un fichier. SQL>SPOOL mylog.lst SQL> SQL>SPOOL OFF Plus de commandse: SQL*Plus User's Guide and Reference Aide mémoire: http://lbdwww.epfl.ch/f/teaching/courses/ Documentation oracle: http://lbdwww.epfl.ch/f/teaching/courses 48

Oracle Notre interface d'accès: SQLPLUS Comment vous connecter à Oracle? 1) Vous vous connectez sur une machine en INF3 2) Dans un terminal vous tapez la commande sqlplus avec le username et le password qui vous seront donnés 3) Vous obtenez: sqplus> 4) Vous êtes connecté sous oracle. Vous pouvez tapez vos ordres sql sqlplus> create table toto (i integer); 49

Oracle (suite) Vous êtes connecté dans la partie du SGBD qui vous est réservée. Chaque BD possède une liste de username, i.e. user qui peuvent se connecter à la BD A ce username sont associés : Storage settings and Quotas Profil et limites en terme de ressource Privilège et/ou rôle 50

Interfaces PL/SQL Extension procédurale (d Oracle) à SQL: déclarer constantes et variables Traitements procéduraux (IF-THEN-ELSE, WHILE, FOR, etc.) définir procédures et fonctions, Gérer les erreurs, exception (ADA) 51

PL/SQL DECLARE acct_balance NUMBER(11,2); acct CONSTANT NUMBER(4) := 3; debit_amt CONSTANT NUMBER(5,2) := 500.00; BEGIN SELECT bal INTO acct_balance FROM accounts WHERE account_id = acct FOR UPDATE OF bal; IF acct_balance >= debit_amt THEN UPDATE accounts SET bal = bal - debit_amt WHERE account_id = acct; ELSE INSERT INTO temp VALUES (acct, acct_balance, 'Insufficient funds'); -- insert account, current balance, and message END IF; COMMIT; END; 52

53 Pro*C/C++ Embedded SQL ordres SQL placés dans un programme comme C, C++ Example: /*declare section*/ EXEC SQL BEGIN DECLARE SECTION VARCHAR username[uname_len]; VARCHAR password[pwd_len];... EXEC SQL END DECLARE SECTION... main() { char temp_char[32]; /* connect to oracle*/ strncpy((char *) username.arr, "bdr1", UNAME_LEN); username.len = strlen((char *) username.arr); strncpy((char *) password.arr, "bdr1", PWD_LEN); password.len = strlen((char *) password.arr); EXEC SQL CONNECT :username IDENTIFIED BY :password; /* execute queries */ strcpy( (char *) emp_name, "SMITH"); EXEC SQL SELECT ename, sal, comm INTO :emprec INDICATOR :emprec_ind FROM EMP WHERE ENAME = :emp_name; printf("%-8s\t%6.2f\t\t%6.2f\n", emprec.emp_name.arr, emprec.salary, emprec.commission); } /* close connection */ EXEC SQL COMMIT WORK RELEASE; exit(0);

Oracle 10, Documentation 54 http://lbdwww/f/teaching/courses/oracle/index.htm