اسکریپت بدست آوردن تعداد جداول یک دیتابیس
برای بهدست آوردن تعداد جداول دیتابیس در SQL Server میتوان از sys.tables و تابع COUNT برای شمارش جدولها استفاده کرد.
15 شهریور 1405
لینک کوتاه
اسکریپت بهدست آوردن تعداد جداول یک دیتابیس
در مدیریت و توسعه پایگاه داده، گاهی لازم است بدانیم یک دیتابیس چه تعداد جدول دارد.این اطلاعات میتواند برای بررسی ساختار دیتابیس، مستندسازی، عیبیابی و مدیریت پایگاه داده کاربرد داشته باشد.
در SQL Server روشهای مختلفی برای مشاهده و شمارش جداول وجود دارد که یکی از سادهترین آنها استفاده از sys.tables است.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!

بهدست آوردن تعداد جداول دیتابیس در SQL Server
SQL Server اطلاعات مربوط به ساختار دیتابیس را در System Catalog Views نگهداری میکند.یکی از این نماها sys.tables است که اطلاعات جداول موجود در دیتابیس را در اختیار برنامهنویس قرار میدهد.
برای بهدست آوردن تعداد جداول دیتابیس فعلی میتوان از اسکریپت زیر استفاده کرد:
SELECT COUNT(*) AS TableCount
FROM sys.tables;
تابع (*)COUNT تعداد رکوردهای موجود در sys.tables را محاسبه میکند.از آنجا که هر جدول یک رکورد در این نما دارد، نتیجه کوئری تعداد جداول دیتابیس را نمایش میدهد.
برای مثال، اگر دیتابیس شامل ۱۵ جدول باشد، نتیجه به صورت زیر خواهد بود:
TableCount
----------
15
مشاهده نام تمام جداول دیتابیس
اگر علاوه بر تعداد جداول، بخواهیم نام آنها را نیز مشاهده کنیم، میتوانیم از کوئری زیر استفاده کنیم:SELECT name
FROM sys.tables;
این دستور نام تمام جداول دیتابیس فعلی را نمایش میدهد.
برای نمایش نام جدول به همراه Schema بهتر است از sys.schemas نیز استفاده کنیم:
SELECT
s.name AS SchemaName,
t.name AS TableName
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
ON t.schema_id = s.schema_id
ORDER BY s.name, t.name;
استفاده از Schema زمانی اهمیت بیشتری پیدا میکند که دیتابیس دارای تعداد زیادی جدول باشد یا جداول مختلف در Schemaهای متفاوت قرار گرفته باشند.
شمارش جداول یک Schema خاص
گاهی هدف ما بهدست آوردن تعداد تمام جداول دیتابیس نیست و فقط میخواهیم تعداد جداول یک Schema مشخص را بدانیم.برای این کار میتوان شرط مربوط به نام Schema را به کوئری اضافه کرد:
SELECT COUNT(*) AS TableCount
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
ON t.schema_id = s.schema_id
WHERE s.name = 'dbo';
در این مثال فقط جداولی که در Schema با نام dbo قرار دارند شمارش میشوند.
استفاده از INFORMATION_SCHEMA
روش دیگری برای مشاهده اطلاعات جداول در SQL Server استفاده از INFORMATION_SCHEMA.TABLES است.برای بهدست آوردن تعداد جداول میتوان از دستور زیر استفاده کرد:
SELECT COUNT(*) AS TableCount
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
شرط TABLE_TYPE = 'BASE TABLE' باعث میشود فقط جداول واقعی دیتابیس در نتیجه قرار بگیرند و Viewها شمارش نشوند.
برای مشاهده نام جداول نیز میتوان از دستور زیر استفاده کرد:
SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
این روش در بسیاری از سناریوها خوانا و قابل استفاده است، اما در SQL Server برای دسترسی مستقیمتر به اطلاعات داخلی دیتابیس، نماهای سیستمی مانند sys.tables نیز گزینه مناسبی هستند.
تفاوت sys.tables و INFORMATION_SCHEMA.TABLES
هر دو روش میتوانند برای بررسی جداول SQL Server استفاده شوند، اما تفاوتهایی بین آنها وجود دارد.sys.tables بخشی از Catalog Viewهای خود SQL Server است و اطلاعات مرتبط با جداول را به شکل مستقیمتری ارائه میکند.
در مقابل، INFORMATION_SCHEMA یک استاندارد عمومیتر برای دسترسی به اطلاعات متادیتای دیتابیس است.
اگر صرفاً قصد دارید تعداد جداول SQL Server را به دست آورید، هر دو روش ساده هستند:
SELECT COUNT(*)
FROM sys.tables;
یا:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
چرا دانستن تعداد جداول دیتابیس مهم است؟
بهدست آوردن تعداد جداول فقط یک عملیات ساده برای مشاهده اطلاعات دیتابیس نیست و در برخی پروژهها کاربرد عملی دارد.برای مثال، هنگام بررسی یک دیتابیس قدیمی ممکن است بخواهید قبل از شروع مستندسازی، تعداد جداول آن را بدانید.
همچنین در زمان انتقال یا مهاجرت دیتابیس میتوان از این اطلاعات برای بررسی اولیه ساختار پایگاه داده استفاده کرد.
مقایسه تعداد جداول قبل و بعد از انتقال نیز میتواند یک بررسی ابتدایی برای اطمینان از کامل بودن عملیات Migration باشد.
در پروژههای بزرگ، تعداد جداول همچنین میتواند دید مناسبی از پیچیدگی ساختار دیتابیس در اختیار تیم توسعه و مدیریت پایگاه داده قرار دهد.
شمارش جداول همراه با نمایش نام آنها
اگر بخواهیم هم تعداد کل جداول و هم نام آنها را داشته باشیم، میتوانیم ابتدا از کوئری شمارش استفاده کنیم:SELECT COUNT(*) AS TotalTables
FROM sys.tables;
و سپس برای مشاهده فهرست جداول:
SELECT
s.name AS SchemaName,
t.name AS TableName
FROM sys.tables t
JOIN sys.schemas s
ON t.schema_id = s.schema_id
ORDER BY s.name, t.name;
به این ترتیب، ابتدا تعداد کل جداول مشخص میشود و سپس میتوان فهرست دقیق آنها را بررسی کرد.
نکته مهم درباره Viewها در SQL Server
یکی از نکات مهم هنگام شمارش جداول این است که Table و View را با یکدیگر اشتباه نگیریم.اگر هدف فقط شمارش جداول واقعی باشد، استفاده از sys.tables انتخاب مناسبی است؛ زیرا این View اطلاعات مربوط به جدولهای کاربر را ارائه میکند.
در صورتی که از INFORMATION_SCHEMA.TABLES استفاده میکنید، بهتر است نوع آبجکت را با شرط TABLE_TYPE مشخص کنید:
WHERE TABLE_TYPE = 'BASE TABLE'
این موضوع بهخصوص در دیتابیسهایی که تعداد زیادی View دارند اهمیت پیدا میکند.



کاربران ما
شما هم نظرتون با ما دریاره “اسکریپت بدست آوردن تعداد جداول یک دیتابیس” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید