jeudi 17 mars 2011

apprende sql: création d'une table

 Définition Sql:

SQL est un langage de type " déclaratif ". On spécifie ce que l’on veut obtenir ou faire et c’est la machine qui décide comment elle doit l’exécuter. Pour certains, SQL est perçu comme un pis-aller tandis que d’autres préfèrent l’éviter ou retarder au plus l’inéluctable moment où son apparition sera incontournable.


La différence fondamentale entre les langages courants comme C ou Pascal, qui sont des langages procéduraux, réside dans le fait qu’avec ces derniers, vous indiquez l’ensemble des instructions nécessaires à traiter un problème. Vous gardez ainsi une certaine maîtrise sur le cycle d’exécution et l’enchaînement des différentes tâches d’un programme vous est parfaitement connu. En revanche, dans SQL vous n’avez, et d’ailleurs ne devez, pas avoir la moindre idée de comment la machine exécute votre demande, ni même dans quel ordre elle décompose le traitement de la requête en différentes tâches, ni d’ailleurs même comment elle les synchronise.

Lors d’une extraction concernant plusieurs tables, le moteur relationnel pourrait parfaitement lancer plusieurs traitements en parallèles pour extraire les données de chacune des tables, puis effectuer les jointures des différentes tables résultantes en fonction de l’ordre de terminaison des extractions...
C’est pourquoi, les moteurs relationnels incluent des modules d’optimisation logique et parfois statistique.

Ainsi un optimiseur logique préférera traiter en premier les clauses excluant de la réponse un maximum de données, tandis qu'un optimiseur statistique commencera par traiter les tables de plus faible volume.
CREATE TABLE matable (nom varchar(64), age int4);
Description:
"CREATE TABLE  akelo " indique que nous voulons créer une table appelée "akelo"; le reste de la requête qui se trouve entre parenthèses defini les différents champs de la table. Une virgule sépare chaque déclaration de champ. Un champ est déclaré en précisant son nom (ici, l'un s'appelle nom et l'autre age) puis son type (nom est de type varchar(64) autrement dit un champ de type texte et de longueur variable mais n'excédant pas 64 caractères, age quant à lui est de type entier codé sur 4 octets)


Remarques:
    le point virgule ne fait pas, à proprement parler, partie de la requête mais il est généralement utilisé par le programme client pour savoir où se termine l'instruction. Par la suite, celui-ci pourra être omis. 
Pour diverses raisons, il se trouve que la commande permettant de récupérer la liste des tables varie d'un logiciel à l'autre
MySQL Taper la commande SHOW TABLES;
Pour ajouter un enregistrement dans la table (définie précédemment), vous pouvez utiliser la requête suivante:
INSERT INTO akelo (nom,age) VALUES ('DUPONT',22);
Description: "INSERT INTO akelo" indique que nous voulons ajouter un enregistrement à la table "matable"; "(nom,age)" indique les champs que nous voulons spécifier (les autres champs prendrons la valeur par défaut); "VALUES ('DUPONT',22)" permet d'affecter la valeur 'DUPONT' au champ nom et 22 au champ age. 


Remarques: 

La partie "(nom,age)" est optionnelle à condition de préciser les valeurs pour tous les champs possibles et dans l'ordre défini par la table. En conséquence la requête "INSERT INTO akelo VALUES ('DUPONT',22)" est valable aussi, mais cela est fortement déconseillé car ne pourrait pas fonctionner si la table avait été définie par "CREATE TABLE akelo  (age int4, nom varchar(64))"
  1. Les valeurs des champs doivent généralement être délimités par des apostrophes (single-quote). Ceci n'est pas requis pour les valeurs numériques (mais rien n'empêche d'en mettre).
  2. Si l'un des champs de votre enregistrement contient une apostrophe, afin d'éviter toute confusion avec le délimiteur de champs, vous devez la faire précéder d'un anti-slash (ou back-slash) "\". ex: INSERT INTO akelo  (nom,age) VALUES ('C\'est moi',28)

Aucun commentaire:

Enregistrer un commentaire