Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server SHOW TABLES Tương đương

Thỉnh thoảng tôi thấy mình đang gõ SHOW TABLES trong SQL Server, mong đợi nhận được danh sách các bảng.

Điều đó sẽ hoàn toàn hợp lý nếu tôi đang sử dụng MySQL hoặc MariaDB. Nhưng SQL Server / T-SQL không có SHOW TABLES như MySQL hoặc MariaDB, vì vậy nó không bao giờ hoạt động. Và tôi tiếp tục quên. Nhưng may mắn thay, SQL Server có các lựa chọn thay thế.

Dưới đây là năm tùy chọn để lấy danh sách các bảng trong SQL Server. Những thứ này có thể được sử dụng bất cứ khi nào bạn đang cố tìm SHOW TABLES khó nắm bắt đó trong SQL Server.

Tùy chọn 1 - sys.tables

sys.tables chế độ xem danh mục hệ thống được thiết kế đặc biệt để trả về thông tin bảng người dùng:

SELECT name
FROM sys.tables;

Điều này trả về tên của tất cả các bảng người dùng trong cơ sở dữ liệu hiện tại. Bạn có thể chuyển sang cơ sở dữ liệu chính xác bằng cách viết trước câu lệnh với USE <database name> nơi <database name> là tên của cơ sở dữ liệu mà bạn muốn liệt kê các bảng.

Ví dụ:câu lệnh sau trả về tất cả các bảng người dùng từ KrankyKranes cơ sở dữ liệu:

USE KrankyKranes;
SELECT name
FROM sys.tables;

Bạn cũng có thể trả về lược đồ nếu muốn:

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

Ở đây, tôi đã sử dụng SCHEMA_NAME() hàm để dịch giá trị của schema_id vào tên thực của lược đồ.

Tùy chọn 2 - sys.objects

Bạn cũng có thể sử dụng sys.objects xem danh mục hệ thống. Nếu bạn chọn tùy chọn này, bạn có thể lọc nó theo loại để chỉ các bảng người dùng được trả về:

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

Điều này trả về bảng người dùng từ cơ sở dữ liệu hiện tại. Chế độ xem này cũng chứa schema_id nên bạn có thể sử dụng SCHEMA_NAME() hàm để dịch điều đó thành tên lược đồ nếu được yêu cầu.

Tùy chọn 3 - information_schema.tables

INFORMATION_SCHEMA.TABLES dạng xem trả về một hàng cho mỗi bảng hoặc dạng xem trong cơ sở dữ liệu hiện tại mà người dùng hiện tại có quyền.

Chúng tôi có thể lọc chế độ xem này theo loại để chỉ các bảng cơ sở được trả về:

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

TABLE_SCHEMA cột chứa tên giản đồ bảng và vì vậy chúng tôi không cần sử dụng SCHEMA_NAME() để chuyển đổi ID giản đồ thành tên của nó.

Tùy chọn 4 - sp_tables

sp_tables thủ tục được lưu trữ trả về một danh sách các đối tượng có thể được truy vấn trong môi trường hiện tại. Điều này có nghĩa là bất kỳ bảng hoặc dạng xem nào, ngoại trừ các đối tượng đồng nghĩa.

Cách nhanh nhất và dễ nhất để gọi thủ tục này là như sau:

sp_tables;

Nhưng điều đó có thể trả về một danh sách dài các đối tượng.

Thông thường tốt hơn là cụ thể hơn. Ví dụ:

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

Ở đây, tôi đang nói về quy trình hiển thị bảng người dùng trong KrankyKranes cơ sở dữ liệu thuộc sở hữu của dbo .

@table_type đối số chấp nhận danh sách giá trị được phân tách bằng dấu phẩy. Vì vậy, nếu chúng tôi muốn bao gồm các lượt xem, chúng tôi có thể làm như sau:

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

Tùy chọn 5 - dbo.sysobjects

Trước SQL Server 2005, dbo.sysobjects chế độ xem là chế độ xem để hiển thị các bảng và các đối tượng khác.

Vì vậy, nếu bạn đang sử dụng phiên bản SQL Server cũ, bạn có thể thực hiện việc này:

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. SQLServer IDENTITY Cột có văn bản

  2. Xóa SCHEMABINDING khỏi dạng xem trong SQL Server

  3. Kết nối với cơ sở dữ liệu SQL Server cục bộ bằng C #

  4. Khắc phục “Lỗi tràn số học khi chuyển đổi biểu thức thành kiểu dữ liệu int” trong SQL Server

  5. Cách CHỌN * nhưng không có Tên cột phải là duy nhất trong mỗi dạng xem