কঠোরভাবে, হ্যাঁ, FROM
একটি SELECT
বিবৃতিটির ধারাটি alচ্ছিক নয়। এসকিউএল -৯৯ এর বাক্যSELECT
গঠনটি বুনিয়াদি স্ট্যামমেন্টের বিবরণ দেয় এবং ক্লজটির FROM
চারপাশে কোনও বর্গাকার বন্ধনী নেই। এটি নির্দেশ করে যে মানটি এটি অ-alচ্ছিক বিবেচনা করে:
SELECT [ DISTINCT | ALL ]
{Column expression [ AS name ]} [ ,... ] | *
FROM <Table reference> [ {,<Table reference>} ... ]
[ WHERE search condition ]
[ GROUP BY Columns [ HAVING condition ] ]
[ORDER BY {col_name | expr | position} [ASC | DESC],...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name' export_options |
INTO DUMPFILE 'file_name' |
INTO var_name [, var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]
প্রকৃত ব্যবহারে, প্রোগ্রামারস এবং ডিবিএগুলি প্রায়শই টেবিলগুলিতে ডেটা ম্যানিপুলেট করা বা টেবিল এবং ডেটা স্ট্রাকচার হেরফের করা ব্যতীত অন্য কিছু করতে দরকারী বলে মনে হয়। এই ধরণের জিনিসটি মূলত এসকিউএল স্ট্যান্ডার্ডের আওতার বাইরে, যা নির্দিষ্ট বাস্তবায়নের বাদাম এবং বল্টের চেয়ে ডেটা বৈশিষ্ট্যগুলির সাথে সম্পর্কিত। আমরা চালাতে চাই SELECT getdate()
বা SELECT 1
বা SELECT DB_NAME()
(বা আপনার উপভাষাগুলি যা পছন্দ) যাই হোক না কেন, আমরা আসলে কোনও টেবিল থেকে ডেটা চাই না।
ওরাকল নিম্নলিখিত কার্যকর সংজ্ঞা সহ একটি ডামি টেবিল ব্যবহার করে মান এবং বাস্তবায়নের স্বাতন্ত্র্য সমাধান করতে বেছে নিয়েছে:
CREATE TABLE DUAL (
DUMMY CHAR(1)
)
INSERT INTO DUAL (DUMMY) VALUES ('X')
অন্যান্য আরডিবিএমএসগুলি মূলত ধরে নেয় যে কোনও FROM
নির্দিষ্ট না থাকলে একটি ডামি টেবিল ব্যবহৃত হয়।
দ্বৈত টেবিলের ইতিহাস উইকিপিডিয়া চালু আছে:
অভ্যন্তরীণ ভিউগুলিতে যোগদানের জন্য একটি টেবিল সরবরাহ করার জন্য অরাকল কর্পোরেশনের চার্লস ওয়েস দ্বারা ডুয়াল টেবিলটি তৈরি করা হয়েছিল:
আমি ওরাকল ডেটা অভিধানে অন্তর্নিহিত অবজেক্ট হিসাবে ডুয়াল টেবিলটি তৈরি করেছি। এটি কখনই নিজেকে দেখার কথা ছিল না, বরং এর পরিবর্তে এমন একটি দৃষ্টিভঙ্গির অভ্যন্তরে ব্যবহৃত হয়েছিল যা প্রত্যাশা করা হয়েছিল। ধারণাটি ছিল যে আপনি ডুয়াল টেবিলের সাথে একটি যোগ দিতে পারেন এবং আপনার টেবিলে প্রতি এক সারিতে ফলাফলের জন্য দুটি সারি তৈরি করতে পারেন। তারপরে, গ্রুপ দ্বারা ব্যবহার করে, ফলাফলের যোগটিকে সংক্ষিপ্ত করে ডেটা পরিমাণ এবং আইএনডিএক্স সীমা (গুলি) এর পরিমাণ সঞ্চয় করতে পারে show নাম, ডুয়াল, কেবল একটি থেকে একজোড়া সারি তৈরি করার প্রক্রিয়াটির জন্য উপযুক্ত বলে মনে হয়েছিল।
মূল ডুয়াল টেবিলটিতে এটিতে দুটি সারি ছিল (সুতরাং এটির নাম) তবে পরবর্তীকালে এটির কেবল একটি সারি ছিল।
select
ছাড়া একটিও করতে পারে নাfrom
। ডিবি 2 এর একই ধরণের ডামি টেবিল রয়েছে যার নাম SYSIBM.SYSDUMMY1 । এছাড়াও আপনি সম্ভবত এটি ইতিমধ্যে জানেন, কিন্তু আপনি যখনselect 'A' from dual
,dual
টেবিলটি সত্যিই অ্যাক্সেস করা হয় না , যা আপনার সম্পাদনায় প্রশ্নের উত্তর দেয় (যা বিটিডব্লুতে একটি নতুন প্রশ্নের যোগ্যতা অর্জন করেছিল)।