IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Create table + jointure


Sujet :

MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Create table + jointure
    Salus à tous!

    Je voudrais créer trois tables: Article, Css et Listobj.
    Sachant que Listobj fait réference aux id de Css et Article.
    Alors j'ai fais ca, et je voudrais savoir si c'est correct:

    CREATE TABLE Article (
    id_Article bigint(20) unsigned DEFAULT '0' NOT NULL auto_increment,
    titre varchar(20) DEFAULT '' NOT NULL,
    texte varchar(80) DEFAULT '',
    PRIMARY KEY (id_Article));

    CREATE TABLE Css (
    id_Css bigint(20) unsigned DEFAULT '0' NOT NULL auto_increment,
    nom varchar(20) DEFAULT '' NOT NULL,
    PRIMARY KEY (id_Css));

    CREATE TABLE Listobj (
    id_List bigint(20) unsigned DEFAULT '0' NOT NULL auto_increment,
    id_A bigint(20) unsigned DEFAULT '0' NOT NULL,
    type varchar(20) NOT NULL,
    id_C bigint(20) unsigned DEFAULT '0' NOT NULL,
    nom varchar(20) NOT NULL,
    PRIMARY KEY (id_List),
    FOREIGN KEY (id_A) REFERENCES Article(id_Article),
    FOREIGN KEY (id_C) REFERENCES Css(id_Css));


    Si vous pouviez verifier si c'est correct: merci d'avance!

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    A vue de nez, oui (spécifie quand même que ce sont des tables innoDB). Ensuite pour être fixé teste-le
    Pensez au bouton

  3. #3
    Candidat au Club
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oui ca marche!
    Mais une dernière chose, je suis un peu débutant en mysql et je voudrai savoir la différence entre ces deux requetes:

    SELECT L.nom
    FROM Listobj L
    LEFT JOIN Article A
    ON L.id_A = A.id_Article
    WHERE A.titre='titre2';

    et

    SELECT L.nom
    FROM Listobj L, Article A
    WHERE A.titre='titre2'
    AND L.id_A= A.id_Article;

    ???

    ps:
    et pourquoi pas: TYPE=MyISAM
    au lieu de innoDB?

  4. #4
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par ender999
    SELECT L.nom
    FROM Listobj L
    LEFT JOIN Article A
    ON L.id_A = A.id_Article
    WHERE A.titre='titre2';
    => jointure externe. Tous les Listobj sont sélectionnés, même ceux qui n'ont aucun Article qui leur correspond.
    (un RIGHT JOIN aurait sélectionné tous les Articles même s'ils ne sont pas liés à un Listobj).

    Citation Envoyé par ender999
    SELECT L.nom
    FROM Listobj L, Article A
    WHERE A.titre='titre2'
    AND L.id_A= A.id_Article;
    => jointure interne. Ne sont sélectionnés que les Listobj qui ont un Article correspondant.

    Citation Envoyé par ender999
    et pourquoi pas: TYPE=MyISAM
    au lieu de innoDB?
    Parce que les tables ISAM ne gèrent pas les foreign key : http://www.mysql.com/doc/en/InnoDB_f...nstraints.html
    Pensez au bouton

  5. #5
    Candidat au Club
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Maximilian
    Citation Envoyé par ender999
    et pourquoi pas: TYPE=MyISAM
    au lieu de innoDB?
    Parce que les tables ISAM ne gèrent pas les foreign key : http://www.mysql.com/doc/en/InnoDB_f...nstraints.html
    C'est bizarre, j'ai lu quelque part, que lorsqu'on créait des tables c'etait le type ISAM qui était donné par défaut?!

  6. #6
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Oui.
    Ca n'empêche pas que
    Citation Envoyé par dans la doc mySQL il y
    InnoDB is the first MySQL table type which allows you to define foreign key constraints to guard the integrity of your data.
    [...]
    For storage engines other than InnoDB, MySQL Server parses the FOREIGN KEY syntax in CREATE TABLE statements, but does not use or store it.
    [...]
    At a later stage, foreign key constraints will be implemented for MyISAM tables as well.
    Pensez au bouton

  7. #7
    Candidat au Club
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    merci pour tout!

  8. #8
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    'Pas de quoi
    N'oublie pas de cliquer sur
    Pensez au bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. CREATE TABLE .... AS SELECT
    Par blids dans le forum SQL
    Réponses: 5
    Dernier message: 13/10/2016, 14h00
  2. Create table copie les jointures ?
    Par alexandrebergercyr dans le forum Access
    Réponses: 2
    Dernier message: 07/03/2007, 15h50
  3. create table
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 08/07/2004, 17h08
  4. [DB2] create table... if not exists ?
    Par iubito dans le forum DB2
    Réponses: 6
    Dernier message: 23/03/2004, 18h26
  5. Database new user & create table
    Par MFDev dans le forum InterBase
    Réponses: 3
    Dernier message: 30/09/2003, 20h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo