এটিতে সমস্ত টেবিলের নাম প্রদর্শনের জন্য আমি কীভাবে ওরাকল ডাটাবেসটিকে জিজ্ঞাসা করব?
এটিতে সমস্ত টেবিলের নাম প্রদর্শনের জন্য আমি কীভাবে ওরাকল ডাটাবেসটিকে জিজ্ঞাসা করব?
উত্তর:
SELECT owner, table_name
FROM dba_tables
এটি ধরে নেওয়া হচ্ছে যে আপনার কাছে DBA_TABLES
ডেটা অভিধানের ভিউতে অ্যাক্সেস রয়েছে । আপনার যদি এই সুবিধাগুলি না থাকে তবে তাদের প্রয়োজন হয়, আপনি ডিবিএ স্পষ্টভাবে আপনাকে সেই টেবিলের উপর বিশেষাধিকার দেওয়ার জন্য অনুরোধ করতে পারেন, বা, ডিবিএ আপনাকে সেই SELECT ANY DICTIONARY
অধিকার বা SELECT_CATALOG_ROLE
ভূমিকা দেয় (যার মধ্যে কোনওটিই আপনাকে কোনও ডেটা অভিধানের টেবিলটি জিজ্ঞাসা করার অনুমতি দেয় )। অবশ্যই, আপনি কিছু নির্দিষ্ট স্কিমার মত বাদ দিতে চাইবেন SYS
এবং SYSTEM
যার মধ্যে প্রচুর পরিমাণে ওরাকল টেবিল রয়েছে যা আপনার সম্ভবত যত্নশীল নয়।
বিকল্পভাবে, যদি আপনার অ্যাক্সেস না থাকে তবে আপনি এই DBA_TABLES
অ্যাকাউন্টের মাধ্যমে সমস্ত অ্যাকাউন্টের অ্যাক্সেস দেখতে পাচ্ছেন তা ALL_TABLES
দেখতে পারেন:
SELECT owner, table_name
FROM all_tables
যদিও, এটি ডাটাবেসে উপলব্ধ টেবিলগুলির একটি উপসেট হতে পারে (ALL_TABLES
আপনার ব্যবহারকারীর অ্যাক্সেস মঞ্জুর করা সমস্ত টেবিলের জন্য আপনাকে তথ্য দেখায়)।
যদি আপনি কেবল নিজের মালিকানাযুক্ত টেবিলগুলি নিয়েই উদ্বিগ্ন হন তবে আপনার অ্যাক্সেস রয়েছে এমনগুলি নয়, আপনি ব্যবহার করতে পারেন USER_TABLES
:
SELECT table_name
FROM user_tables
যেহেতু USER_TABLES
কেবলমাত্র আপনার নিজের হাতে থাকা সারণীগুলি সম্পর্কে তথ্য রয়েছে তাই এর কোনও OWNER
কলাম নেই - সংজ্ঞা অনুসারে, মালিক আপনি।
ওরাকল এছাড়াও উত্তরাধিকার ডেটার একটি সংখ্যা অভিধান views-- হয়েছে TAB
, DICT
, TABS
, এবং CAT
যে example-- জন্য ব্যবহার করা যেতে পারে। সাধারণভাবে, আমি এই লিগ্যাসি ভিউগুলি ব্যবহার করার পরামর্শ দিই না যদি না আপনি যদি আপনার স্ক্রিপ্টগুলি ওরাকল back এ ব্যাকপোর্ট করার প্রয়োজন না হন তবে অরাকল দীর্ঘ সময় এই দৃষ্টিভঙ্গিগুলিকে পরিবর্তন করেনি যাতে তাদের প্রায়শই নতুন ধরণের অবজেক্টে সমস্যা হয়। উদাহরণস্বরূপ, TAB
এবং CAT
দর্শনগুলি উভয়ই সারণীগুলি সম্পর্কে তথ্য প্রদর্শন করে যা ব্যবহারকারীর পুনর্ব্যবহারযোগ্য বিনে রয়েছে এবং সমস্ত [DBA|ALL|USER]_TABLES
দর্শনগুলি সেগুলি ফিল্টার করে। "টেবিল" এর একটিতে উপাদানযুক্ত CAT
দর্শন লগগুলি সম্পর্কিত তথ্যও দেখায় TABLE_TYPE
যা আপনি যা চান তা হওয়ার সম্ভাবনা কম। DICT
সারণী এবং প্রতিশব্দ একত্রিত করে এবং বস্তুর মালিকানা আপনাকে জানায় না।
অনুসন্ধান করা user_tables
এবং dba_tables
কাজ হয়নি।
এই এক করেছে:
select table_name from all_tables
আরও এক ধাপ এগিয়ে, কলস (সমস্ত_ট্যাব_কলামগুলি) নামে আরও একটি ভিউ রয়েছে যা কোন সারণীতে প্রদত্ত কলামের নাম রয়েছে তা নির্ধারণের জন্য ব্যবহার করা যেতে পারে।
উদাহরণ স্বরূপ:
SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';
EST দিয়ে শুরু হওয়া সমস্ত সারণী এবং তাদের নামে যে কোনও জায়গায় CALLREF রয়েছে এমন কলামগুলি সন্ধান করতে।
আপনি কোন কলামগুলিতে যোগদান করতে চান তা কাজ করার ক্ষেত্রে এটি সহায়তা করতে পারে, উদাহরণস্বরূপ, আপনার টেবিল এবং কলাম নামকরণের কনভেনশনগুলির উপর নির্ভর করে।
select * from cols
এবং 0 টি সারি ফিরে পেয়েছি।
sqlplus
আপনি যদি ব্যবহার করছেন sqlplus
আপনি প্রথমে ভাল দেখার জন্য কয়েকটি প্যারামিটার সেট আপ করতে চাইতে পারেন যদি আপনার কলামগুলি ম্যাঙ্গেল হয়ে যাচ্ছে (আপনার বৈঠকগুলি আপনার sqlplus
সেশনটি থেকে বেরিয়ে যাওয়ার পরেও চলবে না ):
set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000
এরপরে আপনি সমস্ত টেবিলের নাম দেখতে এই জাতীয় কিছু ব্যবহার করতে পারেন:
SELECT table_name, owner, tablespace_name FROM all_tables;
@ জাস্টিন গুহ যেমন উল্লেখ করেছে, আপনি নিজের মালিকানাধীন টেবিলগুলি দেখানোর জন্য এটি ব্যবহার করতে পারেন:
SELECT table_name FROM user_tables;
মনে রাখবেন যে কিছু "সারণী" আসলে "ভিউ" হতে পারে তাই আপনি এর মতো কিছু চালানোর চেষ্টাও করতে পারেন:
SELECT view_name FROM all_views;
এর থেকে এমন কিছু পাওয়া উচিত যা দেখতে মোটামুটি গ্রহণযোগ্য মনে হচ্ছে:
pagesize 30
করছেন না pagesize 1000
?
বর্তমান ব্যবহারকারীর জন্য টেবিলগুলি নির্বাচন করতে সাধারণ প্রশ্ন:
SELECT table_name FROM user_tables;
নীচের ডেটা অভিধানের দর্শন দেখুন Try
tabs
dba_tables
all_tables
user_tables
থেকে নির্বাচন করার চেষ্টা করুন user_tables যা বর্তমান ব্যবহারকারীর মালিকানাধীন টেবিল প্রদর্শন করা হয়।
নীচের কোয়েরিটি ব্যবহার করে সমস্ত সারণীর নাম প্রদর্শন করতে ওরাকল ডাটাবেস
নির্বাচন করুন মালিক, টেবিলের নাম FROM dba_tables; মালিক নির্বাচন করুন, টেবিলের নাম FROM all_tables; ব্যবহারকারীর টেবিলের তালিকা থেকে টেবিলের নাম নির্বাচন করুন;
আরও ভিজিট করুন : http://www.plsqlinformation.com/2016/08/get-list-of-all-tables-in-oracle.html
select * from dba_tables
আপনি লগ ইন করেছেন এমন ব্যবহারকারী যদি sysdba
সুবিধাপ্রাপ্ত হয় তবেই সমস্ত ব্যবহারকারীর সমস্ত সারণী দেয় ।
আমি উত্তর খুঁজে পাইনি যা ব্যবহার করতে নির্দেশ করবে
DBA_ALL_TABLES (ALL_ALL_TABLES/USER_ALL_TABLES)
সুতরাং আমার সংস্করণ পাশাপাশি যুক্ত করার সিদ্ধান্ত নিয়েছে। এই ভিউটি আসলে ডিবিএ_এইচএলবিএলএসকে আরও ভাল করে দেয় কারণ এটি বস্তুর টেবিলগুলিও ফেরত দেয় ( http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm )।
আপনি ওরাকল ডেটা অভিধান ব্যবহার করতে পারেনওরাকল অবজেক্ট সম্পর্কে তথ্য পেতে আপনি ।
আপনি বিভিন্ন উপায়ে টেবিলের তালিকা পেতে পারেন:
select *
from dba_tables
বা উদাহরণস্বরূপ:
select *
from dba_objects
where object_type = 'TABLE'
তারপরে আপনি টেবিলের নাম ব্যবহার করে টেবিল কলামগুলি পেতে পারেন:
select *
from dba_tab_columns
তারপরে আপনি নির্ভরতার তালিকা পেতে পারেন (ট্রিগার, ভিউ এবং অন্যান্য):
select *
from dba_dependencies
where referenced_type='TABLE' and referenced_name=:t_name
তারপরে আপনি এই বস্তুর পাঠ্য উত্স পেতে পারেন:
select * from dba_source
এবং আপনি চাইলে পরিবর্তে ব্যবহার করতে USER
বা ALL
দেখতে DBA
পারেন।
আমরা নীচে ক্যোয়ারী থেকে কলামের বিবরণ সহ সমস্ত সারণী পেতে পারি:
SELECT * FROM user_tab_columns;
নীচে আপনি কীভাবে অপশনগুলি ব্যবহার করতে পারেন তা বর্ণনা করে এসকিউএল ক্যোয়ারির একটি মন্তব্য করা স্নিপেট রয়েছে:
-- need to have select catalog role
SELECT * FROM dba_tables;
-- to see tables of your schema
SELECT * FROM user_tables;
-- tables inside your schema and tables of other schema which you possess select grants on
SELECT * FROM all_tables;
এসকিউএলসিএলে উপলব্ধ একটি নতুন বৈশিষ্ট্য (যা ওরাকল ডেটাবেসগুলির জন্য একটি ফ্রি কমান্ড লাইন ইন্টারফেস)
Tables
ওরফে।
বৈশিষ্ট্যের ব্যবহার এবং অতিরিক্ত দিকগুলি দেখানো কয়েকটি উদাহরণ এখানে। প্রথমে একটি sql
কমান্ড লাইনে ( sql.exe
উইন্ডোতে) সেশনে সংযুক্ত করুন। অন্য কোনও কমান্ড বা কোয়েরি যা ডেটা প্রদর্শন করে তা চালানোর আগে এই sqlcl নির্দিষ্ট কমান্ডটি প্রবেশ করার পরামর্শ দেওয়া হয়।
SQL> set sqlformat ansiconsole -- resizes the columns to the width of the
-- data to save space
SQL> tables
TABLES
-----------
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
EMPLOYEES
JOB_HISTORY
..
কি tables
ওরফে উল্লেখ করা হয়, আপনি কেবল ব্যবহার করতে পারেনalias list <alias>
SQL> alias list tables
tables - tables <schema> - show tables from schema
--------------------------------------------------
select table_name "TABLES" from user_tables
এসকিউএলসিএল-এর অধীনে এটি ডিফল্টরূপে আসে বলে আপনাকে এই উপন্যাসটি সংজ্ঞায়িত করতে হবে না। আপনি যদি কোনও নির্দিষ্ট স্কিমা থেকে সারণি তালিকাভুক্ত করতে চান তবে একটি নতুন ব্যবহারকারী-সংজ্ঞায়িত উপনাম ব্যবহার করে এবং স্কিমা নামটি কেবলমাত্র কলামগুলির একটি সেট প্রদর্শন করে বাইন্ড আর্গুমেন্ট হিসাবে পাস করছেন, আপনি এটি ব্যবহার করে করতে পারেন
SQL> alias tables_schema = select owner, table_name, last_analyzed from all_tables where owner = :ownr;
তারপরে আপনি কেবল আর্গুমেন্ট হিসাবে স্কিমা নামটি পাস করতে পারেন
SQL> tables_schema HR
OWNER TABLE_NAME LAST_ANALYZED
HR DUMMY1 18-10-18
HR YOURTAB2 16-11-18
HR YOURTABLE 01-12-18
HR ID_TABLE 05-12-18
HR REGIONS 26-05-18
HR LOCATIONS 26-05-18
HR DEPARTMENTS 26-05-18
HR JOBS 26-05-18
HR EMPLOYEES 12-10-18
..
..
আরও পরিশীলিত প্রাক-সংজ্ঞায়িত উপনাম হিসাবে পরিচিত Tables2
, যা বেশ কয়েকটি অন্যান্য কলাম প্রদর্শন করে।
SQL> tables2
Tables
======
TABLE_NAME NUM_ROWS BLOCKS UNFORMATTED_SIZE COMPRESSION INDEX_COUNT CONSTRAINT_COUNT PART_COUNT LAST_ANALYZED
AN_IP_TABLE 0 0 0 Disabled 0 0 0 > Month
PARTTABLE 0 0 0 1 0 1 > Month
TST2 0 0 0 Disabled 0 0 0 > Month
TST3 0 0 0 Disabled 0 0 0 > Month
MANAGE_EMPLYEE 0 0 0 Disabled 0 0 0 > Month
PRODUCT 0 0 0 Disabled 0 0 0 > Month
ALL_TAB_X78EHRYFK 0 0 0 Disabled 0 0 0 > Month
TBW 0 0 0 Disabled 0 0 0 > Month
DEPT 0 0 0 Disabled 0 0 0 > Month
এটি ব্যাকগ্রাউন্ডে কী ক্যোয়ারী চালায় তা জানতে প্রবেশ করান
alias list tables2
এটি আপনাকে column
এসকিউএল * প্লাসে সাধারণত ব্যবহৃত পূর্বনির্ধারিত সংজ্ঞা সহ কিছুটা আরও জটিল কোয়েরি দেখায় ।
জেফ স্মিথ এখানে এলিয়াস সম্পর্কে আরও ব্যাখ্যা করেছেন
আমি কলাম আইডির ক্রম অনুসারে বাছাই করা স্কিমার টেবিলের সাথে সম্পর্কিত সমস্ত কলামের নামের তালিকা পেতে চাইছিলাম।
এখানে আমি যে ক্যোয়ারীটি ব্যবহার করছি তা এখানে: -
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;
প্রকৃতপক্ষে, এসকিউএল কোয়েরিগুলির মাধ্যমে টেবিলের তালিকা থাকা সম্ভব tools এটি এমন কি এমন সরঞ্জামগুলির মাধ্যমে করা সম্ভব যা ERWIN , টোড ডেটা মডেলার বা ERBuilder এর মতো ডেটা অভিধান তৈরি করতে দেয় via । এই সরঞ্জামগুলির সাহায্যে সারণির নাম ছাড়াও আপনার ক্ষেত্রগুলি, তাদের প্রকারগুলি, অবজেক্টস (ট্রিগার, সিকোয়েন্সস, ডোমেন, দর্শন ...) থাকবে
আপনার টেবিল সংজ্ঞা উত্পন্ন করতে অনুসরণ করতে নীচের পদক্ষেপগুলি:
আপনার ডাটাবেসটি একটি সত্তা সম্পর্কের ডায়াগ্রাম হিসাবে সফ্টওয়্যারটিতে প্রদর্শিত হবে।
select * from all_all_tables
শুরুতে অতিরিক্ত এই 'সমস্ত' অতিরিক্ত 3 কলাম দেয় যা:
OBJECT_ID_TYPE
TABLE_TYPE_OWNER
TABLE_TYPE
SHOW TABLES
কাজ (হিসাবে মাইএসকিউএল সম্পন্ন)?