1
IntroductionaulangageSQL
SQL (sigle de Structured Query Language, en français langage de requête structurée) est un
langage informatique normalisé servant à effectuer des opérations sur des bases de données
relationnelles. La partie langage de manipulation de données de SQL permet de rechercher,
d'ajouter, de modifier ou de supprimer des données dans les bases de données relationnelles.
En plus du langage de manipulation de données, la partie langage de définition de données
permet de créer, et de modifier l'organisation des données dans la base de données, la partie
langage de contrôle de transaction permet de commencer et de terminer des transactions, et la
partie langage de contrôle de données permet d'autoriser ou d'interdire l'accès à certaines
données à certaines personnes.
Créé en 1974, normalisé depuis 1986, le langage est reconnu par la grande majorité des
systèmes de gestion de bases de données relationnelle (abrégé SGBDR) du marché.
En 1979, Relational Software, Inc. (actuellement Oracle Corporation) présenta la première
version commercialement disponible de SQL, rapidement imité par d'autres fournisseurs.
SQL a été adopté comme recommandation par l'Institut de normalisation américaine (ANSI)
en 1986, puis comme norme internationale par l'ISO en 1987 sous le nom de ISO/CEI 9075 -
Technologies de l'information - Langages de base de données - SQL.
Basesdulangage
Quelques rappels de vocabulaire
o base de données, table, champ (ou colonne), enregistrement (ou ligne)
o structure ou schéma relationnel d'une base
o clé primaire : un ou plusieurs champ déterminent complètement les valeurs des
autres champs de la table
o clé etrangere : il s'agit d'un champ d'une table qui joue le rôle de clé primaire
dans une autre table de la base
Types de données et création d'une table
o numériques entiers : INTEGER (entiers sur 4 octets.), SMALLINT (2 octets),
BIGINT (8),
o décimaux exacts : NUMERIC, DECIMAL (p,q): décimaux sur p chiffres dont
q forment la partie décimale.
o FLOAT(p,q) .
o CHAR(n), VARCHAR(n) : chaine de caractères de longueur fixée ou variable
(n<=255).
Comme il n'y a pas de type logique, on le simule par un CHAR(1) avec 2
valeurs
o DATE : date au format par défaut aaaaa-mm-jj (la fonction DATE_FORMAT
permet des conversions)
o TIME: heure au format hh:mm:ss
2
o TIMESTAMP : date et heure sous forme du nb de secondes écoulées depuis le
1/1/1970 (date de création du monde selon UNIX ;-). Lors d'une insertion ou
mise à jour d’un champ TIMESTAMP se met à jour à la date courante
o TEXT : texte de longueur qcq
Il est recommandé de placer sur les valeurs des champs les contraintes NOT NULL au
moment de la création (donc éviter la valeur NULL ou absence de valeur qui ne
permet pas les comparaisons), ou de placer des valeurs par défaut avec DEFAULT
valeur ('' ou 0). Bien sûr chaque table doit posséder une clé primaire simple ou
composée, introduite par le mot-clé PRIMARY KEY.
Un exemple, à commenter :
CREATE TABLE b2i (
rne varchar(8) NOT NULL default '',
annee varchar(9) NOT NULL default '',
niv1 smallint(6) NOT NULL default '0',
niv2 smallint(6) NOT NULL default '0',
amelioration char(1) NOT NULL default 'N',
observation text,
PRIMARY KEY (rne,annee)
)
Opérateurs logiques
Ils permettent de construire des expressions logiques, donnant des valeurs logiques
vrai ou faux.
Divers cas :
o AND, OR, NOT : ils portent sur les conditions simples pour donner une
condition composée :
o dans une condition simple exprimée sur des champs :
o comparaison de valeurs =, <, >,
o valeurs situées entre BETWEEN ....AND....
o ou appartenant (ou non) à un ensemble IN, NOT IN
o semblable à LIKE
o existence EXISTS
Règle générale d'écriture des commandes
Toute commande SQL commence par un mot-clé qui désigne l'opération à exécuter.
On précise ensuite sur quelles données cette opération doit s'exercer. Elle doit
obligatoirement se terminer par ;
Exemple d'interrogation simple
SELECT numArticle, libellé, quantité // projection sur les
colonnes indiquées,
FROM inventaire // de la table inventaire de
la base de données courante,
WHERE Ville= "Paris" // sélection des lignes où
le champ Ville a la valeur "Paris"
ORDER BY quantite; // ordonné suivant les
valeurs croissantes du champ quantité
3
Syntaxe générale de la commande d'interrogation SELECT
SELECT [DISTINCT] liste_champs | * // projection
FROM liste_tables // table
[ WHERE condition // condition simple ou composée portant sur
les attributs
[AND|OR ......] ] // sur une table (sélection) ou 2
(jointure)
[GROUP BY champ] // décrit le regroupement des lignes
[HAVING champ] // critères de sélection portant sur les
groupes
[ORDER BY liste_champs]; // précise le tri (multi-critère)
o liste désigne une énumération dont le séparateur est la virgule
o l'ordre des clauses est impérative, la plupart sont facultatives
Syntaxe générale de la commande d'interrogation INSERT
La syntaxe de base de l'ordre SQL d'insertion de données dans une table est la suivante :
INSERT [INTO] nom_de_la_table_cible [(liste_des_colonnes_visées)]
{VALUES (liste_des_valeurs) | requête_select | DEFAULT VALUES }
la liste des colonnes visées peut être omise à condition que l'ordre d'insertion concerne
toutes les colonnes de la table.
Ex :
INSERT INTO T_MODE_PAIEMENT VALUES ('CB' , 'Carte bancaire') ;
INSERT T_TITRE (TIT_CODE, TIT_LIBELLE)
VALUES ('M.' , 'Monsieur',
'Mlle.' , 'Mademoiselle'
'Mme.' , 'Madame') ;
INSERT INTO T_CLIENT (CLI_ID, TIT_CODE, CLI_NOM, CLI_PRENOM)
SELECT PRP_ID, PRP_CODE_TITRE, PRP_NOM, PRP_PRENOM
FROM T_PROSPECT ;
Syntaxe générale de la commande d'interrogation DELETE
La syntaxe de base de l'ordre SQL de suppression de données dans une table est la suivante :
DELETE [FROM] nom_table_cible
[WHERE condition]
Ex :
DELETE FROM T_PROSPECT ;
Cette requête supprime tous les prospects.
4
DELETE FROM T_PROSPECT
WHERE PRP_PRENOM LIKE '%d'
Cetterequêtesupprimetouslesprospectsdontlenomsetermineparlalettre'd'.
Syntaxe générale de la commande d'interrogation UPDATE
La syntaxe de base de l'ordre SQL de modification de données dans une table est la suivante :
UPDATE nom_table_cible
SET colonne = valeur [, colonne2 = valeur2 ...]
[WHERE condition]
Ex :
UPDATE T_TARIF
SET TRF_PETIT_DEJEUNE = 8 ;
Utilisation de quelques fonctions Mysql
Les fonctions permettent en général d'agir sur les valeurs extraites par l'exécution
d'une commande.
Noter aussi qu'on peut introduire des chaines constantes.
SELECT 225*25 ;
SELECT version(), now(), curdate() as date, curtime() as heure ;
SELECT DATE_FORMAT(now(),'%d/%m/%Y') AS date ;
SELECT concat('Voici la date d\'aujourd\'hui :',
DATE_FORMAT(now(),'%d/%m/%Y')) AS date ;
SELECT DATE_ADD(now(), INTERVAL -1 DAY); autre période second,
minute,hour,month,year
SELECT substring('chaine', 1, 2) ; autres fonctions LENGTH
SELECT if(12 > 10, '12 est plus grand', '12 est plus petit');
Il peut etre utile de regrouper plusieurs informations et même plusieurs champs. Par
exemple sur la base établissements
SELECT * FROM etablissements WHERE left(CodePostal,2)='94' ORDER BY
Ville;
SELECT concat(nom,' ', type,' ',ville) FROM etablissements ORDER BY
nom;
5
Exemplederequêtes
1. Voici la structure de la base CDI
documents (id_document,titre, auteur, genre, editeur, disponible)
inscrits (id_inscrit, nom, prenom, classe)
prets (id_pret, id_inscrit #, id_document #, date_pret, date_retour,
retour)
demandes (id_demande, id_inscrit #, id_document #)
2. Interrogations simples sur une table
SELECT * FROM inscrits ;
SELECT count(*) FROM inscrits ;
SELECT count(*) AS nb FROM inscrits WHERE classe = '6a' ;
autres fonctions AVG (moyenne), MIN, MAX, SUM
" Quelle est la moyenne des valeurs d'un champ note dans une table
carnet_notes ? "
SELECT AVG(note) as moyenne from carnet_notes ;
" Combien de documents disponibles sur leur total ?"
SELECT SUM(disponible) disponible, count(*) nombre FROM documents ;
SELECT auteur FROM documents ;
SELECT DISTINCT auteur FROM documents ;
SELECT titre, auteur FROM documents LIMIT 0,10 ;
SELECT titre, auteur FROM documents ORDER BY auteur ;
SELECT prenom, nom, classe FROM inscrits ORDER BY nom DESC LIMIT 0,10
;
SELECT prenom, nom, classe FROM inscrits ORDER BY classe, nom, prenom
;
SELECT * FROM documents WHERE BINARY titre='ivanohé' ";
3. Requêtes avec condition simple
Une condition simple est construite avec les opérateurs de comparaison usuels < > = !=
portant sur des valeurs de champs. On dispose de quelques opérateurs spécifiques : LIKE et
NOT LIKE
SELECT nom, prenom, classe FROM inscrits WHERE nom >= 'x' ;
SELECT DISTINCT titre, auteur FROM documents WHERE titre LIKE '%mis%'
;
SELECT titre, auteur FROM documents WHERE titre LIKE '% mis%' ;
SELECT auteur, titre FROM inscrits WHERE classe = '6a' ;
SELECT titre, auteur FROM documents WHERE titre LIKE '%mis%' ;
SELECT titre, auteur FROM documents WHERE titre LIKE '% mis%' ;
SELECT titre, auteur FROM documents WHERE titre LIKE '%mis%' AND
auteur NOT LIKE '%hugo%' ;
4. Requêtes avec condition composée
1 / 9 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !