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


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.