sql >> Databáze >  >> RDS >> Sqlserver

SQL Server ZOBRAZIT TABULKY Ekvivalent

Tu a tam se přistihnu, že píšu SHOW TABLES v SQL Server s očekáváním získání seznamu tabulek.

To by dávalo dokonalý smysl, kdybych používal MySQL nebo MariaDB. Ale SQL Server/T-SQL nemá SHOW TABLES příkaz jako MySQL nebo MariaDB, takže to nikdy nefunguje. A pořád zapomínám. Ale naštěstí má SQL Server alternativy.

Zde je pět možností, jak získat seznam tabulek na serveru SQL Server. Lze je použít, kdykoli se snažíte najít ten nepolapitelný SHOW TABLES příkaz v SQL Server.

Možnost 1 – sys.tables

Soubor sys.tables zobrazení systémového katalogu je navrženo speciálně pro vrácení informací o uživatelské tabulce:

SELECT name
FROM sys.tables;

Vrátí názvy všech uživatelských tabulek v aktuální databázi. Do správné databáze můžete přepnout tak, že před příkaz přidáte USE <database name> kde <database name> je název databáze, pro kterou chcete vypsat tabulky.

Například následující příkaz vrátí všechny uživatelské tabulky z KrankyKranes databáze:

USE KrankyKranes;
SELECT name
FROM sys.tables;

Pokud chcete, můžete schéma také vrátit:

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

Zde jsem použil SCHEMA_NAME() funkce pro překlad hodnoty schema_id sloupec do skutečného názvu schématu.

Možnost 2 – sys.objects

Můžete také použít sys.objects zobrazení katalogu systému. Pokud zvolíte tuto možnost, můžete ji filtrovat podle typu, aby byly vráceny pouze uživatelské tabulky:

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

Tím se vrátí uživatelské tabulky z aktuální databáze. Toto zobrazení také obsahuje schema_id takže můžete použít SCHEMA_NAME() funkce, která to v případě potřeby přeloží do názvu schématu.

Možnost 3 – information_schema.tables

INFORMATION_SCHEMA.TABLES view vrátí jeden řádek pro každou tabulku nebo pohled v aktuální databázi, pro kterou má aktuální uživatel oprávnění.

Toto zobrazení můžeme filtrovat podle typu, aby byly vráceny pouze základní tabulky:

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

TABLE_SCHEMA sloupec obsahuje název schématu tabulky, a proto nemusíme používat SCHEMA_NAME() funkci převést ID schématu na jeho název.

Možnost 4 – sp_tables

sp_tables uložená procedura vrátí seznam objektů, které lze v aktuálním prostředí dotazovat. To znamená jakoukoli tabulku nebo pohled, kromě objektů synonym.

Nejrychlejší a nejsnadnější způsob volání této procedury je tento:

sp_tables;

Ale to může vrátit dlouhý seznam objektů.

Obvykle je lepší být konkrétnější. Například:

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

Zde říkám postup pro zobrazení uživatelských tabulek v KrankyKranes databáze, které vlastní dbo .

@table_type argument přijímá čárkami oddělený seznam hodnot. Pokud bychom tedy chtěli zahrnout pohledy, mohli bychom udělat následující:

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

Možnost 5 – dbo.sysobjects

Před verzí SQL Server 2005 dbo.sysobjects view byl pohled pro zobrazení tabulek a dalších objektů.

Pokud tedy používáte starou edici SQL Server, můžete to udělat takto:

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

  1. Systém správy relačních databází (RDBMS):MSSQL vs MySQL

  2. Co přesně dělají uvozovky kolem názvu tabulky?

  3. Použijte XEvent Profiler k zachycení dotazů na SQL Server

  4. Použití Geekbench 3 k vyhodnocení výkonu databázového serveru