Académique Documents
Professionnel Documents
Culture Documents
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:
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, ...
9
Crez la table
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
create_date DATE DEFAULT SYSDATE);
Table created.
10
Data Type Description
VARCHAR2(size) Donnes de type caractre de longueur variable
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,
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 :
INSERT INTO
Autoris
Non autoris :
existe dj
17
Dfinie au niveau table ou au niveau colonne
18
DEPARTMENTS
PRIMARY KEY
Non autoris INSERT INTO
(valeur null)
Non autoris
(50 existe dj)
19
DEPARTMENTS
PRIMARY
KEY
EMPLOYEES
FOREIGN
KEY
Autoris
20
Dfinie au niveau table ou au niveau colonne :
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.
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;
DESCRIBE dept80
29
Utilisez linstruction ALTER TABLE pour,
30
Utilisez
linstruction ALTER TABLE pour
ajouter, modifier ou supprimer des colonnes.
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);
31
Utilisez la clause ADD pour ajouter des colonnes.
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.
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.
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.
36
Supprimer la contrainte manager de la table EMP2
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.
38
Dans ce chapitre, vous avez appris :
39