কেন একটি এসকিউএল কোয়েরি থেকে আগে নির্বাচন করুন? [বন্ধ]


67

এটি এমন একটি বিষয় যা স্কুলে আমাকে খুব বিরক্ত করেছিল।

পাঁচ বছর আগে, যখন আমি এসকিউএল শিখেছি, আমি সর্বদা ভাবতাম যে কেন আমরা প্রথমে আমাদের ক্ষেত্রগুলি নির্দিষ্ট করি এবং তারপরে আমরা সেগুলি কোথায় চাই।

আমার ধারণা অনুসারে আমাদের লেখা উচিত:

From Employee e
Select e.Name

তাহলে আদর্শটি নিম্নলিখিতটি কেন বলে?

Select e.Name -- Eeeeek, what does e mean?
From Employee e -- Ok, now I know what e is

এসকিউএল বুঝতে আমার কয়েক সপ্তাহ লেগেছে, এবং আমি জানি যে বেশিরভাগ সময় উপাদানগুলির ভুল ক্রম দ্বারা ব্যয় করা হয়েছিল।

এটি সি # তে লেখার মতো:

string name = employee.Name;
var employee = this.GetEmployee();

সুতরাং, আমি ধরে নিই যে এটির একটি .তিহাসিক কারণ রয়েছে। কেন?


64
ওও বানরদের তাদের জায়গায় রাখার এটি একটি ডিবিএ ষড়যন্ত্র।
gbn

3
দুর্ভাগ্যক্রমে, আমি কাগজে সিকোয়েল প্রবর্তন করে এমন কোনও প্রাসঙ্গিক তথ্য খুঁজে পাই না এবং আমি মনে করি না যে আপনার প্রশ্নের উত্তরটির নির্দিষ্ট উল্লেখ রয়েছে। gnat এর উত্তর সম্ভবত সবচেয়ে ভাল ব্যাখ্যা যদিও - তবে আমি ষড়যন্ত্র তত্ত্বটি খারিজ করব না।
ইয়ানিস

2
ব্যক্তিগতভাবে, আমি সর্বদা চাইতাম Linqমানকৃত SQLসিনট্যাক্সটি ব্যবহার করতে পারতাম না ।
jp2code

4
একটি নির্বাচনী বিবৃতিতে ধারাগুলি অপারেশনের ক্রম নয়
এসলট

8
দুর্দান্ত প্রশ্ন। আপনার পরবর্তী একটি হওয়া উচিত কেন কেন ইনসার্ট এবং আপডেটের প্রশ্নের ক্ষেত্রে বিভিন্ন সিনট্যাক্স মডেল ব্যবহার করতে হয়েছিল: (ফিল্ড 1, ফিল্ড 2) ভ্যালু (f1, f2) বনাম (ফিল্ড 1 = f1, ফিল্ড 2 = এফ 2)।
লার্সটেক

উত্তর:


86

মূলত এসকিউএল ভাষাটিকে বলা হত এসকুএইএলকে দাঁড়ানো

  • স্ট্রাকচার্ড ইংরেজি ক্যোয়ারী ল্যাঙ্গুয়েজ
    জোর দিয়ে ইংরেজি , এটা অভিমানী বানানের বন্ধ হতে প্রাকৃতিক ভাষা।

আপনি এখন ইংরেজি বাক্য বানান হিসাবে এই দুটি বিবৃতি বানান:

  1. "কর্মচারী সারণী থেকে এবং কলাম ই-নাম নির্বাচন করুন"
  2. "কর্মচারী টেবিল থেকে কলাম ই নির্বাচন করুন ame নাম নির্বাচন করুন"

দ্বিতীয়টি প্রাকৃতিক ইংরেজি ভাষার কাছাকাছি বলে মনে হচ্ছে তাই এটিকে আদর্শ হিসাবে সেট করা হয়েছে।

বিটিডব্লিউ একই যুক্তি Whereইত্যাদিতে যায় - এসকিউএল বিবৃতিগুলি ইচ্ছাকৃতভাবে প্রাকৃতিক ভাষার কাছাকাছি শব্দ করার জন্য ডিজাইন করা হয়েছিল।


7
মাইক্রোসফ্ট লিনকউয়ের সাথে এফআরএম আসার সাথে সাথে অগ্রাহ্য করেছে!

27
ইংরেজিতে অনেকটা লুহ্যাড লজিক রয়েছে: /
মাইকেল কে

15
@ ডিগার - এটি নকশা দ্বারা ছিল: তারা নির্বাচিত অংশে ইন্টেলিজেন্স সমর্থন করতে পারে না যদি নির্বাচিতটি প্রথম আসে।
স্কট হুইটলক

6
@ ডিগার: লিনকিউ ওও / আধুনিক অবজেক্ট.মাথোদ বা অবজেক্ট.প্রপার্টি অনুসরণ করে। এসকিউএল 40 বছর ধরে প্রায় ভুলে যাবেন না
49

7
পরিবর্তে আমার এই প্রশ্নটি ইংলিশ.স্ট্যাকেক্সচেঞ্জ.কম এ পোস্ট করা উচিত :)
সাইরিল গ্যান্ডন

37

কারণ একটি নির্বাচনী বিবৃতিতে SELECT আবশ্যক এবং FROM নয়।

Select 'This String'

অবশ্যই আপনার বর্গাকার স্টেটমেন্টটি এফআরএম-এর পরে নির্বাচন করুন, মুছে ফেলা, আপডেটের সন্ধানের জন্য বিশ্লেষণ করা যেতে পারে, তবে আসলেই কি কোনও চুক্তি এত বড়?

মনে রাখবেন, ইন্টেলিসেন্সের আগে এগুলি করা হয়েছিল। এটি এত জটিল নয়।

সম্পাদনা করুন: সম্ভবত কোনও কারণ নেই যে স্ক্লীল দোভাষী দুটি করেই তৈরি করা যায়নি।


2
যদিও, আপনি FROM myTable;পরিবর্তে লিখতে পারে FROM myTable SELECT *; এটি কেবল প্রয়োজনের মতো বলে মনে হয় কারণ এটি আপনার অভ্যস্ত।
ব্যবহারকারী 606723

13
কেবল এটির প্রয়োজনীয়তার অর্থ এই নয় যে এটি আগে আসতে হবে।
লার্সটেক

8
এএনএসআইতে এসকিউএল FROMপ্রয়োজন হয়। এ কারণেই অনেক আরডিবিএমএসের একটি টেবিল DUAL বা অন্য একক সারি ডামি টেবিল থাকে
মার্টিন স্মিথ

@ লার্সটেক - এটি আগে আসতে হবে না তবে কেন এটি জটিল করে তুলছে। এটিকে একটি নির্বাচিত বিবৃতি বলা হয়, কেবল নির্বাচন শব্দটি দিয়ে শুরু করুন।
জেফো

3
@ জেফো: ঠিক আছে। SELECT FROM Customers COLUMNS FirstName, LastName, PhoneNumber
অ্যালন গুরালেনেক

10

উল্লেখগুলির দ্বারা আমি ব্যাক আপ নিতে পারি এমন উত্তরটি জানেন না, তবে আমার যদি অনুমান করতে হয়: এসকিউএল একটি ঘোষণামূলক ভাষা , এই জাতীয় ভাষার একটি বিবৃতি বর্ণনা করে যে আপনি কী করতে চান তার বিপরীতে আপনি কী করতে চান।

যেমন, "নির্বাচন থেকে এক্সপ্লোর পরিচালনা সি" উত্তর দেওয়ার আরও উপযুক্ত উপায় হিসাবে শোনায় "" ডাটাবেস থেকে আমি কী নির্বাচন করতে চাই "," ফরোম ওয়াই সিলেক্ট এক্স "লেখার বিরোধিতা হিসাবে।

এছাড়াও, এসকিউএলে, নির্বাচন / আপডেট / INSERT আপনাকে কী কী অপারেশন করতে চলেছে তা সুনির্দিষ্ট করে এবং FROM কেবলমাত্র একটি ধারা যা আপনাকে ডাটাবেসের ডান টেবিল থেকে নির্বাচন করতে সহায়তা করে। আবার, আপনি ডেটা দিয়ে যা করছেন সেটি কীভাবে আপনি অর্জন করতে যাচ্ছেন তার চেয়ে বেশি গুরুত্ব রয়েছে takes


1
+1: এটি আবশ্যকীয় বা পদ্ধতিগত নয়। ধারাগুলির ক্রমটি কেবল ইংরেজির সাথে উপযুক্ত। বেশি কিছু না.
এসলট

নির্বাচিত বিবৃতিতে ধারাগুলির ক্রমের গুরুত্বের আরও ভাল উদাহরণ এবং কোথায় হতে পারে।
JeffO

5

এসকিউএল হ'ল ইংরাজী স্পিকারকে লক্ষ্যযুক্ত একটি কাঠামোগত ক্যোয়ারী ভাষা। নির্বাচন, অন্তর্ভুক্ত, আপডেট, এবং মুছে ফেলা আবশ্যক আদেশ। ইংরেজী অনিবার্য আদেশে বাক্য বা বিবৃতি শুরু হয়। তুলনা করা:

West young man go!

প্রতি

Go west young man!

এসকিউএল দ্বিতীয় (অপরিহার্য) ফর্ম্যাটটি অনুসরণ করে। এছাড়াও চারটি বাধ্যতামূলক কমান্ডের তিনটি উল্লেখযোগ্যভাবে পৃথক ফর্ম্যাট রয়েছে। বিবেচনা:

FROM    employees a,
        accounts b
UPDATE  ...

অথবা

INTO    customers a
SELECT  ...

আপনি যে পদক্ষেপ গ্রহণ করছেন তা যদি আপনি জানেন তবে সঠিক ফর্ম্যাটটি নির্বাচন করা আরও সহজ।

নির্বাচনের ক্ষেত্রে, আপনি কোন বৈশিষ্ট্যটি চান তা নির্ধারণ করুন, তারপরে সেগুলি থাকা সারণীগুলি যুক্ত করুন। আপনি নির্বাচনের মানদণ্ড তৈরি করার সাথে সাথে আপনি অতিরিক্ত সারণী যুক্ত করতে পারেন। আপনি যখন গতিশীলভাবে মাপদণ্ড যুক্ত করছেন, এটি সাধারণত ক্যোয়ারীর স্থির অংশের শেষে করা যায়।


7
সুতরাং ইয়োদা এসকিউএল বিকাশের সাথে জড়িত ছিল না।
আদম এফ

আকর্ষণীয় যে আপনি আপডেট আপ আনা। UPDATE ... FROMআইএমও কোনও ইংরেজি-জাতীয় কাঠামো নয়। আমার কাছে আরও ভাল পরামর্শ নেই তা ...
রবার্ট ব্রাউন

অভিপ্রায়টি ছিল যে পয়েন্টটির সাথে ক্রিয়াটির সাথে মিল থাকা দরকার।
বিলথোর

3

এসকিউএল স্টেটমেন্টগুলি ক্রিয়াপদ দিয়ে শুরু হয়। এটি ভাষা ডিজাইনারদের পছন্দ ছিল এবং অনেক প্রোগ্রামিং ভাষা সেভাবে কাজ করে। শব্দার্থকভাবে, প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি এমনভাবে কাজ করা অস্বাভাবিক নয়:

verb(noun, noun, noun);

এছাড়াও, উদাহরণ হিসাবে আপনি যেমন নির্বাচনী বিবৃতি দেন সে ক্ষেত্রে আপনার প্রস্তাবিত বাক্য গঠনটি প্রথমে বিবৃতিতে প্রথমে রাখবে put কোনও ভিএসও (ক্রিয়া, বিষয়, বস্তু) বাক্য আদেশের পরিবর্তে আপনার ওভিএস থাকবে যা প্রাকৃতিক ভাষার তুলনায় খুব অদ্ভুত হবে। এসভিও (যেমন ইংরাজী), ভিএসও (যেমন আরবি), এবং এসওভির (যেমন লাতিন) মানুষের বক্তৃতার আরও যুক্তিসঙ্গত অনুমান।


2

আমি মনে করি এটি পার্সিং উল্লেখযোগ্যভাবে জটিল করে তুলবে, বিশেষত সাবকোয়ারির সাথে, যেমন

  FROM Foo f
  JOIN (FROM Bar b
        WHERE b.ID = f.ID
        UPDATE b
           SET b.Wibble = 1) x
    ON x.ID = f.ID
SELECT f.XYZ

এটি পার্সিং আরও জটিল হবে। আপনি বলতে পারবেন না যে আপডেটটি সিনট্যাক্স ত্রুটি হয়েছিল যতক্ষণ না আপনি এফআরএম ক্লজটি পার্স করেছিলেন এবং পার্সারটিকে জানতে পারার যথেষ্ট প্রসঙ্গটি মনে রাখতে হবে যে এটি একটি সাবকিউরিটি পার্স করছে। আমি মনে করি না যাই হোক সাবকিউরিতে আপডেটগুলি জায়েজ রয়েছে তবে তারা যদি (সম্ভবত কোনও রিটার্নিং ক্লজ সহ) থাকত তবে আপনি SELECT বিবৃতিটি বিশ্লেষণ না করে আপনি সম্ভবত এটি অবৈধ বলতে পারবেন না।

এটি কমপক্ষে ব্যাকরণের জন্য কে (লুকোচুরি) বাড়িয়ে তুলবে এবং সবচেয়ে খারাপভাবে এটিকে সংবেদনশীল করে তুলবে, যদিও এটি বিশ্ববিদ্যালয় থেকে আমার তুলনায় কম স্মরণকারী সংকলক নকশার কাগজগুলির সীমানা প্রসারিত করছে।


এর জন্য উইকি নিবন্ধটির QUELদিকে লক্ষ্য করা প্রায় একই সময়ে তৈরি করা হয়েছিল বাক্য বাক্যটির ক্রমটি ওপেনের পরামর্শ অনুসারে।
মার্টিন স্মিথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.