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


304

আমি এমন অ্যাপ্লিকেশনটিতে কাজ করছি যা "মাইএসকিউএল" এবং "এমএস এসকিউএল সার্ভার" এর মতো একাধিক ডাটাবেস সার্ভারের সাথে কাজ করতে পারে।

আমি একটি সাধারণ কোয়েরি ব্যবহার করে একটি নির্দিষ্ট ডাটাবেসের টেবিলের নাম পেতে চাই যা সমস্ত ডাটাবেস ধরণের জন্য উপযুক্ত। আমি নিম্নলিখিত চেষ্টা করেছি:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'

তবে এটি একটি নির্দিষ্ট সার্ভারের সমস্ত ডাটাবেসের টেবিলের নাম দিচ্ছে তবে আমি কেবল নির্বাচিত ডাটাবেসের টেবিলের নাম পেতে চাই। একটি নির্দিষ্ট ডাটাবেসের টেবিল পেতে কীভাবে আমি এই ক্যোয়ারিকে সীমাবদ্ধ রাখতে পারি?


1
মাইএসকিএল-এর জন্য আপনি সহজ করতে পারেন। টেবিলগুলি দেখান;
আশীষ গুপ্ত

উত্তর:


500

বিভিন্ন স্কেল ডিবিএমএস যেভাবে স্কিমার সাথে কাজ করে তার কারণে সম্ভবত।

নিম্নলিখিত চেষ্টা করুন

এসকিউএল সার্ভারের জন্য:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='dbName'

মাইএসকিউএল এর জন্য:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='dbName' 

ওরাকলের জন্য আমি মনে করি সমতুল্যটি ব্যবহার করা হবে DBA_TABLES


3
আমি এই সমাধান পছন্দ করা যখন আমি এক ডাটাবেসের (এসকিউএল সার্ভার) মধ্যে বিভিন্ন টেবিল স্কিমাটার আছে: নির্বাচন CONCAT (TABLE_SCHEMA, TABLE_NAME '।') থেকে INFORMATION_SCHEMA.TABLES কোথায় TABLE_TYPE = 'বেস মেজ ও TABLE_CATALOG =' MyDB '
Verena Haunschmid

3
তথ্য পেতে একজনকে অবশ্যই সেই নির্দিষ্ট ডিবি ব্যবহার করতে হবে। USE dbName GOএসকিউএল-সার্ভারের জন্য। আপনি যদি ডিবি ব্যবহার না করে থাকেন তবে সেই ডিবিতে টেবিল থাকলেও ফলাফল প্রদর্শিত হবে না।
বার্নস

2
মাইএসকিএল-এর জন্য আপনি সহজ করতে পারেন। টেবিলগুলি দেখান;
আশীষ গুপ্ত

SQL সার্ভার এন্ট্রি জরিমানা ছাড়া আমার জন্য কাজ করে USE dbName GOসার্ভার 2014. উপসর্গ
হুমম,

1) আপনি একটি এসকিউএল সার্ভার এবং মাইএসকিউএল এর জন্য একই জিনিসটির পরামর্শ দিয়েছেন 2) তথ্যটি কেবল মাইএসকিউএল 3 তে উপস্থিত রয়েছে) আমি সত্যিই অবাক হই যে আপনি কীভাবে এর জন্য এতগুলি উপার্জন পেয়েছেন ...
অ্যাপোস্টোলোস

82

এখান থেকে চুরি :

USE YOURDBNAME
GO 
SELECT *
FROM sys.Tables
GO

3
সম্ভবত সিএস-এর নাম নির্বাচন করুন T টেবিলগুলি যেখানে_সাম_শিশ্পড = 0
ওমি 471987

1
এটি ডাটাবেস সরবরাহকারী নির্দিষ্ট, এবং এএনএসআই এসকিউএল সামঞ্জস্যপূর্ণ নয়।
cjb110

1
বিকল্পভাবে, আপনারdbname.sys.Tables থেকে * নির্বাচন করুন; আপনি যদি আরও সংক্ষিপ্ত হতে পছন্দ করেন কমপক্ষে এসকিউএল সার্ভারে কাজ করে।
বুকমিস্ট

29

নিম্নলিখিত কোয়েরি Tablesনামক ডাটাবেসের মধ্যে সমস্ত নির্বাচন করবে DBName:

USE DBName
GO 
SELECT *
FROM sys.Tables
GO

এটি কেবল পার্ট সেপারেটর নয়। আপনি অন্যান্যতে পরিবর্তন করতে পারেন ts এটি কোনও টি-এসকিউএল সিনট্যাক্স নয়।
anishMarokey

1
ডাটাবেসস্যাম্পল নির্বাচন করুন * সিস্টেম থেকে সারণি
হামজেহ সোবহ

17
USE DBName;
SELECT * FROM sys.Tables;

আমরা ছাড়া মোকাবেলা করতে পারেন GOইন-স্থান আপনি সেমিকোলন ব্যবহার করতে পারেন ;


3
অ্যাজুরে এসকিউএল সার্ভারের জন্য, এটি আমার পক্ষে কাজ করেছিল তবে স্বীকৃত উত্তরটি তা করেনি। ধন্যবাদ।
জোনা

14

শুধু DATABASE NAMEসামনে রাখুন INFORMATION_SCHEMA.TABLES:

select table_name from YOUR_DATABASE.INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE'

10

মাইএসকিএলে, ব্যবহার করুন:

SHOW TABLES;

সাথে ডিবি নির্বাচন করার পরে:

USE db_name

Osm ,,, swt n সংক্ষিপ্ত
দীপা এমজি

এটি মাইএসকিউএল, প্রশ্নটি এমএসএসকিউএল সার্ভারকে ট্যাগ করা হয়েছে
মেলেল

@ মেল প্রশ্নের বিবরণ দেখুন
লোরেনজো লেরাতে

এটি সেরা উত্তর নয়, স্বীকৃত (এবং সঠিক) উত্তরের নিচে আমার মন্তব্য দেখুন।
চিওদা



2
select * from sys.tables
order by schema_id      --comments: order by 'schema_id' to get the 'tables' in 'object explorer order'
go

এর দ্বারা আপনি কী বোঝাতে চান সে সম্পর্কে আপনি কিছুটা ব্যাখ্যা করতে পারেন? হয়তো বুঝিয়ে বলবেন?
অ্যালেক্স কে

1
Exec sp_MSforeachtable 'Select ''?'''

হাই আমিররেজা, আমি বিশ্বাস করি তুমি কি কথা বলছ sp_MSforeachtable?
বম্মি

@ অম্বমি: হ্যাঁ দুর্দান্ত, মনোযোগ দেওয়ার জন্য ধন্যবাদ এবং টাইপিংয়ের ভুলের জন্য দুঃখিত সম্পাদিত
আমির কেশভার্জ

1
USE dbName;

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE (TABLE_SCHEMA = 'dbName' OR TABLE_SCHEMA = 'schemaName')
ORDER BY TABLE_NAME

আপনি যদি এমএস এসকিউএল সার্ভারে একাধিক স্কিমেটা নিয়ে কাজ করছেন, তবে একই সাথে TABLE_SCHEMA নির্বাচন না করেই নির্বাচন করুন TABLE_NAME সীমিত উপকারের হতে পারে, তাই আমি ধরে নিয়েছি যে এমএস এসকিউএল সার্ভার ব্যবহার করার সময় আমরা একটি পরিচিত স্কিমা সম্পর্কিত টেবিলগুলিতে আগ্রহী।

আমি এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওর সাথে আমার একটি এসকিউএল সার্ভার ডাটাবেস ব্যবহার করে এবং মাইএসকিউএল ওয়ার্কবেঞ্চের সাথে একটি মাইএসকিউএল ডাটাবেস ব্যবহার করে পরীক্ষা করেছি এবং উভয় ক্ষেত্রেই এটি সারণির নাম দেয়।

ক্যোয়ারী মাইকেল বেলনের দু'টি আলাদা ক্যোয়ারিকে বোলে যা একটি ডাটাবেস টাইপেই চলতে পারে। WHERE ধারাটির প্রথম অংশটি মাইএসকিউএল ডাটাবেসে কাজ করে এবং দ্বিতীয় অংশটি (ওআর এর পরে) এমএস এসকিউএল সার্ভার ডাটাবেসে কাজ করে। এটি কুরুচিপূর্ণ এবং যৌক্তিকভাবে কিছুটা ভুল কারণ এটি ধরে নিয়েছে যে ডেটাবেস হিসাবে একই নামের কোনও অনাকাঙ্ক্ষিত স্কিমা নেই। এটি এমন কোনও ব্যক্তিকে সহায়তা করতে পারে যারা একটি একক ক্যোয়ারী খুঁজছেন যা উভয় ডাটাবেস সার্ভারে চলতে পারে।


1

এমএসএসকিউএল সার্ভারের সর্বশেষ সংস্করণটির জন্য আপডেট করুন (17.7)

SELECT name FROM sys.Tables WHERE type_desc = 'USER_TABLE'

বা SELECT *সমস্ত কলাম পেতে।


আমি কেবল বুঝতে পেরেছি যে এই ক্যোয়ারীটি টেবিলের নামযুক্ত অ-ইংরেজি অক্ষরগুলির জন্য ভুল ফল দেয় যখন মাইকেল বেলনস সঠিক ফলাফল দেয়। (চরিত্রটি ছিল তুর্কি ভাষার ছোট হাতের অক্ষরে "in")
ওনুর ডেমির

1

নীচে ডাটাবেস ক্যোয়ারী নির্বাচন করতে:

use DatabaseName

এখন

SELECT * FROM INFORMATION_SCHEMA.TABLES

এখন আপনি কনসোলে নীচে তৈরি টেবিলগুলি দেখতে পাচ্ছেন।

পিএফএ।

প্রশ্ন


0

হ্যাঁ ওরাকল হ'ল:

select * from user_tables

এটি যদি আপনি কেবল লগ ইন করা মালিকানাধীন অবজেক্টগুলি চান user/schemaঅন্যথায় আপনি ব্যবহার করতে পারেন all_tablesবা dba_tablesযার মধ্যে সিস্টেম সারণী অন্তর্ভুক্ত রয়েছে।


তারা ক্রস সরবরাহকারী অনুসন্ধানগুলি খুঁজছেন যা সরবরাহকারীর সুনির্দিষ্ট নয়।
cjb110

সমস্ত ডিবি ইঞ্জিনগুলি ডেটা ডিকশনারিটি আলাদাভাবে প্রয়োগ করে কারণ স্কুয়েল থেকে এটি করার কোনও সুসংগত উপায় নেই। এটি jdbc / odbc এবং একটি 3GL ভাষা যেমন সি / জাভা / সি # ব্যবহার করে এটি বিমূর্ত করা সম্ভব হতে পারে যদি এটি যদি একটি প্রোগ্রামের প্রয়োজন হয় তবে অবশ্যই প্রতিটি ডাটাবেসের জন্য আপনার আলাদা প্রয়োগ রয়েছে।
অপশনটি

0

মাইকেল বেলন এর উত্তর থেকে বিল্ডিংয়ের জন্য আমার একটি তালিকার দরকার ছিল যা স্কিমা সম্পর্কিত তথ্যও অন্তর্ভুক্ত করেছিল এবং আমি তার ক্যোয়ারীটি এইভাবে পরিবর্তন করেছি।

SELECT TABLE_SCHEMA + '.' + TABLE_NAME as 'Schema.Table'
  FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG = 'dbName'
  ORDER BY TABLE_SCHEMA, TABLE_NAME

0

আমাদের ডিবিতে সমস্ত বিদ্যমান টেবিলের তালিকা পেতে কোডের নীচে আমাদের ওরাকল ডিবিতে (পিএল / এসকিউএল) কাজ করছে।

select * from tab;

এবং

select table_name from tabs;

দুজনেই কাজ করছে। আসুন চেষ্টা করুন এবং আপনার খুঁজে।


0

এসকিউএল এর নীচে এসকিউএল দিয়ে কেবল সমস্ত ইমপ্রোটানাট তথ্য পান

    SELECT t.TABLE_NAME , t.ENGINE , t.TABLE_ROWS ,t.AVG_ROW_LENGTH, 
t.INDEX_LENGTH FROM 
INFORMATION_SCHEMA.TABLES as t where t.TABLE_SCHEMA = 'YOURTABLENAMEHERE' 
order by t.TABLE_NAME ASC limit 10000;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.