Aymen - Webmaster PHP
Ref : 120627C002-
Domicile
1142 MANOUBA (Tunisie)
-
Profil
Webmaster (41 ans)
-
StatutFreelance
-
aujourd'hui
SQL: Structured Query Language
Historique
Inventé à IBM San Jose, 1974 ( Astrahan & Chamberlin )
Basé sur le calcul de tuple & algèbre relationnelle
Le langage de SGBD relationnels
En évolution contrôlée par ANSI (SQL1, 2, 3...)
Il existe aussi plusieurs dialectes
Les possibilités basiques sont simples
Un sous sous-langage de programmation
langage interactif (de requêtes)
langage imbriqué (embedded )
Consiste traditionnellement de trois parties:
Langage de Contrôle de Données: LCD
- Gestion des protections d’accès
Langage de Définition de Données: LDD
- création, modification, suppression des structures des objets de la BD (tables, vues,…)
Langage de Manipulation de Données: LMD
- Ajout, modification, suppression, interrogation des données de la BD
Gestion des utilisateurs
utilisateur:
Nom user
Mot de passe
Ensemble de privilèges
Privilège = droit pour:
exécuter des requêtes SQL spécifiques
Accéder à des objets de la BD
Rôle = ensemble de privilèges (Exemple: DBA).
Création d’un utilisateur:
CREATE USER NOM_UTILISATEUR IDENTIFIED BY MOT_DE_PASSE ;
Modification d’un utilisateur:
ALTER USER NOM_UTILISATEUR IDENTIFIED BY MOT_DE_PASSE;
Suppression d’un utilisateur:
4 DROP USER NOM_UTILISATEUR [CASCADE];
2 types de privilèges:
Privilège système: droit d’exécuter une action particulière sur n’importe quel
type d’objet.
àExemples de privilèges système: ALTER ANY (TABLE,…), CREATE ANY (TABLE,…),
CREATE USER, DROP ANY TABLE, …
Syntaxe: GRANT{PRIVILEGES_SYSTEME}
TO {NOMS_UTILISATEURS | PUBLIC}
[WITH ADMIN OPTION];
Exemple: GRANT CREATE USER TO SARRA WITH ADMIN OPTION;
Privilège objet: droit d’exécuter une action spécifique sur un objet spécifique.
àExemples de privilèges objet: {SELECT | DELETE | INSERT| ALTER| ALL} ON
NOM_TABLE,…
Syntaxe: GRANT {PRIVILEGES_OBJETS}
TO {NOMS_UTILISATEUR S| PUBLIC}
[ WITH GRANT OPTION ];
Exemple: GRANT SELECT ON ETUDIANT TO SARRA WITH GRANT OPTION;
Création d’une table: CREATE TABLE
Syntaxe:
CREATE TABLE < nom_table> (
(<nom_attribut> <type> [ DEFAULT < valeur_défaut> ])*,
[ CONSTRAINT < nom_contrainte> <contrainte> ],
…,
[ CONSTRAINT < nom_contrainte> <contrainte> ]);
Création d’une table: CREATE TABLE
Exemple: Fournisseur ( Numf, NomF, CIN , AdrF )
CREATE TABLE Fournisseur(
Numf number,
NomF varchar2(20),
CIN number,
AdrF varchar2(50),
CONSTRAINT Fournisseur_PK PRIMARY KEY (NumF),
CONSTRAINT Fournisseur_UN UNIQUE (CIN));
Création d’une table: Types de données
Types numériques
- INTEGER, INT, SMALLINT, NUMBER, FLOAT, …
Types texte
- CHAR( ), VARCHAR( ), VARCHAR2( ), …
Types date
- DATE, TIME, TIMESTAMP, …
Modification d’une table: ALTER TABLE
Modifier la définition (description, structure) d’une table
Ajouter une colonne ou une contrainte à mot clé : ADD
Modifier une colonne ou une contrainte àmot clé : MODIFY
Changer le nom de la table àmot clé : RENAME
Syntaxe:
ALTER TABLE nom-table
{ RENAME TO <nouveau_nom_table> |
ADD ( [ ( <nom_col> <type_col> [DEFAULT <valeur>][contraintes_col]) *
[contrainte_table] )|
MODIFY ( nom_col [type_col] [DEFAULT valeur] [contrainte_col])* };
Modification d’une table: ALTER TABLE
Exemples:
ALTER TABLE fournisseur RENAME TO Fourn;
ALTER TABLE Fourn ADD TypeF varchar2(20);
ALTER TABLE Fourn ADD (
DatNais date,
constraint Fourn_FK FOREIGN KEY (AdrF) REFERENCES
Pays (NomPays));
ALTER TABLE Fourn MODIFY (
TypeF varchar2(30) DEFAULT ‘Externe’,
AdrF NOT NULL);
Suppression d’une table: DROP TABLE
Supprimer la table et tout son contenu (structure + données).
utile notamment en séance d’exercices pour créer une nouvelle
définition d’une table existante
Syntaxe:
DROP TABLE <nom_table>;
Exemple:
DROP TABLE Fournisseur;
Définition des contraintes: CREATE TABLE, ALTER TABLE
3 manières de définir des contraintes:
i) Après la création de la table:
Syntaxe:
CREATE TABLE <nom_table> (
<nomattribut> <type> [ DEFAULT <valeur_défaut> ],
… );
ALTER TABLE <nom_table> ADD(
CONSTRAINT <nom_contrainte> <contrainte>],…,);
Définition des contraintes: CREATE TABLE, ALTER TABLE
ii) Lors de la création de la table – niveau colonne:
Syntaxe:
CREATE TABLE <nom_table> (
<nomattribut> <type> [ DEFAULT <valeur_défaut> ][[ CONSTRAINT
<nom_contrainte> ]<contrainte> ],
…,
);
iii) Lors de la création de la table – niveau table:
Syntaxe:
CREATE TABLE <nom_table> (
<nomattribut> <type>,
…,
[ CONSTRAINT <nom_contrainte> <contrainte>],…,);
Définition des contraintes: CREATE TABLE, ALTER TABLE
Syntaxe générale:
CREATE TABLE <nom_table> (
<nomattribut> <type> [ DEFAULT <valeur_défaut> ][[ CONSTRAINT
<nom_contrainte> ]<contrainte> ],
…,
[ CONSTRAINT <nom_contrainte> <contrainte>],
…,
);
ALTER TABLE <nom_table> ADD (
CONSTRAINT <nom_contrainte> <contrainte>],…,);
Définition de contrainte de clé: PRIMARY KEY
L’attribut (ou le groupe d’attributs) doit avoir une valeur unique et identifier un tuple
d'une manière unique.
Exemples
/*i*/CREATE TABLE Fournisseur(
NumF number,
NomF varchar2(20));
ALTER TABLE Fournisseur
ADD CONSTRAINT Fourn_PK PRIMARY KEY (NumF);
/*ii*/CREATE TABLE Fournisseur(
NumF number PRIMARY KEY,
NomF varchar2(20));
/*iii*/CREATE TABLE Fournisseur(
NumF number,
NomF varchar2(20),
constraint Fourn_PK PRIMARY KEY (NumF));
Définition de contrainte de non nullité: NOT NULL
L’attribut ne peut pas prendre de valeur nulle, il doit être toujours renseigné.
Exemples
/*i*/CREATE TABLE Fournisseur(
NumF number,
NomF varchar2(20));
ALTER TABLE Fournisseur
MODIFY NomF NOT NULL;
/*ii*/CREATE TABLE Fournisseur(
NumF number PRIMARY KEY,
NomF varchar2(20) NOT NULL);
/*ii’*/CREATE TABLE Fournisseur(
NumF number constraint NumF_PK PRIMARY KEY,
NomF varchar2(20) constraint NomF_NN NOT NULL);
/*iii*/non faisable.
Définition de contrainte d’unicité: UNIQUE
L’attribut (ou le groupe d’attributs) doit avoir une valeur unique.
Exemples
/*i*/CREATE TABLE Fournisseur(
NumF number PRIMARY KEY,
NomF varchar2(20),
CIN number (8));
ALTER TABLE Fournisseur
ADD CONSTRAINT Fourn_UN UNIQUE (CIN);
/*ii*/CREATE TABLE Fournisseur(
NumF number PRIMARY KEY,
NomF varchar2(20) ,
CIN number (8) UNIQUE);
/*iii*/CREATE TABLE Fournisseur(
NumF number PRIMARY KEY,
NomF varchar2(20) ,
CIN number (8),
CONSTRAINT Fourn_UN UNIQUE (CIN));
SQL: LDD
Définition des contraintes référentielles: REFERENCES
Toute valeur d'un attribut ou d'un attribut, appelé clé étrangère, doit exister dans une
colonne clé primaire d’une autre table.
Exemples
/*i*/CREATE TABLE Pays(
NomPays varchar2(50) PRIMARY KEY,
Population number);
CREATE TABLE Fournisseur
SQL: LDD
Définition des contraintes référentielles: REFERENCES
/*ii*/CREATE TABLE Pays(
NomPays varchar2(50) PRIMARY KEY,
Population number);
CREATE TABLE Fournisseur(
NumF number PRIMARY KEY,
NomF varchar2(20) ,
AdrF varchar2(50) CONSTRAINT AdrF_FK REFERENCES Pays (NomPays));
/*iii*/ CREATE TABLE Pays(
NomPays varchar2(50) PRIMARY KEY,
Population number);
CREATE TABLE Fournisseur(
NumF number PRIMARY KEY,
NomF varchar2(20) ,
AdrF varchar2(50) ,
CONSTRAINT AdrF_FK FOREIGN KEY (AdrF)REFERENCES Pays
(NomPays));
SQL: LDD
Définition des contraintes de domaine: CHECK
Exemples
/*i*/CREATE TABLE Pays(
NomPays varchar2(50) PRIMARY KEY,
Population number,
Continent varchar2(50));
ALTER TABLE Pays ADD(
CONSTRAINT Population_CK CHECK (Population >0),
CONSTRAINT Continent_CK CHECK (Continent IN (‘Europe’,
‘Asie’)));
SQL: LDD
Définition des contraintes de domaine: CHECK
Exemples
/*ii*/CREATE TABLE Pays(
NomPays varchar2(50) PRIMARY KEY,
Population number CONSTRAINT Population_CK CHECK (Population> 0),
Continent varchar2(50) CONSTRAINT Continent_CK CHECK
(Continent IN (‘Europe’, ‘Asie’)));
/*iii*/ CREATE TABLE Pays(
NomPays varchar2(50) PRIMARY KEY,
Population number,
Continent varchar2(50),
CONSTRAINT Population_CK CHECK (Population > 0),
CONSTRAINT Continent_CK CHECK (Continent IN (‘Europe’, ‘Asie’)));
SQL: LDD
Suppression des contraintes: DROP CONSTRAINT
Syntaxe
ALTER TABLE <nom_table>
DROP CONSTRAINT <nom_contrainte>;
Exemple
ALTER TABLE Pays
DROP CONSTRAINT Continent_CK;
SQL: LMD
Commandes de manipulation
INSERT INTO:ajouter un tuple dans une table
UPDATE:changer des valeurs dans les tuples d’une table
DELETE FROM: éliminer les tuples d’une table
SQL: LMD
INSERT
Syntaxe
INSERT INTO { nom_table}[ ( nom_col)* ] { VALUES (valeur)* | sous_requête };
Exemples
INSERT INTO Pays VALUES (‘France’, 20000, ‘Europe’);
INSERT INTO Pays(NomPays, Population) VALUES (‘Allemagne’, 15000);
INSERT INTO Pays (SELECT NomP, Pop, Cont
FROM Pays_Asiatiques );
SQL: LMD
INSERT INTO … SELECT
La clause INSERT INTO … SELECT permet d'insérer de nouvelles lignes dans la table à partir d'une table ou vue existante.
Syntaxes:
/**/INSERT INTO < nom_table>
SELECT …
/**/INSERT INTO < nom_table> (attr1, attr2, …, attrm)
SELECT r1, r2, … , rm
FROM …
Si une valeur n'est pas précisée pour un attribut alors le système insère la valeur NULL.