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ị TABLES
và COLUMNS
trong cơ sở dữ liệu hoặc tìm TABLES
và COLUMNS
.
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ọ.