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

Vrátit seznam tabulek a pohledů na SQL Server pomocí T-SQL (sp_tables)

V SQL Server můžete použít sp_tables systémová uložená procedura k získání seznamu tabulek a pohledů v aktuálním prostředí.

Můžete vrátit všechny tabulky a pohledy, nebo je můžete zúžit na konkrétního vlastníka, typ, vzor nebo dokonce na konkrétní tabulku či pohled.

Syntaxe

Syntaxe vypadá takto:

sp_tables [ [ @table_name = ] 'name' ]   
     [ , [ @table_owner = ] 'owner' ]   
     [ , [ @table_qualifier = ] 'qualifier' ]   
     [ , [ @table_type = ] "type" ]   
     [ , [@fUsePattern = ] 'fUsePattern'];

Všechny argumenty jsou volitelné.

Příklad 1 – Žádné argumenty

Tuto uloženou proceduru můžete spustit bez jakýchkoli argumentů. Tím se vrátí všechny tabulky a pohledy v aktuálním prostředí.

Takhle:

EXEC sp_tables;

To vrátí více než 500 řádků v mém systému, takže zde nebudu poskytovat výsledky. Kromě toho, že vrací uživatelem definované tabulky a pohledy, vrací také systémové objekty, jako je sys a INFORMATION_SCHEMA tabulky a pohledy.

Příklad 2 – Všechny argumenty

V druhém extrému je zde příklad, který zahrnuje všechny argumenty. To zúží výsledky na konkrétní název tabulky, konkrétní typ, konkrétní kvalifikátor a konkrétního vlastníka.

EXEC sp_tables
  @table_name = 'Customers',
  @table_owner = 'Sales',
  @table_qualifier = 'WideWorldImporters',
  @table_type = "'TABLE'",
  @fUsePattern = 1;

Výsledek:

+--------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER    | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|--------------------+---------------+--------------+--------------+-----------|
| WideWorldImporters | Sales         | Customers    | TABLE        | NULL      |
+--------------------+---------------+--------------+--------------+-----------+

Příklad 3 – Vrácení konkrétní tabulky

Jednodušší způsob, jak vrátit konkrétní tabulku, je jednoduše použít první argument.

Takhle:

EXEC sp_tables @table_name = 'Customers';

Nebo ještě stručněji, jako jeden z těchto:

EXEC sp_tables 'Customers';
sp_tables 'Customers';

Mějte však na paměti, že můžete získat více než jeden řádek. V tomto příkladu jsou vráceny dva řádky:

+--------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER    | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|--------------------+---------------+--------------+--------------+-----------|
| WideWorldImporters | Sales         | Customers    | TABLE        | NULL      |
| WideWorldImporters | Website       | Customers    | VIEW         | NULL      |
+--------------------+---------------+--------------+--------------+-----------+

První řádek je pro tabulku a druhý řádek je pro pohled.

Pokud jsem neměl zájem o zobrazení žádných pohledů nebo systémových tabulek, mohl bych přidat ještě jeden argument pro určení typu tabulky.

Příklad 4 – Vrácení určitého typu tabulky

Zde upřesním předchozí příklad zadáním pouze typu tabulky, která mě zajímá, spolu s názvem tabulky.

EXEC sp_tables 
  @table_name = 'Customers',
  @table_type = "'TABLE'";

Výsledek:

+--------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER    | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|--------------------+---------------+--------------+--------------+-----------|
| WideWorldImporters | Sales         | Customers    | TABLE        | NULL      |
+--------------------+---------------+--------------+--------------+-----------+

Mezi přijatelné typy patří VIEW , TABLE a SYSTEMTABLE .

Pamatujte, že typy tabulek musí být velká.

Příklad 5 – Vrácení více typů tabulek

Možná jste si všimli, že syntaxe pro typ tabulky používá jednoduché uvozovky a dvojité uvozovky. Je to proto, že přijímá čárkami oddělený seznam typů tabulek. Celý seznam je uzavřen do dvojitých uvozovek a každá položka seznamu je uzavřena do jednoduchých uvozovek, přičemž jednotlivé položky jsou odděleny čárkou.

Zde je příklad vracení typů tabulek TABLE a VIEW .

EXEC sp_tables 
  @table_type = "'TABLE','VIEW'";

Upozorňujeme, že pokud SET QUOTED_IDENTIFIER je ON , každá jednoduchá uvozovka musí být zdvojená a celý parametr musí být uzavřen do jednoduchých uvozovek.

Příklad 6 – Poznámka k argumentu kvalifikátoru tabulky

Pokud použijete @table_qualifier argument, jeho hodnota musí být stejná jako aktuální prostředí, jinak dostanete chybu. Na serveru SQL Server představuje kvalifikátor tabulky název databáze. V některých produktech představuje název serveru databázového prostředí tabulky.

Zde je to, co se stane v SQL Server, pokud použiji hodnotu, která se liší od aktuální databáze:

USE Music;
EXEC sp_tables 
  @table_qualifier = 'WideWorldImporters';

Výsledek:

Msg 15250, Level 16, State 1, Procedure sp_tables, Line 86
The database name component of the object qualifier must be the name of the current database.

Příklad 7 – Zástupné znaky

Můžete použít @fUsePattern argument určující, zda podtržítko ( _ ), procenta ( % ) a závorka ( [ nebo ] ) znaky jsou interpretovány jako zástupné znaky. Platné hodnoty jsou 0 (shoda vzorů je vypnutá) a 1 (porovnávání vzorů je zapnuto). Výchozí hodnota je 1 .

Zde je příklad použití shody vzorů k vrácení názvů tabulek, které začínají písmenem „A“:

EXEC sp_tables
  @table_name = 'A%',
  @table_type = "'TABLE'",
  @fUsePattern = 1;

Výsledek:

+-------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER   | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|-------------------+---------------+--------------+--------------+-----------|
| Music             | dbo           | Albums       | TABLE        | NULL      |
| Music             | dbo           | Artists      | TABLE        | NULL      |
+-------------------+---------------+--------------+--------------+-----------+

Ale co se stane, když zakážu párování vzorů:

EXEC sp_tables
  @table_name = 'A%',
  @table_type = "'TABLE'",
  @fUsePattern = 0;

Výsledek:

(0 rows affected)

  1. Matematické funkce MySQL (úplný seznam)

  2. Jak používat FILEPROPERTY() v SQL Server

  3. Jak implementovat LIMIT s SQL Server?

  4. Databázové modelování