Giải pháp thực hiện
Hệ quản trị cơ sở dữ liệu SQL Server cung cấp cho người dùng 1 số danh mục rất hữu ích:
- sys.tables
- sys.all_columns
- sys.types
sys.tables: Mỗi 1 bảng dữ liệu sẽ được hiển thị bằng dòng. Tại danh mục này sẽ cung cấp cho chúng ta biết các thông tin cơ bản nhất về 1 bảng dữ liệu. Như name (Tên bảng dữ liệu) , object_id (id của bảng dữ liệu), create_date (thời gian tạo ra bảng dữ liệu), modify_date (thời gian cuối chỉnh sửa bảng dữ liệu),…
sys.all_columns Tại đây sẽ liệt kê các bảng dữ liệu và từng cột tương ứng của bảng dữ liệu. Bao gồm các thông tin như: object_id(id của bảng dữ liệu) , name (Tên cột trong bảng dữ liệu), max_length (độ dài tối đa của bảng dữ liệu), is_nullable(có được phép null không),…
sys.types Tại bảng dữ liệu này sẽ lưu trữ thông tin về định nghĩa các dạng lưu trữ, bao gồm: Name(tên kiểu dữ liệu), system_type_id, user_type_id (thông tin id về kiểu dữ liệu) , max_length (độ dài tối đa),…
Trong một hệ cơ sở dữ liệu chúng ta quản lý sẽ có rất nhiều Database khác nhau, chính vì thếkhi thực hiện truy vấn, kiểm tra thông tin chúng ta sẽ phải đặt trong đúng Database mà chúng ta muốn tìm kiếm.
Ví dụ minh họa
Chúng ta sẽ tìm kiếm tất cả các bảng dữ liệu có trong Database có tên HOCSQL
USE HOCSQL;
SELECT OBJECT_SCHEMA_NAME(T.[object_id],DB_ID()) AS [Schema],
T.[name] AS [table_name], AC.[name] AS [column_name],
TY.[name] AS system_data_type, AC.[max_length],
AC.[precision], AC.[scale], AC.[is_nullable], AC.[is_ansi_padded]
FROM sys.[tables] AS T
INNER JOIN sys.[all_columns] AC ON T.[object_id] = AC.[object_id]
INNER JOIN sys.[types] TY ON AC.[system_type_id] = TY.[system_type_id] AND AC.[user_type_id] = TY.[user_type_id]
WHERE T.[is_ms_shipped] = 0
ORDER BY T.[name], AC.[column_id]
Như vậy chúng ta đã nhìn thấy những thông tin cơ bản về các bảng dữ liệu đang có trong Database của mình, mà không cần phải show vào từng bảng.
Bài viết này là một phần trong Series “Học SQL xử lý, phân tích dữ liệu cùng chuyên gia MasterMOS”. Bạn hãy vào click vào link để xem toàn bộ Series bài viết, dễ dàng làm chủ SQL để xử lý, phân tích dữ liệu lớn cùng chúng tôi nhé.