اسکریپت بدست آوردن تعداد ستون های موجود در دیتابیس
تعیین تعداد ستونها در SQL به شناخت ساختار Query کمک میکند و در بررسی و تحلیل آسیبپذیریهای SQL Injection کاربرد دارد.
13 شهریور 1405
لینک کوتاه
اسکریپت بدست آوردن تعداد ستون های موجود در دیتابیس
در هنگام کار با پایگاه داده، گاهی لازم است بدانیم یک دیتابیس، جدول یا مجموعهای از جداول چه تعداد ستون دارد.بدست آوردن تعداد ستون های موجود در دیتابیس میتواند در بسیاری از پروژهها برای بررسی ساختار جداول، مدیریت اطلاعات، طراحی ابزارهای مدیریتی و حتی اجرای اسکریپتهای خودکار مورد استفاده قرار گیرد.
برای این کار معمولاً نیازی به بررسی دستی تکتک جداول نیست و میتوان با استفاده از کوئریهای SQL اطلاعات موردنیاز را از متادیتای دیتابیس دریافت کرد.
پایگاههای داده اطلاعات مربوط به ساختار خود را در قالب جداول سیستمی و Viewهای مخصوص نگهداری میکنند.
اطلاعاتی مانند نام جدول، نام ستون، نوع داده و ترتیب ستونها از همین بخش قابل دسترسی است.
چرا تعداد ستونهای دیتابیس را بررسی کنیم؟
ساختار دیتابیس در طول زمان ممکن است تغییر کند.ممکن است جدول جدیدی ایجاد شود، ستونهایی به جداول اضافه یا حذف شوند و ساختار پروژه با نسخههای قبلی تفاوت پیدا کند.
در چنین شرایطی، بررسی تعداد ستونها میتواند دید مناسبی از وضعیت فعلی دیتابیس ایجاد کند.
برای مثال، در یک پروژه بزرگ ممکن است تعداد زیادی جدول وجود داشته باشد و بررسی دستی ساختار هر جدول زمان زیادی نیاز داشته باشد.
با یک اسکریپت SQL میتوان این اطلاعات را به شکل خودکار استخراج کرد.
همچنین در زمان مستندسازی دیتابیس، بررسی ساختار جداول یا توسعه ابزارهای مدیریت پایگاه داده، دسترسی به تعداد ستونها کاربرد دارد.
کاربرد اسکریپت بدست آوردن تعداد ستون در پروژههای واقعی
اسکریپت بدست آوردن تعداد ستون های موجود در دیتابیس فقط برای مشاهده اطلاعات استفاده نمیشود.در پروژههای مختلف میتوان از این روش برای کنترل ساختار دیتابیس نیز استفاده کرد.
برای نمونه، در یک سیستم مهاجرت دیتابیس میتوان قبل از اجرای عملیات بررسی کرد که ساختار مورد انتظار وجود دارد یا خیر.
همچنین در ابزارهای مدیریت دیتابیس میتوان تعداد ستونهای هر جدول را در کنار نام جدول نمایش داد.
این اطلاعات برای تحلیل دیتابیسهای قدیمی نیز مفید است. وقتی دیتابیسی شامل صدها جدول باشد، گزارش تعداد ستونهای هر جدول میتواند درک ساختار آن را سادهتر کند.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
اطلاعات ساختاری دیتابیس کجا قرار دارد؟
دیتابیس علاوه بر دادههای اصلی، اطلاعاتی درباره ساختار خودش نیز نگهداری میکند.به این اطلاعات معمولاً Metadata یا فراداده گفته میشود.
Metadata میتواند شامل موارد مختلفی باشد، از جمله:
-
نام دیتابیس
-
نام Schema
-
نام جدول
-
نام ستون
-
نوع داده ستون
-
طول ستون
-
امکان NULL بودن
-
ترتیب قرارگیری ستون
-
اطلاعات مربوط به کلیدها
بدست آوردن تعداد ستون های یک جدول در SQL Server
این اسکریپت در SQL Server یکی از روشهای ساده برای شمارش ستونهای یک جدول استفاده از INFORMATION_SCHEMA.COLUMNS است.برای مثال:
SELECT COUNT(*) AS ColumnCount
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Users';
در این کوئری، جدول Users بررسی میشود و تعداد ستونهای آن در خروجی قرار میگیرد.
اگر جدول موردنظر در Schema خاصی قرار داشته باشد، بهتر است Schema نیز در شرط مشخص شود:
SELECT COUNT(*) AS ColumnCount
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'Users';
استفاده از Schema باعث میشود نتیجه دقیقتر باشد؛ زیرا ممکن است در یک دیتابیس چند جدول با نام مشابه در Schemaهای متفاوت وجود داشته باشد.
بدست آوردن تعداد ستونهای تمام جداول دیتابیس
گاهی هدف فقط بررسی یک جدول نیست و میخواهیم تعداد ستونهای تمام جداول موجود در دیتابیس را مشاهده کنیم.برای این کار میتوان از GROUP BY استفاده کرد:
SELECT
TABLE_SCHEMA,
TABLE_NAME,
COUNT(*) AS ColumnCount
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY
TABLE_SCHEMA,
TABLE_NAME
ORDER BY
TABLE_SCHEMA,
TABLE_NAME;
خروجی این اسکریپت برای هر جدول یک ردیف ایجاد میکند و تعداد ستونهای آن جدول را نمایش میدهد.
برای نمونه، نتیجه ممکن است به شکل زیر باشد:
| ColumnCount | TABLE_NAME | TABLE_SCHEMA |
| 6 | Users | dbo |
| 8 | Products | dbo |
| 10 | Orders | dbo |
| 4 | Categories | dbo |
به این ترتیب میتوان ساختار کلی دیتابیس را بدون باز کردن تکتک جدولها بررسی کرد.
محاسبه تعداد کل ستونهای موجود در دیتابیس
اگر هدف، محاسبه مجموع ستونهای تمام جداول باشد، میتوان مستقیماً تعداد رکوردهای موجود در INFORMATION_SCHEMA.COLUMNS را شمارش کرد:SELECT COUNT(*) AS TotalColumns
FROM INFORMATION_SCHEMA.COLUMNS;
هر رکورد در این View معمولاً نماینده یک ستون از یک جدول است؛ بنابراین (*)COUNT تعداد ستونهای قابل مشاهده در محدوده موردنظر را محاسبه میکند.
اگر بخواهیم فقط ستونهای جداول مربوط به Schema خاصی را بشماریم، میتوان شرط اضافه کرد:
SELECT COUNT(*) AS TotalColumns
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo';
این روش برای زمانی مناسب است که بخواهیم تعداد ستونهای مربوط به جداول یک Schema مشخص را محاسبه کنیم.
استفاده از sys.columns در SQL Server
در SQL Server روش دیگری نیز برای دسترسی به اطلاعات ستونها وجود دارد.Viewهای سیستمی مانند sys.columns اطلاعات ساختاری دقیقتری در اختیار برنامهنویس قرار میدهند.
برای محاسبه تعداد ستونهای تمام جداول میتوان از کوئری زیر استفاده کرد:
SELECT COUNT(*) AS TotalColumns
FROM sys.columns;
اگر بخواهیم تعداد ستونهای هر جدول را مشاهده کنیم، میتوانیم جدولها و ستونها را با یکدیگر Join کنیم:
SELECT
t.name AS TableName,
COUNT(c.column_id) AS ColumnCount
FROM sys.tables AS t
INNER JOIN sys.columns AS c
ON t.object_id = c.object_id
GROUP BY t.name
ORDER BY t.name;
در این روش، sys.tables اطلاعات جدولها و sys.columns اطلاعات ستونها را در اختیار ما قرار میدهند.
ارتباط میان آنها نیز با استفاده از object_id برقرار میشود.
تفاوت INFORMATION_SCHEMA و sys
در SQL Server هم INFORMATION_SCHEMA.COLUMNS و هم Viewهای سیستمی مانند sys.columns برای بررسی ستونها قابل استفاده هستند، اما کاربرد آنها یکسان نیست.INFORMATION_SCHEMA یک رابط استاندارد برای دسترسی به بخشی از اطلاعات ساختاری دیتابیس است و در بسیاری از سناریوها استفاده از آن ساده و خوانا است.
در مقابل، Viewهای sys امکانات بیشتری برای دسترسی به جزئیات اختصاصی SQL Server فراهم میکنند.
بنابراین اگر به اطلاعات پیشرفتهتر درباره ساختار دیتابیس نیاز داشته باشیم، استفاده از Viewهای سیستمی میتواند گزینه مناسبتری باشد.
شمارش ستونهای یک جدول با نام Schema و Table
برای جلوگیری از اشتباه در انتخاب جدول، بهتر است هنگام شمارش ستونها هم نام Schema و هم نام جدول را مشخص کنیم:SELECT COUNT(*) AS ColumnCount
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'Products';
این اسکریپت تعداد ستونهای جدول Products در Schema dbo را برمیگرداند.
نکته مهم درباره Viewها
اگر هدف شما شمارش ستونهای جداول است، باید توجه کنید که روشهای مختلف ممکن است Viewها را نیز در نتیجه قرار دهند.برای مثال، INFORMATION_SCHEMA.COLUMNS میتواند اطلاعات مربوط به Viewها را نیز ارائه کند.
اگر فقط جدولهای واقعی برای شما اهمیت دارند، استفاده از sys.tables و sys.columns کنترل بیشتری روی نتیجه ایجاد میکند.
نمونه:
SELECT COUNT(*) AS TotalColumns
FROM sys.tables AS t
INNER JOIN sys.columns AS c
ON t.object_id = c.object_id;
در این حالت فقط ستونهای اشیایی که در sys.tables قرار دارند شمارش میشوند.




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