Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL Select, y compris le type de données et les valeurs de données

Vous pouvez SELECT EMPLOYEE.COL1, INFO.DATA_TYPE FROM EMPLOYEE, INFORMATION_SCHEMA.COLUMNS INFO WHERE INFO.TABLE_NAME='EMPLOYEE' AND COLUMN_NAME='COL1' Mais pour sélectionner plus de champs, vous devrez à nouveau ajouter une autre instance de INFORMATION_SCHEMA.COLUMNS avec un alias différent.

Mais vous ne devriez pas le faire pour de nombreuses raisons.

Techniquement :CROSS JOIN (les tables de FROM répertoriées simplement avec une virgule) sollicite beaucoup le serveur de base de données. FROM T1, T2 associe toutes les lignes de T1 à toutes les lignes de T2 et examine les lignes de résultat. Si T1 a n lignes et T2 a m alors le résultat a n*m lignes.

Logiquement 1 :Vous ne devriez pas avoir besoin que ces informations soient renvoyées. Lorsque vous entrez une requête (un SELECT), le schéma renvoyé est connu ; la requête détermine les types de données des colonnes de résultats. Logiquement 2 :étant donné que chaque ligne a les mêmes types de données dans les colonnes, vous n'avez pas besoin que les informations de type soient renvoyées dans chaque ligne. Par exemple. votre exemple renvoyant les données de 1000 employés serait inutilement transféré sur chaque ligne que le champ AGE est INTEGER, le NAME est VARCHAR et ainsi de suite...

Si vous ne connaissiez pas le schéma du résultat (par exemple, à cause de requêtes générées ou similaires), la solution ci-dessus ne vous aiderait pas.