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

Langage SQL Discussion :

Casse pour noms tables et colonnes


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut Casse pour noms tables et colonnes
    Bonjour.

    En migrant une base de données MySQL de Windows vers Linux, je me retrouve confronté au problème de sensibilité à la casse car j'ai pris l'habitude d'écrire mes noms de table et de colonnes avec majuscules et minuscules.
    Du coup, me vient une question : y a-t-il une bonne pratique pour écrire les noms de tables et de colonnes ? Tout en majuscule ? Tout en minuscule ? Utilisation de tirets '-' ou de caractères soulignés '_' pour rendre les noms plus lisibles ?
    Par exemple, avec une table listant les types de livres (pour une gestion de bibliothèque), comment vaut-il mieux écrire le nom de la table ?
    • TypesLivres
    • Types-Livres
    • Types_Livres
    • types-livres
    • types_livres
    • TYPES-LIVRES
    • TYPES_LIVRES

  2. #2
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Bonjour,

    Les noms de tables et de colonnes ne sont pas case sensitive dans le standard SQL.
    De plus, par convention, on met souvent les mots-clefs du langage SQL en majuscules.

    Pour cette raison, je préconise l'emploi des minuscules dans les noms de tables et de colonnes, mais sans accent et sans caractère spécial.

    J'aurai donc créé dans votre cas la table "typeslivres", nom que vous ne proposiez pas.

    Cordialement,

    Arkhena

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    J'ai plus rencontré des majuscules que des minuscules personnellement.
    D'ailleurs sur Oracle, si on ne précise pas avec des double-quotes, par défaut tout est en majuscule.

    Effectivement il vaut mieux éviter les caractères spéciaux ainsi que les mots réservés.

    Je vous conseille aussi de tout mettre au singulier sinon vous allez vous perdre avec les S pour pas grand chose.
    Pour votre table, TYPE_LIVRE me paraît être un bon choix.

  4. #4
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut
    Citation Envoyé par Waldar Voir le message
    J'ai plus rencontré des majuscules que des minuscules personnellement.
    D'ailleurs sur Oracle, si on ne précise pas avec des double-quotes, par défaut tout est en majuscule.
    Ce qui m'ennuie avec le tout majuscule, c'est que c'est un peu plus difficile de faire la différence dans les requêtes entre les commandes SQL (SELECT, FROM...) et les éléments propres à la base de données (noms de tables et de colonnes).

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous pouvez écrire en minuscule sans problème dans vos requêtes, si vous ne précisez rien ça se passe bien.

    Si vous faites une des trois opérations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE TOTO [...]
    CREATE TABLE toto [...]
    CREATE TABLE Toto [...]
    Tout est équivalent et tous les select suivant fonctionneront et sont équivalents :
    select * from toto
    select * from Toto
    select * from TOTO
    SELECT * from TOTO
    SELECT * from toto
    SELECT * from Toto

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    J'ai relaté une mésaventure similaire en Postgresql récemment.

    J'ai refait ma BDD sans les guillemets et les tables, colonnes et autres éléments de la BDD se sont enregistrés tout en minuscule, ce qui est moins lisible effectivement.

    Je cite en partie SQLPro qui est un peu plus précis que ce que j'ai cité dans l'autre discussion :
    En principe, la casse (c'est à dire majuscule et minuscule) n'a pas d'importance dans la nomination des objets. Cependant, certains SGBDR s'avèrent sensibles à la casse pour le nom des objets SQL dans certaines conditions. C'est la cas en particulier de SQL Server, si on le paramètre à l'installation en CASE SENSITIVE.
    Il semble que les SGBD ont leur propre standard et ne respectent pas forcément la norme.

    Sous MySQL (sous Linux, ce n'est peut-être pa sle cas sous Windows), on peut créer deux bases de données nommées Majuscule et majuscule. Les colonnes Majuscule et majuscule sont bien sûr également différentes.

    Sous Postgresql, si on écrit les noms sans guillemets, ils se mettent en minuscules et si on crée les objets avec guillemets, il faut ensuite écrire les requêtes avec les guillemets pour appeler ces objets.

    Bref, c'est galère !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut
    Citation Envoyé par Arkhena Voir le message
    Bonjour,
    J'aurai donc créé dans votre cas la table "typeslivres", nom que vous ne proposiez pas
    Je ne l'ai pas proposé, car je ne le trouve pas très lisible.

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

Discussions similaires

  1. requete SQL pour nom de colonne de mes tables..
    Par dutty76 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/03/2008, 11h06
  2. [sql 2005]: changer le nom d'une colonne dans un table
    Par TheLittle dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2006, 15h29
  3. Réponses: 4
    Dernier message: 10/05/2006, 18h40
  4. Réponses: 2
    Dernier message: 10/02/2006, 16h09
  5. Comment préciser nom de la colonne pour un Bulk Insert
    Par jeff37 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/06/2004, 17h05

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