sentencias resueltos lista ejercicios ejemplos datos consultas complejas comandos sql mysql sql-server database

resueltos - lista de comandos sql



¿Cuál es el comando SQL para devolver los nombres de campo de una tabla? (12)

El estándar SQL-92 define INFORMATION_SCHEMA que cumple con la compatibilidad de rdbms con MS SQL Server. Los siguientes trabajos para MS SQL Server 2000/2005/2008 y MySql 5 y superior

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = ''myTable''

Específico del servidor MS SQl:

exec sp_help ''myTable''

Esta solución devuelve varios conjuntos de resultados dentro de los cuales se encuentra la información que desea, mientras que la primera le brinda exactamente lo que desea.

También para completar, puede consultar las tablas del sistema directamente. Esto no se recomienda ya que el esquema puede cambiar entre las versiones de SQL Server e INFORMATION_SCHEMA es una capa de abstracción sobre estas tablas. Pero aquí está de todos modos para SQL Server 2000

select [name] from dbo.syscolumns where id = object_id(N''[dbo].[myTable]'')

Digamos que tengo una tabla llamada myTable. ¿Cuál es el comando SQL para devolver todos los nombres de campo de esta tabla? Si la respuesta es específica de la base de datos, entonces necesito SQL Server ahora, pero también estaría interesado en ver la solución para otros sistemas de bases de datos.


En Sybase SQL Anywhere, las columnas y la información de la tabla se almacenan por separado, por lo que necesita una unión:

select c.column_name from systabcol c key join systab t on t.table_id=c.table_id where t.table_name=''tablename''


Esto también es específico de MySQL:

show fields from [tablename];

esto no solo muestra los nombres de la tabla, sino que también extrae toda la información sobre los campos.


MySQL

describe tablename


MySQL es lo mismo:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = ''tablename''


PostgreSQL entiende el

select column_name from information_schema.columns where table_name = ''myTable''

sintaxis. Si está trabajando en el shell psql, también puede usar

/d myTable

para una descripción (columnas, y sus tipos de datos y restricciones)


Puede usar las vistas del sistema proporcionadas para hacer esto:

p.ej

select * from INFORMATION_SCHEMA.COLUMNS where table_name = ''[table name]''

alternativamente, puede usar el sistema proc sp_help

p.ej

sp_help ''[table name]''


Si solo quieres los nombres de las columnas, entonces

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = ''tablename''

En MS SQL Server, para obtener más información sobre la tabla, como los tipos de columnas, use

sp_help ''tablename''


Solo para completar, ya que MySQL y Postgres ya han sido mencionados: con SQLite, use " pragma table_info() "

sqlite> pragma table_info(''table_name''); cid name type notnull dflt_value pk ---------- ---------- ---------- ---------- ---------- ---------- 0 id integer 99 1 1 name 0 0


Para aquellos que buscan una respuesta en Oracle:

SELECT column_name FROM user_tab_columns WHERE table_name = ''TABLENAME''


MySQL 3 y 4 (y 5):

desc tablename

que es un alias para

show fields from tablename

SQL Server (desde 2000) y MySQL 5:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = ''tablename''

Completando la respuesta: como han dicho las personas a continuación, en SQL Server también puede usar el procedimiento almacenado sp_help

exec sp_help ''tablename''


Para IBM DB2 (lo comprobará dos veces el lunes para estar seguro).

SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME=''MYTABLE''