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

SQL Server INFORMATION_SCHEMA Lượt xem | Xem nếu một bảng tồn tại

Vấn đề là gì?

Khi viết các truy vấn cho một cơ sở dữ liệu mà bạn có thể chưa quen hoặc một cơ sở dữ liệu thay đổi thường xuyên, bạn có thể muốn kiểm tra nhanh để tìm tất cả các bảng trong một cơ sở dữ liệu cụ thể hoặc các cột trong cơ sở dữ liệu hoặc để tìm kiếm bảng hoặc cột tồn tại.

Tại sao Đây là Vấn đề?

Việc hiểu lược đồ và các bảng trong nó giúp viết SQL hiệu quả và giúp tránh chạy các truy vấn nhiều lần chỉ để xem liệu tên lược đồ hoặc tên cột có chính xác hay không.

Hướng dẫn này sẽ giúp giải quyết những vấn đề này.

Sử dụng Lược đồ Thông tin

Truy vấn siêu dữ liệu trên nguồn dữ liệu là cách dễ nhất để xác định cấu trúc của bảng nếu bạn chưa hiểu rõ về nó. Microsoft SQL Server cung cấp dạng xem lược đồ thông tin như một trong một số phương pháp để lấy siêu dữ liệu này. Như tài liệu hỗ trợ của họ nêu rõ, “Dạng xem lược đồ thông tin cung cấp dạng xem nội bộ, độc lập với bảng hệ thống của siêu dữ liệu SQL Server. Chế độ xem lược đồ thông tin cho phép các ứng dụng hoạt động chính xác mặc dù đã có những thay đổi đáng kể đối với các bảng hệ thống cơ bản. ”

Chúng tôi sẽ sử dụng một số dạng xem trong lược đồ thông tin để chạy các truy vấn giúp xác định cấu trúc của các bảng trong nguồn dữ liệu.

Để hiển thị TABLESCOLUMNS trong cơ sở dữ liệu hoặc tìm TABLESCOLUMNS .

Truy vấn đầu tiên này sẽ trả về tất cả các bảng trong cơ sở dữ liệu mà bạn đang truy vấn.

SELECT
  	TABLE_NAME
FROM
  	INFORMATION_SCHEMA.TABLES

Truy vấn thứ hai sẽ trả về danh sách tất cả các cột và bảng trong cơ sở dữ liệu mà bạn đang truy vấn.

SELECT
  	TABLE_NAME,
COLUMN_NAME
FROM
  	INFORMATION_SCHEMA.COLUMNS

Hoặc, bạn cũng có thể chỉ truy vấn COLUMNS từ một bảng cụ thể và trả về tên cột từ bảng cụ thể ‘Album’ trong cơ sở dữ liệu của chúng tôi.

SELECT
	COLUMN_NAME
FROM
  	INFORMATION_SCHEMA.COLUMNS
WHERE
	TABLE_NAME = 'Album'

Với truy vấn tiếp theo này, bạn có thể tìm hiểu xem có TABLE hay không trong nguồn dữ liệu khớp với một số loại thông số tìm kiếm.

IF EXISTS(
SELECT
  			*
  		FROM
  			INFORMATION_SCHEMA.TABLES
  		WHERE
  			TABLE_NAME = 'Album'
			)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;

Truy vấn sẽ trả về từ "tìm thấy" nếu bảng "Album" tồn tại trong cơ sở dữ liệu của chúng tôi.

Bây giờ, để tìm hiểu kỹ hơn, bạn có thể sử dụng truy vấn này để tìm hiểu xem có COLUMN hay không trong nguồn dữ liệu khớp với một số loại thông số tìm kiếm.

IF EXISTS(
SELECT
  				*
  			FROM
  				INFORMATION_SCHEMA.COLUMNS
  			WHERE
  				COLUMN_NAME = 'Title'
				)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;

Sử dụng INFORMATION_SCHEMA xem trong nguồn dữ liệu của bạn có thể là một cách đáng tin cậy để xác định những gì có trong nguồn dữ liệu khi bạn xây dựng các truy vấn của mình.

Để biết thêm thông tin về Chế độ xem lược đồ thông tin hệ thống Microsoft SQL Server, vui lòng đọc thêm từ tài liệu hỗ trợ của họ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Real so với Floating Point so với Money

  2. Tạo tập hợp các ngày tăng dần trong TSQL

  3. Chuyển đổi ‘time’ thành ‘datetime2’ trong SQL Server (Ví dụ T-SQL)

  4. Tham chiếu đến Bí danh cột trong Mệnh đề WHERE

  5. Cách TRY_CONVERT () hoạt động trong SQL Server