sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server VISA TABELLER Motsvarande

Då och då kommer jag på mig själv med att skriva VISA TABELLER i SQL Server och förväntar sig att få en lista med tabeller.

Det skulle vara helt vettigt om jag använde MySQL eller MariaDB. Men SQL Server/T-SQL har ingen VISA TABELLER uttalande som MySQL eller MariaDB, så det fungerar aldrig. Och jag glömmer hela tiden. Men lyckligtvis har SQL Server alternativ.

Här är fem alternativ för att få en lista över tabeller i SQL Server. Dessa kan användas när du försöker hitta den svårfångade VISA TABELLER uttalande i SQL Server.

Alternativ 1 – sys.tables

sys.tables systemkatalogvyn är utformad speciellt för att returnera användartabellinformation:

SELECT name
FROM sys.tables;

Detta returnerar namnet på alla användartabeller i den aktuella databasen. Du kan byta till rätt databas genom att sätta USE före satsen där är namnet på databasen för vilka tabeller du vill lista.

Till exempel returnerar följande sats alla användartabeller från KrankyKranes databas:

USE KrankyKranes;
SELECT name
FROM sys.tables;

Du kan också returnera schemat om du vill:

SELECT 
    SCHEMA_NAME(schema_id) AS schema_name,
    name AS table_name
FROM sys.tables;

Här använde jag SCHEMA_NAME() funktion för att översätta värdet för schema_id kolumnen i det faktiska namnet på schemat.

Alternativ 2 – sys.objects

Du kan också använda sys.objects systemkatalogvy. Om du väljer det här alternativet kan du filtrera det efter typ så att endast användartabeller returneras:

SELECT name 
FROM sys.objects 
WHERE type = 'U';

Detta returnerar användartabeller från den aktuella databasen. Den här vyn innehåller också ett schema_id kolumnen, så att du kan använda SCHEMA_NAME() funktion för att översätta det till schemanamnet om det behövs.

Alternativ 3 – information_schema.tables

INFORMATION_SCHEMA.TABLES view returnerar en rad för varje tabell eller vy i den aktuella databasen som den aktuella användaren har behörighet för.

Vi kan filtrera denna vy efter typ så att endast bastabeller returneras:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'Base Table';

TABLE_SCHEMA kolumnen innehåller tabellschemats namn, så vi behöver inte använda SCHEMA_NAME() funktion för att konvertera schema-ID till dess namn.

Alternativ 4 – sp_tables

sp_tables lagrad procedur returnerar en lista över objekt som kan frågas i den aktuella miljön. Detta betyder vilken tabell eller vy som helst, förutom synonymobjekt.

Det snabbaste och enklaste sättet att anropa denna procedur är så här:

sp_tables;

Men det kan returnera en lång lista med objekt.

Det är vanligtvis bättre att vara mer specifik. Till exempel:

EXEC sp_tables
    @table_owner = 'dbo', 
    @table_qualifier = 'KrankyKranes', 
    @table_type = "'TABLE'";

Här berättar jag proceduren för att visa användartabeller i KrankyKranes databas som ägs av dbo .

@table_type argument accepterar en kommaseparerad lista med värden. Så om vi vill inkludera åsikter kan vi göra följande:

EXEC sp_tables
    @table_owner = 'dbo', 
    @table_qualifier = 'Music', 
    @table_type = "'TABLE', 'VIEW'";

Alternativ 5 – dbo.sysobjects

Före SQL Server 2005, dbo.sysobjects view var vyn för att visa tabeller och andra objekt.

Så om du använder en gammal utgåva av SQL Server kan du göra detta:

SELECT name 
FROM dbo.sysobjects
WHERE xtype = 'U';

  1. Hur skapar man en databas i SQL?

  2. Inbjudan till papper för PGDay.IT 2011 har förlängts

  3. Komma igång med Oracle SQL Developer på MacOSX

  4. villkorlig unik begränsning