ایس کیو ایل

ایس کیو ایل  (یا سیکول (Structured Query Language) ایک ڈیٹابیس پروگرامنگ زبان ہے جسے نسبتی ڈیٹابیس منتظم سسٹم (Relational Database management system، مختصراً RDBMS) میں ڈیٹا کو منظم رکھنے کے لیے بنایا گیا ہے۔ یہ بنیادی طور ریلیشنل الجبرا اور ٹوپل ریلیشنل کیلکولس پر مبنی ہے۔ اس کے دائرہ کار میں ڈیٹا کا اندراج، کوئری، ڈیٹا کا حذف و اضافہ، سکیما تعمیر اور اصلاح، نیز ڈیٹا ایکسس کنٹرول (ڈیٹا کے استعمال پر کنٹرول) شامل ہے۔
ایس کیو ایل ایڈگر ایف کوڈ (Edgar F. Codd) کے ریلیشنل ماڈل کی اولین زبانوں میں شامل تھی، جسے انھوں نے اپنے 1970ء کے ایک مقالہ "A Relational Model of Data for Large Shared Data Banks"  میں پیش کیا تھا۔ گرچہ موجودہ ایس کیو ایل ایڈگر کوڈ کے بیان کردہ ماڈل سے مکمل مماثلت اور تعلق نہیں رکھتی، اس کے باوجود یہ ریلیشنل ڈیٹابیس کے لیے انتہائی وسیع پیمانے پر استعمال کی جانے والی زبان بن گئی ہے۔

تاریخ 
ایس کیو ایل کو 1970 کی دہائی کے آغاز میں ڈونالڈ ڈی چیمبرلین (Donald D. Chamberlin) اور ریمنڈ ایف بوئیس ( Raymond F. Boyce) نے آئی بی ایم میں تیار کیا تھا۔ یہ ورژن، جس کا ابتدائی نام SEQUEL (سیکول) (Structured English Query Language) تھا، آئی بی ایم کے اصل نیم ریلیشنل ڈیٹا بیس آر سسٹم (System R) میں محفوظ ڈیٹا کے سلیقہ بندی اور حصول کے لیے ڈیزائن کیا گیا تھا۔ آئی بی ایم نے ایس کیو ایل کے اس ورژن کا 1985 میں پیٹنٹ کرا لیا۔ 

1970 کی دہائی کے دوران میں آئی بی ایم سان جوسے ریسرچ لیباریٹری میں ایک گروپ نے آر سسٹم ریلیشنل ڈیٹا بیس مینجمنٹ سسٹم کو تیار کیا تھا، جسے بعد میں آئی بی ایم کے ڈونالڈ ڈی چیمبرلین اور ریمنڈ ایف بوئیس نے آر سسٹم میں محفوظ ڈیٹا کے انتظام کے لیے سٹرکچرڈ انگلش کیوری لینگویج (SEQUEL یا SEQL) کی تخلیق کی۔  مخفف لفظ SEQUEL کو بعد میں تبدیل کرکے SQL کر دیا گیا کیونکہ یہ برطانیہ کی ہاکر سڈلے نامی ایئرکرافٹ کمپنی کا ٹریڈ مارک تھا۔ 

1970 کی دہائی کے شروع میں ایم آئی ٹی (MIT) میں تیار RDMS اور 1974 میں یو سی برکلے (UC Berkely) میں تیار انگریس (Ingres) پہلے نسبتی ڈیٹابیس منتظم سسٹم (RDBMS) تھے۔ انگریس (Ingres) نے کیول (QUEL) نامی ایک کوئری زبان تیار کی تھی جسے بازار میں SQL نے مات دے دیا۔ 

1970 کی دہائی کے آخر میں ریلیشنل سافٹ ویئر، انکارپوریشن (اب اوریکل کارپوریشن) نے ایڈگر کوڈ کے بیان کردہ تصوارت کی صلاحیتوں کو محسوس کیا تو چیبرلین اور بوئیس نے خود کی ایس کیو ایل پر مبنی RDBMS کو اس خواہش کے ساتھ تیار کیا کہ وہ اسے امریکی بحریہ، سینٹرل انٹیلی جنس ایجنسی اور دیگر امریکی حکومتی ایجنسیوں کو فروخت کرسکیں۔ 1979 کے موسم گرما میں ریلیشنل سافٹ ویئر، انکارپوریشن نے ویکس (VAX) کمپیوٹرز کے لیے کاروباری طور پر دستیاب ایس کیو ایل، اوریکل (ورژن 2) کو متعارف کریا۔ اوریکل (ورژن 2) نے بازار میں آئی بی ایم کے نظام / 38 RDBMS کے ریلیز کو کچھ ہفتوں میں ہی پیچھے کر دیا۔ 

سسٹم کی افادیت اور عملیت کا تعین کرنے کے لیے صارفین کے جانچ مقامات (test sites) پر SQL کو ٹیسٹ کرنے کے بعد آئی بی ایم نے ان کے نظام آر (System R) پر مبنی کاروباری مصنوعات کو ترقی دینا شروع کر دیا۔ اس سسٹم میں نظام / 38 (سسٹم / 38)، SQL / DS اور DB2 شامل تھے اور جو بالترتیب 1979، 1981 اور 1983 میں تجارتی طور پر دستیاب تھے۔

قواعد

زبان کے عناصر 

SQL متعدد لسانی عناصر میں منقسم ہے، بشمول:
 کلاز (Clauses)، جو بعض صورتوں میں 'بیان' اور 'سوالات' کے جزوی متبادل اجزاء پر مشتمل ہوتے ہیں۔ (بعض حالات میں اختیاری) 
 اظہاریے  (Expressions)، جو یا تو مقداری قیمت (Scalar values) یا ڈیٹا کے عمودی اور افقی ستونوں پر مشتمل جدول(table) کی تعمیر کر سکتے ہیں۔
 پری ڈیکیٹس (Predicates)، جو ایسے 'کنڈیشنز' درج کرتے ہیں جنہیں SQL سہ قیمتی منطق (3VL) بولین ٹرتھ ویلیوز میں جانچا جا سکتا ہے اور جو بیانات اور سوالات کے اثرات کو کم کرنے یا پروگرام کے بہاو کو تبدیل کرنے کے لیے استعمال کیے جاتے ہیں۔
 سوالات (Queries) جو مخصوص پیرامیٹرز کی بنیاد پر اعداد و شمار کو پیش کرتے ہیں، یہ ایس کیو ایل کا اہم عنصر ہے۔
 بیانیے  (Statements) جن کا سكيما اور ڈیٹا پر مسلسل اثر رہتا ہے یا جو لین دین، پروگرام بہاو، کنکشن، سیشن یا تجزیے کو قابو کر سکتے ہیں۔
 * SQL سٹیٹ منٹس میں کومہ فوق النقطہ ("؛") بیانیہ اختتامیہ بھی شامل ہے۔ اگرچہ ہر ایک پلیٹ فارم پر اس کی ضرورت نہیں ہوتی، تاہم اسے SQL گرامر کے معیاری حصہ کے طور پر درج کرنا ہوتا ہے۔
 غیر اہم خالی جگہ (Insignificant whitespace) ایس کیو ایل سٹیٹ منٹس اور کوئریز میں عموما نظرانداز کر دیا جاتا ہے، اس سے SQL کوڈ کو پڑھ کر سمجھنا آسان ہوجاتا ہے۔

آپریٹرز

کیوریز (Queries) 
ایس کیو ایل میں سب سے زیادہ عام کام کیوری ہے، جو تشریحی SELECT بیان کے ساتھ چلائی جاتی ہے۔ SELECT ایک یا ایک سے زائد جدول یا ایکسپریشنز سے ڈیٹا نکالتا ہے۔ معیاری SELECT سٹیٹ منٹ کا ڈیٹا بیس پر کوئی مستقل اثر نہیں ہوتا ہے۔ ہاں SELECT کی کچھ غیر معیاری تطبیقات کا مستقل اثر رہ سکتا ہے، جیسے SELECT INTO نحو (syntax) جو چند ڈیٹابیس میں موجود ہوتا ہے۔ 

کوئریز صارفین کو مطلوبہ ڈیٹا کی تشریح کرنے کی صلاحیت فراہم کرتا ہے، اس سے نتیجہ (مطلوب) کو حاصل کرنے کے لیے منصوبہ بندی، آپٹیمائزر اور ضروری آپریشنز کو انجام دینے کی ذمہ داری ڈیٹا بیس مینجمنٹ سسٹم (DBMS) کی ہوتی ہے۔

ایک کوئری میں SELECT کلیدی الفاظ کے فورا بعد کے نتائج میں شامل کرنے کے لیے کالموں کی ایک فہرست شامل رہتی ہے۔ یہ وضاحت کرنے کے لیے کہ کیوری جدول کے تمام کولمز کو ریٹرن کرے، ایک اسیٹریسک ( * ) کا بھی استعمال کیا جا سکتا ہے۔ SELECT، SQL کا سب سے پیچیدہ بیان ہے جس میں متبادل الفاظ اور کلاززبھی ہوتے ہیں۔ مثلاً:
 FROM کلاز جو اس کی طرف اشارہ کرتا ہے کہ کون سے جدول سے ڈیٹا کو اخذ کیا جانا ہے۔ FROM کلاز میں جدول کو شامل کرنے کے لیے متبادل JOIN سب کلاز کو شامل کیا جا سکتا ہے۔
 WHERE کلاز میں ایک 'کمپیریزن پریڈیکیٹ' شامل ہے جو کوئری رن ہونے کے نتیجہ میں آنے والی قطاروں کو محدود کرتا ہے۔ WHERE کلاز ان تمام قطاروں کو رزلٹ سیٹ سے باہر کر دیتا ہے جن کے لیے 'کمپیریزن پریڈیکیٹ' کی ویلیو 'ٹرو' نہیں ہو پاتی۔
 GROUP BY کلاز کا استعمال اسی ویلیو والی قطاروں کو قطار کے ایک چھوٹے گروپ میں تبدیل کرنے کے لیے کیا جاتا ہے۔ GROUP BY کا استعمال اکثر ایس کیو ایل ایگری گیشن فنکشنز کے ساتھ مل کر نقلی قطاروں کو زلٹ سیٹ سے باہر کرنے کے لیے ہوتا ہے۔ WHERE کلاز GROUP BY کلاز سے پہلے استعمال کیا جاتا ہے۔
 HAVING کلاز میں GROUP BY کلاز سے ظاہر ہونے والی قطاروں کے فلٹریشن کے لیے استعمال ہونے والا ایک پریڈیکیٹ شامل رہتا ہے۔ چونکہ یہ GROUP BY کلاز کے نتائج پر کام کرتا ہے، اس لیے HAVING کلاز پریڈیکیٹ میں ایگری گیشن فنکشنز کا استعمال کیا جا سکتا ہے۔
 ORDER BY کلاز بتاتا ہے کہ کون سے کالم کو نتیجے میں آنے والے ڈیٹا کی ترتیب کے لیے استعمال کرنا ہے اور کون سی ترتیب میں وہ ہونے چاہیے (چڑھتی ترتیب یا اترتی ترتیب میں)۔ ایک ORDER BY کلاز کے بغیر، ایک اسی کیو ایل کیوری کے نتیجہ میں ظاہر ہونے والی قطاروں کی ترتیب غیر واضح رہتی ہے۔

مندرجہ ذیل SELECT کیوری کی ایک مثال جو مہنگی کتابوں کی ایک فہرست اخذ کرتا ہے۔ کیوری BOOK نامی جدول سے ان قطاروں کو حاصل کرتی ہے جن کی Price کالم میں موجود قدر یا ویلیو 100.00 سے زیادہ ہے اور نتائج title کالم کے مطابق چڑھتی ترتیب میں درج ہونگے۔ select list میں موجود آسٹرسک (*) سے یہ ظاہر ہوتا ہے کہ Book ٹیبل کے سارے کالم رزلٹ سیٹ میں موجود رہنے چاہیے۔

 SELECT  *
 FROM Book
 WHERE price> 100.00
 ORDER BY title;

نیچے دی گئی مثال ایک فہرست کتب اور ہر ایک کتاب سے وابستہ ادیبوں کی تعداد کو متعدد جدولوں، گروہ بندی اور ایگریگیشن کے ساتھ اخذ کرنے والی ایک کیوری کی عکاسی کرتا ہے۔

SELECT Book.title،
 count (*) AS Authors
 FROM Book
 JOIN Book_author ON Book.isbn = Book_author.isbn
 GROUP BY Book.title;

اس نمونہ کیوری کا نتیجہ یوں ہو سکتا ہے :

 Title Authors
 ---- ----
 SQL Examples and Guide 4
 The Joy of SQL 1
 An Introduction to SQL 2
 Pitfalls of SQL 1
اس سابقہ شرط کے تحت کہ دونوں جدول میں صرف isbn ہی سامان نام والے کالموں کا نام ہے اور title نامی کالم صرف Books ٹیبل میں ہی موجود ہے، اوپر درج کیوری کو درج ذیل طور پر دوبارہ لکھا جا سکتا ہے :

SELECT title،
 count (*) AS Authors
 FROM Book
 NATURAL JOIN Book_author
 GROUP BY title;

تاہم، بہت سے کتب فروش یا تو اس طریقے کو سپورٹ نہیں کرتے یا پھر انہیں کالم نام دینے کی ضرورت ہوتی ہے۔

ایس کیو ایل میں محفوظ اقدار پر حساب کرنے کے لیے آپریٹرز اور فنکشنز موجود ہوتے ہیں۔ ایس کیو ایل ڈیٹا کو اخذ کرنے کے لیے select list میں ایکسپریشن کے استعمال کی اجازت دیتا ہے، جیسا کہ مندرجہ ذیل مثال میں موجود ہے جو ان کتابوں کی ایک فہرست اخذ کرتا ہے جن کی قیمت 100.00 سے زیادہ ہے، ساتھ میں ایک اضافی سیلز ٹیکس کالم بھی ہے جس میں sales tax کی ویلیو موجود ہے اور یہ قدر price کا 6٪ ہے۔

SELECT isbn
 title،
 price،
 price * 0.06 AS sales_tax
 FROM Book
 WHERE price> 100.00
 ORDER BY title;

نل اور تھری-ویلیوڈ لاجک (3VL) 
ایس کیو ایل میں نل (Null) کا تصور، ریلیشنل ماڈل میں غائب معلومات کو قابو کرنے کے لیے متعارف کریا گیا تھا۔ ٹرو اور فالس کے ساتھ نل (یا نامعلوم) کا قیام تھری-ویلیوڈ لاجک کی بنیاد ہے۔ نل کی کوئی قدر نہیں ہوتی، بلکہ یہ غائب معلومات کے لیے استعمال کی جانے والی ایک علامت ہے۔ اس لیے نل (Null) کے ساتھ کیا گیا کوئی بھی موازنہ کا نتیجہ کبھی بھی ٹرو یا فالس نہیں ہو سکتا بلکہ یہ ہمیشہ تھری ویلیوڈ لاجکل- 'نامعلوم' ہوتا ہے۔ 

ایس کیو ایل نل کو غائب معلومات کو قابو کرنے کے لیے استعمال کرتا ہے۔ یہ تھری-ویلیوڈ لاجک (3VL) کو سپورٹ کرتا ہے۔ جو اصول ایس کیو ایل تھری-ویلیوڈ لاجک پر نافذ ہوتے ہیں، وہ نیچے درج ہیں (p اور q لاجکل صورتوں کو ظاہر کرتے ہیں)۔  لفظ NULL ایس کیو ایل کا ایک مخصوص کلیدی لفظ ہے جو خاص نل مارکر (special null marker) کی شناخت کرنے میں استعمال ہوتا ہے۔

اس کے علاوہ، چونکہ جب بھی کسی چیز کا موازنہ نل سے ہوتا ہے تو ایس کیو ایل آپریٹرز 'نامعلوم' نتیجہ دیتے ہیں، اس لیے ایس کیو ایل خصوصا نل ویلیو سے متعلق دو کمپیریزن پریڈیکیٹ کی سہولت فراہم کرتا ہے : IS NULL اور IS NOT NULL جانچ کرتے ہیں کہ ڈیٹا نل ہے یا نہیں۔ 

نوٹ کریں کہ ایس کیو ایل صرف ان نتائج کی قدروں کو ریٹرن کرتا ہے جن کے لیے WHERE کلاز ایک ٹرو ویلیو ریٹرن کرے۔ یعنی، یہ فالس قدر والے نتائج علاحدہ کردیتا ہے، لیکن یہ ان کو بھی خارج کر دیا کرتا ہے جن کی قدر معلوم نہیں، نامعلوم ہو۔

ایس کیو ایل یونیورسل کوانٹیفیکیشن کو سپورٹ نہیں کرتا، اس پر بطور 'negated existential quantification' عمل کرنا ضروری ہے۔ 

'ان فکسڈ کمپیریزن آپریٹر' "<row value expression> IS DISTINCT FROM <row value expression>" بھی ہے جو دونوں آپرینڈ کے برابر ہونے پر یا NULL ہونے پر TRUE واپس کرتا ہے۔ اسی طرح IS NOT DISTINCT FROM کو "NOT (<row value expression> IS DISTINCT FROM <row value expression>") کے طور پر بیان کیا جاتا ہے۔

ڈیٹا مینیوپلیشن 

ڈیٹا مینیوپلیشن لینگویج (DML) ایس کیو ایل کا ایک سب سیٹ ہے جسے ڈیٹا کو شامل کرنے (اضافہ)، اپ ڈیٹ اور حذف کرنے کے لیے استعمال کیا جاتا ہے۔
 INSERT ایک موجود جدول میں نئی لائنوں کو درج کرتا ہے، مثال کے طور پر:
INSERT INTO My_table
 (field1، field2، field3)
 VALUES
 ('test'، 'N'، NULL)؛
 UPDATE، موجود ٹیبل کی قطاروں کے ایک سیٹ کو تبدیل کرتا ہے، مثلاً
UPDATE My_table
 SET field1 = 'updated value'
 WHERE field2 = 'N'؛
 DELETE ایک ٹیبل میں موجود قطاروں کو حذف کرتا ہے، مثال کے طور پر:
DELETE FROM My_table
 WHERE field2 = 'N'؛
 MERGE ایک سے زیادہ جدولوں کے ڈیٹا کو ضم کرنے کے لیے استعمال کیا جاتا ہے۔ یہ INSERT اور UPDATE عناصر کو ضم کرتا ہے۔ اس کی وضاحت ایس کیو ایل: 2003 معیار میں کی گئی ہے ؛ اس کے پہلے، کچھ ڈیٹابیسز اسی طرح کی فنکشنلٹی مختلف سنٹیکس میں فراہم کرتے تھے، جنہیں بسااوقات "upsert" کہا جاتا تھا۔
 MERGE INTO TABLE_NAME USING table_reference ON (condition)
 WHEN MATCHED THEN
 UPDATE SET column1 = value1 [, column2 = value2 ...]
 WHEN NOT MATCHED THEN
 INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...

ٹرانزیکشن کنٹرولز 

ٹرانزیکشن، اگر دستیاب ہو تو، DML آپریشنز کو شامل کر لیتے ہیں :
 START TRANSACTION (یا BEGIN WORK یا BEGIN TRANSACTION، ایس کیو ایل ڈائلیکٹ پر منحصر)، ڈیٹابیس ٹرانزیکشن کو شروع کرتے ہیں جو (ٹرانزیکشن) یا تو مکمل ہو جاتے ہیں یا نہیں ہوتے۔
 COMMIT، ایک ٹرانزیکشن میں تمام ڈیٹا تبدیلیوں کو مستقل کردیتا ہے۔
 ROLLBACK، گزشتہ COMMIT یا ROLLBACK کے بعد سے ہوئی تمام ڈیٹا تبدیلیوں کو ختم کردیتا ہے جس سے ڈیٹا واپس اپنی پرانی حالت پر واپس آجاتا ہے۔

ایک بار جب COMMIT سٹیٹ منٹ مکمل ہو جاتا ہے، تو ٹرانزیکشن تبدیلیوں کو واپس نہیں لایا جا سکتا۔

COMMIT اور ROLLBACK موجودہ ٹرانزیکشن کو ختم کرکے ڈیٹا لاکس کو ریلیز کر دیتے ہیں۔ START TRANSACTION یا اس کے مشابہ سٹیٹ منٹ کی غیر موجودگی میں، اسی کیو ایل کے سمینٹکس عمل پر منحصر ہوتے ہیں۔
مثال: فنڈ ٹرانزیکشن کا ایک کلاسک بینک ٹرانسفر

START TRANSACTION؛
 UPDATE Account SET amount = amount-200 WHERE account_number = 1234؛
 UPDATE Account SET amount = amount-200 WHERE account_number = 2345؛
IF ERRORS = 0 COMMIT؛
IF ERRORS <> 0 ROLLBACK؛

ڈیٹا ڈیفینیشن 

ڈیٹا ڈیفینیشن لینگویج (DDL) ٹیبل اور انڈیکس سٹرکچر کو سنبھالتی ہے۔ DDL کی بالکل بنیادی چیزیں ہیں : CREATE، ALTER، RENAME، DROP اور TRUNCATE سٹیٹ منٹس:
 CREATE ڈیٹا بیس میں ایک آبجیکٹ (مثلا، ایک ٹیبل) تخلیق کرتا ہے۔
CREATE TABLE My_table
(
 my_field1 INT،
 my_field2 VARCHAR (50)،
 my_field3 DATE NOT NULL،
 PRIMARY KEY (my_field1، my_field2)
)؛
 DROP ڈیٹا بیس سے آبجیکٹ کو حذف کردیتا ہے، عموماً پھر حذف شدہ آبجیکٹ واپس نہیں لایا جاسکتا۔
DROP TABLE example;
 ALTER ایک موجود آبجیکٹ کی ساخت کو مختلف طریقوں سے تبدیل کرتا ہے۔ مثلا، ایک موجود ٹیبل میں ایک کالم شامل کرنا، مثال:
ALTER TABLE example ADD field4 NUMBER(3) NOT NULL;
 TRUNCATE ایک ٹیبل سے سارے ڈیٹا کو بہت تیزی سے مٹا دیتا ہے۔
TRUNCATE TABLE example;

اقسام ڈیٹا 

ایس کیو ایل ٹیبل کا ہر کالم ان اقسام کو ڈکلیئر کرتا ہے جو کالم میں موجود ہو سکتے ہیں۔ ANSI ایس کیو ایل میں مندرجہ ذیل ڈیٹا ٹائپس شامل ہیں :

کریکٹر سٹرنگز 
 CHARACTER( n ) یا CHAR( n ) - متعین چوڑائی والا n -کیریکٹر سٹرنگ، جس میں ضرورت کے مطابق خالی جگہوں کو پر بھی کی جا سکتا ہے۔
 CHARACTER VARYING ( n ) یا VARCHAR ( n ) - متغیر چوڑائی والا سٹرنگ n کیریکٹر کے زیادہ سے زیادہ حجم کے ساتھ۔
 NATIONAL CHARACTER ( n ) یا NCHAR ( n ) - متعین چوڑائی والا سٹرنگ جو ایک بین الاقوامی کریکٹر سیٹ کو سپورٹ کرتا ہے۔
 NATIONAL CHARACTER VARYING ( n ) یا NVARCHAR (n) - متغیر چوڑائی والا NCHAR سٹرنگ

بٹ سٹرنگ 
 BIT ( n ) - n بٹس کا ایک ایرے
 BIT VARYING ( n ) - n بٹس تک کے سائز کا ایک ایرے

نمبرز 
 INTEGER اور SMALLINT
 FLOAT REAL اور DOUBLE PRECISION
 NUMERIC ( precision , scale ) یا DECIMAL ( precision , scale )

ایس کیو ایل اعداد یا تاریخوں کو 'راؤنڈ' کرنے کے لیے ایک فنکشن فراہم کرتا ہے۔ اسے (DB2، PostgreSQL اوریکل اور MySQL میں) TRUNC یا (Sybase، اوریکل اور Microsoft SQL Server) میں ROUND کہا جاتا ہے۔

تاریخ اور وقت 
 DATE
 TIME
 TIMESTAMP
 INTERVAL

ڈیٹا کنٹرول (کنٹرول) 

ڈیٹا کنٹرول لینگویج (DCL) صارفین کو ڈیٹا تک رسائی اور استعمال کرنے کا اختیار دیتی ہے۔
اس کے دو اہم سٹیٹ منٹس ہیں :
 GRANT ایک یا زائد صارفین کو ایک آبجیکٹ پر آپریشن کو عملدرآمد کرنے کا اختیار دیتا ہے۔
 REVOKE ایک گرانٹ کو، جو ممکن ہے ڈیفالٹ گرانٹ ہو، ختم کردیتا ہے۔

مثال:
GRANT SELECT، UPDATE
 ON My_table
 TO Some_user، another_user؛

REVOKE SELECT، UPDATE
 ON My_table
 FROM Some_user، another_user؛

پروسیجرل توسیعات 

ایس کیو ایل ایک مخصوص مقصد ریلیشنل ڈیٹا بیس میں محفوظ ڈیٹا کو تلاش کرنے کے لیے بنائی گئی ہے۔ ایس کیو ایل ایک سیٹ -بیسڈ، بیانیہ کیوری لینگویج ہے، نہ کہ C یا BASIC کی طرح کی ایک 'امپریٹیو لینگویج'۔ تاہم، معیاری ایس کیو ایل کی توسیعات (extensions) اس میں پروسیجرل پروگرامنگ لینگویج کی خصوصیت کا اضافہ کردیتی ہیں، جیسے کنٹرول-آف-فلو كنسٹركٹس (control-of-flow constructs)۔ ملاحظہ فرمائیں :

معیاری SQL / PSM توسیع اور پروپرائٹری ایس کیو ایل توسیع کے علاوہ، پروسیجرل اور آبجیکٹ اوریئنٹڈ پروگرامنگ کی خصوصیات کی سہولت DBMS کی دوسرے لینگویج کو ضم کرکے حاصل کی جا سکتی ہے۔ معیاری ایس کیو ایل ایس کیو ایل ڈیٹابیس میں جاوا کوڈ کو سپورٹ کرنے کے لیے، SQL / JRT توسیعات (جاوا پروگرامنگ زبان کے لیے SQL روٹينس اینڈ ٹائپس) کا مشورہ دیتی ہے۔ ایس کیو ایل سرور 2005 SQLCLR (SQL سرور کامن لینگویج رن ٹائم) کا استعمال ڈیٹا بیس میں منظم۔NET اسیمبلیز کو ہوسٹ کرنے کے لیے ہوتا ہے، جبکہ SQL سرور کے سابق ورژن بنیادی طور C میں لکھے گئے غیر منظم توسیع شدہ محفوظ پروسیجرز کے استعمال تک ہی محدود تھے۔ دیگر ڈیٹا بیس صارفین کو MySQL اور پوسٹگريس (Postgres) فنکشنوں کو پرل (Perl)، پائتھون، Tcl اور C جیسے مختلف قسم کے زبانوں میں لکھنے کی اجازت دیتے ہیں۔

حوالہ جات 

ایس کیو ایل
پروگرامنگ زبانیں مع آئیسو معیار
کوئری زبانیں
Short description is different from Wikidata