আমি কীভাবে টিএসকিউএল ব্যবহার করে একটি ডাটাবেসে সমস্ত সারণীর তালিকা পেতে পারি?


894

এসকিউএল সার্ভারে একটি নির্দিষ্ট ডাটাবেসে সমস্ত সারণির নাম পাওয়ার সর্বোত্তম উপায় কী?




3
কি SHOW TABLESকাজ (হিসাবে মাইএসকিউএল ব্যবহৃত)?
— মার্টিন থোমা

উত্তর:


1428

এসকিউএল সার্ভার 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' 

46
দয়া করে নোট করুন যে এটিতে কেবলমাত্র সারণী নয়, ভিউও অন্তর্ভুক্ত থাকবে
— নাথান কোপ

17
আপনি যদি নির্দিষ্ট ডেটাবেসটি ব্যবহার না করেন তবে ডাটাবেসের নাম যুক্ত করুন সুতরাং এটি <DATABASE_NAME> থেকে TABLE_NAME নির্বাচন করুন IN
— INFORMATION_SCHEMA.

22
যুক্তকরণে WHERE TABLE_TYPE='BASE TABLE'কেবলমাত্র বেস টেবিলগুলি অন্তর্ভুক্ত করা হবে (এবং এক্সটেনশনের মাধ্যমে আপনি সর্বদা ব্যবহার করতে পারেন WHERE TABLE_TYPE != 'VIEW')।
— ফিলিপ কোপলি

3
"সিসডিয়াগ্রামগুলি" এই তালিকায়ও উপস্থিত হয় :(
— সেলসোম

4
সিসডিয়াগ্রামগুলি একটি সাধারণ টেবিল, আপনাকে সর্বদা এটি দ্বারা ম্যানুয়ালি বাদ দিতে হবে AND name <> 'sysdiagrams'।
— ক্রিস্টোফ

199
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'

এখানে অন্যান্য অবজেক্টের ধরণের একটি তালিকা রয়েছে যা আপনি অনুসন্ধান করতে পারেন:

  • এএফ: সমষ্টি ফাংশন (সিএলআর)
  • সি: চেক সীমাবদ্ধতা
  • ডি: ডিফল্ট বা চ্যুতি বাধা
  • ফ: বিদেশী কী বাধা
  • এল: লগ
  • এফএন: স্কেলার ফাংশন
  • FS: সমাবেশ (সিএলআর) স্কেলার-ফাংশন
  • এফটি: সমাবেশ (সিএলআর) সারণী-মূল্যবান ফাংশন
  • আইএফ: ইন-রেখাযুক্ত টেবিল-ফাংশন
  • আইটি: অভ্যন্তরীণ টেবিল
  • পি: সঞ্চিত পদ্ধতি
  • পিসি: সমাবেশ (সিএলআর) সঞ্চিত-পদ্ধতি
  • পিকে: প্রাথমিক কী বাধা (টাইপ কে হয়)
  • আরএফ: প্রতিলিপি ফিল্টার সঞ্চয় পদ্ধতি
  • এস: সিস্টেম টেবিল
  • এসএন: প্রতিশব্দ
  • এসকিউ: পরিষেবা সারি
  • টিএ: এসেম্বলি (সিএলআর) ডিএমএল ট্রিগার
  • টিএফ: টেবিল ফাংশন
  • টিআর: এসকিউএল ডিএমএল ট্রিগার
  • টিটি: সারণির ধরণ
  • ইউ: ব্যবহারকারীর টেবিল
  • ইউকিউ: অনন্য প্রতিবন্ধকতা (প্রকারটি কে)
  • ভি: দেখুন
  • এক্স: বর্ধিত সঞ্চিত পদ্ধতি

9
এলিয়াসিং কিছুটা নিরর্থক: SELECT name FROM sysobjects WHERE xtype = 'U'একই জিনিস করবে would
— পিজেএসকোপল্যান্ড

ধন্যবাদ, প্রাথমিকভাবে আমি PK,FK,D,C,V,UQউত্স এবং টার্গেট ডাটাবেসের তুলনা করার জন্য ইত্যাদির জন্য একাধিক নির্বাচিত বিবৃতি দিয়ে চেষ্টা করেছি , তবে আমি ভিএস-এ এই বৈশিষ্ট্যটি খুঁজে পেয়েছি , তবে sql queryসম্পূর্ণ উত্স এবং লক্ষ্য ডাটাবেসটির তুলনা করার মতো কি নেই ?
— শাইজুট

একটি 'U'ব্যবহারকারীর টেবিলটি চিহ্নিত করতে কেন ব্যবহার করা হয় তা অবাক করে দেয় ... সম্ভবত এর বিপরীতে 'UT'বা সবচেয়ে স্বজ্ঞাত, 'T'... আহা ভাল, এটি কাজ করে!
— ব্যবহারকারী 919426

87
SELECT * FROM INFORMATION_SCHEMA.TABLES 

অথবা

SELECT * FROM Sys.Tables

5
কেবলমাত্র একটি নোট (অন্যান্য উত্তরে উল্লিখিত হিসাবে) sys.tables কেবল ২০০৫ এর পরে পাওয়া যাবে
— রব

2
যা 2018 সালে কোনও সমস্যা নয় I আমি মনে করি এটির উচ্চতর হওয়া উচিত :-)
— মিশাল বি




9
SELECT name 
FROM sysobjects 
WHERE xtype='U' 
ORDER BY name;

(এসকিউএল সার্ভার 2000 স্ট্যান্ডার্ড; এখনও এসকিউএল সার্ভার 2005 এ সমর্থিত))



6
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U' 

SELECT name FROM sysobjects WHERE xtype='U' AND name <> 'sysdiagrams'; কারণ সিসডায়াগ্রামের টেবিলটি মাইক্রোসফ্ট এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও দ্বারা নির্মিত যদিও প্রযুক্তিগতভাবে কোনও সিস্টেম টেবিল নয় তবে একটি আমরা সাধারণত যেভাবেই বাদ দিতে চাই।
— ক্রিস্টোফ

5

খারাপ দিকটি এটি INFORMATION_SCHEMA.TABLESহ'ল এটিতে সিস্টেম টেবিলগুলির মতো dtpropertiesএবং টেবিলগুলিও রয়েছে MSpeer_...যা আপনার নিজের টেবিলগুলি ছাড়া আলাদা করে বলার উপায় নেই।

আমি ব্যবহার করার প্রস্তাব করব sys.objects( অবজ্ঞাত সিনসোবজেক্টস দর্শনের নতুন সংস্করণ ), যা সিস্টেম সারণীগুলি বাদ দিয়ে সমর্থন করে:

select *
from sys.objects
where type = 'U'      -- User tables
and is_ms_shipped = 0 -- Exclude system tables

2

এসএসএমএসে, একটি নির্দিষ্ট ডাটাবেসে (যেমন, "মাই ডেটাবেস") সমস্ত পুরোপুরি যোগ্যতাসম্পন্ন টেবিলের নাম পেতে:

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]

ফলাফল:

  • MyDatabase.dbo.MyTable1
  • MyDatabase.dbo.MyTable2
  • MyDatabase.MySchema.MyTable3
  • MyDatabase.MySchema.MyTable4
  • প্রভৃতি

2

এটি ব্যবহার করুন। আপনি স্কিমা নামের সাথে টেবিলের নামগুলি পাবেন:

SELECT SYSSCHEMA.NAME, SYSTABLE.NAME
FROM SYS.tables SYSTABLE
INNER JOIN SYS.SCHEMAS SYSSCHEMA
ON SYSTABLE.SCHEMA_ID = SYSSCHEMA.SCHEMA_ID


1

রে ভেগাকে ধন্যবাদ, যার প্রতিক্রিয়া একটি ডাটাবেসে সমস্ত ব্যবহারকারীর সারণী দেয় ...

এক্সপি 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 

1

ওয়েল আপনি সমস্ত ডাটাবেস অবজেক্ট পেতে 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

0
--for oracle
select tablespace_name, table_name from all_tables;

এই লিঙ্কটি এই বিষয়ে আরও অনেক তথ্য সরবরাহ করতে পারে


2
এটি এসকিউএল সার্ভারের জন্য নয়, তাই এই প্রশ্নের উত্তর নয়।
— ড্যান গেটেজ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.