# Structured Query Language/Introduction
## Introduction

Le SQL est le langage utilisé pour manipuler des bases de données.

## Structure d'une base de données

Sur un serveur, on trouve en général plusieurs bases de données.
Chacune contient des schémas, en général l'un d'entre eux se nomme "public", c’est sur celui-là que vous travaillons. Les autres schémas servent, par exemple, à donner aux utilisateurs une description de la base de données, ils sont donc créés et mis à jour directement par le Système de gestion de base de données relationnelles (SGBDR), nous n'avons pas à nous en occuper dans ce cours.
Chaque schéma contient plusieurs objets. Parmi ces objets, on peut trouver entre autres :
* Des tables
* Des vues
* Des fonctions et procédures
* Des domaines
* Des types utilisateur
* Des triggers
* D'autres objets spécifiques aux SGBDR
On effectue des requêtes SQL pour accéder ou modifier les données sur le serveur, à travers une interface graphique (exemples : PHPmyadmin, MS-Access…) ou un langage intermédiaire (exemple : PHP).

### Tables

La table est certainement l’objet le plus manipulé dans une base de données. Elle est composée de plusieurs éléments.
Une table contient plusieurs colonnes avec des types bien précis.
Une table est le seul élément d'une base de données qui puisse contenir des données. Une ligne de données contient plusieurs cellules, en fait autant de cellules qu’il y a de colonnes dans la table. Par exemple, si on crée une table "armoires" avec 3 colonnes : numéro, position, nombre_de_tiroirs, alors chaque ligne sera composée de trois éléments. Par exemple 17, (205,459,309), 5. L'élément du milieu étant une coordonnée tri-dimensionnelle. Nous verrons plus tard comment créer des tables, ce concept de colonnes sera alors revu.
Les lignes de ce tableau sont appelées enregistrements.

### Vues

Une vue ne contient pas de données, mais elle en renvoie. Une vue est en fait une requête "pré-établie" qui s'utilise comme une table.

### Fonctions / Procédures

La plupart des SGBDR permettent de créer des fonctions, comme dans presque tous les langages de programmation.

### Domaines / types utilisateur

Les domaines et types utilisateur sont des types créés par l'utilisateur. Chaque colonne doit avoir un type bien précis. Pour notre exemple ce serait "integer, Position3D, integer". Le type Integer existe par défaut dans tous les SGBDR, mais pas Position3D, il faut donc le créer, c’est ce qu'on appelle un type utilisateur.

### Triggers

Les triggers (mot anglais signifiant "déclencheurs") sont en fait des fonctions qui se déclenchent lorsqu'on insère, modifie ou supprime des données. Ils permettent par exemple de vérifier la validité des données insérées ou d'empêcher la suppression de données cruciales pour le reste de la base de données.

## Création d'une base de données

En guise de test et de premier contact avec le langage SQL, nous allons tout simplement créer notre base de données. Pour cela exécuter l’ordre suivant :
Si on traduit en français cela donne "Crée une base de données appelée wikitests".
À présent, nous devons nous connecter à cette base de données nouvellement créée. La façon de le faire est fortement liée au SGBDR qu'utilisé. Par exemple sous PostGreSQL, il faut faire :
Sous MySQL et MS-SQL :
D'autres SGBDR obligent à se déconnecter du serveur puis à se reconnecter directement à la base.
Il est donc conseillé de se référer à la documentation du SGBDR employé si aucune des deux syntaxes ci-dessus ne fonctionne.

### Via phpMyAdmin
#### À partir d'un fichier

Dans l'onglet SQL, soit le fichier création.sql contenant les lignes ci-dessus, on crée donc la base de données avec :

#### Dans l'interface graphique

Dans l'onglet Bases de données, remplir le champ sous Créer une base de données, puis cliquer sur Créer.
| Sommaire | Modélisation |