এসকিউএল কীওয়ার্ড "এএস" এর উদ্দেশ্য কী?


137

আপনি এসকিউএল টেবিলের নামের পরে ঠিক সনাক্তকারী টাইপ করে টেবিলের মতো উপকরণ সেট করতে পারেন।

SELECT * FROM table t1;

এমনকি আপনি ASউপনামটি নির্দেশ করতে কীওয়ার্ডটিও ব্যবহার করতে পারেন ।

SELECT * FROM table AS t1;

তাদের মধ্যে যদি কোন পার্থক্য হয়?

আমি দেখতে পাচ্ছি পুরানো ডিবিএ লোকেরা বিনা বিবৃতিতে লেখার প্রবণতা দেখায় ASতবে বেশিরভাগ নতুন টিউটোরিয়াল এটি ব্যবহার করে।

আপডেট: আমি জানি টেবিল এবং কলামের উপকরণের উদ্দেশ্য কী। আমি কৌতূহলী, এ্যালিয়াস সেট করার জন্য আলাদা কীওয়ার্ড রাখার কারণ কী তা ছাড়া এটি কাজ করে।


12
এমএসডিএন.মাইক্রোসফট. /en-us/library/ms179300.aspx থেকে AS ধারাটি ফলাফল সেট কলামে একটি নাম নির্ধারণের জন্য আইএসও স্ট্যান্ডার্ডে সংজ্ঞায়িত বাক্য গঠন। এই 2005. SQL সার্ভার ব্যবহার করার জন্য পছন্দের সিনট্যাক্স হল
Adriaan Stander

3
এটি এর স্ক্রিপ্ট সহ কোনও পদ্ধতির ঘোষণা পৃথক করতেও ব্যবহৃত হয়। CREATE PROC Test @Param1 INT AS SELECT @Param1
টম 'ব্লু' পিডক

উত্তর:


134

উপরের উভয় বক্তব্যের মধ্যে কোনও পার্থক্য নেই। এএস নামটির উল্লেখ করার আরও একটি সুস্পষ্ট উপায়


10
আসলে, এসকিউএল-তে কোনও পার্থক্য নেই তবে কিছু নির্ভরশীল সরঞ্জাম / লাইব্রেরি এই ছোট কীওয়ার্ডের উপর নির্ভর করতে পারে। যেমন: জেডিবিসি ৪.০ ডাব্লু / 'এএস কারণ' এবং ডাব্লু / ও এলিয়াস ব্যবহারের উপর নির্ভর করে আপনি বিভিন্ন আচরণ পাবেন - এই উত্তরটি দেখুন stackoverflow.com/a/4271250/814304 । আমি এই জাতীয় সমস্যাগুলি এড়াতে সর্বদা শব্দার্থের পুরো ফর্মটি ব্যবহার করার পরামর্শ দিতে চাই।
iMysak

আমি কি একাধিক কলামের জন্য এলিয়াস রাখতে পারি? মত, একক এলিয়াস সহ দুটি কলাম?
দীপক কেইন

পছন্দ করেছেন কেবল কলামগুলি কনটেনেট করুন (||) এবং তারপরে এটিকে একটি উপনাম দিন যেমন SELECT foo || বার এএস ফুবার
রূপার্ট ম্যাডেন-অ্যাবট

হ্যাঁ @ রূপার্টম্যাডেন-অ্যাবট, ধন্যবাদ! তবে আমি কিছুটা অপেক্ষা করলাম, আমি প্রসঙ্গে থাকি।
দীপক কেইনস

38

আমার আগে যে উত্তর দিয়েছে তারা সবাই সঠিক। আপনি যখন দীর্ঘ প্রশ্ন বা কোয়েরিগুলিতে যোগদান করেন তখন আপনি টেবিলের জন্য এটির নাম শর্টকাট নাম হিসাবে ব্যবহার করেন। এখানে কয়েকটি উদাহরণ দেওয়া হল।

উদাহরণ 1

SELECT P.ProductName,
       P.ProductGroup,
       P.ProductRetailPrice
FROM   Products AS P

উদাহরণ 2

SELECT P.ProductName,
       P.ProductRetailPrice,
       O.Quantity
FROM   Products AS P
LEFT OUTER JOIN Orders AS O ON O.ProductID = P.ProductID
WHERE  O.OrderID = 123456

উদাহরণ 3 এএস কীওয়ার্ডটি ব্যবহার করা একটি ভাল অনুশীলন, এবং খুব প্রস্তাবিত, তবে এটি ছাড়া একটি একই কোয়েরি করা সম্ভব (এবং আমি প্রায়শই করি)।

SELECT P.ProductName,
       P.ProductRetailPrice,
       O.Quantity
FROM   Products P
LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID
WHERE  O.OrderID = 123456

আপনি বলতে পারেন যে, আমি শেষ উদাহরণে AS কীওয়ার্ডটি রেখে দিয়েছি। এবং এটি একটি উপনাম হিসাবে ব্যবহার করা যেতে পারে।

উদাহরণ 4

SELECT P.ProductName AS "Product",
       P.ProductRetailPrice AS "Retail Price",
       O.Quantity AS "Quantity Ordered"
FROM   Products P
LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID
WHERE  O.OrderID = 123456

উদাহরণ 4 এর আউটপুট

Product             Retail Price     Quantity Ordered
Blue Raspberry Gum  $10 pk/$50 Case  2 Cases
Twizzler            $5 pk/$25 Case   10 Cases

21

কোন সিনট্যাক্সটি বেছে নেওয়ার বিষয়ে আপনি যখন নিশ্চিত নন, বিশেষত যখন পছন্দগুলি পৃথক করার পক্ষে তেমন কিছু মনে হয় না, তখন হিরিস্টিক্স সম্পর্কিত একটি বইয়ের পরামর্শ নিন। যতদূর আমি জানি, এসকিউএল-এর একমাত্র হিউরিস্টিক্স বই হ'ল 'জো সেল্কোর এসকিউএল প্রোগ্রামিং স্টাইল':

পারস্পরিক সম্পর্কের নামটিকে প্রায়শই একটি উপনাম বলা হয় তবে আমি আনুষ্ঠানিক হয়ে যাব। এসকিউএল -২২ এ তাদের একটি optionচ্ছিক ASঅপারেটর থাকতে পারে এবং এটি পরিষ্কার করে দেওয়ার জন্য ব্যবহার করা উচিত যে কোনও কিছুকে নতুন নাম দেওয়া হচ্ছে। [p16]

এইভাবে, যদি আপনার দলটি কনভেনশন পছন্দ না করে, আপনি সেলকাকে দোষ দিতে পারেন - আমি জানি আমি করি;)


আপডেট 1: দীর্ঘকাল ধরে আইআইআরসি, ওরাকল AS(পূর্ববর্তী সম্পর্কের নাম) কীওয়ার্ডটি সমর্থন করে নি , যা ব্যাখ্যা করতে পারে যে কিছু পুরানো টাইমার কেন অভ্যাসগতভাবে এটি ব্যবহার করে না।


আপডেট 2: এসকিউএল স্ট্যান্ডার্ড দ্বারা ব্যবহৃত 'পারস্পরিক সম্পর্ক নাম' শব্দটি অনুপযুক্ত। অন্তর্নিহিত ধারণাটি একটি ' রেঞ্জ ভেরিয়েবল ' এর।


আপডেট 3: আমি কেবল পুনরায় পড়লাম সেলকো কী লিখেছেন এবং তিনি ভুল: টেবিলটির নামকরণ হচ্ছে না! আমি এখন মনে করি:

পারস্পরিক সম্পর্কের নামটিকে প্রায়শই একটি উপনাম বলা হয় তবে আমি আনুষ্ঠানিক হয়ে যাব। স্ট্যান্ডার্ড এসকিউএল এ তাদের একটি alচ্ছিক ASকীওয়ার্ড থাকতে পারে তবে এটি ব্যবহার করা উচিত নয় কারণ এটি এমন ধারণা তৈরি করতে পারে যে কোনও কিছু যখন নেই তখন এটির নামকরণ করা হচ্ছে। আসলে এটি বিন্দুটি প্রয়োগ করতে বাদ দেওয়া উচিত যে এটি একটি পরিসর পরিবর্তনশীল।


12

মূল ASশব্দটি হ'ল আপনার ডাটাবেস সারণিতে বা টেবিল কলামে একটি ALIAS নাম দেওয়া। আপনার উদাহরণে, উভয় বক্তব্য সঠিক তবে এমন পরিস্থিতিতে রয়েছে যেখানে এএস ধারাটির প্রয়োজন (যদিও ASঅপারেটর নিজেই optionচ্ছিক), যেমন

SELECT salary * 2 AS "Double salary" FROM employee;

এই ক্ষেত্রে, Employeeটেবিলটির একটি salaryকলাম রয়েছে এবং আমরা কেবল নতুন নাম দিয়ে বেতনের দ্বিগুণ চাই Double Salary

আমার ব্যাখ্যা কার্যকর না হলে দুঃখিত।


আপনার মন্তব্যের ভিত্তিতে আপডেট করুন, আপনি ঠিক বলেছেন, আমার আগের বিবৃতিটি অবৈধ ছিল। আমি একমাত্র কারণটি মনে করতে পারি ASতা হচ্ছে এসকিউএল বিশ্বে দীর্ঘকাল ধরে এই ধারাটি বিদ্যমান ছিল যে এটি আজকাল আরডিএমএসে পশ্চাদপদ সামঞ্জস্যের জন্য অন্তর্ভুক্ত করা হয়েছে ..


3
না, ASএই ক্ষেত্রে এমনকি প্রয়োজন বা প্রয়োজন হয় না। ব্যবহার করে দেখুন SELECT 1 + 1 "result"
viam0Zah

6

আপনি যদি 'নির্বাচন করুন' ব্যবহার না করেন তবে ব্যবহারটি আরও সুস্পষ্ট (

SELECT t1.colA, t2.colB, t3.colC FROM alongtablename AS t1, anotherlongtablename AS t2, yetanotherlongtablename AS t3 WHERE t1.colD = t2.colE...

1
টেবিল এলিয়াসের উদ্দেশ্য কী তা আমি জানি। আমি কৌতূহলী, এ্যালিয়াস সেট করার জন্য আলাদা কীওয়ার্ড রাখার কারণ কী তা ছাড়া এটি কাজ করে।
viam0Zah

4

এটি কোনও সত্তার জন্য সম্পর্কের নাম নির্দিষ্ট করার একটি আনুষ্ঠানিক উপায় যাতে আপনি এটির প্রশ্নের অন্য কোনও অংশে সহজেই সম্বোধন করতে পারেন।


3

ASএই ক্ষেত্রে একটি ঐচ্ছিক শব্দ সংজ্ঞায়িত হয় ANSI এসকিউএল 92 একটি সংজ্ঞায়িত করতে <<correlation name>, সাধারণভাবে হিসাবে পরিচিত ওরফে একটি টেবিল জন্য।

<table reference> ::=
            <table name> [ [ AS ] <correlation name>
                [ <left paren> <derived column list> <right paren> ] ]
          | <derived table> [ AS ] <correlation name>
                [ <left paren> <derived column list> <right paren> ]
          | <joined table>

     <derived table> ::= <table subquery>

     <derived column list> ::= <column name list>

     <column name list> ::=
          <column name> [ { <comma> <column name> }... ]


     Syntax Rules

     1) A <correlation name> immediately contained in a <table refer-
        ence> TR is exposed by TR. A <table name> immediately contained
        in a <table reference> TR is exposed by TR if and only if TR
        does not specify a <correlation name>.

এটি ব্যবহার না করার জন্য এটি একটি সেরা অনুশীলন বলে মনে হয় ASটেবিল এলিয়াসের কীওয়ার্ডটি কারণ এটি বেশিরভাগ সাধারণভাবে ব্যবহৃত ডাটাবেসগুলির দ্বারা সমর্থিত নয়।


আপনার কি ডিবিএসের এমন কোনও উদাহরণ রয়েছে যা 'হিসাবে' কীওয়ার্ডটি ব্যবহার করে না?
ডি-জোন্স

3
আমি বিশ্বাস করি ওরাকল তাদের মধ্যে অন্যতম যা asটেবিল এলিয়াসের কীওয়ার্ডটি সমর্থন করে না ।
গির্ট বেলেকেন্স

1
"এএস কীওয়ার্ডটি isচ্ছিক The উপনামটি কার্যকরভাবে ক্যোয়ারির সময়কালের জন্য নির্বাচিত তালিকা আইটেমটির নাম পরিবর্তন করে The উপনামটি অর্ডার_বাই_ক্লাউজে ব্যবহৃত হতে পারে তবে ক্যোয়ারির অন্যান্য ধারা নয়" " docs.oracle.com/cd/B28359_01/server.111/b28286/… । এছাড়াও সংশ্লিষ্ট stackoverflow.com/a/8451257/1359796
HEDMON

2

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

অন্য একটি উত্তর থেকে একটি প্রশ্ন ধার করা:

SELECT P.ProductName,
       P.ProductRetailPrice,
       O.Quantity
  FROM Products AS P
       INNER JOIN Orders AS O ON O.ProductID = P.ProductID
 WHERE O.OrderID = 123456

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

অবশ্যই, এর থেকে ভাল সমাধানটি হ'ল না যে কখনই ডুপ্লিকেট কলামের নামগুলি প্রথম স্থানে মঞ্জুরি দেওয়া হয়েছিল! সুখের বিষয়, আপনি যদি নতুন NATURAL JOINসিনট্যাক্স ব্যবহার করেন তবে পরিসীমা পরিবর্তনের প্রয়োজন হয় Pএবং Oচলে যায়:

SELECT ProductName, ProductRetailPrice, Quantity
  FROM Products NATURAL JOIN Orders
 WHERE OrderID = 123456

তবে ASকীওয়ার্ডটি ?চ্ছিক? এসকিউএল স্ট্যান্ডার্ড কমিটির সদস্য (জো সেলকো বা হিউ ডারউইন) এর সাথে ব্যক্তিগত আলোচনার মধ্য দিয়ে আমার স্মৃতিচারণটি হ'ল যে তাদের স্মৃতিচিহ্নটি হ'ল, মান নির্ধারণের সময়, একজন বিক্রেতার পণ্য (মাইক্রোসফ্ট?) এর অন্তর্ভুক্তি এবং অন্য বিক্রেতার প্রয়োজন ছিল? প্রোডাক্ট (ওরাকল এর?) এর বর্জন প্রয়োজন, সুতরাং বেছে নেওয়া সমঝোতাটি এটিকে alচ্ছিক করে তোলা হয়েছিল। এর জন্য আমার কাছে কোন প্রশংসাপত্র নেই, আপনি হয় আমাকে বিশ্বাস করবেন না!


রিলেশনাল মডেলের প্রথম দিনগুলিতে, যে শিরোনামগুলি বিতর্কিত নয় এমন সম্পর্কের ক্রস প্রোডাক্ট (বা থিটা-জয়েন বা ইকুই-জয়েন) একই নামের দুটি বৈশিষ্ট্যের সাথে একটি সম্পর্ক তৈরি করে উপস্থিত হয়েছিল; কোডের তার সম্পর্কিত সম্পর্কিত ক্যালকুলাসে এই সমস্যার সমাধান হ'ল ডট যোগ্যতার ব্যবহার যা পরে এসকিউএলে অনুকরণ করা হয়েছিল (এটি পরে উপলব্ধি করা হয়েছিল যে তথাকথিত প্রাকৃতিক যোগদানটি ক্ষতি ছাড়াই আদিম ছিল; অর্থাৎ প্রাকৃতিক জোড় সমস্ত থিটা-যোগগুলিকে প্রতিস্থাপন করতে পারে এবং এমনকি ক্রস পণ্য।)

উত্স: বিজনেস সিস্টেম 12, নর্থামব্রিয়া বিশ্ববিদ্যালয়, টিউটিএম ইমপ্লিমেন্টার্স ওয়ার্কশপ, হিউ দারভেনের ২-৩ জুন ২০১১-তে টিটিএম ইমপ্লিমেন্টার্স ওয়ার্কশপে প্রদত্ত উপস্থাপনার স্লাইডগুলির প্রতি অনুগ্রহ করে নোটস


"অবশ্যই, এর থেকে ভাল সমাধানটি হ'ল না যে কখনই ডুপ্লিকেট কলামের নামগুলিকে প্রথম স্থানে অনুমতি দেওয়া হত!" - সুতরাং কোম্পানির নাম এবং কান্ট্রি.নামের অনুমতি দেওয়া উচিত নয়? এবং যদি আমি নিজেই কোনও টেবিলে যোগ দিই? "এসকিউএল এর প্রথম দিনগুলিতে, এটি নির্বাচন করা হয়েছিল ..." আপনার কি এর জন্য একটি উল্লেখ আছে / এই যুক্তিটি কোথাও নথিভুক্ত করা আছে?
বব

@ Bob আমি এসকিউএল-তে ডট যোগ্যতার ইতিহাসের একটি নোট (উদ্ধৃতি সহ) আমার উত্তর আপডেট করেছি, এবং কেন ASকীওয়ার্ডটি is চ্ছিক তা অবশ্যই আমার অস্পষ্ট স্মরণীয়তার (অবশ্যই কোনও উদ্ধৃতি নয়)! কয়েক বছর আগে হিউ অবসর নিয়েছিলেন। আমি মনে করি সেলকো এখনও সক্রিয় থাকতে পারে - তার স্মরণে ওজন যুক্ত হবে? প্রমাণ এবং কাগজের ট্রেইলটি কেবল অস্তিত্বের মধ্যে নেই :(
onedaywhen

"তার স্মৃতিচারণগুলি কি ওজন যুক্ত করবে?" ;; মিস্টার সেলকোকে বিরক্ত করার দরকার নেই; বিএস 12 ডকটিতে ডট যোগ্যতার ত্রুটিগুলিতে ডারউইনের নিজস্ব কথা রয়েছে - '70 এর স্মৃতি সীমাবদ্ধতা এবং বারবার আমার সাথে যোগ দেয়নি। আমি স্বীকার করব যে এটি খুব সম্ভব বলে মনে হচ্ছে এটি একই কারণে এসকিউএল তৈরি করা সম্ভব হবে।
বব

0

আপনি যদি এসকিউএল সার্ভারে কোয়েরি সম্পাদকটি 2012 ব্যবহার করে কোয়েরি ডিজাইন করেন তবে উদাহরণস্বরূপ আপনি এটি পাবেন:

  SELECT        e.EmployeeID, s.CompanyName, o.ShipName
FROM            Employees AS e INNER JOIN
                         Orders AS o ON e.EmployeeID = o.EmployeeID INNER JOIN
                         Shippers AS s ON o.ShipVia = s.ShipperID
WHERE        (s.CompanyName = 'Federal Shipping')

তবে AS কে অপসারণ নীচের মত কোনও পার্থক্য করে না:

 SELECT        e.EmployeeID, s.CompanyName, o.ShipName
FROM            Employees e INNER JOIN
                         Orders o ON e.EmployeeID = o.EmployeeID INNER JOIN
                         Shippers s ON o.ShipVia = s.ShipperID
WHERE        (s.CompanyName = 'Federal Shipping')

এক্ষেত্রে এএস ব্যবহার অতিমাত্রায় হলেও অন্যান্য অনেক জায়গায় এটি প্রয়োজন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.