Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server POKAŻ TABELI odpowiednik

Od czasu do czasu piszę POKAŻ TABEL w SQL Server, spodziewając się uzyskać listę tabel.

To miałoby sens, gdybym używał MySQL lub MariaDB. Ale SQL Server/T-SQL nie ma opcji SHOW TABLES oświadczenie takie jak MySQL lub MariaDB, więc nigdy nie działa. I ciągle zapominam. Ale na szczęście SQL Server ma alternatywy.

Oto pięć opcji uzyskania listy tabel w SQL Server. Mogą być używane za każdym razem, gdy próbujesz znaleźć nieuchwytne POKAŻ TABELE instrukcja w SQL Server.

Opcja 1 – sys.tables

sys.tables Widok katalogu systemowego został zaprojektowany specjalnie do zwracania informacji o tabeli użytkownika:

SELECT name
FROM sys.tables;

Zwraca nazwy wszystkich tabel użytkowników w bieżącej bazie danych. Możesz przełączyć się do właściwej bazy danych, dodając instrukcję USE gdzie to nazwa bazy danych, dla której chcesz wyświetlić tabele.

Na przykład poniższa instrukcja zwraca wszystkie tabele użytkowników z KrankyKranes baza danych:

USE KrankyKranes;
SELECT name
FROM sys.tables;

Jeśli chcesz, możesz również zwrócić schemat:

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

Tutaj użyłem SCHEMA_NAME() funkcja do tłumaczenia wartości schema_id kolumnę do rzeczywistej nazwy schematu.

Opcja 2 – sys.objects

Możesz także użyć sys.objects widok katalogu systemowego. Jeśli wybierzesz tę opcję, możesz filtrować ją według typu, aby zwracane były tylko tabele użytkowników:

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

Zwraca tabele użytkowników z bieżącej bazy danych. Ten widok zawiera również schema_id kolumny, więc możesz użyć SCHEMA_NAME() w razie potrzeby przetłumaczyć to na nazwę schematu.

Opcja 3 – information_schema.tables

INFORMATION_SCHEMA.TABLES view zwraca jeden wiersz dla każdej tabeli lub widoku w bieżącej bazie danych, do których bieżący użytkownik ma uprawnienia.

Możemy filtrować ten widok według typu, aby zwracane były tylko tabele podstawowe:

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

TABLE_SCHEMA kolumna zawiera nazwę schematu tabeli, więc nie musimy używać SCHEMA_NAME() funkcja do konwersji identyfikatora schematu na jego nazwę.

Opcja 4 – sp_tables

sp_tables procedura składowana zwraca listę obiektów, które mogą być odpytywane w bieżącym środowisku. Oznacza to dowolną tabelę lub widok, z wyjątkiem obiektów synonimów.

Najszybszy i najłatwiejszy sposób wywołania tej procedury jest następujący:

sp_tables;

Ale to może zwrócić długą listę obiektów.

Zwykle lepiej jest być bardziej konkretnym. Na przykład:

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

Tutaj mówię o procedurze, aby pokazać tabele użytkowników w KrankyKranes bazy danych, które są własnością dbo .

@table_type argument przyjmuje listę wartości oddzielonych przecinkami. Jeśli więc chcielibyśmy uwzględnić widoki, moglibyśmy wykonać następujące czynności:

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

Opcja 5 – dbo.sysobjects

Przed SQL Server 2005 dbo.sysobjects widok był widokiem do pokazywania tabel i innych obiektów.

Więc jeśli używasz starej wersji SQL Server, możesz to zrobić:

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. Czy istnieje poważny spadek wydajności korzystania z kluczy obcych w programie SQL Server?

  2. Hierarchiczna lista typów zdarzeń wyzwalających w SQL Server 2019

  3. Instalacja SQL Server 2017

  4. SQL Server — znajdź n-te wystąpienie w ciągu znaków

  5. Jakie są różnice między przekształceniami Merge Join i Lookup w usługach SSIS?