Une fois bien calés sur la création d'une base de données (ouais c'était il y a deux chapitres mais bon logiquement vous l'avez vu il y a peu de temps) et le tpage des données, il ne reste plus qu'à créer nos tables, et à comprendre ce que l'on peut faire avec pour leur structure, ainsi qu'à les remplir, parce que des tables vides et propres c'est bien, mais il faudrait qu'on mette des choses dedans pour que ça prenne tout son sens.

- create table personne(id int, nom varchar(20), adresse varchar(20));
- create table cours(cnum int, descr varchar(20));
- create table affectation(id int, cnum int, note int);
- create table if not exists personne(id int, nom varchar(20), adresse varchar(20));
- drop table if exists affectation;
- drop table if exists personne,cours;
Quand on crée une table, on indique les attributs, ainsi que le type de chacun d'entre eux. Mais il peut arriver que l'on se trompe dans la structure, ou qu'on veuille la faire évoluer. On a deux méthodes: La méthode bourrin, on supprime la table et on la recrée, et puis les données dedans tant pis! OU ALORS... on modifie la structure de la table. Ainsi les données resteront présentes, ce qui est tout de même nettement mieux.
Voilà la structure de la requête: alter table ma_table...
alter table, avant de spécifier ce qu'on veut modifier derrière. Et là vous allez voir qu'on peut en changer des choses!
- alter table personne rename to personne2;
- alter table personne change adresse adresse2 varchar(20);
- alter table personne modify adresse varchar(20);
- alter table personne add adresse2 varchar(20);
- alter table personne drop adresse2;
- alter table personne add unique mon_adresse_unique(adresse);
- alter table personne drop index mon_adresse_unique;
- alter table personne add primary key(id);
- alter table personne drop primary key;
- alter table affectation add constraint fk_personne_id foreign key(id) references personne(id);
- alter table affectation drop foreign key fk_personne_id;
On l'a déjà vu précédemment, mais pour gérer les contraintes en SQL, il existe de nombreuses possibilités. Deux contraintes sont particulières et permettent de revenir sur les contraintes d'intégrité que l'on a vues dans un chapitre précédent:
Elles permettent de gérer principalement le concept d'unicité à l'intérieur d'une table.
Syntaxe de création: create table ma_table(id int primary key,...); ou create table ma_table(id int, ..., primarykey (id));
Il est également possible (et même recommandé dans de très nombreux cas maintenat, c'est même devenu un standard) de créer des clés auto-incrémentées. Ces attributs particuliers ne correspondent à aucun attribut mais servent uniquement à gérer l'unicité de chaque enregistrement.
La syntaxe est la suivante: create table ma_table(id int primary key auto_increment, ...);
- create table personne(id int primary key, nom varchar(20), adresse varchar(20));
- create table cours(cnum int primary key, descr varchar(20));
- create table affectation(id int, cnum int, note int, primary key(id,cnum));
- create table personne(id int primary key, nom varchar(20), adresse varchar(20));
- create table cours(cnum int primary key, descr varchar(20));
- create table affectation(id int, cnum int, note int, primary key(id,cnum),foreign key(id) references personne(id), foreign key(cnum) references cours(cnum));