Estoy trabajando en una aplicación que puede manejar múltiples servidores de bases de datos como "MySQL" y "MS SQL Server".
Quiero obtener los nombres de las tablas de una base de datos particular usando una consulta general que debería ser adecuada para todos los tipos de bases de datos. He intentado lo siguiente:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Pero está dando nombres de tablas de todas las bases de datos de un servidor en particular, pero quiero obtener solo nombres de tablas de la base de datos seleccionada. ¿Cómo puedo restringir esta consulta para obtener tablas de una base de datos en particular?
sql
sql-server
Awan
fuente
fuente
Respuestas:
Probablemente debido a la forma en que diferentes sql dbms manejan los esquemas.
Intenta lo siguiente
Para SQL Server:
Para MySQL:
Para Oracle, creo que el equivalente sería usar
DBA_TABLES
.fuente
USE dbName GO
para SQL Server. Si no está utilizando la base de datos , el resultado no se mostrará, incluso si hay tablas en esa base de datos.USE dbName GO
prefijo en Server 2014.Robado de aquí :
fuente
La siguiente consulta seleccionará todo
Tables
en la base de datos llamadaDBName
:fuente
Podemos tratar sin su
GO
lugar puede utilizar punto;
y coma .fuente
Solo pon el
DATABASE NAME
frente deINFORMATION_SCHEMA.TABLES
:fuente
En mysql, use:
Después de seleccionar el DB con:
fuente
No vi esta respuesta, pero bueno, esto es lo que hago:
fuente
Para Mysql puedes hacer simple. MOSTRAR TABLAS;
fuente
fuente
fuente
sp_MSforeachtable
.Si está trabajando con múltiples esquemas en un servidor MS SQL, entonces SELECCIONAR TABLE_NAME sin seleccionar simultáneamente TABLE_SCHEMA podría ser de beneficio limitado, por lo que asumí que estamos interesados en las tablas que pertenecen a un esquema conocido cuando se usa MS SQL Server.
He probado la consulta anterior con SQL Server Management Studio usando una base de datos mía de SQL Server y con MySQL Workbench usando una base de datos MySQL, y en ambos casos da los nombres de las tablas.
La consulta combina las dos consultas diferentes de Michael Baylon en una que luego puede ejecutarse en cualquier tipo de base de datos. La primera parte de la cláusula WHERE funciona en bases de datos MySQL y la segunda parte (después del OR) funciona en bases de datos MS SQL Server. Es feo y lógicamente un poco incorrecto, ya que supone que no hay un esquema no deseado con el mismo nombre que la base de datos. Esto podría ayudar a alguien que esté buscando una única consulta que pueda ejecutarse en cualquiera de los servidores de bases de datos.
fuente
ACTUALIZACIÓN PARA LA ÚLTIMA VERSIÓN DEL SERVIDOR MSSQL (17.7)
O
SELECT *
para obtener todas las columnas.fuente
Para seleccionar la consulta de la base de datos a continuación:
Ahora
Ahora puede ver las tablas creadas a continuación en la consola.
PFA
fuente
Si oráculo es:
Es decir, si solo desea los objetos que son propiedad de los que han iniciado sesión, de lo
user/schema
contrario, puede usarlosall_tables
odba_tables
incluir tablas del sistema.fuente
Partiendo de la respuesta de Michael Baylon, necesitaba una lista que también incluyera la información del esquema y así es como modifiqué su consulta.
fuente
En nuestro código Oracle DB (PL / SQL) a continuación, trabajamos para obtener la lista de todas las tablas existentes en nuestro DB.
y
Ambos están trabajando. Intentemos encontrar el tuyo.
fuente
Simplemente obtenga toda la información de improtanat con este SQL a continuación en Mysql
fuente