Académique Documents
Professionnel Documents
Culture Documents
Survol du cours
Introduction : le modle relationnel (4.1) Cration de schma dune table et contraintes dintgrit (4.1) Slection de donnes (5.1.1) Modification de donnes (pp.79 82) Types de donnes MM en relationnel (2.1.2)
Dpartement de gnie logiciel et des TI
Source: http://www.mysql.com/why-mysql/marketshare/
GTI660: Introduction aux DBMM Hiver 2013 3
MySQL
Fonctionnalits:
Pas de librairie multimedia (juste Blob,
SQL Server - MS
Solutions: Entreprise, Standard, Workgroup,express, developer, mobile, 64 bits
www.microsoft.com/sql
Fonctionnalits:
Pas de librairie multimedia (juste Blob, Text) XML et Xquery Intelligence daffaire
Access - MS
Fonctionnalits:
Pas de librairie multimedia (juste Blob,
PostgreSQL U of Berkeley
Cot: Logiciel libre, Gratuit
www.postgresql.org
Fonctionnalits:
Pas de librairie multimdia (juste LOB) General purpose Relationnel-Objet Gospatial (types gomtriques)
GTI660: Introduction aux DBMM Hiver 2013 7
DB2 - IBM
Solutions: DB2
http://www-01.ibm.com/software/data/db2/linux-unixwindows/
Librairie Multimdia (SQL2, SQL3,Text, Image, Video, XML, Data Warehouse, Gospatial, RFID,..)
GTI660: Introduction aux DBMM Hiver 2013 8
Oracle
Fonctionnalits: Relationel Objet Librairie Multimdia (SQL2, SQL3,Text, Image, Video, XML, 3Dmaps, Data Warehouse, Gospatial, RFID,)
has entered into a definitive agreement to acquire MySQL AB, an open source icon and developer of one of the world's fastest growing open source databases for approximately $1 billion in total.
http://www.mysql.com/news-and-events/sun-to-acquire-mysql.html
10
Sun Microsystems (NASDAQ: JAVA) announced today they have entered into a definitive agreement under which Oracle will acquire Sun common stock for $9.50 per share in cash. The transaction is valued at approximately $7.4 billion, or $5.6 billion net of Suns cash and debt.
GTI660: Introduction aux DBMM Hiver 2013
http://www.oracle.com/us/corporate/press/018363
11
Unbreakable?
http://www.liquidmatrix.org/blog/wp-content/uploads/2009/04/unbreakable-right.png
12
dinformation et pour les tudes statistiques grande chelle Ex. Millions de tuples cls-valeur : Twitter, Facebook, etc Pour en savoir plus: http://www.christof-strauch.de/nosqldbs.pdf
13
14
Modle relationnel
Types atomiques : littraux, nombres,dates Domaine : sous-ensemble de valeurs d'un type atomique
15
Modle relationnel
Table = ensemble nomm de tuples de mme structure (cardinalit identique, domaines identiques deux deux) Colonne : l'un des domaines de la table Range : l'un des tuples de la table
16
Modle relationnel
Toutes les donnes manipules dans le modle relationnel doivent tre formules sous forme de tables. Oprations relationnelles = manipulations de tables SQL = langage dclaratif et ensembliste Sparation structure / contenu
Dpartement de gnie logiciel et des TI
17
18
19
Syntaxe de spcificationDeColonne
nomColonne [type|domaine] [DEFAULT valeurDeDfaut] [NULL | NOT NULL] [UNIQUE | PRIMARY KEY] [REFERENCES nomTable[listeColonnes]] [[CONSTRAINT nomContrainte] CHECK (conditionSQL)]
Syntaxe de spcificationDeContrainte
[CONSTRAINT nomContrainte] {PRIMARY KEY listeColonnes| FOREIGN KEY listeColonnes REFERENCES nomTable[listeColonnes] [MATCH {PARTIAL|FULL}] [ON DELETE {NO ACTION|CASCADE|SET NULL|SET DEFAULT}] [ON UPDATE {NO ACTION|CASCADE|SET NULL|SET DEFAULT}]| CHECK (conditionSQL) } [[NOT] DEFERRABLE INITIALLY {DEFERRED|IMMEDIATE}]
20
Forme simple
CREATE TABLE Client (noClient INTEGER, nomClient VARCHAR(15), noTlphone VARCHAR(15) )
21
Dpartement de gnie logiciel et des TI
de Robert Godin
SMALLINT
Petit entier (prcision non standardise) Exemples : 2, 3, 459
de Robert Godin
approximatif
DOUBLE PRECISION
Point flottant double prcision (non standardise) Exemples : 3.27265378426E-4, 24E12
FLOAT(n)
Point flottant
prcision minimale est de n chiffres pour la mantisse
de Robert Godin
TIME[(p)]
heure (2 chiffres), minutes (2 chiffres), secondes (2 +p chiffres) Exemple : TIME '14:04:32.25'
TIMESTAMP[(p)]
DATE + TIME Exemple : TIMESTAMP '1998-08-25 14:04:32.25'
INTERVAL
Reprsente un intervalle de temps Exemple : INTERVAL '2' DAY (intervalle de deux jours)
24
Dpartement de gnie logiciel et des TI
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY HH24:MI:SS'; Session altered. SQL> SELECT SYSDATE FROM DUAL; SYSDATE ------------------05-02-2002 09:08:26
SQL> SELECT TO_DATE('05/02/2000', 'DD/MM/YYYY') FROM DUAL; TO_DATE('05/02/2000 ------------------05-02-2000 00:00:00
25
Dpartement de gnie logiciel et des TI
de Robert Godin
Boolen (SQL2)
BIT (n)
Vecteur de n bits. Exemples : B'00100110', X'9F'
CHARACTER LARGE OBJECT (n) (CLOB(n)) NATIONAL CHARACTER LARGE OBJECT (n) (NCLOB(n))
26
Dpartement de gnie logiciel et des TI
Dialecte Oracle
de Robert Godin
NUMBER(p,[c])
numrique exact; p entre 1 et 38 c doit tre entre -84 et +127 (dfaut, c =0)
valeur ngative signifie un arrondissement.
LONG(n)
Chane de caractres de taille variable (n 2G) Maximum une colonne LONG par table
LONG RAW(n)
Binaire de taille variable (n 2G). Maximum une colonne de type LONG RAW par table
27
Dpartement de gnie logiciel et des TI
de Robert Godin
ROWID : identifiant de ligne compos de identificateur de fichier identificateur de bloc relatif au fichier identificateur de ligne relatif au bloc UROWID identificateur universel de ligne ( partir de la version 8.1). distingue index primaire (ORGANIZATION INDEX) Conversions implicites
Type SQL2 CHARACTER (n ), CHAR (n ) NUMERIC (p ,s ), DECIMAL (p ,s ), DEC (p ,s ) INTEGER, INT, SMALLINT FLOAT (p ) REAL DOUBLE PRECISION VARCHAR(n ), CHARACTER VARYING(n ) Type Oracle CHAR (n ) NUMBER (p ,s ) NUMBER (38) FLOAT (p ) FLOAT (63) FLOAT (126) VARCHAR2 (n )
28
Dpartement de gnie logiciel et des TI
DATE ~TIMESTAMP SQL2 Mcanisme d internationalisation Paramtre de configuration NLS_LANG CHARACTER SET DATE_FORMAT ... ALTER SESSION pour modifier ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY' LOB : taille max 4G en 9i, beaucoup + en 10g BFILE : fichier externe
29
Dpartement de gnie logiciel et des TI
Notion de cl
Cl candidate : cl de taille minimale Cl primaire : de prfrence non volutive et sans structure interne implicite, ni signification externe Utilisation de la cl primaire pour rfrencer les enregistrements Cl trangre: rfrence un enregistrement dune autre table
Dpartement de gnie logiciel et des TI
30
Contraintes dintgrit
Contraintes NOT NULL
spcifie si un champ est obligatoire ou non dfaut Oracle : NULL (sauf cl primaire)
CREATE TABLE Affectations (
id_projet
INTEGER,
id_employe
INTEGER,
taux
NUMERIC(5,2) NOT NULL CHECK (taux > 0)
);
GTI660: Introduction aux DBMM Hiver 2013 31
Contraintes dintgrit
Contraintes de cl primaire
unique renseigne (NOT NULL)
CREATE TABLE Affectations (
id_projet
INTEGER,
id_employe
INTEGER,
taux
NUMERIC(5,2) NOT NULL CHECK (taux > 0),
PRIMARY KEY (id_projet, id_employe)
);
Dpartement de gnie logiciel et des TI
32
Contraintes dintgrit
Contraintes de cl trangre (suite)
NO ACTION (restriction - dfaut) CASCADE (effet domino) SET NULL (mise blanc) SET DEFAULT (mise la valeur par dfaut)
33
Contraintes dintgrit
CREATE TABLE Affectations (
id_projet
INTEGER REFERENCES Projets,
id_employe
INTEGER REFERENCES Employes(id_employe)
ON DELETE CASCADE,
taux
NUMERIC(5,2) NOT NULL CHECK (taux > 0),
PRIMARY KEY (id_projet, id_employe));
34
Affectations_Projets
Id_projet
Id_employe
Taux_horaire
Priodes
Id_priode
Date_dbut
Date_n
Statut
Feuilles de temps
Id_projet
Id_employe
Id_periode
Nb_heures
35
Dpartement de gnie logiciel et des TI
Syntaxe
ALTER TABLE nomTable {ADD COLUMN spcificationColonne| DROP COLUMN nomColonne [RESTRICT|CASCADE]| ADD spcificationContrainte| DROP nomContrainte [RESTRICT|CASCADE]| ALTER nomColonne SET DEFAULT valeurDfaut| ALTER nomColonne DROP DEFAULT}
de Robert Godin
SCHEMATA
les SCHEMA crs par CURRENT_USER les DOMAIN accessibles par CURRENT_USER ou PUBLIC les noms des tables accessibles par CURRENT_USER ou PUBLIC les vues accessibles par CURRENT_USER ou PUBLIC les colonnes des TABLE accessibles par CURRENT_USER ou PUBLIC contraintes des TABLE cres par CURRENT_USER contraintes CHECK des TABLE cres par CURRENT_USER ASSERTION cres par CURRENT_USER privilges accords par CURRENT_USER, CURRENT_USER, ou PUBLIC
DOMAINS
TABLES
VIEWS
COLUMNS
TABLE_CONSTRAINTS
CHECK_CONSTRAINTS
ASSERTIONS
TABLE_PRIVILEGES
37
Dpartement de gnie logiciel et des TI
38
TABLE_NAME -----------------------------ALL_ALL_TABLES ALL_NESTED_TABLES ALL_OBJECT_TABLES ALL_PART_TABLES ALL_TABLES ALL_UPDATABLE_COLUMNS USER_ALL_TABLES USER_NESTED_TABLES USER_OBJECT_TABLES USER_PART_TABLES USER_QUEUE_TABLES USER_TABLES USER_TABLESPACES USER_UPDATABLE_COLUMNS TABLE_PRIVILEGES 15 ligne(s) slectionne(s).
Dpartement de gnie logiciel et des TI
Slection de donnes
Syntaxe:
SELECT FROM [ WHERE ] [ GROUP BY ] [ HAVING ] [ ORDER BY ]
40
Syntaxe de requteSQL
selectSQL | (requteSQL) {UNION|INTERSECT|EXCEPT} (requteSQL)
Syntaxe du selectSQL
SELECT FROM [WHERE [GROUP BY [HAVING [ORDER BY {[ALL|DISTINCT] expression [AS nomColonne] [,expression [AS nomColonne]]}|* table [AS nomTable [(nomColonne[,nomColonne])]]] [,table [AS nomTable [(nomColonne[,nomColonne])]]]] conditionSQL] nomColonne [,nomColonne] conditionSQL] nomColonne [ASC|DESC] [,nomColonne[ASC|DESC]]]
...
41
Dpartement de gnie logiciel et des TI
Slection de donnes
Id_client 1 2 3 Nom Sanlessou Chaiquenboi Senzintr Naissance 01/01/1950 01/01/1960 01/01/1950 NAS 111111111 121
Projection
SELECT nom FROM Clients; SELECT * FROM Clients ;
Id_client 1 2 3
42
Dpartement de gnie logiciel et des TI
Slection
NAS 111111111
Autres oprateurs de comparaison : >, <, >=, <=, <>, BETWEEN, NOT BETWEEN, IN, NOT IN, LIKE, IS NULL, IS NOT NULL Combinaisons de comparaisons par AND, OR, NOT
43
Dpartement de gnie logiciel et des TI
44
Dpartement de gnie logiciel et des TI
Slectionner les Articles dont la description n'est pas une valeur nulle
SELECT FROM WHERE * Article description IS NOT NULL
47
Dpartement de gnie logiciel et des TI
Les Articles dont le prixUnitaire incluant la taxe de 15% est infrieur $16.00
SELECT noArticle, prixUnitaire, prixUnitaire*1.15 AS prixPlusTaxe FROM Article WHERE prixUnitaire*1.15 < 16
noArticle 10 20 70
48
Dpartement de gnie logiciel et des TI
Slection de donnes
Id_client 1 2 3 Nom Sanlessou Chaiquenboi Senzintr Naissance 01/01/1950 01/01/1960 01/01/1950 NAS 111111111 121
Id_compte 10 21 30
Id_client 1 2 1
Produit Cartsien
SELECT * FROM Client, Compte;
Id_client 1 1 1 2 ... Nom Sanlessou Sanlessou Sanlessou Chaiquenboi ... Naissance 01/01/1950 01/01/1950 01/01/1950 01/01/1960 ... NAS 111111111 111111111 111111111 121 ... Id_compte No_compte 10 21 30 10 ... A90SJ XC1234 X1390 A90SJ ... Type Chques pargne pargne Chques ... Id_client 1 2 1 1 ... Solde 2300.00 210.00 2100.00 2300.00 ...
49
Dpartement de gnie logiciel et des TI
Slection de donnes
Id_client 1 2 3 Nom Sanlessou Chaiquenboi Senzintr Naissance 01/01/1950 01/01/1960 01/01/1950 NAS 111111111 121
Id_compte 10 21 30
Id_client 1 2 1
50
Dpartement de gnie logiciel et des TI
Slection de donnes
Jointure : syntaxe SQL99
SELECT * FROM Client NATURAL JOIN Compte ; SELECT * FROM Client JOIN Compte ON Client.id_client = Compte.id_client; [LEFT | RIGHT] OUTER JOIN
51
Dpartement de gnie logiciel et des TI
Slection de donnes
Id_client 1 2 3 Nom Sanlessou Chaiquenboi Senzintr Naissance 01/01/1950 01/01/1960 01/01/1950 NAS 111111111 121
Id_compte 10 21 30
Id_client 1 2 1
SELECT Nom, No_compte FROM Client, Compte WHERE Client.id_client = Compte.id_client ORDER BY Nom, No_compte;
52
Dpartement de gnie logiciel et des TI
Slection de donnes
Id_client 1 2 3 Nom Sanlessou Chaiquenboi Senzintr Naissance 01/01/1950 01/01/1960 01/01/1950 NAS 111111111 121
Utilisation de fonctions
Id_compte 10 21 30
Id_client 1 2 1
SELECT Nom, year(naissance) AS an FROM Client ORDER BY Nom; MAX, MIN, COUNT, SUM, AVERAGE SELECT COUNT(*) AS nb_clients, MIN(naissance) AS nais_min FROM Client;
Dpartement de gnie logiciel et des TI
Slection de donnes
Id_client 1 2 3 Nom Sanlessou Chaiquenboi Senzintr Naissance 01/01/1950 01/01/1960 01/01/1950 NAS 111111111 121
Dfinition de groupes
Id_compte 10 21 30
Id_client 1 2 1
Id_client 1 2
Nb_comptes 2 1
Slection de groupes
SELECT id_client, count(*) AS nb_comptes FROM Compte GROUP BY id_client HAVING count(*) > 1;
Dpartement de gnie logiciel et des TI
Id_client 1
Nb_comptes 2
54
Slection de donnes
SELECT id_client FROM Client WHERE id_client IN (SELECT id_client FROM Compte);
Id_compte 10 21 30
Id_client 1 2 1
SELECT id_client FROM Client Id_client WHERE EXISTS (SELECT * 1 2 FROM Compte WHERE Compte.id_client = Client.id_client);
55
Dpartement de gnie logiciel et des TI
Id_client 1 2
Slection de donnes
Nom Sanlessou Chaiquenboi Pasforfor
Nom_emp Travayen Pasforfor
Nombre d'individus qui sont clients et/ou employs SELECT COUNT(*) FROM (( SELECT NAS FROM Client) UNION (SELECT NAS FROM Employe)) Individu;
56
Dpartement de gnie logiciel et des TI
Slection de donnes
Division ensembliste
T1 T2 ?
NOT EXISTS (T1 EXCEPT T2)
T1 T2
T2
T1 T2
T1
57
Slection de donnes
SELECT noCommande FROM Commande WHERE NOT EXISTS ((SELECT noArticle FROM Article WHERE noArticle IN (10, 70)) EXCEPT (SELECT noArticle FROM LigneCommande WHERE noCommande = Commande.noCommande));
noCommande 1 5
Dpartement de gnie logiciel et des TI
noCommande 1 1 1 2 2 3 4 4 5 5 5 6 6 7 7
noArticle 10 70 90 40 95 20 40 50 70 10 20 10 40 50 95
58
Modifications de donnes
Insertion de ranges
INSERT INTO Clients VALUES (5, "Bibi", "1934/10/10", 123111434); INSERT INTO Clients (id_client, nom) VALUES (50, "Bibi2"); INSERT INTO Clients2(id_client, nom, NAS) SELECT id_client, nom, NAS FROM Clients;
59
Dpartement de gnie logiciel et des TI
Modifications de donnes
Mise jour de ranges
UPDATE Comptes SET solde = solde + 100 WHERE solde > 1000; UPDATE Comptes SET solde = solde + 30, No_compte = XYZ99 WHERE id_client IN ( SELECT id_client FROM Clients WHERE nom like 'A%');
60
Dpartement de gnie logiciel et des TI
Modifications de donnes
Suppression de ranges
DELETE FROM Comptes WHERE solde = 0; DELETE FROM Clients WHERE id_client NOT IN (SELECT id_client FROM Comptes); DELETE FROM Clients;
taille maximale limite par le o/s fichier gr par le systme d'exploitation quivaut un LOB externe accessible en lecture seulement
BLOB (binaire) taille maximale 4GB (9i) et 8 TB-128 TB(10g) fait partie de la table logiquement pointeur vers l'objet stock dans la table objet lui-mme stock part des autres champs physiquement LOB interne la BD peut tre mis jour par des INSERT ou des UPDATE
62
Table 2.1
Binary
8 TB 128 TB
Random access Transactions Needs locator Random access Transactions Needs locator Random access Transactions Needs locator Random access Transactions Needs locator Read-only External file
63
BLOB ou BFILE ?
BFILEs nest pas sous le contrle du SGBD. Les utilisateurs peuvent dtruire les fichiers ou changer la localisation sur le disque; Il nest pas possible dutiliser le BFILE dans des requtes SQL3 et des transactions; Un BFILE sert pour enregistrer temporairement un fichier.
64
Dpartement de gnie logiciel et des TI
Au niveau d'Oracle:
cration d'un rpertoire contenant les fichiers; cration des fichiers; assignation des droits d'accs pour que les processus d'Oracle puisse lire les fichiers. dclaration du rpertoire contenant les fichiers (CREATE OR REPLACE DIRECTORY) (par un utilisateur autoris) assignation d'un droit d'accs en lecture ce rpertoire aux usagers autoriss (par celui qui a dclar le rpertoire) cration de la table contenant la colonne BFILE cration de la rfrence au fichier via la fonction BFILENAME
65
Dpartement de gnie logiciel et des TI
propritaire de la table
66
Dpartement de gnie logiciel et des TI
69
Dpartement de gnie logiciel et des TI
70
Dpartement de gnie logiciel et des TI
substr, length
71
Dpartement de gnie logiciel et des TI
72
Dpartement de gnie logiciel et des TI
Types SQL
User-Defined Types : Attributes Methods Oracle Objects Arrays Nested tables Scalar types Built-in data types : Character e.g. CHAR Numeric Date BLOB Type operations scalar atomic or encapsulated
73
Dpartement de gnie logiciel et des TI
74
Dpartement de gnie logiciel et des TI
Exemples
LitSearch http://infolab.stanford.edu/~ullman/fcdb/ito/index.html Database Project: Episode Guide http://infolab.stanford.edu/~ullman/fcdb/silverberg/ home.html
75
Dpartement de gnie logiciel et des TI
Oracle en bref
http://infolab.stanford.edu/~ullman/fcdb/oracle.html
76
Dpartement de gnie logiciel et des TI
http://ss64.com/ora/syntax-datatypes.html
77
Dpartement de gnie logiciel et des TI
Sommaire
On a introduit le modle relationnel On a fait le tour des fonctionnalits de base de SQL (dans sa variante Oracle)
cration de tables mise jour de donnes dans les tables slection de donnes partir des tables