ایس کیو ایل
ایس کیو ایل (انگریزی: SQL) (یا سیکول (Structured Query Language[2][3][4][5]) ایک ڈیٹابیس پروگرامنگ زبان ہے جسے نسبتی ڈیٹابیس منتظم سسٹم (Relational Database management system، مختصراً RDBMS) میں ڈیٹا کو منظم رکھنے کے لیے بنایا گیا ہے۔ یہ بنیادی طور ریلیشنل الجبرا اور ٹوپل ریلیشنل کیلکولس پر مبنی ہے۔ اس کے دائرہ کار میں ڈیٹا کا اندراج، کوئری، ڈیٹا کا حذف و اضافہ، سکیما تعمیر اور اصلاح، نیز ڈیٹا ایکسس کنٹرول (ڈیٹا کے استعمال پر کنٹرول) شامل ہے۔
ایس کیو ایل ایڈگر ایف کوڈ (Edgar F. Codd) کے ریلیشنل ماڈل کی اولین زبانوں میں شامل تھی، جسے انھوں نے اپنے 1970ء کے ایک مقالہ "A Relational Model of Data for Large Shared Data Banks" [6] میں پیش کیا تھا۔ گرچہ موجودہ ایس کیو ایل ایڈگر کوڈ کے بیان کردہ ماڈل سے مکمل مماثلت اور تعلق نہیں رکھتی، اس کے باوجود یہ ریلیشنل ڈیٹابیس کے لیے انتہائی وسیع پیمانے پر استعمال کی جانے والی زبان بن گئی ہے۔[7][8]
پیراڈائم | ملٹی پیراڈائم |
---|---|
اشاعت | 1974 |
ڈیزائنر | ڈونالڈ ڈی چیمبرلین ریمنڈ ایف بوئیس |
ترقی دہندہ | ISO/IEC |
مستحکم اشاعت | SQL:2011 (2011) |
شعبہ تحریر | Static ، strong |
اہم اطلاقات | کثیر |
بولیاں | SQL-86, SQL-89, SQL-92، SQL:1999، SQL:2003، SQL:2006، SQL:2008، SQL:2011 |
متاثر | Datalog |
موثر | CQL، LINQ، SOQL، Windows PowerShell، [1] JPQL، jOOQ |
آپریٹنگ سسٹم | کراس پلیٹ فارم |
تاریخ
ترمیمایس کیو ایل کو 1970 کی دہائی کے آغاز میں ڈونالڈ ڈی چیمبرلین (Donald D. Chamberlin) اور ریمنڈ ایف بوئیس ( Raymond F. Boyce) نے آئی بی ایم میں تیار کیا تھا۔ یہ ورژن، جس کا ابتدائی نام SEQUEL (سیکول) (Structured English Query Language) تھا، آئی بی ایم کے اصل نیم ریلیشنل ڈیٹا بیس آر سسٹم (System R) میں محفوظ ڈیٹا کے سلیقہ بندی اور حصول کے لیے ڈیزائن کیا گیا تھا۔ آئی بی ایم نے ایس کیو ایل کے اس ورژن کا 1985 میں پیٹنٹ کرا لیا۔ [9]
1970 کی دہائی کے دوران میں آئی بی ایم سان جوسے ریسرچ لیباریٹری میں ایک گروپ نے آر سسٹم ریلیشنل ڈیٹا بیس مینجمنٹ سسٹم کو تیار کیا تھا، جسے بعد میں آئی بی ایم کے ڈونالڈ ڈی چیمبرلین اور ریمنڈ ایف بوئیس نے آر سسٹم میں محفوظ ڈیٹا کے انتظام کے لیے سٹرکچرڈ انگلش کیوری لینگویج (SEQUEL یا SEQL) کی تخلیق کی۔ [10] مخفف لفظ SEQUEL کو بعد میں تبدیل کرکے SQL کر دیا گیا کیونکہ یہ برطانیہ کی ہاکر سڈلے نامی ایئرکرافٹ کمپنی کا ٹریڈ مارک تھا۔ [11]
1970 کی دہائی کے شروع میں ایم آئی ٹی (MIT) میں تیار RDMS اور 1974 میں یو سی برکلے (UC Berkely) میں تیار انگریس (Ingres) پہلے نسبتی ڈیٹابیس منتظم سسٹم (RDBMS) تھے۔ انگریس (Ingres) نے کیول (QUEL) نامی ایک کوئری زبان تیار کی تھی جسے بازار میں SQL نے مات دے دیا۔ [11]
1970 کی دہائی کے آخر میں ریلیشنل سافٹ ویئر، انکارپوریشن (اب اوریکل کارپوریشن) نے ایڈگر کوڈ کے بیان کردہ تصوارت کی صلاحیتوں کو محسوس کیا تو چیبرلین اور بوئیس نے خود کی ایس کیو ایل پر مبنی RDBMS کو اس خواہش کے ساتھ تیار کیا کہ وہ اسے امریکی بحریہ، سینٹرل انٹیلی جنس ایجنسی اور دیگر امریکی حکومتی ایجنسیوں کو فروخت کرسکیں۔ 1979 کے موسم گرما میں ریلیشنل سافٹ ویئر، انکارپوریشن نے ویکس (VAX) کمپیوٹرز کے لیے کاروباری طور پر دستیاب ایس کیو ایل، اوریکل (ورژن 2) کو متعارف کریا۔ اوریکل (ورژن 2) نے بازار میں آئی بی ایم کے نظام / 38 RDBMS کے ریلیز کو کچھ ہفتوں میں ہی پیچھے کر دیا۔ [حوالہ درکار]
سسٹم کی افادیت اور عملیت کا تعین کرنے کے لیے صارفین کے جانچ مقامات (test sites) پر SQL کو ٹیسٹ کرنے کے بعد آئی بی ایم نے ان کے نظام آر (System R) پر مبنی کاروباری مصنوعات کو ترقی دینا شروع کر دیا۔ اس سسٹم میں نظام / 38 (سسٹم / 38)، SQL / DS اور DB2 شامل تھے اور جو بالترتیب 1979، 1981 اور 1983 میں تجارتی طور پر دستیاب تھے۔ [12]
زبان کے عناصر
ترمیمSQL متعدد لسانی عناصر میں منقسم ہے، بشمول:
- کلاز (Clauses)، جو بعض صورتوں میں 'بیان' اور 'سوالات' کے جزوی متبادل اجزاء پر مشتمل ہوتے ہیں۔ (بعض حالات میں اختیاری) [13]
- اظہاریے (Expressions)، جو یا تو مقداری قیمت (Scalar values) یا ڈیٹا کے عمودی اور افقی ستونوں پر مشتمل جدول(table) کی تعمیر کر سکتے ہیں۔
- پری ڈیکیٹس (Predicates)، جو ایسے 'کنڈیشنز' درج کرتے ہیں جنہیں SQL سہ قیمتی منطق (3VL) بولین ٹرتھ ویلیوز میں جانچا جا سکتا ہے اور جو بیانات اور سوالات کے اثرات کو کم کرنے یا پروگرام کے بہاو کو تبدیل کرنے کے لیے استعمال کیے جاتے ہیں۔
- سوالات (Queries) جو مخصوص پیرامیٹرز کی بنیاد پر اعداد و شمار کو پیش کرتے ہیں، یہ ایس کیو ایل کا اہم عنصر ہے۔
- بیانیے (Statements) جن کا سكيما اور ڈیٹا پر مسلسل اثر رہتا ہے یا جو لین دین، پروگرام بہاو، کنکشن، سیشن یا تجزیے کو قابو کر سکتے ہیں۔
- * SQL سٹیٹ منٹس میں کومہ فوق النقطہ ("؛") بیانیہ اختتامیہ بھی شامل ہے۔ اگرچہ ہر ایک پلیٹ فارم پر اس کی ضرورت نہیں ہوتی، تاہم اسے SQL گرامر کے معیاری حصہ کے طور پر درج کرنا ہوتا ہے۔
- غیر اہم خالی جگہ (Insignificant whitespace) ایس کیو ایل سٹیٹ منٹس اور کوئریز میں عموما نظر انداز کر دیا جاتا ہے، اس سے SQL کوڈ کو پڑھ کر سمجھنا آسان ہوجاتا ہے۔
آپریٹرز
ترمیمآپریٹر | وضاحت | مثال |
---|---|---|
=
|
برابر | Author = 'Alcott'
|
<>
|
Not equal to (most DBMS also accept != instead of <> )
|
Dept <> 'Sales'
|
>
|
سے بڑا | Hire_Date> '2012-01-31'
|
<
|
سے چھوٹا | Bonus <50000.00
|
>=
|
سے بڑا یا برابر | Dependents>= 2
|
<=
|
سے چھوٹا یا برابر | Rate <= 0.05
|
BETWEEN
|
Cost BETWEEN 100.00 AND 500.00
| |
LIKE
|
دیے گئے محارف کے مماثل | First_Name LIKE 'Will%'
|
IN
|
متعدد امکانی قدروں میں سے ایک کے برابر | DeptCode IN (101, 103, 209)
|
IS or IS NOT
|
نل ویلیو سے موازنہ (گمشدہ ڈیٹا) | Address IS NOT NULL
|
IS NOT DISTINCT FROM
|
قدر کے برابر یا دونوں نل ویلیو پر مشتمل (گمشدہ ڈیٹا) | Debt IS NOT DISTINCT FROM – Receivables
|
AS
|
نتائج دیکھنے کے دوران میں خانہ کا نام تبدیل کرنے کے لیے | SELECT employee AS 'department1'
|
کیوریز (Queries)
ترمیمایس کیو ایل میں سب سے زیادہ عام کام کیوری ہے، جو تشریحی SELECT
بیان کے ساتھ چلائی جاتی ہے۔ SELECT
ایک یا ایک سے زائد جدول یا ایکسپریشنز سے ڈیٹا نکالتا ہے۔ معیاری SELECT سٹیٹ منٹ کا ڈیٹا بیس پر کوئی مستقل اثر نہیں ہوتا ہے۔ ہاں SELECT
کی کچھ غیر معیاری تطبیقات کا مستقل اثر رہ سکتا ہے، جیسے SELECT INTO
نحو (syntax) جو چند ڈیٹابیس میں موجود ہوتا ہے۔ [14]
کوئریز صارفین کو مطلوبہ ڈیٹا کی تشریح کرنے کی صلاحیت فراہم کرتا ہے، اس سے نتیجہ (مطلوب) کو حاصل کرنے کے لیے منصوبہ بندی، آپٹیمائزر اور ضروری آپریشنز کو انجام دینے کی ذمہ داری ڈیٹا بیس مینجمنٹ سسٹم (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) کے ساتھ کیا گیا کوئی بھی موازنہ کا نتیجہ کبھی بھی ٹرو یا فالس نہیں ہو سکتا بلکہ یہ ہمیشہ تھری ویلیوڈ لاجکل- 'نامعلوم' ہوتا ہے۔ [15]
ایس کیو ایل نل کو غائب معلومات کو قابو کرنے کے لیے استعمال کرتا ہے۔ یہ تھری-ویلیوڈ لاجک (3VL) کو سپورٹ کرتا ہے۔ جو اصول ایس کیو ایل تھری-ویلیوڈ لاجک پر نافذ ہوتے ہیں، وہ نیچے درج ہیں (p اور q لاجکل صورتوں کو ظاہر کرتے ہیں)۔ [16] لفظ NULL ایس کیو ایل کا ایک مخصوص کلیدی لفظ ہے جو خاص نل مارکر (special null marker) کی شناخت کرنے میں استعمال ہوتا ہے۔
اس کے علاوہ، چونکہ جب بھی کسی چیز کا موازنہ نل سے ہوتا ہے تو ایس کیو ایل آپریٹرز 'نامعلوم' نتیجہ دیتے ہیں، اس لیے ایس کیو ایل خصوصا نل ویلیو سے متعلق دو کمپیریزن پریڈیکیٹ کی سہولت فراہم کرتا ہے : IS NULL
اور IS NOT NULL
جانچ کرتے ہیں کہ ڈیٹا نل ہے یا نہیں۔ [17]
نوٹ کریں کہ ایس کیو ایل صرف ان نتائج کی قدروں کو ریٹرن کرتا ہے جن کے لیے WHERE کلاز ایک ٹرو ویلیو ریٹرن کرے۔ یعنی، یہ فالس قدر والے نتائج علاحدہ کردیتا ہے، لیکن یہ ان کو بھی خارج کر دیا کرتا ہے جن کی قدر معلوم نہیں، نامعلوم ہو۔
|
|
|
|
ایس کیو ایل یونیورسل کوانٹیفیکیشن کو سپورٹ نہیں کرتا، اس پر بطور 'negated existential quantification' عمل کرنا ضروری ہے۔ [18][19][20]
'ان فکسڈ کمپیریزن آپریٹر' "<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 ایس کیو ایل میں مندرجہ ذیل ڈیٹا ٹائپس شامل ہیں :[21]
کریکٹر سٹرنگز
ترمیم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
کہا جاتا ہے۔ [22]
تاریخ اور وقت
ترمیم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)۔ ملاحظہ فرمائیں :
ماخذ | عمومی نام | مکمل نام |
---|---|---|
ANSI / ISO معیار | SQL / PSM | ایس کیو ایل/Persistent Stored Modules |
انٹربیس (Interbase) / فائربرڈ (Firebird) |
PSQL | پروسیجرل ایس کیو ایل |
IBM | SQL PL | ایس کیو ایل پروسیجرل لینگویج (SQL / PSM کو نافذ کرتا ہے) |
مائیکروسافٹ (Microsoft) / سائی بیس (Sybase) |
T-SQL | ٹرانزیکٹ- SQL (Transact-SQL) |
مائی ایس کیو ایل (MySQL) | SQL / PSM | SQL / SQL/Persistent Stored Modules (SQL / PSM کو نافذ کرتا ہے) |
اوریکل (Oracle) | PL / SQL | پروسیجرل لینگویج / ایس کیو ایل (Ada پر مبنی) |
پوسٹگری SQL (PostgreSQL) | PL / pgSQL | پروسیجرل لینگویج / پوسٹگری SQL سٹركچرڈ کوئری لینگویج (اوریکل PL / SQL کی بنیاد پر) |
پوسٹگری SQL (PostgreSQL) | PL / PSM | پروسیجرل لینگویج / Persistent Stored Modules (SQL / PSM کو نافذ کرتا ہے) |
معیاری SQL / PSM توسیع اور پروپرائٹری ایس کیو ایل توسیع کے علاوہ، پروسیجرل اور آبجیکٹ اوریئنٹڈ پروگرامنگ کی خصوصیات کی سہولت DBMS کی دوسرے لینگویج کو ضم کرکے حاصل کی جا سکتی ہے۔ معیاری ایس کیو ایل ایس کیو ایل ڈیٹابیس میں جاوا کوڈ کو سپورٹ کرنے کے لیے، SQL / JRT توسیعات (جاوا پروگرامنگ زبان کے لیے SQL روٹينس اینڈ ٹائپس) کا مشورہ دیتی ہے۔ ایس کیو ایل سرور 2005 SQLCLR (SQL سرور کامن لینگویج رن ٹائم) کا استعمال ڈیٹا بیس میں منظم۔NET اسیمبلیز کو ہوسٹ کرنے کے لیے ہوتا ہے، جبکہ SQL سرور کے سابق ورژن بنیادی طور C میں لکھے گئے غیر منظم توسیع شدہ محفوظ پروسیجرز کے استعمال تک ہی محدود تھے۔ دیگر ڈیٹا بیس صارفین کو MySQL اور پوسٹگريس (Postgres) فنکشنوں کو پرل (Perl)، پائتھون، Tcl اور C جیسے مختلف قسم کے زبانوں میں لکھنے کی اجازت دیتے ہیں۔
حوالہ جات
ترمیم- ↑ Ryan Paul۔ "A guided tour of the Microsoft Command Shell"۔ Ars Technica۔ 25 دسمبر 2018 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 10 اپریل 2011
- ↑ Encyclopedia Britannica۔ "SQL"۔ 25 دسمبر 2018 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 02 اپریل 2013
- ↑ From Oxford Dictionaries: "Definition of SQL – abbreviation, Structured Query Language, an international standard for database manipulation." Oxford Dictionaries۔ "SQL"۔ 03 اگست 2016 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 07 اکتوبر 2014
- ↑ IBM۔ "SQL Guide"[مردہ ربط]
- ↑ From Microsoft: "Structured Query Language, invented at IBM in the 1970s. It is more commonly known by its acronym, SQL ۔." Microsoft۔ "Structured Query Language (SQL)"
- ↑ E.F. Codd (1970)۔ "A Relational Model of Data for Large Shared Data Banks"۔ Communications of the ACM۔ Association for Computing Machinery۔ 13 (No. 6): 377–387۔ ISSN 0001-0782۔ doi:10.1145/362384.362685۔ 25 دسمبر 2018 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 09 جون 2007 "آرکائیو کاپی"۔ 12 جون 2007 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 07 اکتوبر 2014 "آرکائیو کاپی"۔ 12 جون 2007 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 07 اکتوبر 2014
- ↑ "Structured Query Language (SQL)"۔ International Business Machines۔ اکتوبر 27, 2006۔ اخذ شدہ بتاریخ 10 جون 2007 [مردہ ربط]
- ↑ Mike Chapple۔ "SQL Fundamentals"۔ About.com: Databases۔ About.com۔ 25 دسمبر 2018 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 10 جون 2007
- ↑ Shaw، وغیرہ (1985-03-19)۔ "US Patent 4,506,326"۔ اخذ شدہ بتاریخ 04 نومبر 2008[مردہ ربط]
- ↑ Donald D. Chamberlin; Boyce, Raymond F. (1974)۔ "SEQUEL: A Structured English Query Language" (PDF)۔ Proceedings of the 1974 ACM SIGFIDET Workshop on Data Description, Access and Control۔ Association for Computing Machinery: 249–264۔ 25 دسمبر 2018 میں اصل (PDF) سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 09 جون 2007 Cite uses deprecated parameter
|coauthors=
(معاونت) - ^ ا ب Andy Oppel (مارچ 1, 2004)۔ Databases Demystified۔ سان فرانسسکو: McGraw-Hill Osborne Media۔ صفحہ: 90–91۔ ISBN 0-07-225364-9۔ 14 جولائی 2011 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 07 اکتوبر 2014
- ↑ "History of IBM, 1978"۔ IBM Archives۔ IBM۔ 25 دسمبر 2018 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 09 جون 2007
- ↑ ANSI / ISO / IEC بین الاقوامی معیاریت (IS) ڈیٹا بیس زبان SQL - حصہ 2: فاؤنڈیشن (SQL / فاؤنڈیشن)۔ 1999.
- ↑ "INTO Clause (Transact-SQL)"۔ SQL Server 2005 Books Online۔ Microsoft۔ 2007۔ 25 دسمبر 2018 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2007-06-17;
- ↑ ISO/IEC (2003)۔ ISO/IEC 9075-1:2003, "SQL/Framework"۔ ISO/IEC۔ Section 4.4.2: The null value
- ↑ Coles, Michael (2005-06-27)۔ "Four Rules for Nulls"۔ SQL Server Central۔ Red Gate Software
- ↑ ISO/IEC۔ ISO/IEC 9075-2:2003, "SQL/Foundation"۔ ISO/IEC
- ↑ M. Negri, G. Pelagatti, L. Sbattella (1989) Semantics and problems of universal quantification in SQL۔
- ↑ Fratarcangeli, Claudio (1991)۔ Technique for universal quantification in SQL۔ اخذکردہ بتاریخ from ACM.org.
- ↑ Kawash, Jalal (2004) Complex quantification in Structured Query Language (SQL): a tutorial using relational calculus – Journal of Computers in Mathematics and Science Teaching ISSN 0731-9258 Volume 23, Issue 2, 2004 AACE Norfolk, Virginia. اخذکردہ بتاریخ from Thefreelibrary.com۔
- ↑ انفارمیشن ٹیکنالوجی - ڈیٹا بیس لینگویج ایس کیو ایل (DIS 9075 کا مجوزہ ترمیم شدہ متن)
- ↑ Arie Jones, Ryan K. Stephens, Ronald R. Plew, Alex Kriegel, Robert F. Garrett (2005)، SQL Functions Programmer's Reference۔ Wiley, 127 pages.