Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server ПОКАЖЕ ТАБЛИЦИ Еквивалент

От време на време се улавям, че пиша ПОКАЖЕТЕ ТАБЛИЦИТЕ в SQL Server, очаквайки да получите списък с таблици.

Това би имало идеален смисъл, ако използвах MySQL или MariaDB. Но SQL Server/T-SQL няма SHOW TABLES изявление като MySQL или MariaDB, така че никога не работи. И продължавам да забравям. Но за щастие SQL Server има алтернативи.

Ето пет опции за получаване на списък с таблици в SQL Server. Те могат да се използват винаги, когато се опитвате да намерите този неуловим ПОКАЖЕТЕ ТАБЛИЦИ изявление в SQL Server.

Опция 1 – sys.tables

sys.tables Изгледът на системния каталог е проектиран специално за връщане на информация за потребителска таблица:

SELECT name
FROM sys.tables;

Това връща името на всички потребителски таблици в текущата база данни. Можете да превключите към правилната база данни, като поставите преди изявлението USE <име на база данни> където <име на база данни> е името на базата данни, за които искате да бъдат изброени таблиците.

Например, следният оператор връща всички потребителски таблици от KrankyKranes база данни:

USE KrankyKranes;
SELECT name
FROM sys.tables;

Можете също да върнете схемата, ако желаете:

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

Тук използвах SCHEMA_NAME() функция за превеждане на стойността на schema_id колона в действителното име на схемата.

Опция 2 – sys.objects

Можете също да използвате sys.objects изглед на системния каталог. Ако изберете тази опция, можете да я филтрирате по тип, така че да се връщат само потребителски таблици:

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

Това връща потребителски таблици от текущата база данни. Този изглед също съдържа schema_id колона, така че можете да използвате SCHEMA_NAME() функция, за да преведе това в името на схемата, ако е необходимо.

Опция 3 – information_schema.tables

INFORMATION_SCHEMA.TABLES view връща един ред за всяка таблица или изглед в текущата база данни, за които текущият потребител има разрешения.

Можем да филтрираме този изглед по тип, така че да се връщат само основни таблици:

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

TABLE_SCHEMA колоната съдържа името на схемата на таблицата и затова не е необходимо да използваме SCHEMA_NAME() функция за преобразуване на идентификатора на схемата в нейното име.

Опция 4 – sp_tables

sp_tables Съхранената процедура връща списък с обекти, които могат да бъдат заявени в текущата среда. Това означава всяка таблица или изглед, с изключение на синонимни обекти.

Най-бързият и лесен начин да извикате тази процедура е така:

sp_tables;

Но това може да върне дълъг списък с обекти.

Обикновено е по-добре да бъдете по-конкретни. Например:

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

Тук казвам процедурата да показва потребителски таблици в KrankyKranes база данни, които са собственост на dbo .

@table_type аргумент приема разделен със запетая списък със стойности. Така че, ако искаме да включим изгледи, можем да направим следното:

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

Опция 5 – dbo.sysobjects

Преди SQL Server 2005, dbo.sysobjects view беше изгледът за показване на таблици и други обекти.

Така че, ако използвате старо издание на SQL Server, можете да направите това:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извършване на регулярни изрази (замяна) в SQL заявка

  2. UNIX_TIMESTAMP в SQL Server

  3. datetime2 срещу datetimeoffset в SQL Server:Каква е разликата?

  4. Версиониране на база данни на SQL Server

  5. Добавяне на множество параметризирани променливи към база данни в C#