এসকিউএল সার্ভারে একটি নির্দিষ্ট ডাটাবেসে সমস্ত সারণির নাম পাওয়ার সর্বোত্তম উপায় কী?
SHOW TABLES
কাজ (হিসাবে মাইএসকিউএল ব্যবহৃত)?
এসকিউএল সার্ভারে একটি নির্দিষ্ট ডাটাবেসে সমস্ত সারণির নাম পাওয়ার সর্বোত্তম উপায় কী?
SHOW TABLES
কাজ (হিসাবে মাইএসকিউএল ব্যবহৃত)?
উত্তর:
এসকিউএল সার্ভার 2000, 2005, 2008, 2012, 2014, 2016, 2017 বা 2019:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
একটি নির্দিষ্ট ডাটাবেস থেকে কেবল সারণী প্রদর্শন করতে
SELECT TABLE_NAME
FROM <DATABASE_NAME>.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
অথবা,
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND TABLE_CATALOG='dbName' --(for MySql, use: TABLE_SCHEMA='dbName' )
PS: এসকিউএল সার্ভার 2000 এর জন্য:
SELECT * FROM sysobjects WHERE xtype='U'
WHERE TABLE_TYPE='BASE TABLE'
কেবলমাত্র বেস টেবিলগুলি অন্তর্ভুক্ত করা হবে (এবং এক্সটেনশনের মাধ্যমে আপনি সর্বদা ব্যবহার করতে পারেন WHERE TABLE_TYPE != 'VIEW'
)।
AND name <> 'sysdiagrams'
।
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
এখানে অন্যান্য অবজেক্টের ধরণের একটি তালিকা রয়েছে যা আপনি অনুসন্ধান করতে পারেন:
SELECT name FROM sysobjects WHERE xtype = 'U'
একই জিনিস করবে would
'U'
ব্যবহারকারীর টেবিলটি চিহ্নিত করতে কেন ব্যবহার করা হয় তা অবাক করে দেয় ... সম্ভবত এর বিপরীতে 'UT'
বা সবচেয়ে স্বজ্ঞাত, 'T'
... আহা ভাল, এটি কাজ করে!
SELECT * FROM information_schema.tables
where TABLE_TYPE = 'BASE TABLE'
এসকিউএল সার্ভার 2012
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
SELECT name FROM sysobjects WHERE xtype='U' AND name <> 'sysdiagrams';
কারণ সিসডায়াগ্রামের টেবিলটি মাইক্রোসফ্ট এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও দ্বারা নির্মিত যদিও প্রযুক্তিগতভাবে কোনও সিস্টেম টেবিল নয় তবে একটি আমরা সাধারণত যেভাবেই বাদ দিতে চাই।
খারাপ দিকটি এটি INFORMATION_SCHEMA.TABLES
হ'ল এটিতে সিস্টেম টেবিলগুলির মতো dtproperties
এবং টেবিলগুলিও রয়েছে MSpeer_...
যা আপনার নিজের টেবিলগুলি ছাড়া আলাদা করে বলার উপায় নেই।
আমি ব্যবহার করার প্রস্তাব করব sys.objects
( অবজ্ঞাত সিনসোবজেক্টস দর্শনের নতুন সংস্করণ ), যা সিস্টেম সারণীগুলি বাদ দিয়ে সমর্থন করে:
select *
from sys.objects
where type = 'U' -- User tables
and is_ms_shipped = 0 -- Exclude system tables
এসএসএমএসে, একটি নির্দিষ্ট ডাটাবেসে (যেমন, "মাই ডেটাবেস") সমস্ত পুরোপুরি যোগ্যতাসম্পন্ন টেবিলের নাম পেতে:
SELECT [TABLE_CATALOG] + '.' + [TABLE_SCHEMA] + '.' + [TABLE_NAME]
FROM MyDatabase.INFORMATION_SCHEMA.Tables
WHERE [TABLE_TYPE] = 'BASE TABLE' and [TABLE_NAME] <> 'sysdiagrams'
ORDER BY [TABLE_SCHEMA], [TABLE_NAME]
ফলাফল:
রে ভেগাকে ধন্যবাদ, যার প্রতিক্রিয়া একটি ডাটাবেসে সমস্ত ব্যবহারকারীর সারণী দেয় ...
এক্সপি sp_msforeachtable 'মুদ্রণ' '?' '' '
sp_helptext অন্তর্নিহিত ক্যোয়ারী দেখায়, যা সংক্ষিপ্তসার ...
select * from dbo.sysobjects o
join sys.all_objects syso on o.id = syso.object_id
where OBJECTPROPERTY(o.id, 'IsUserTable') = 1
and o.category & 2 = 0
ওয়েল আপনি সমস্ত ডাটাবেস অবজেক্ট পেতে sys.objects ব্যবহার করতে পারেন ।
GO
select * from sys.objects where type_desc='USER_TABLE' order by name
GO
অথবা
-- For all tables
select * from INFORMATION_SCHEMA.TABLES
GO
--- For user defined tables
select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='BASE TABLE'
GO
--- For Views
select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='VIEW'
GO
--for oracle
select tablespace_name, table_name from all_tables;
এই লিঙ্কটি এই বিষয়ে আরও অনেক তথ্য সরবরাহ করতে পারে
ব্যবহারে SELECT * FROM INFORMATION_SCHEMA.COLUMNS
আপনাকে সমস্ত সারণী এবং সম্পর্কিত কলামগুলি দেখায়।