Sie sind auf Seite 1von 39

Cours base de donnes

1. Extraire des donnes laide de


linstruction SQL SELECT
2. Restreindre et trier les donnes
3. Utiliser des fonctions monolignes afin de
personnaliser la sortie
4. Afficher des donnes agrges laide des
fonctions de groupe
5. Afficher des donnes de plusieurs tables
6. Utiliser des sous interrogations
7. Utiliser des oprateurs ensemblistes

2
8. Manipuler des donnes
9. Utiliser des instructions LDD pour crer et
grer des tables

3
Cours base de donnes
Rpartir les principaux objets de base de
donnes en catgories.
Modifier la structure dune table
Rpertorier les types de donnes
disponibles pour les colonnes
Crer une table simple
Comprendre la faon dont les contraintes
sont cres lors de la cration de la table.
Dcrire le fonctionnement des objets.

5
Les noms des tables et des colonnes:

Doivent commencer par une lettre


Doivent comporter de 1 30 caractres
Doivent contenir uniquement les caractres A-Z,
a-z, 0-9, _, $ et #
Ne doivent pas dupliquer le nom dun autre objet
appartenant au mme utilisateur
Ne doivent pas tre un mot rserv du serveur
Oracle.

6
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);

Indiquez:
Le nom de la table
Le nom de la colonne, son type de donnes et sa
taille.

7
Les tables appartenant dautres utilisateurs
ne rsident pas dans le schme de lutilisateur.
Vous devez utiliser le nom du propritaire
comme prfixe pour ces tables.

USERA USERB
SELECT * SELECT *
FROM userB.employees; FROM userA.employees;

8
Indiquezune valeur par dfaut pour une
colonne lors de linsertion.
... hire_date DATE DEFAULT SYSDATE, ...

Letype de donnes par dfaut doit


correspondre au type de colonne.

CREATE TABLE hire_dates


(id NUMBER(8),
hire_date DATE DEFAULT SYSDATE);
Table created.

9
Crez la table
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
create_date DATE DEFAULT SYSDATE);
Table created.

Vrifiez la cration de la table


DESCRIBE dept

10
Data Type Description
VARCHAR2(size) Donnes de type caractre de longueur variable

CHAR(size) Donnes de type caractre de longueur fixe

NUMBER(p,s) Donnes numriques de longueur variable

DATE Valeur de date et dheure

LONG Donnes de type caractre de longueur variable


(jusqu 2 GB)

11
Les contraintes appliquent des rgles au
niveau table.
Les contraintes empchent la suppression
dune table sil existe des dpendances.
Les types de contrainte suivants sont pris en
charge:
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK

12
Vouspouvez crer une contrainte
diffrents instants:
Lors de la cration de la table
Aprs la cration de la table

Dfinissez
une contrainte au niveau colonne
ou au niveau table.

13
Syntaxe
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);
Contrainte au niveau colonne
column [CONSTRAINT constraint_name] constraint_type,

Contrainte au niveau table


column,...
[CONSTRAINT constraint_name] constraint_type
(column, ...),

14
Contrainte au niveau colonne:
CREATE TABLE employees(
employee_id NUMBER(6)
CONSTRAINT emp_emp_id_pk PRIMARY KEY,
first_name VARCHAR2(20),
1
...);
Contrainte au niveau table
CREATE TABLE employees(
employee_id NUMBER(6),
first_name VARCHAR2(20),
...
job_id VARCHAR2(10) NOT NULL,
2
CONSTRAINT emp_emp_id_pk
PRIMARY KEY (EMPLOYEE_ID));

15
Garantit que les valeurs NULL ne sont pas
autorises pour la colonne :

Contrainte NOT Contrainte Absence de NOT NULL


NULL (aucune NOT NULL contrainte (nimporte quelle
ligne ne peut ligne peut contenir une valeur
contenir de NULL pour cette colonne)
valeur NULL pour
cette colonne)
16
Contrainte UNIQUE
EMPLOYEES

INSERT INTO

Autoris
Non autoris :
existe dj

17
Dfinie au niveau table ou au niveau colonne

CREATE TABLE employees(


employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
...
CONSTRAINT emp_email_uk UNIQUE(email));

18
DEPARTMENTS
PRIMARY KEY


Non autoris INSERT INTO
(valeur null)

Non autoris
(50 existe dj)

19
DEPARTMENTS

PRIMARY
KEY

EMPLOYEES
FOREIGN
KEY

INSERT INTO Non autoris


(9 nexiste pas)

Autoris
20
Dfinie au niveau table ou au niveau colonne :

CREATE TABLE employees(


employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
...
department_id NUMBER(4),
CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
REFERENCES departments(department_id),
CONSTRAINT emp_email_uk UNIQUE(email));

21
FOREIGN KEY : dfinit la colonne dans la
table enfant au niveau contrainte de table.
REFERENCES : identifie la table et la colonne
dans la table parent.
ON DELETE CASCADE : supprime les lignes
dpendantes dans la table enfant lorsquune
ligne de la table parent est supprime.
ON DELETE SET NULL: convertit les valeurs
des cls trangres dpendantes en valeurs
NULL.

22
Dfinit une condition laquelle chaque ligne
doit satisfaire
Les expressions suivantes ne sont pas
autorises:
Appels de fonction telle que SYSDATE
Interrogations qui font rfrence dautres
valeurs dans dautres lignes.
..., salary NUMBER(2)
CONSTRAINT emp_salary_min
CHECK (salary > 0),...

23
CREATE TABLE employees1
( employee_id NUMBER(6)
CONSTRAINT emp_employee_id1 PRIMARY KEY,
first_name VARCHAR2(20),
last_name VARCHAR2(25)
CONSTRAINT emp_last_name_nn1 NOT NULL,
email VARCHAR2(25)
CONSTRAINT emp_email_nn1 NOT NULL
CONSTRAINT emp_email_uk1 UNIQUE,
phone_number VARCHAR2(20),
hire_date DATE
CONSTRAINT emp_hire_date_nn1 NOT NULL,
job_id VARCHAR2(10)
CONSTRAINT emp_job_nn1 NOT NULL,
salary NUMBER(8,2)
CONSTRAINT emp_salary_ck1 CHECK (salary>0),
commission_pct NUMBER(2,2),
manager_id NUMBER(6),
department_id NUMBER(4)
CONSTRAINT emp_dept_fk1 REFERENCES
departments (department_id));
24
CREATE TABLE employees2
( employee_id NUMBER(6),
first_name VARCHAR2(20),
last_name VARCHAR2(25) NOT NULL ,
email VARCHAR2(25) NOT NULL ,
phone_number VARCHAR2(20),
hire_date DATE NOT NULL ,
job_id VARCHAR2(10) NOT NULL ,
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
manager_id NUMBER(6),
department_id NUMBER(4),
CONSTRAINT emp_employee_id2 PRIMARY KEY (employee_id),
CONSTRAINT emp_email_uk2 UNIQUE (email),
CONSTRAINT emp_salary_ck2 CHECK (salary>0),
CONSTRAINT emp_dept_fk2 FOREIGN KEY (department_id)
REFERENCES departments (department_id));

25
UPDATE employees
SET department_id = 55
WHERE department_id = 110;

UPDATE employees
*
ERROR at line 1:
ORA-02291: integrity constraint (HR.EMP_DEPT_FK)
violated - parent key not found

26
Vousne pouvez pas supprimer une ligne
contenant une cl primaire utilise comme
cl trangre dans une autre table.

DELETE FROM departments


WHERE department_id = 60;

DELETE FROM departments


*
ERROR at line 1:
ORA-02292: integrity constraint (HR.EMP_DEPT_FK)
violated - child record found

27
Crez une table et insrez des lignes en
combinant linstruction CREATE TABLE et
loption AS sous-interrogation.
CREATE TABLE table
[(column, column...)]
AS subquery;

Mettez en correspondance le nombre de


colonnes indiqu avec le nombre de colonnes
de sous-interrgation.
Dfinissez les colonnes avec des noms et des
valeurs par dfaut.
28
CREATE TABLE dept80
AS
SELECT employee_id, last_name,
salary*12 ANNSAL,
hire_date
FROM employees
WHERE department_id = 80;
Table created.

DESCRIBE dept80

29
Utilisez linstruction ALTER TABLE pour,

Ajouter une colonne


Modifier une colonne existante
Supprimer une colonne
Ajouter une contrainte
Supprimer une contrainte

30
Utilisez
linstruction ALTER TABLE pour
ajouter, modifier ou supprimer des colonnes.
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);

ALTER TABLE table


MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);
alter table machine rename column code to codem

ALTER TABLE table


DROP (column);

31
Utilisez la clause ADD pour ajouter des colonnes.

ALTER TABLE dept80


ADD (job_id VARCHAR2(9));
Table altered.

La nouvelle colonne devient la dernire colonne.

32
Vous pouvez changer le type de donnes, la
taille et la valeur par dfaut dune colonne.
ALTER TABLE dept80
MODIFY (last_name VARCHAR2(30));
Table altered.

Unemodification de la valeur par dfaut


affecte uniquement les insertions suivantes
dans la table.

33
Utilisez
la clause DROP COLUMN pour
supprimer les colonnes de la table dont vous
navez plus besoin.
ALTER TABLE dept80
DROP COLUMN job_id;
Table altered.

34
Utilisez linstruction ALTER TABLE pour:
Ajouter ou supprimer une contrainte, sans pour
autant modifier sa structure.
Activer ou dsactiver des contraintes
Ajouter une contrainte NOT NULL laide de la
clause MODIFIY.

ALTER TABLE <table_name>


ADD [CONSTRAINT <constraint_name>]
type (<column_name>);

35
Ajouter une contrainte FOREIGN KEY la
table EMP2 en indiquant quun manager doit
dj exister en tant quemploy valide dans
la table EMP2.
ALTER TABLE emp2
modify employee_id Primary Key;
Table altered.

ALTER TABLE emp2


ADD CONSTRAINT emp_mgr_fk
FOREIGN KEY(manager_id)
REFERENCES emp2(employee_id);
Table altered.

36
Supprimer la contrainte manager de la table EMP2

ALTER TABLE emp2


DROP CONSTRAINT emp_mgr_fk;
Table altered.

Supprimer la contrainte PRIMARY KEY sur la table


DEPT2 et supprimer la contrainte FOREIGN KEY
associe sur la colonne EMP2.DEPARTMENT_ID
ALTER TABLE dept2
DROP PRIMARY KEY CASCADE;
Table altered.

37
Toutes les donnes de la table sont
supprimes, ainsi que sa structure.
Toutes les transactions en cours sont
valides.
Toutes les contraintes sont supprimes.
Vous ne pouvez pas annuler linstruction
DROP TABLE.

DROP TABLE dept80;


Table dropped.

38
Dans ce chapitre, vous avez appris :

Rpertorier les principaux objets de base de


donnes.
utiliser linstruction CREATE TABLE et inclure des
contraintes.
Modifier la structure dune table.
Ajouter ou supprimer une contrainte une table.
Supprimer une table.

39

Das könnte Ihnen auch gefallen