sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server List Tabeller:Hur man visar alla tabeller

Beroende på vilken version av SQL Server du kör kan metoden för att fråga och returnera en lista över alla användarskapade tabeller skilja sig något. Nedan ska vi kort undersöka TSQL-satserna som kan användas för att hämta en tabelllista för både den äldre SQL Server 2000 och den nyare 2005-versionen eller senare.

Listtabeller i SQL Server 2000

För äldre versioner av SQL Server (som SQL Server 2000, även om den här metoden också stöds i SQL Server 2005 för bakåtkompatibilitet), måste du fråga SYS.SYSOBJECTS metadatavy. SYS.SYSOBJECTS innehåller en rad för varje objekt som har skapats i databasen, inklusive stored procedures , views och user tables (som är viktiga att skilja från system tables .)

SYSOBJECTS Tabellen innehåller ett par dussin kolumner med data eftersom den måste innehålla information om praktiskt taget allt som läggs till servern över tid. Därför, för att hitta en lista med användarskapade tabeller (och därmed ignorera system tables ), måste vi hitta resultat där xtype kolumn (som anger object type för den raden) är lika med värdet U , som står för user table . Den resulterande TSQL-satsen bör se ut så här:

SELECT
  *
FROM
  SYSOBJECTS
WHERE
  xtype = 'U';
GO

Obs! Sedan SYSOBJECTS är en del av SYS namnutrymme, när du frågar SYSOBJECTS det är onödigt att ange att SYSOBJECTS är en del av den globala SYS namnutrymme, så vi kan utelämna det som visas i exemplet ovan.

Detta kommer att returnera en resultatlista med alla användarskapade tabeller. Eftersom mängden information som returneras när du frågar alla kolumner är ganska stor, kanske du vill trimma resultaten genom att bara se name kolumnen och kanske crdate (datum för skapande):

SELECT
  name,
  crdate
FROM
  SYSOBJECTS
WHERE
  xtype = 'U';
GO

Lista tabeller i SQL Server 2005 eller nyare

Att lista alla tabeller i SQL-servern när du använder en nyare version (SQL 2005 eller senare) är en fråga om att fråga INFORMATION_SCHEMA vyer som automatiskt byggs in i SQL Server. Dessa låter dig enkelt se en mängd olika metadata för just den här SQL Server-instansen, inklusive information om COLUMNS , ROUTINES , och till och med TABLES .

Du kanske märker att det returneras fyra kolumner när du använder INFORMATION_SCHEMA.TABLES vy, men den viktigaste kolumnen är TABLE_TYPE , som bestämmer om tabellen i den raden är en faktisk tabell (BASE TABLE ) eller en vy (VIEW ).

För att returnera alla tabeller och vyer i en fråga, kör följande TSQL-sats:

SELECT
  *
FROM
  INFORMATION_SCHEMA.TABLES;
GO

Det kan också vara klokt att ange vilken databas du vill fråga:

SELECT
  *
FROM
  databaseName.INFORMATION_SCHEMA.TABLES;
GO

Om du bara vill hämta faktiska tabeller och filtrera bort vyer från resultaten, lägg till en WHERE TABLE_TYPE = 'BASE TABLE' klausul:

SELECT
  *
FROM
  databaseName.INFORMATION_SCHEMA.TABLES
WHERE
  TABLE_TYPE = 'BASE TABLE';
GO

  1. Hur man ansluter mySQL-databas med C++

  2. Finns det en Max-funktion i SQL Server som tar två värden som Math.Max ​​i .NET?

  3. Allvarligt fel:Anrop till odefinierad funktion sqlsrv_connect() i C:\xampp\htdocs

  4. Hur man aktiverar allmänna loggar och felloggar i AWS RDS