Bases de données et SGBD relationnels

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Benoît Piranda Équipe SISAR Université de Marne La Vallée Bases de données Algèbre relationnelle, opérations Requêtes SQL.
Fonctionnalités des SGBD
Le Modèle Logique de Données
Algèbre relationnelle
Planning 11 Séances 2 devoirs en TD Jeudi 25 mars Jeudi 13 mai.
1 Planning AmphiJeudi 15h 16h30 Notes de cours ! TD : 11 Séances 2 devoirs en TD Mercredi 24 mars Mercredi 12 mai.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Initiation au système d’information et aux bases de données
LMD: Langage de Manipulation de Données
Développement d’applications web
Contrôles d'accès aux données
L’utilisation des bases de données
Rappel sur les bases de données et le vocabulaire
BASE DE DONNEES RELATIONNELLES
Les bases de données Cours assuré par: Mlle Smii imen
Chap 4 Les bases de données et le modèle relationnel
Les fonctions de groupes Gestion des transactions
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
Algèbre relationnelle et SQL
Gestion des bases de données
SQL Partie 3 : (LID : Langage d'interrogation de données)
SYSTEME DE GESTION DE BASES DE DONNEES
Staf 2x Cours de bases de données
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
Les concepts et les méthodes des bases de données
Manipulation des données Requêtes simples
Initiation aux bases de données et à la programmation événementielle
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Introduction.
SQL Partie 1.
Traduction des opérations sous MySQL
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Sélection de colonnes (la projection)
Le Langage SQL Introduction. 2 Historique du Langage SQL E. F. CODD : premiers articles dans les années 70 IBM crée le langage SEQUEL (Structured English.
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Création et Gestion de Tables
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Initiation aux SGBD Frédéric Gava (MCF)
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
Les bases de données Séance 8 Jointures.
Bases de données avancées
Séance /10/2004 SGBD - Approches & Principes.
INTRODUCTION AUX BASES DE DONNEES
Introduction aux Bases de Données et au langage SQL
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Cours n°2 Implémentation et exploitation
Introduction Module 1.
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
Bases de données – Cours 3
Le Langage de Manipulation de Données LMD Module 6.
CONCEPTS BD - Synthèse journée 1 :
Le langage SQL LA Plan 1. Introduction Rappels sur le modèle relationnel Les caractéristiques du langage SQL 2. Le Langage d'Interrogation des.
Modélisation et utilisation Aurélien Marion1 Aurélien Marion
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

Bases de données et SGBD relationnels

Bases de données et SGBD relationnels (1) Une base de données représente un ensemble de données d’entreprise, mémorisé par un ordinateur, organisé selon un modèle de données accessible à de nombreuses personnes. Un Système de Gestion de Bases de Données (SGBD) représente un ensemble coordonné de logiciels permettant de décrire, mémoriser, manipuler, traiter, interroger les ensembles de données constituant la base.

Bases de données et SGBD relationnels (2) Un SGBD doit satisfaire 5 conditions : être une bonne représentation du monde réel, fiable et à jour : des contraintes d’intégrité doivent assurer un état cohérent de la base. assurer la non-redondance de l’information : une information doit être implantée une et une seule fois. maintenir l’indépendance des programmes par rapport aux données, permettant aux applications de partager les mêmes données.

Bases de données et SGBD relationnels (3) assurer la sécurité et la confidentialité des données : les données doivent être protégées contre les accès non autorisés et contre les pannes intempestives. autoriser le partage des données, permettant à plusieurs utilisateurs de modifier des données quasiment en même temps tout en assurant un résultat cohérent pour un utilisateur consultant la base.

Historique des SGBD (1) Première génération (années 70) : modèle hiérarchique ou modèle en réseau. Modèle hiérarchique : les données sont représentées sous forme d’une hiérarchie arborescente à plusieurs niveaux. Chaque niveau est constitué d’un ou de plusieurs groupes de données pouvant se décomposer à leur tour. Modèle en réseau : extension du précédent, où les liens entre objets peuvent exister sans restrictions, indépendamment de la structure de l’arbre.

Historique des SGBD (2) Deuxième génération (années 80) : modèle relationnel. Les données sont représentées sous forme tabulaire, avec indépendance totale entre les logiciels et le support de stockage. Langages spécifiques permettant d’accéder aux données de manière assez naturelle : QBE, SQL. Quelques SGBD relationnels : ORACLE, INGRES, SYBASE, DBASE2, ACCESS, mySQL. Troisième génération (fin des années 90) : modèle objets. SGBD objets : O2, ORACLE.

Objectifs d’un modèle relationnel Les principaux objectifs d’un modèle relationnel sont : utiliser des structures de données simples  une table relationnelle est un tableau proposer des langages permettant d’accéder aux données de manière assez naturelle  QBE, SQL proposer l’indépendance entre les données et les traitements exécutés sur ces données permettre à chaque utilisateur d’avoir une vue de la base de données appropriée à ses besoins.

Le modèle relationnel (1) Le concept de base du modèle relationnel est la relation, de structure tabulaire Une relation a plusieurs attributs  Le degré de la relation est le nombre de ces attributs Exemple : la relation PRODUIT, de degré 3, comporte les attributs : num_produit, nom_produit et stock

Le modèle relationnel (3) On représente symboliquement une relation R par un schéma SR de la forme : R(clé, attribut 2, attribut 3, …, attribut n). On aura donc : PRODUIT(num_produit, nom_produit, stock).

Exemple de base de données relationnelle (1) Relation VOL (numvol, depart, arrivee, numav, numpil, jdep, hdep, jarr, harr) numvol : numéro du vol (clé) depart : ville de départ arrivee : ville d’arrivée numav : numéro d’avion numpil : numéro du pilote jdep : jour de départ (clé) hdep : heure de départ jarr : jour d’arrivée harr : heure d’arrivée

Exemple de base de données relationnelle (2) Relation PILOTE(numpilote, nom, prenom) numpilote : numéro du pilote (clé) nom : nom du pilote prenom : prénom du pilote Relation AVION(numavion, type, cap) numavion : numéro de l’avion (clé) type : type de l’avion cap : capacité de l’avion

Exemple de base de données relationnelle (3) Les liens entre ces relations sont appelés des jointures : l’attribut NUMAV de VOL représente le même type d’information que l’attribut NUMAVION de AVION. On écrira : VOL.NUMAV = AVION.NUMAVION l’attribut NUMPIL de VOL représente le même type d’information que l’attribut NUMPILOTE de PILOTE. On écrira : VOL.NUMPIL = PILOTE.NUMPILOTE

SQL Structured Query Language Introduction Interrogation simple Création de table Manipulation des n-uplets

Qu’est ce que Structured Query Language ? Introduction Questions ? Qu’est ce que Structured Query Language ? Comment l’utiliser ?

SQL Définition Langage pour accéder aux données gérées par les SGBD Peut être associé avec d’autres langages (c++, java, PHP, …), Encapsulation de SQL dans un autre langage Langage déclaratif (non procédural) dérivé du calcul relationnel déclarer ce que l’on veut Langage standard Chaque implémentation de SQL a de légères variantes

SQL 3 sous langages Langage de Manipulation de Données (LMD) Permet d’insérer des n-uplets, de modifier leur valeur, de les supprimer Permet d’interroger le SGBD : requêtes Langage de définition de données (LDD) Permet de créer des tables de les modifier et les supprimer de les renommer Langage de contrôle de données (LCD) Permet de gérer le contrôle d’accès aux données des différents utilisateurs

SQL Vue Contrainte Indexation et regroupement (cluster) Transaction Permet de définir des représentations pour différents utilisateurs Contrainte Permet de définir des contraintes sur les valeurs des données Indexation et regroupement (cluster) Permet d’utiliser des mécanisme pour accélérer l’accès aux données Transaction Permet de regrouper des commandes SQL Permet de définir des points de retour à des moments ou les valeurs des données étaient cohérentes

Tables d’exemples Table EMP Table DEP La table des employés EMP qui a le schéma suivant EMP (NUMERO, NOM, JOB, MRG, HIREDATE, SALAIRE, COMM, DEPTNO) Table DEP La table des départements DEPT qui a le schéma suivant DEPT (DEPTNO, DNAME, LOC)

Table d’exemple : EMP

Table d’exemple : DEPT

Requêtes simples Select … from … where …

Manipulation de données Recherche d’information : requête (Queries) SELECT colonnes FROM tables WHERE prédicats (condition de recherche) Stockage de données INSERT INTO table [col1, col2, ..., coln] VALUES (value1, value2, ..., valuen)

La sélection de n-uplets Permet de sélectionner certaines colonnes d'une table, ainsi que certaines lignes d'une table (les lignes étant sélectionnées en fonction de leur contenu). Permet de combiner des informations venant de plusieurs tables.

Requête Syntaxe globale select [distinct] { ' [nom table.]nom _col1 [,nom _col2 ...] } from ( nom table [, nom table2] } [where prédicat] [group by nom _col3 [, nom _col4] [having prédicat] ] [order by nom _col5 [desc] [,nom _col6 [desc] ...] [ ] facultatif Traduction Sélection des colonnes des tables qui répondent à la condition regroupé par groupes qui répondent à la condition sur les groupes ordonné suivant les valeurs des colonnes

Sélection des colonnes (1) L'ordre le plus simple a la syntaxe suivante : select * from nom_table. Dans ce cas, toutes les lignes de la table sont sélectionnées. Limitation de la sélection à certaines colonnes, en indiquant une liste de noms de colonnes à la place de l'astérisque select col1 co12 ... from nom_table Dans ce cas, on parlera projection exemple : sélectionner les noms des employés avec leur JOB associé. select ENAME JOB from EMP;

Sélection des colonnes (2) La clause DISTINCT ajoutée derrière l'ordre SELECT permet d'éliminer les duplications si dans le résultat plusieurs n-uplets sont identiques, un seul sera conservé. exemple : lister les jobs présents dans la table EMP. select DISTINCT JOB from EMP; Remarque : le terme DISTINCT s'applique à toutes les colonnes sélectionnées.

Sélection des lignes (1) La clause WHERE permet de spécifier quelles sont les lignes à sélectionner. Cette clause est suivie d'un prédicat qui sera évalué pour chaque ligne de la table. Seules les lignes pour lesquelles le prédicat est vrai seront sélectionnées. Dans ce cas, on parlera de restriction Syntaxe select … from nom_table where prédicat

Sélection des lignes (2) Un prédicat une expression logique ayant la valeur vrai ou faux. L'expression logique peut contenir des Opérateurs de comparaisons Opérateurs logiques AND, OR NOT BETWEEN LIKE IS NULL

Opérateurs de comparaisons =, !=, >, >=, <, < Exercice sélectionner les employés dont la commission est supérieure au salaire

Opérateurs logiques Opérateurs logiques AND, OR Les opérateurs AND et OR peuvent être utilisés pour combiner plusieurs prédicats. Exercice sélectionner les employés du département 30 ayant un salaire supérieur à 1500. Remarque : L'opérateur AND est prioritaire par rapport à OR. Des parenthèses peuvent être utilisées

Opérateurs NOT, BETWEEN et IN L'opérateur NOT placé devant un prédicat en inverse le sens. Opérateur BETWEEN expr1 BETWEEN expr2 AND expr3 Ce prédicat est vrai si expr1 est compris entre expr2 et expr3, bornes incluses. Opérateur IN : expr1 IN ( expr2, expr3 ....) Ce prédicat est vrai si expr1 est égale à l'une des expressions de la liste entre parenthèses.

Opérateurs LIKE et IS NULL Opérateur LIKE expr LIKE chaîne où chaque chaîne est une chaîne de caractères pouvant contenir l'un des caractères jokers "_" : remplace 1 caractère exactement. "%" : remplace une chaîne de caractères de longueur quelconque, y compris de longueur nulle. Opérateur IS NULL expr IS NULL Ce prédicat est vrai si l'expression à la valeur NULL

Opérateurs Exemple Exercice sélectionner les employés qui ont été embauchés en 1981 syntaxe select ENAME, HIREDATE from EMP whrere HIREDATE like '%‑%‑81'; Exercice Sélectionner tous les employés qui ont une commission ? Sélectionner les employés qui ont un salaire inférieur à 1200 parmi les clerks et les salesmans.

Les expressions (1) Une expression est soit Types des expressions une variable désignée par un nom de colonne, une constante. Types des expressions numérique Caractère date

Les expressions (2) Constante numérique : Constante alphanumérique : nombre contenant éventuellement un signe, un point décimal et un exposant de puissance de dix. Exemple : ‑10, 2.5, 1.2 E‑10 Constante alphanumérique : elle se désigne par une chaîne de caractères entre apostrophes. Exemple 'MARTIN'. Attention majuscule minuscule ‘MARTIN’ ≠ ‘martin’ ≠ ‘Martin’

Les expressions (3) Constante date : elle se désigne par une chaîne de caractères au format suivant jour‑mois‑année. jour sur deux chiffres le mois est désigné par les trois premières lettres de son nom en anglais l'année est sur deux chiffres Exemple '1‑FEB­85‘ Le format est modifiable

Classement des n-uplets sélectionnés (1) On peut, grâce au mot clé ORDER BY, imposer un ordre dans une requête. Cet ordre peut porter sur une ou plusieurs colonnes. II peut être croissant ou décroissant. La clause ORDER BY devra être placée derrière la clause FROM, et après la clause WHERE si elle existe. Syntaxe select col1 , col2 ... from nom table where prédicat order by col1 [DESC], col2 [DESC] ... Le tri se fait d'abord selon la première colonne spécifiée dans l'ORDER BY, puis les n-uplets ayant la même valeur dans la première colonne sont triés selon la deuxième colonne de l'ORDER BY, ....

Classement des n-uplets sélectionnés (2) Exercices sélectionner par ordre croissant tous les employés qui ont été embauché entre le 1ier Décembre 1980 et le 31 Mars 1981. sélectionner les employés triés par job, et pour chaque job triés par salaire décroissant.

La Jointure La jointure permet d'obtenir des informations venant de plusieurs tables dans un même n-uplet résultat. Il existe plusieurs type de jointures l'équi‑jointure La jointure externe La jointure d'une table à elle‑même

Equi‑jointure (1) Une jointure se formule en spécifiant plusieurs tables dans la clause FROM du SELECT. Syntaxe select ... from nom_table1, nom_table2 ... Where … Si aucune condition de sélection WHERE, résultat est le produit cartésien des deux tables, Dans notre exemple, EMP et DEPT peuvent être "reliées" par l'attribut DEPTNO. C'est en utilisant cet attribut que l'on pourra effectuer une jointure.

Equi‑jointure (2) Si l'attribut, qui désigne le numéro de département, a le même nom dans les deux tables, il ait nécessaire de préfixer l'attribut DEPTNO par le nom de la table dans le critère de jointure. dept.deptno et emp.deptno Par contre, le nom des attributs ENAME et LOC n'ont pas besoin d'être préfixés puisqu'il n'y a pas d'ambiguïté sur la table à laquelle ces attributs appartiennent.

Equi‑jointure (3) On joint les deux tables, grâce à la colonne nom. Bibliothèque Personnes nom Dernierlivre Dupond Robinson Jospin Faust Martin Misère nom prénom adresse téléphone Martin Pierre 7 allée des vers 0258941236 Dupond Jean 32 allé Poivrot 0526389152 On joint les deux tables, grâce à la colonne nom. Et on combine cette jointure à une projection sur les attributs nom et dernierlivre. Attention à lever toute ambi-guïté sur les noms d’attribut dans le cas où deux tables possèdent des colonnes de même nom. SELECT Personnes.prénom, dernierlivre FROM Personnes, Bibliothèque WHERE Personnes.nom = Bibliothèque.nom prénom Dernierlivre Jean Robinson Pierre Misère

Equi‑jointure (4) Les requêtes utilisant très souvent les jointures, il a été créé des syntaxes plus rapide si les attributs ont le même nom. Syntaxe SELECT Personnes.nom, nblivres FROM Personnes INNER JOIN Bibliothèque USING (nom) ce qui signifie que les deux relations Personnes et Bibliothèque sont concaténées (INNER JOIN) en utilisant (USING) l’attribut nom.

Equi‑jointure (5) Si les attributs servant pour la jointure ne portent pas le même nom, il faut utiliser la syntaxe ON. Ainsi la jointure précédente peut s’écrire aussi : SELECT Personnes.nom, nblivres FROM Personnes INNER JOIN Bibliothèque ON Personnes.nom = Bibliothèque. emprunteur Remarque La méthode INNER JOIN n’inclus les enregistrements de la première table que s’ils ont une correspondance dans la seconde table. Personnes Bibliothèque Résultat de la jointure Nom Prénom Martin Jean Tartan Pion Dupond Jacques Emprunteur Nblivres Martine 5 Tartan 10 Dupond 3 Nom Nblivres Tartan 10 Dupond 3

Equi‑jointure (6) Exercice synonyme obtenir la liste des employés avec la localité dans laquelle ils travaillent synonyme On peut associer un synonyme à un nom de table, il pourra alors être utilisé en préfixant les noms d'attributs. Par contre, l'ancien nom de la table ne pourra plus être utilisé lors du SELECT. Syntaxe Select EMPNO, DEPTNO from EMP e // e est l’alias de EMP where e.DEPTNO = 20;

La jointure externe (1) Lorsqu'un n-uplet d'une table figurant dans une jointure n'a pas de correspondant dans les autres tables, elle ne satisfait pas le critère d'équi‑jointure et donc ne figure pas dans le résultat de la jointure. Pour obtenir ces n-uplets, il faut accoler (+) au nom de la colonne de la table dans laquelle manquent des éléments, dans la condition d'équi‑jointure. Exemple select ENAME, LOC from EMP, DEPT where EMP.DEPTNO(+) = DEPT.DEPTNO; Exercice sélectionner les départements n'ayant pas d'employés

La jointure externe (2) Le (+) n’existe pas en MySQL Pour remédier aux limites de INNER JOIN, il existe la syntaxe LEFT JOIN qui inclus tous les enregistrements de la première table même s’ils n’ont pas de correspondance dans la seconde table. Dans ce cas précis, l’attribut non renseigné prendra la valeur NULL. La jointure devient : SELECT Personnes.nom, nblivres FROM Personnes LEFT JOIN Bibliothèque ON Personnes.nom = Bibliothèque.nom RIGHT JOIN est l’opération symétrique Personnes Bibliothèque Résultat de la jointure Nom Prénom Martin Jean Tartan Pion Dupond Jacques Nom Nblivres Martine 5 Tartan 10 Dupond 3 Nom Nblivres Martin NULL Tartan 10 Dupond 3

Jointure d'une table à elle‑même II peut être utile de rassembler des informations venant d'un n-uplet d'une table avec des informations venant d'un autre n-uplet de la même table. Utilisation des synonymes obligatoire

Jointure d'une table à elle‑même (2) Exemple Lister les employés en indiquant pour chacun le nom de son manager Syntaxe Select e.ENAME, m.ENAME from EMP e, EMP m where e.MGR = m.EMPNO(+); Exercice Sélectionner les employés gagnant plus que JONES

Modification des données Création, modification, suppression de données

Modification des données Le LMD permet également de modifier les informations contenues dans la base. II existe trois commandes pour effectuer des modifications UPDATE: modifie les valeurs d'une table INSERT : ajoute des n-uplets à une table DELETE : supprime des n-uplets à une table

Mise à jour ‑ UPDATE (1) La commande UPDATE permet de modifier les valeurs d'un ou plusieurs champs syntaxe update table set col1 = nv_valeur, col2 = nv_valeur2 .... [where prédicat] Les valeurs col1, col2 ... sont mises à jour dans tous les n-uplets satisfaisant au prédicats. En l'absence de la clause WHERE, tous les n-uplets sont mis à jours.

Mise à jour ‑ UPDATE (2) On peut faire référence aux anciennes valeurs des champs du n-uplets. Exercice le salaire des analystes est augmenté de 10

Ajout de n-uplets ‑ INSERT (1) La commande INSERT permet d'insérer un n-uplet dans une table en spécifiant les valeurs à insérer. Syntaxe insert into table (col1, col2 ...) values (valeur, valeur ....) La liste des noms de colonne est optionnelle. Si elle est omise, la liste des colonnes sera par défaut la liste de l'ensemble des colonnes de la table dans l'ordre de création de la table. Si une liste de colonne est spécifiée, les colonnes ne figurant pas dans la liste auront la valeur NULL.

Ajout de n-uplets ‑ INSERT (2) exemple, ajouter un nouvel employé insert into EMP values (17657, 'WILSON', 'ANALYST', 7566. ‘10‑MAY‑85' ,3400, NULL, 20); II est possible d'insérer dans une tables plusieurs n-uplets provenant d'une autre table. Syntaxe insert into table (col1, col2 ...) select ....

Suppression de n-uplets La commande DELETE permet de supprimer les n-uplets d'une table Syntaxe delete from table [where prédicat]; En l'absence de la clause WHERE tous les n-uplets de la table sont supprimés. Exemple : supprimer tous les employés du département 20 delete from EMP where DEPTNO = 20 ;

Langage de définition de données Création, modification, suppression de tables

Langage de définition de données (LDD) Le LDD permet de créer, de modifier et de supprimer la description d'une table. II existe 4 commandes pour effectuer des modifications CREATE TABLE: crée une table ALTER TABLE : modifie la structure d'une table DROP TABLE : supprime une table RENAME : renomme la table

création d'une table (1) A la création, la table sera vide. Cependant, un certain espace lui sera alloué. Syntaxe create table nom_table (col1 type1 [NOT NULL], col2 type2 [NOT NULL], ...) L'option NOT NULL assure que le SGBD interdira lors d'un INSERT ou d'un UPDATE que cette colonne contienne la valeur NULL. Par défaut, la valeur NULL est autorisée. Les principaux types des éléments sont : Char (n) n caractères maximum (n <= 255) Number (d) nombre à d chiffres maximum (38 chiffres significatifs) Number (d,p) nombre à d chiffres maximum dont p après le point décimal Date élément de type DATE.

création d'une table (2) Exemple Exercice Création de la table EMP on écrira create table EMP ( EMPNO number(4) not null, ENAME char(10), JOB char(9), MGR number(4), HIREDATE date, SAL number(7,2), COMM number(7,2), DEPTNO number(2) not null ); Exercice Créer une table BONUS, en y insérant les noms et les salaires des MANAGERS.

Modification d'une table (1) II est possible de modifier la définition d'une table, soit ajouter une colonne. soit modifier une colonne existante. II n'est pas possible de supprimer une colonne Ajout d'une colonne : ADD Syntaxe alter table nom_table add col1 type1, col2 type2, ....) Les valeurs de cette colonne seront alors toutes égales à NULL.

Modification d'une table (2) Modification d'une colonne ‑ MODIFY II est possible de modifier la définition d'une colonne, à condition que la nouvelle définition soit compatible avec le contenu de la colonne : il est possible d'augmenter la taille maximale de la colonne, il est possible de spécifies NOT NUL si la colonne né contient aucune valeur NULL... Syntaxe alter table nom_table modify (col1 nv_type1, col2 nv_type2, ....)

Suppression d'une table II est possible de supprimer une table les n-uplets et la définition de la table sont détruites. Syntaxe drop table nom_table

Renommer une table II est possible de renommer une table Syntaxe rename table ancien_nom_table to nouveau_nom_table