sql >> Database >  >> RDS >> Mysql

SQL Select inclusief gegevenstype en gegevenswaarden

U kunt SELECT EMPLOYEE.COL1, INFO.DATA_TYPE FROM EMPLOYEE, INFORMATION_SCHEMA.COLUMNS INFO WHERE INFO.TABLE_NAME='EMPLOYEE' AND COLUMN_NAME='COL1' Maar om meer velden te selecteren, moet u opnieuw een instantie van INFORMATION_SCHEMA.COLUMNS met een andere alias toevoegen.

Maar je zou dit om vele redenen niet moeten doen.

Technisch gezien:CROSS JOIN (de tabellen in FROM worden eenvoudigweg met een komma weergegeven) is een grote belasting voor de databaseserver. FROM T1, T2 koppelt alle rijen van T1 aan alle rijen van T2 en onderzoekt de resultaatrijen. Als T1 n rijen heeft en T2 m heeft, dan heeft het resultaat n*m rijen.

Logisch 1:U heeft deze informatie niet nodig om te worden geretourneerd. Wanneer u een query invoert (een SELECT) is het geretourneerde schema bekend; de query bepaalt welke datatypes de resultaatkolommen zijn. Logisch 2:Aangezien elke rij dezelfde datatypes in de kolommen heeft, hoeft de type-informatie niet in elke rij te worden geretourneerd. bijv. uw voorbeeld dat gegevens van 1000 werknemers retourneert, zou onnodig worden overgedragen op elke regel dat het veld AGE INTEGER is, de NAAM VARCHAR is enzovoort...

Als u op de een of andere manier het schema van het resultaat niet zou kennen (bijvoorbeeld vanwege gegenereerde zoekopdrachten of iets dergelijks), dan zou de bovenstaande oplossing u niet helpen.




  1. Oracle:rij kopiëren terwijl één veld wordt bijgewerkt

  2. Hoe de volledige DDL van een Oracle-schema (scriptable) te genereren?

  3. MySQL MIN() en MAX() met LIMIT

  4. Hex in tekstweergave converteren naar decimaal getal