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 :

Mots clés utilisables dans tous les SGBD et norme SQL ?


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant Décisionnel
    Inscrit en
    Janvier 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 128
    Points : 84
    Points
    84
    Par défaut Mots clés utilisables dans tous les SGBD et norme SQL ?
    Bonjour à tous,

    Je me pose une petite question, je travaille beaucoup sur sql server et que très peu finalement sur les autres SGBD,

    Je me demandais quel sont réellement les mot clés propre au SQL que l'on retrouve et que l'on peut utiliser normalement dans tous les SGBD. (car passer de sql server à mysql ça fait très mal)


    Quels SGBD se rapproche le plus de la norme sql finalement? Et j'ai lu que les SGBD tendaient à se rapprocher de la norme 92, alors qu'il existe la norme 2011, une explication?

    D'ailleurs cette norme on la trouve où, j'ai vu qu'il fallait l'acheter??

    Désolé pour ces questions de "débutant" mais mes recherches internet n'ont pas répondu à mes interrogations.

  2. #2
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    Bonjour ,

    voici un comparatif qui date http://sqlpro.developpez.com/cours/sqlaz/fonctions/
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant Décisionnel
    Inscrit en
    Janvier 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 128
    Points : 84
    Points
    84
    Par défaut
    Justement je l'ai déjà vu ce tableau, mais comme tu dis il date un peu

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Citation Envoyé par BIOoOAG Voir le message
    Et j'ai lu que les SGBD tendaient à se rapprocher de la norme 92, alors qu'il existe la norme 2011, une explication?
    L'article où vous avez lu ça doit dater également

    la plupart des bon SGBD prennent en charge les expressions de table communes (CTE), les fonctions fenêtrées,.. qui n'existent pas dans la norme 92.

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 146
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    la plupart des bon SGBD prennent en charge les expressions de table communes (CTE), les fonctions fenêtrées,.. qui n'existent pas dans la norme 92.
    En même temps, y'en a pas un seul (PostGreSQL peut-être, et encore, même pas sûr) qui supporte intégralement la norme 92

    Ça m'a toujours amusé de voir qu'aucun éditeur n'est foutu d'implémenté complètement une norme, mais se jette à corps perdu :
    - sur la moindre nouvelle fonctionnalité de la nouvelle norme (supporté soit de façon partielle, soit proprio)
    - se lance dans des spécifiques ne répondant à aucune norme pour pallier à son absence de support des normes

    Pourtant, ça serait tellement plus vendeur de dire "ouais, moi mon bousin, il support la norme à 100%, ni plus, ni moins".

    C'est d'ailleurs le principal argument du succès (relatif ceci dit) de PostGreSQL...
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Membre régulier
    Homme Profil pro
    Consultant Décisionnel
    Inscrit en
    Janvier 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 128
    Points : 84
    Points
    84
    Par défaut
    Je trouve cela complètement fou d'ailleurs un langage c'est un langage,
    le C++ ça dépend pas du logiciel par exemple, ça reste le même partout ou presque..

    Donc au final il n'y à pas mieux à part galérer à connaitre les spécificités de chaque SGBD si j'ai bien compris.

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 146
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Pour galérer le moins possible :
    - toujours prendre comme point de départ la notation SQL92 ou ultérieur
    - en cas de limitation (mot clé non supporté) toujours chercher une alternative en SQL92 ou ultérieur
    - ne jamais, oh grand jamais utiliser les notation propriétaires, quitte à s'assoir sur des fonctionnalités.

    Mais dans les grandes lignes, 99% des requêtes pourront être formulées de façon à passer sur tous les SGBD.
    Et pour les 1% qui restent, il vaut mieux parfois scinder la requête en plusieurs, et traiter le résultat côté client, plutôt que de se lancer dans des usines à gaz pas portables.

    La grosse difficulté concerne surtout les fonctions de conversion/formatage : dans l'optique d'avoir un code adaptable à plusieurs SGBD, privilégier ces traitements le plus possible côté client. Et la plupart du temps, un modèle des données bien pensé n'impliquera pas l'utilisation de ces fonctions pour autre chose que de la cosmétique.
    On ne jouit bien que de ce qu’on partage.

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 741
    Points : 52 454
    Points
    52 454
    Billets dans le blog
    5
    Par défaut
    Question VASTE et pas si simple !

    Citation Envoyé par BIOoOAG Voir le message
    Bonjour à tous,

    Je me pose une petite question, je travaille beaucoup sur sql server et que très peu finalement sur les autres SGBD,

    Je me demandais quel sont réellement les mot clés propre au SQL que l'on retrouve et que l'on peut utiliser normalement dans tous les SGBD. (car passer de sql server à mysql ça fait très mal)
    Vous avez de la chance d'utiliser SQL Server. Vous trouverez dans l'aide en ligne de SQL Server, les mots clés officiels (ISO/ODBC) et ceux spécifiques à SQL Server (sur mon site aussi...) :
    http://msdn.microsoft.com/fr-fr/library/ms189822.aspx
    http://sqlpro.developpez.com/cours/motsreserves/

    par exemple DATE et TYPE sont des mots clefs de SQL hélas souvent utilisés comme noms de colonnes dans des tables !

    Quels SGBD se rapproche le plus de la norme sql finalement? Et j'ai lu que les SGBD tendaient à se rapprocher de la norme 92, alors qu'il existe la norme 2011, une explication?
    Une étude que j'avais mené il y a longtemps, montrait dans l'ordre du respect des normes SQL du plus respectueux au moins :
    • IBM DB2
    • SQL Server
    • PostGreSQL
    • Sybase
    • Interbase/Firebird
    • MySQL
    • Access
    • Oracle

    Il n'est pas anormal de trouver IBM en haut, puisque le langage SQL a été inventé dans ses labos et que le premier à en bénéficier fut IBM DB2 !
    Quand à Oracle, le mégalomane qu'est Larry Ellison a toujours dit "Oracle aura sa propre norme"... Histoire d'emmerder les autres. Aujourd'hui cette attitde est un retour de bâton et les gens d'Oracle essaye de rectifier le tir depuis quelques version....
    Depuis que MS a repris de Sybase SQL Server ils ont aussi rectifié par mal, de chose pour le mise en conformité avec la norme...
    PostGreSQL l'est déjà moins que SQL Server, du fait qu'il a voulu copier Oracle... Et ses lacunes comptent aussi pour beaucoup !
    D'ailleurs cette norme on la trouve où, j'ai vu qu'il fallait l'acheter??
    Auprès de l'ISO en Suisse. Comptez tout de même près de 1 milliers d'euros pour avoir l'ensemble des CD...
    En PDF cela représente 13 fichier, 34 Mo...
    Juste pour la partie centrale ("foundation") le pdf fait 1268 pages

    Bon courage !

    En PJ, une copie d'écran de mes pdf de la norme SQL.... !
    Nom : SQL ISO.jpg
Affichages : 1489
Taille : 130,0 Ko

    Désolé pour ces questions de "débutant" mais mes recherches internet n'ont pas répondu à mes interrogations.
    Pourquoi les éditeurs ne sont pas tous à la norme ?

    Il y a 4 situations majeures :
    1) certains éditeurs de SGBDR ont été parfois en avance sur la norme. C'est le cas d'oracle, par exemple sur les requêtes récursives (CONNECT BY ... PRIOR)
    2) la plupart sont en retard sur la norme. C'est valable pour tous. Et mettent plus ou moins de temps en R&D pour implémenter les choses. Par exemple mettre en place les fonctions de fenêtrage de façon performantes (afin d'avoir des temps de réponse meilleurs que par de traditionnelles sous-requêtes, demande de la mise au point, donc du temps....)
    3) le coûts de certaines fonctionnalités de la norme SQL peut être gigantesque. Par exemple Oracle n'a jamais mis en place ce que la norme appelle le DATALINK (alors que SQL Server l'a fait sous la forme du FILESTREAM) parce que cela couterait trop cher à mettre en œuvre sur toutes les plateformes système.... Pour SQL Server c'est bien plus simple du fait de l'unique OS ! Pour IBM DB2, c'est restreint à certaines plateformes (AIX l'unix d'IBM ou encore OS 390....).
    4) Certaines fonctionnalités de la norme s'avèrent stupide ! C'est le cas par exemple de l'UNION JOIN, aujourd'hui considéré comme obsolète, mais introduit dans la version 1992. Or pour être pleinement à la norme, il faudrait le supporter ! la plupart des éditeurs ont sagement évité la stupidité. Il en est de même de la jointure "naturelle" (NATURAL JOIN) très controversée !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    - ne jamais, oh grand jamais utiliser les notation propriétaires, quitte à s'assoir sur des fonctionnalités.
    La je ne suis pas d'accord, en tout cas je ne serais pas aussi péremptoire.
    Certaines fonctionnalités apportent un gain de performance par rapport à leur équivalent normatif, et il serait bien dommage de s'en passer.

    Donc, à moins que le fonctionnement sur différents SGBD fasse partie des contraintes du projet, l'utilisation des fonctionnalités hors norme me parait tout à fait légitime de mon point de vue.

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 741
    Points : 52 454
    Points
    52 454
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Mais dans les grandes lignes, 99% des requêtes pourront être formulées de façon à passer sur tous les SGBD.
    hélas ceci est impossible....
    Même de simples requêtes basiques ne donnent généralement pas les mêmes résultats sur chacun des SGBDR avec le même jeu de données et la même écriture....
    Un filtre ou un ORDER BY va donner des résultats très différents. J'ai déjà montré cela il y a fort longtemps : http://sqlpro.developpez.com/cours/s...age=partie1#L3 (voir l'exemple 10).

    De plus la gestion des collations diffèrent notablement entre les différents SGBDR. Par exemple pour Oracle qui n'implémente pas les collations, mais utilise l'imbitable NLS, les problématiques sont incontournable.
    Exemple d'impossibilité avec Oracle :
    • faire une recherche sensible à la casse et insensible aux accents
    • faire une recherche sensible aux accents et casse sur une colonne (par exemple de mot de passe) et sur une autre insensible à la casse (pour le login).


    Il existe bien d'autres pièges, notamment lors de la comparaison des littéraux de type CHAR et VARCHAR

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 814
    Points
    17 814
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    3) le coûts de certaines fonctionnalités de la norme SQL peut être gigantesque. Par exemple Oracle n'a jamais mis en place ce que la norme appelle le DATALINK (alors que SQL Server l'a fait sous la forme du FILESTREAM) parce que cela couterait trop cher à mettre en œuvre sur toutes les plateformes système.... Pour SQL Server c'est bien plus simple du fait de l'unique OS ! Pour IBM DB2, c'est restreint à certaines plateformes (AIX l'unix d'IBM ou encore OS 390....).
    Si je ne me méprends pas sur cette fonctionnalité, il me semble que ça correspond au type BFILE chez Oracle qui est apparu en 8 ou 8i, soit 1997 ou 1999.

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 741
    Points : 52 454
    Points
    52 454
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Si je ne me méprends pas sur cette fonctionnalité, il me semble que ça correspond au type BFILE chez Oracle qui est apparu en 8 ou 8i, soit 1997 ou 1999.
    C'est assez proche, mais les méthodes publiées pour les datalink sont assez particulières et j'ai pas vu grand chose avec le BFILE...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  13. #13
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Vous avez de la chance d'utiliser SQL Server. Vous trouverez dans l'aide en ligne de SQL Server, les mots clés officiels (ISO/ODBC) et ceux spécifiques à SQL Server (sur mon site aussi...) :
    http://msdn.microsoft.com/fr-fr/library/ms189822.aspx
    http://sqlpro.developpez.com/cours/motsreserves/

    Concernant la liste des mots clefs réservé du SQL, il me semble qu'il y a quelques erreurs dans le tableau :

    - THAN et LIMIT sont absents du tableau
    - AGGREGATE, apparu avec la norme 99 est absent du tableau
    - BETWEEN n'est selon moi pas un mot réservé du SQL (mais l'est effectivement pour SQL Server)
    - IGNORE est apparu en 1999 et non en 2008
    ...

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 741
    Points : 52 454
    Points
    52 454
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Concernant la liste des mots clefs réservé du SQL, il me semble qu'il y a quelques erreurs dans le tableau :

    - THAN et LIMIT sont absents du tableau
    - AGGREGATE, apparu avec la norme 99 est absent du tableau
    - BETWEEN n'est selon moi pas un mot réservé du SQL (mais l'est effectivement pour SQL Server)
    - IGNORE est apparu en 1999 et non en 2008
    ...
    THAN, LIMIT, AGGREGATE, IGNORE n'existe pas dans la norme, par contre BETWEEN, oui, c'est un opérateur qui remonte à fort longtemps.

    Voici la liste extraite de la norme 2003 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <key word> ::=
       <reserved word> | <non-reserved word>
     
    <non-reserved word> ::=
     
      A | ABSOLUTE | ACTION | ADA | ADD | ADMIN | AFTER | ALWAYS | ASC
    | ASSERTION | ASSIGNMENT | ATTRIBUTE | ATTRIBUTES
    | BEFORE | BERNOULLI | BREADTH
    | C | CASCADE | CATALOG | CATALOG_NAME | CHAIN | CHARACTER_SET_CATALOG
    | CHARACTER_SET_NAME | CHARACTER_SET_SCHEMA | CHARACTERISTICS | CHARACTERS
    | CLASS_ORIGIN | COBOL | COLLATION | COLLATION_CATALOG | COLLATION_NAME | COLLATION_SCHEMA
    | COLUMN_NAME | COMMAND_FUNCTION | COMMAND_FUNCTION_CODE | COMMITTED
    | CONDITION_NUMBER | CONNECTION | CONNECTION_NAME | CONSTRAINT_CATALOG | CONSTRAINT_NAME
    | CONSTRAINT_SCHEMA | CONSTRAINTS | CONSTRUCTOR | CONTAINS | CONTINUE | CURSOR_NAME
    | DATA | DATETIME_INTERVAL_CODE | DATETIME_INTERVAL_PRECISION | DEFAULTS | DEFERRABLE
    | DEFERRED | DEFINED | DEFINER | DEGREE | DEPTH | DERIVED | DESC | DESCRIPTOR
    | DIAGNOSTICS | DISPATCH | DOMAIN | DYNAMIC_FUNCTION | DYNAMIC_FUNCTION_CODE
    | EQUALS | EXCEPTION | EXCLUDE | EXCLUDING
    | FINAL | FIRST | FOLLOWING | FORTRAN | FOUND
    | G | GENERAL | GENERATED | GO | GOTO | GRANTED
    | HIERARCHY
    | IMMEDIATE | IMPLEMENTATION | INCLUDING | INCREMENT | INITIALLY | INPUT | INSTANCE
    | INSTANTIABLE | INVOKER | ISOLATION
    | K | KEY | KEY_MEMBER | KEY_TYPE
    | LAST | LENGTH | LEVEL | LOCATOR
    | M | MAP | MATCHED | MAXVALUE | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH
    | MESSAGE_TEXT | MINVALUE | MORE | MUMPS
    | NAME | NAMES | NESTING | NEXT | NORMALIZED | NULLABLE | NULLS | NUMBER
    | OBJECT | OCTETS | OPTION | OPTIONS | ORDERING | ORDINALITY | OTHERS
    | OUTPUT | OVERRIDING
    | PAD | PARAMETER_MODE | PARAMETER_NAME | PARAMETER_ORDINAL_POSITION
    | PARAMETER_SPECIFIC_CATALOG | PARAMETER_SPECIFIC_NAME | PARAMETER_SPECIFIC_SCHEMA
    | PARTIAL | PASCAL | PATH | PLACING | PLI | PRECEDING | PRESERVE | PRIOR
    | PRIVILEGES | PUBLIC
    | READ | RELATIVE | REPEATABLE | RESTART | RESTRICT | RETURNED_CARDINALITY
    | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE | ROLE
    | ROUTINE | ROUTINE_CATALOG | ROUTINE_NAME | ROUTINE_SCHEMA | ROW_COUNT
    | SCALE | SCHEMA | SCHEMA_NAME | SCOPE_CATALOG | SCOPE_NAME | SCOPE_SCHEMA
    | SECTION | SECURITY | SELF | SEQUENCE | SERIALIZABLE | SERVER_NAME | SESSION
    | SETS | SIMPLE | SIZE | SOURCE | SPACE | SPECIFIC_NAME | STATE | STATEMENT
    | STRUCTURE | STYLE | SUBCLASS_ORIGIN
    | TABLE_NAME | TEMPORARY | TIES | TOP_LEVEL_COUNT | TRANSACTION
    | TRANSACTION_ACTIVE | TRANSACTIONS_COMMITTED | TRANSACTIONS_ROLLED_BACK
    | TRANSFORM | TRANSFORMS | TRIGGER_CATALOG | TRIGGER_NAME | TRIGGER_SCHEMA | TYPE
    | UNBOUNDED | UNCOMMITTED | UNDER | UNNAMED | USAGE | USER_DEFINED_TYPE_CATALOG
    | USER_DEFINED_TYPE_CODE | USER_DEFINED_TYPE_NAME | USER_DEFINED_TYPE_SCHEMA
    | VIEW
    | WORK | WRITE
    | ZONE
     
    <reserved word> ::=
     
      ABS | ALL | ALLOCATE | ALTER | AND | ANY | ARE | ARRAY | AS | ASENSITIVE
    | ASYMMETRIC | AT | ATOMIC | AUTHORIZATION | AVG
    | BEGIN | BETWEEN | BIGINT | BINARY | BLOB | BOOLEAN | BOTH | BY
    | CALL | CALLED | CARDINALITY | CASCADED | CASE | CAST | CEIL | CEILING
    | CHAR | CHAR_LENGTH | CHARACTER | CHARACTER_LENGTH | CHECK | CLOB | CLOSE
    | COALESCE | COLLATE | COLLECT | COLUMN | COMMIT | CONDITION | CONNECT
    | CONSTRAINT | CONVERT | CORR | CORRESPONDING | COUNT | COVAR_POP | COVAR_SAMP
    | CREATE | CROSS | CUBE | CUME_DIST | CURRENT | CURRENT_DATE
    | CURRENT_DEFAULT_TRANSFORM_GROUP | CURRENT_PATH | CURRENT_ROLE | CURRENT_TIME
    | CURRENT_TIMESTAMP | CURRENT_TRANSFORM_GROUP_FOR_TYPE | CURRENT_USER
    | CURSOR | CYCLE
    | DATE | DAY | DEALLOCATE | DEC | DECIMAL | DECLARE | DEFAULT | DELETE
    | DENSE_RANK | DEREF | DESCRIBE | DETERMINISTIC | DISCONNECT | DISTINCT
    | DOUBLE | DROP | DYNAMIC
    | EACH | ELEMENT | ELSE | END | END-EXEC | ESCAPE | EVERY | EXCEPT | EXEC
    | EXECUTE | EXISTS | EXP | EXTERNAL | EXTRACT
    | FALSE | FETCH | FILTER | FLOAT | FLOOR | FOR | FOREIGN | FREE | FROM
    | FULL | FUNCTION | FUSION
    | GET | GLOBAL | GRANT | GROUP | GROUPING
    | HAVING | HOLD | HOUR
    | IDENTITY | IN | INDICATOR | INNER | INOUT | INSENSITIVE | INSERT
    | INT | INTEGER | INTERSECT | INTERSECTION | INTERVAL | INTO | IS
    | JOIN
    | LANGUAGE | LARGE | LATERAL | LEADING | LEFT | LIKE | LN | LOCAL
    | LOCALTIME | LOCALTIMESTAMP | LOWER
    | MATCH | MAX | MEMBER | MERGE | METHOD | MIN | MINUTE
    | MOD | MODIFIES | MODULE | MONTH | MULTISET
    | NATIONAL | NATURAL | NCHAR | NCLOB | NEW | NO | NONE | NORMALIZE | NOT
    | NULL | NULLIF | NUMERIC
    | OCTET_LENGTH | OF | OLD | ON | ONLY | OPEN | OR | ORDER | OUT | OUTER
    | OVER | OVERLAPS | OVERLAY
    | PARAMETER | PARTITION | PERCENT_RANK | PERCENTILE_CONT | PERCENTILE_DISC
    | POSITION | POWER | PRECISION | PREPARE | PRIMARY | PROCEDURE
    | RANGE | RANK | READS | REAL | RECURSIVE | REF | REFERENCES | REFERENCING
    | REGR_AVGX | REGR_AVGY | REGR_COUNT | REGR_INTERCEPT | REGR_R2 | REGR_SLOPE
    | REGR_SXX | REGR_SXY | REGR_SYY | RELEASE | RESULT | RETURN | RETURNS
    | REVOKE | RIGHT | ROLLBACK | ROLLUP | ROW | ROW_NUMBER | ROWS
    | SAVEPOINT | SCOPE | SCROLL | SEARCH | SECOND | SELECT | SENSITIVE
    | SESSION_USER | SET | SIMILAR | SMALLINT | SOME | SPECIFIC | SPECIFICTYPE
    | SQL | SQLEXCEPTION | SQLSTATE | SQLWARNING | SQRT | START | STATIC
    | STDDEV_POP | STDDEV_SAMP | SUBMULTISET | SUBSTRING | SUM | SYMMETRIC
    | SYSTEM | SYSTEM_USER
    | TABLE | TABLESAMPLE | THEN | TIME | TIMESTAMP | TIMEZONE_HOUR | TIMEZONE_MINUTE
    | TO | TRAILING | TRANSLATE | TRANSLATION | TREAT | TRIGGER | TRIM | TRUE
    | UESCAPE | UNION | UNIQUE | UNKNOWN | UNNEST | UPDATE | UPPER | USER | USING
    | VALUE | VALUES | VAR_POP | VAR_SAMP | VARCHAR | VARYING
    | WHEN | WHENEVER | WHERE | WIDTH_BUCKET | WINDOW | WITH | WITHIN | WITHOUT
    | YEAR
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  15. #15
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    THAN, LIMIT, AGGREGATE, IGNORE n'existe pas dans la norme,
    Dans la norme SQL99 si !

    Citation Envoyé par SQLpro Voir le message
    par contre BETWEEN, oui, c'est un opérateur qui remonte à fort longtemps.
    Dans la norme SQL99 non (mais il est revenu après)

    ça confirme le reste de la discussion : être conforme à la norme n'a pas de sens en soit, encore faut-il savoir de quelle version de la norme on parle !


    sources :
    doc postgresql
    - http://www.postgresql.org/docs/8.1/s...-appendix.html
    - http://www.postgresql.org/docs/9.2/s...-appendix.html


    extrait de la norme 99

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    <non-reserved word> ::=
    ABS | ADA | ASENSITIVE | ASSIGNMENT | ASYMMETRIC | ATOMIC | AVG
    | BETWEEN | BIT_LENGTH | BITVAR
    | C | CALLED | CARDINALITY | CATALOG_NAME | CHAIN | CHAR_LENGTH
    | CHARACTER_LENGTH | CHARACTER_SET_CATALOG | CHARACTER_SET_NAME
    | CHARACTER_SET_SCHEMA | CHECKED | CLASS_ORIGIN | COALESCE | COBOL
    | COLLATION_CATALOG | COLLATION_NAME | COLLATION_SCHEMA | COLUMN_NAME
    | COMMAND_FUNCTION | COMMAND_FUNCTION_CODE | COMMITTED | CONDITION_NUMBER
    | CONNECTION_NAME | CONSTRAINT_CATALOG | CONSTRAINT_NAME | CONSTRAINT_SCHEMA
    | CONTAINS | CONVERT | COUNT | CURSOR_NAME
    | DATETIME_INTERVAL_CODE | DATETIME_INTERVAL_PRECISION | DEFINED | DEFINER
    | DISPATCH | DYNAMIC_FUNCTION | DYNAMIC_FUNCTION_CODE
    | EXISTING | EXISTS | EXTRACT
    | FINAL | FORTRAN
    | G | GENERATED | GRANTED
    | HIERARCHY | HOLD
    | IMPLEMENTATION | INFIX | INSENSITIVE | INSTANCE | INSTANTIABLE | INVOKER
    | K | KEY_MEMBER | KEY_TYPE
    | LENGTH | LOWER
    | M | MAX | MIN | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT
    | METHOD | MOD | MORE | MUMPS
    | NAME | NULLABLE | NUMBER | NULLIF
    | OCTET_LENGTH | OPTIONS | OVERLAPS | OVERLAY | OVERRIDING
    | PASCAL | PARAMETER_MODE | PARAMETER_NAME | PARAMETER_ORDINAL_POSITION
    | PARAMETER_SPECIFIC_CATALOG | PARAMETER_SPECIFIC_NAME
    | PARAMETER_SPECIFIC_SCHEMA | PLI | POSITION
    | REPEATABLE | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE
    | ROUTINE_CATALOG | ROUTINE_NAME | ROUTINE_SCHEMA | ROW_COUNT
    | SCALE | SCHEMA_NAME | SECURITY | SELF | SENSITIVE | SERIALIZABLE | SERVER_NAME
    | SIMPLE | SOURCE | SPECIFIC_NAME | SIMILAR | SUBLIST | SUBSTRING | SUM | STYLE
    | SUBCLASS_ORIGIN | SYMMETRIC | SYSTEM
    | TABLE_NAME | TRANSACTIONS_COMMITTED | TRANSACTIONS_ROLLED_BACK
    | TRANSACTION_ACTIVE | TRANSFORM | TRANSFORMS | TRANSLATE | TRIGGER_CATALOG
    | TRIGGER_SCHEMA | TRIGGER_NAME | TRIM | TYPE
    | UNCOMMITTED | UNNAMED | UPPER | USER_DEFINED_TYPE_CATALOG
    | USER_DEFINED_TYPE_NAME | USER_DEFINED_TYPE_SCHEMA
     
    <reserved word> ::=
    ABSOLUTE | ACTION | ADD | ADMIN | AFTER | AGGREGATE
    | ALIAS | ALL | ALLOCATE | ALTER | AND | ANY | ARE | ARRAY | AS | ASC
    | ASSERTION | AT | AUTHORIZATION
    | BEFORE | BEGIN | BINARY | BIT | BLOB | BOOLEAN | BOTH | BREADTH | BY
    | CALL | CASCADE | CASCADED | CASE | CAST | CATALOG | CHAR | CHARACTER
    | CHECK | CLASS | CLOB | CLOSE | COLLATE | COLLATION | COLUMN | COMMIT
    | COMPLETION | CONNECT | CONNECTION | CONSTRAINT | CONSTRAINTS
    | CONSTRUCTOR | CONTINUE | CORRESPONDING | CREATE | CROSS | CUBE | CURRENT
    | CURRENT_DATE | CURRENT_PATH | CURRENT_ROLE | CURRENT_TIME | CURRENT_TIMESTAMP
    | CURRENT_USER | CURSOR | CYCLE
    | DATA | DATE | DAY | DEALLOCATE | DEC | DECIMAL | DECLARE | DEFAULT
    | DEFERRABLE | DEFERRED | DELETE | DEPTH | DEREF | DESC | DESCRIBE | DESCRIPTOR
    | DESTROY | DESTRUCTOR | DETERMINISTIC | DICTIONARY | DIAGNOSTICS | DISCONNECT
    | DISTINCT | DOMAIN | DOUBLE | DROP | DYNAMIC
    | EACH | ELSE | END | END-EXEC | EQUALS | ESCAPE | EVERY | EXCEPT
    | EXCEPTION | EXEC | EXECUTE | EXTERNAL
    | FALSE | FETCH | FIRST | FLOAT | FOR | FOREIGN | FOUND | FROM | FREE | FULL
    | FUNCTION
    | GENERAL | GET | GLOBAL | GO | GOTO | GRANT | GROUP | GROUPING
    | HAVING | HOST | HOUR
    | IDENTITY | IGNORE | IMMEDIATE | IN | INDICATOR | INITIALIZE | INITIALLY
    | INNER | INOUT | INPUT | INSERT | INT | INTEGER | INTERSECT | INTERVAL
    | INTO | IS | ISOLATION | ITERATE
    | JOIN
    | KEY
    | LANGUAGE | LARGE | LAST | LATERAL | LEADING | LEFT | LESS | LEVEL | LIKE
    | LIMIT
    | LOCAL | LOCALTIME | LOCALTIMESTAMP | LOCATOR
    | MAP | MATCH | MINUTE | MODIFIES | MODIFY | MODULE | MONTH
    | NAMES | NATIONAL | NATURAL | NCHAR | NCLOB | NEW | NEXT | NO | NONE
    | NOT | NULL | NUMERIC
    | OBJECT | OF | OFF | OLD | ON | ONLY | OPEN | OPERATION | OPTION
    | OR | ORDER | ORDINALITY | OUT | OUTER | OUTPUT
    | PAD | PARAMETER | PARAMETERS | PARTIAL | PATH | POSTFIX | PRECISION | PREFIX
    | PREORDER | PREPARE | PRESERVE | PRIMARY
    | PRIOR | PRIVILEGES | PROCEDURE | PUBLIC
    | READ | READS | REAL | RECURSIVE | REF | REFERENCES | REFERENCING | RELATIVE
    | RESTRICT | RESULT | RETURN | RETURNS | REVOKE | RIGHT
    | ROLE | ROLLBACK | ROLLUP | ROUTINE | ROW | ROWS
    | SAVEPOINT | SCHEMA | SCROLL | SCOPE | SEARCH | SECOND | SECTION | SELECT
    | SEQUENCE | SESSION | SESSION_USER | SET | SETS | SIZE | SMALLINT | SOME| SPACE
    | SPECIFIC | SPECIFICTYPE | SQL | SQLEXCEPTION | SQLSTATE | SQLWARNING | START
    | STATE | STATEMENT | STATIC | STRUCTURE | SYSTEM_USER
    | TABLE | TEMPORARY | TERMINATE | THAN | THEN | TIME | TIMESTAMP
    | TIMEZONE_HOUR | TIMEZONE_MINUTE | TO | TRAILING | TRANSACTION | TRANSLATION
    | TREAT | TRIGGER | TRUE
    | UNDER | UNION | UNIQUE | UNKNOWN
    | UNNEST | UPDATE | USAGE | USER | USING
    | VALUE | VALUES | VARCHAR | VARIABLE | VARYING | VIEW
    | WHEN | WHENEVER | WHERE | WITH | WITHOUT | WORK | WRITE
    | YEAR
    | ZONE

  16. #16
    Membre régulier
    Homme Profil pro
    Consultant Décisionnel
    Inscrit en
    Janvier 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 128
    Points : 84
    Points
    84
    Par défaut
    Merci pour cette discussion animée très intéressante pour un néophyte comme moi.

  17. #17
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 741
    Points : 52 454
    Points
    52 454
    Billets dans le blog
    5
    Par défaut
    Salut,

    Citation Envoyé par aieeeuuuuu Voir le message
    Dans la norme SQL99 si !
    aieeeuuuuu, ne te fie par à PostgreSQL, leur doc est farcie de conneries. Si tu doit donner une référence, fais le avec la norme SQL, même pas avec un draft (exemple : http://www.contrib.andrew.cmu.edu/~s...ql/sql1992.txt) parce que ça évolue !
    La norme ne retire JAMAIS des mots clef, pour des raisons de rétro compatibilité. Certains mots clef dont considéré comme obsolètes, mais figurent toujours dans la liste des mots réservés.

    Donc, non THAN n'est pas un mot clef de SQL, etc...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/05/2013, 18h23
  2. Rechercher dans tous les mots d'une table
    Par Romanodi13 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/01/2011, 22h30
  3. Requete avec un seul mot recherché dans tous les champs
    Par ju0123456789 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/05/2009, 15h42
  4. Réponses: 4
    Dernier message: 01/03/2006, 14h58
  5. Pour qu'un logiciel ne soit utiliser dans tous les sessions
    Par mouloudéen dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 14/12/2005, 20h10

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