جیسا کہ
باب 2 میں
ذکر کیا گیا ہے،
ڈاکٹر.
ایڈگر
ایف.
کوڈ نے 1970
کی دہائی کے
اوائل میں
رشتہ دار ڈیٹا
بیس ماڈل اور
اس کی عام
شکلوں کا تصور
کیا۔
1974
میں ، آئی بی
ایم کی سان
جوز لیب کے
محققین نے ایک
بڑے منصوبے پر
کام شروع کیا
جس کا مقصد رشتہ
دار ماڈل کی
افادیت کو
ثابت کرنا تھا
، جسے سسٹم آر
کہا جاتا ہے۔
ڈونلڈ
چیمبرلین اور
ان کے ساتھی
ڈیٹا بیس زبان
کی وضاحت کرنے
کے لئے بھی
کام کر رہے
تھے۔
انہوں نے
اسٹرکچرڈ
انگلش کوئری
لینگویج (سیکوئل)
تیار کی ، جس
نے صارفین کو
واضح طور پر
بیان کردہ
انگریزی طرز
کے جملوں کا
استعمال کرتے ہوئے
ایک رشتہ دار
ڈیٹا بیس سے
پوچھ گچھ کرنے
کی اجازت دی۔
بعد میں
قانونی
وجوہات کی بنا
پر اس کا نام
بدل کر
اسٹرکچرڈ
کوئری
لینگویج (ایس
کیو ایل) رکھ
دیا گیا۔
ایس کیو
ایل پر مبنی
پہلا ڈیٹا بیس
مینجمنٹ سسٹم
70 کی دہائی کے
آخر تک تجارتی
طور پر دستیاب
ہوا۔
ڈیٹا بیس
زبانوں کی
ترقی کے ارد
گرد بڑھتی ہوئی
سرگرمی کے
ساتھ ، چیزوں
کو آسان بنانے
کے لئے معیار
ابھرا ، اور
کمیونٹی ایس
کیو ایل پر آباد
ہوگئی۔
دونوں
امریکی اور
بین الاقوامی
معیار کی تنظیموں
(اے این ایس
آئی اور آئی
ایس او) نے
معیار کے عمل
میں حصہ لیا،
اور 1986 میں پہلے
ایس کیو ایل معیار
کی منظوری دی
گئی۔
بعد میں
اس معیار پر
کئی بار نظر
ثانی کی گئی ، جس
میں نام (ایس
کیو ایل: 1999 ، ایس
کیو ایل : 2003 ،
ایس کیو ایل : 2008
، وغیرہ)
متعلقہ سالوں
میں جاری کردہ
ورژن کی
نشاندہی کرتے
ہیں۔
ہم
کسی بھی وقت ایس
کیو ایل معیار
کے موجودہ
ورژن کا مطلب
لینے کے لئے
ایس کیو ایل اسٹینڈرڈ
یا معیاری ایس
کیو ایل جملے
کا استعمال
کریں گے۔
MySQL اضافی
خصوصیات
فراہم کرتے
ہوئے معیاری
ایس کیو ایل
کو بڑھاتا ہے۔
مثال کے
طور پر ، MySQL STRAIGHT_JOIN کو
نافذ کرتا ہے
، جو نحو ہے جو
دوسرے ڈی بی
ایم ایس کے
ذریعہ تسلیم
نہیں کیا جاتا
ہے۔
یہ باب
مائی ایس کیو
ایل کے ایس
کیو ایل نفاذ
کا تعارف
کراتا ہے ،
جسے ہم اکثر
سی آر یو ڈی
آپریشنز کے
طور پر حوالہ
دیتے ہیں : تخلیق
کریں
، پڑھیں ، اپ
ڈیٹ کریں
اور حذف کریں۔
ہم آپ کو
دکھائیں گے کہ
سلیکٹ
اسٹیٹمنٹ کے
ساتھ ڈیٹا بیس
سے ڈیٹا کو
کیسے پڑھا جائے اور
منتخب کریں کہ
کون سا ڈیٹا
بازیافت کرنا
ہے اور اسے کس
ترتیب میں
دکھایا گیا ہے۔
ہم آپ کو
ڈیٹا شامل
کرنے کے لئے
داخل کردہ بیان
کے ساتھ اپنے
ڈیٹا بیس میں
ترمیم
کرنے ، ڈیٹا
کو تبدیل کرنے
کے لئے اپ
ڈیٹ
کرنے اور ڈیٹا
کو ہٹانے کے
لئے حذف کرنے کی
بنیادی باتیں
بھی دکھائیں گے۔
آخر میں ،
ہم وضاحت کریں
گے کہ آپ کے
ڈیٹا بیس کو
تلاش کرنے کے
لئے غیر
معیاری شو
ٹیبلز
اور کالم
بیانات
دکھانے کا
طریقہ۔
باب 2
میں ،
ہم نے آپ کو ای
آر ماڈل کا
استعمال کرتے
ہوئے ڈیٹا بیس
ڈایاگرام
بنانے کے اصول
دکھائے۔
ہم نے ای
آر ماڈل کو
ایک فارمیٹ
میں تبدیل کرنے
کے لئے آپ کے
اقدامات کو
بھی متعارف
کرایا جو رشتہ
دار ڈیٹا بیس
کی تعمیر کے
لئے سمجھ میں آتا
ہے۔
یہ سیکشن
آپ کو MySQL سکیلا ڈیٹا
بیس کی ساخت
دکھائے گا
تاکہ آپ مختلف
ڈیٹا بیس رشتہ
دار ماڈلز سے
واقف ہونا
شروع کرسکیں۔
ہم یہاں
ڈیٹا بیس
بنانے کے لئے
استعمال ہونے
والے ایس کیو
ایل بیانات کی
وضاحت نہیں
کریں گے؛ یہ باب
4 کا موضوع ہے.
اگر آپ نے
ابھی تک ڈیٹا
بیس درآمد
نہیں کیا ہے تو
، کام کو
انجام دینے کے
لئے
"اینٹیٹی
ریلیشن شپ
ماڈلنگ مثالیں" میں
اقدامات پر عمل
کریں۔
ہمارے
موجودہ ڈیٹا
بیس کے طور پر سکیلا
ڈیٹا بیس کا
انتخاب کرنے
کے لئے، ہم یو
ایس ای
بیان استعمال
کریں
گے.
درج ذیل
کمانڈ ٹائپ
کریں:
میرا
سوال>
ی ایس یو
ایس
سکیلا
۔
Database
تبدیلmysql>
آپ سلیکٹ
ڈیٹا بیس ٹائپ
کرکے چیک
کرسکتے ہیں
کہ فعال ڈیٹا
بیس کون سا
ہے()۔
حکم:
مائسکول
>
سلیکٹ
ڈیٹا بیس
();
+------------+| ڈیٹا
بیس() |+------------+| sçla |+------------+1
قطار in سیٹ (0.00
سیکنڈ)
اب ، آئیے
دریافت کرتے
ہیں کہ شو
ٹیبلز بیان کا
استعمال کرتے
ہوئے سکیلا ڈیٹا
بیس کون سے ٹیبل
بناتے ہیں:
>
و
ٹیبلز
۔
+----------------------------+| Tables_in_sakila
|+----------------------------+| اداکار ||
actor_info || ...
|| گاہک || customer_list ||
فلم || film_actor || film_category || film_list || film_text
|| انوینٹری ||
زبان |
| nicer_but_slower_film_list ||
ادائیگی ||
کرایہ || sales_by_film_category || sales_by_store
|| عملہ || staff_list ||
اسٹور |+----------------------------+23
قطاریں سیٹ
میں (0.00 سیکنڈ)
اب تک،
کوئی حیرت کی
بات نہیں ہے.
آئیے ہر
ٹیبل کے بارے
میں مزید
جانیں جو سکیلا ڈیٹا
بیس
بناتے ہیں۔
سب
سے پہلے ،
آئیے اداکار
ٹیبل کو تلاش
کرنے کے لئے
شو کالمز بیان کا
استعمال کریں (نوٹ
کریں کہ آؤٹ
پٹ کو صفحے کے
مارجن کے ساتھ
فٹ ہونے کے
لئے لپیٹ دیا
گیا ہے):
>
اداکار
کے
کالم
دکھائیں
۔
+-------------+-------------------+------+-----+-------------------+...|
میدان | قسم |
صفر | کلید |
پہلے سے طے شدہ
|...+-------------+-------------------+------+-----+-------------------+...|
actor_id | دستخط نہ
کرنے والا
چھوٹا | نہیں |
پی آر آئی | نول
|.... | first_name | ورچر(45) |
نہیں | |
نول |.... | last_name | ورچر(45) |
نہیں | ایم یو
ایل | نول |.... | last_update |
ٹائم اسٹیمپ |
نہیں | |
CURRENT_TIMESTAMP
|...+-------------+-------------------+------+-----+-------------------+......+-----------------------------------------------+......
اضافی |
...+-----------------------------------------------+ ...| auto_increment |
...|
| ...|
| ...| اپ ڈیٹ CURRENT_TIMESTAMP
پر DEFAULT_GENERATED | سیٹ میں
...+ ----------------------------------------------- +
4 قطاریں (0.01
سیکنڈ)
بیان
کردہ
مطلوبہ الفاظ
شو کالمز سے
مماثلت رکھتے
ہیں ،
اور ہم اسے
صرف ڈی ای
ایس سی تک
محدود کرسکتے ہیں ،
لہذا ہم پچھلے
سوال کو
مندرجہ ذیل
طور پر لکھ
سکتے ہیں:
ڈی
ای ایس
سی
>
اداکار
۔
پیدا
کردہ آؤٹ پٹ
ایک جیسا ہے۔
آئیے
ٹیبل کی ساخت
کا مزید قریب
سے جائزہ لیں۔
اداکار
کے جدول
میں چار کالم
شامل ہیں ، actor_id
، first_name
، last_name
، اور last_update۔
ہم
کالموں کی اقسام
کو بھی نکال
سکتے ہیں: actor_id کے
لئے ایک
چھوٹا پن، first_name اور last_name کے
لئے ورچر (45) اور last_update کے
لئے ٹائم
اسٹیمپ۔
کوئی
بھی کالم نول
(خالی) قدر کو قبول
نہیں کرتا ہے
، actor_id
بنیادی
کلید (پی آر
آئی)
ہے ، اور last_name غیر
منفرد انڈیکس (ایم
یو ایل) کا پہلا
کالم ہے۔
تفصیلات
کے بارے میں
فکر نہ کریں۔
اس وقت جو کچھ
بھی اہم ہے وہ
کالم کے نام
ہیں جو ہم ایس
کیو ایل
کمانڈز کے لئے
استعمال کریں
گے۔
اگلا
آئیے ڈی ای
ایس سی کے
بیان پر عمل
درآمد کرکے
شہر کی میز کی
تلاش کرتے ہیں
:
میسکل>
ڈی ای ایس
سی
شہر
۔
+-------------+-------------------+------+-----+-------------------+...|
میدان | قسم |
صفر | کلید |
پہلے سے طے شدہ
|...+-------------+-------------------+------+-----+-------------------+...|
city_id | دستخط نہ
کرنے والا
چھوٹا | نہیں |
پی آر آئی | نول
|.... | شہر | ورچر(50) |
نہیں | |
نول |.... | country_id | دستخط
نہ کرنے والا
چھوٹا | نہیں |
ایم یو ایل |
نول |...
| last_update | ٹائم
اسٹیمپ | نہیں
| | CURRENT_TIMESTAMP
|...+-------------+-------------------+------+-----+-------------------+......+-----------------------------------------------+...|
اضافی
|...+-----------------------------------------------+... | auto_increment
|....
|...|
|...| اپ ڈیٹ CURRENT_TIMESTAMP
پر DEFAULT_GENERATED
|...+----------------------------------------------- +4
قطاریں سیٹ
میں (0.01 سیکنڈ)
نوٹ
اضافی
کالم میں آپ
کو جو ڈیفالٹ _جنریٹڈ نظر
آتا ہے وہ اس
بات کی
نشاندہی کرتا
ہے کہ یہ خاص
کالم پہلے سے
طے شدہ قدر
استعمال کرتا
ہے۔
یہ
معلومات MySQL 8.0
نوٹیشن
خصوصیت ہے،
اور یہ MySQL 5.7 یا ماریا
ڈی بی 10.5 میں
موجود نہیں
ہے۔
ایک بار
پھر، اہم بات
یہ ہے کہ ہر
جدول میں
کالموں سے
واقف ہونا،
کیونکہ جب ہم
سوالات پر
تبادلہ خیال
کریں گے تو ہم
بعد میں ان کا
کثرت سے
استعمال کریں
گے.
اگلا
سیکشن آپ کو
دکھاتا ہے کہ
کس طرح اس
ڈیٹا کو تلاش
کریں جو مائی
ایس کیو ایل سکیلا ڈیٹا
بیس اور اس کے
جدولوں میں
اسٹور کرتا ہے۔
پچھلے
ابواب نے آپ
کو دکھایا کہ
کس طرح MySQL انسٹال
اور تشکیل
دینا ہے اور MySQL
کمانڈ لائن کا
استعمال کرنا
ہے، اور ای آر
ماڈل متعارف
کرایا۔
اب آپ ایس
کیو ایل زبان
سیکھنا شروع
کرنے کے لئے
تیار ہیں جو
تمام مائی ایس
کیو ایل
کلائنٹ ڈیٹا
کو تلاش کرنے
اور ہیرا
پھیری کرنے کے
لئے استعمال
کرتے ہیں۔
یہ سیکشن
سب سے زیادہ
استعمال ہونے
والے ایس کیو
ایل مطلوبہ
الفاظ کو
متعارف کراتا
ہے: منتخب
مطلوبہ
الفاظ۔
ہم
اسٹائل اور
نحو کے بنیادی
عناصر اور ہیئر شق ،
بولین
آپریٹرز ، اور
ترتیب کی خصوصیات
کی وضاحت کرتے
ہیں (اس میں سے
زیادہ تر داخل
، اپ ڈیٹ ، اور
حذف کے ہمارے
بعد کے
مباحثوں پر
بھی لاگو
ہوتا ہے)۔
یہ سلیکٹ
کی ہماری بحث
کا اختتام
نہیں ہے؛ آپ کو
باب 5 میں مزید
ملیں گے، جہاں ہم
آپ کو اس کی
اعلی درجے کی
خصوصیات کو استعمال
کرنے کا طریقہ
دکھاتے ہیں.
سلیکٹ کی
سب سے بنیادی
شکل ایک
جدول سے تمام
قطاروں اور
کالموں میں
اعداد و شمار
کو پڑھتی ہے۔
کمانڈ
لائن کا
استعمال کرتے
ہوئے MySQL سے
رابطہ کریں
اور سکیلا ڈیٹا
بیس کا انتخاب
کریں:
میرا
سوال>
ی ایس یو
ایس
سکیلا
۔
ڈیٹا
بیس تبدیل ہو
گیا
آئیے
زبان کے جدول
میں تمام
اعداد و شمار
بازیافت
کریں :
زبان
سے
>
سلیکٹ
*
؛
+-------------+----------+---------------------+|
language_id | نام | last_update |+-------------+----------+---------------------+| 1 |
انگریزی | 2006-02-15 05:02:19 || 2 | اطالوی
| 2006-02-15 05:02:19 || 3 |
جاپانی | 2006-02-15 05:02:19 || 4 |
مینڈارن | 2006-02-15 05:02:19 || 5 |
فرانسیسی | 2006-02-15 05:02:19
|| 6 |
جرمن | 2006-02-15 05:02:19
|+-------------+----------+---------------------+6
قطاریں سیٹ (0.00
سیکنڈ)
آؤٹ پٹ
میں چھ قطاریں
ہیں ، اور ہر
قطار میں جدول
میں موجود
تمام کالموں
کی قدریں شامل
ہیں۔
اب ہم
جانتے ہیں کہ
چھ زبانیں
ہیں، اور ہم
زبانوں، ان کے
شناخت
کنندگان کو
دیکھ سکتے
ہیں، اور آخری
بار ہر زبان
کو اپ ڈیٹ کیا
گیا تھا.
ایک سادہ سلیکٹ
بیان
کے چار اجزاء
ہیں:
مطلوبہ
الفاظ منتخب
کریں۔
دکھائے
جانے والے
کالم۔
ستارے (*) علامت
ایک وائلڈ
کارڈ حروف ہے
جس کا مطلب تمام
کالم ہیں۔
مطلوبہ
الفاظ سے.
جدول کا
نام۔
لہذا اس
مثال میں ، ہم
نے زبان کی
میز سے تمام کالم
مانگے
ہیں ، اور
یہی وہ ہے جو
مائی ایس کیو
ایل نے ہمیں
واپس کیا ہے۔
آئیے ایک
اور آسان
انتخاب کی
کوشش کریں۔
اس بار،
ہم شہر کی میز
سے تمام کالم
بازیافت کریں
گے :
شہر
سے
>
سلیکٹ
*
۔
+---------+------------------------+------------+---------------------+|
city_id | شہر | country_id | last_update |+---------+------------------------+------------+---------------------+| 1 | اے
کوروا (لا
کوریا) |
87 | 2006-02-15 04:45:25 ||
2 | آبھا | 82 | 2006-02-15 04:45:25 |
| 3 | ابو
ظہبی | 101
| 2006-02-15 04:45:25 || ...
|| 599 |
چوشان |
23 | 2006-02-15 04:45:25 ||
600 | Ziguinchor | 83 |
2006-02-15 04:45:25
|+---------+------------------------+------------+---------------------+600
قطاریں سیٹ
میں (0.00 سیکنڈ)
600
شہر ہیں ، اور
آؤٹ پٹ میں
وہی بنیادی
ڈھانچہ ہے جو
ہماری پہلی
مثال میں ہے۔
یہ مثال
اس بارے میں
کچھ بصیرت
فراہم کرتی ہے
کہ جدولوں کے
درمیان
تعلقات کیسے
کام کرتے ہیں۔
نتائج کی
پہلی قطار پر
غور کریں.
country_id کالم
میں ،
آپ کو قیمت 87
نظر آئے گی۔
جیسا کہ
آپ بعد میں
دیکھیں گے ،
ہم یہ
معلوم کرنے کے
لئے ملک کی
ٹیبل چیک
کرسکتے ہیں کہ
کوڈ 87 والا ملک
اسپین ہے۔
ہم اس بات
پر تبادلہ
خیال کریں گے
کہ "دو جدولوں
میں شامل
ہونا" میں
جدولوں کے
مابین تعلقات پر
سوالات کیسے
لکھے جائیں۔
اگر آپ
مکمل آؤٹ پٹ
کو دیکھتے ہیں
تو ، آپ یہ بھی
دیکھیں گے کہ
ایک ہی country_id کے
ساتھ متعدد
مختلف شہر
ہیں۔
country_id اقدار کو
دہرانا کوئی
مسئلہ نہیں ہے
کیونکہ ہم
توقع کرتے ہیں
کہ ایک ملک
میں بہت سے
شہر ہوں گے
(ایک سے بہت سے
تعلقات)۔
اب آپ کو
ڈیٹا بیس کا
انتخاب کرنے ،
اس کے جدولوں
کو درج کرنے ،
اور سلیکٹ
بیان کا
استعمال کرتے
ہوئے ٹیبل سے
تمام ڈیٹا
بازیافت کرنے
میں آرام
محسوس کرنا چاہئے ۔
مشق کرنے
کے لئے ، آپ
سکیلا ڈیٹا
بیس میں دیگر جدولوں
کے ساتھ تجربہ
کرنا چاہتے
ہیں ۔
یاد
رکھیں کہ آپ ٹیبل کے
ناموں کو تلاش
کرنے کے لئے
شو ٹیبلز بیان
استعمال
کرسکتے ہیں۔
اس سے
پہلے ، ہم نے ٹیبل
میں تمام
کالموں کو
بازیافت کرنے
کے لئے * وائلڈ
کارڈ کردار
کا
استعمال کیا۔
اگر آپ
تمام کالموں
کو ظاہر نہیں
کرنا چاہتے ہیں
تو ، اپنے
مطلوبہ
کالموں کو درج
کرکے ، جس ترتیب
سے آپ چاہتے
ہیں ، کوما سے
الگ کرکے زیادہ
مخصوص ہونا
آسان ہے۔
مثال کے
طور پر ، اگر
آپ شہر کی میز سے
صرف شہر کا کالم
چاہتے
ہیں تو ، آپ
ٹائپ کریں گے:
>
شہر
سے
منتخب
شہر
۔
+--------------------+| شہر
|+--------------------+| اے کوروا
(لا کوریا) ||
آبھا || ابوظہبی
|| اکوا || اڈانا |+--------------------+
5 قطاریں سیٹ
میں (0.00 سیکنڈ)
اگر آپ
شہر اور city_id کالم
دونوں چاہتے
ہیں تو ، اس
ترتیب میں ،
آپ استعمال
کریں گے:
>
شہر
،
شہر
سے
city_id
۔
+--------------------+---------+|
شہر | city_id |+--------------------+---------+|
اے کوروا (لا
کوریا) |
1 || آبھا |
2 || ابو ظہبی | 3 || Acua | 4 || اڈانا
| 5 |
سیٹ میں +-------------------- +--------- +5
قطاریں (0.01
سیکنڈ)
آپ
کالموں کو ایک
سے زیادہ بار
بھی درج کرسکتے
ہیں:
>
سلیکٹ
شہر
،
شہر
سے
شہر
۔
+--------------------+--------------------+|
شہر |+--------------------+--------------------+|
اے کوروا (لا
کوریا) | اے کوروا
(لا کوریا) ||
آبھا | آبھا ||
ابو ظہبی |
ابوظہبی || Acua | اکوا
|| اڈانا | اڈانا |
سیٹ میں +--------------------
+-------------------- +5 قطاریں (0.00
سیکنڈ)
اگرچہ یہ
بے معنی لگ
سکتا ہے ،
لیکن یہ مفید
ہوسکتا ہے جب زیادہ
جدید سوالات
میں عرفات
کے ساتھ
ملایا
جائے ، جیسا
کہ آپ باب 5 میں
دیکھیں گے۔
آپ سلیکٹ
بیان میں ڈیٹا
بیس ، ٹیبل ،
اور کالم کے
ناموں کی
وضاحت کرسکتے ہیں۔
یہ آپ کو یو
ایس ای کمانڈ
سے بچنے اور
سلیکٹ کے ساتھ
براہ راست کسی
بھی ڈیٹا بیس
اور ٹیبل کے
ساتھ کام کرنے
کی اجازت دیتا
ہے؛
یہ ابہام کو
حل کرنے میں
بھی مدد کرتا
ہے، جیسا کہ
ہم "جوائننگ
ٹو ٹیبلز" میں
دکھائیں گے۔
مثال کے
طور پر ، فرض
کریں کہ آپ سکیلا ڈیٹا
بیس میں زبان
کے جدول سے نام
کا کالم
بازیافت کرنا چاہتے ہیں۔
آپ
مندرجہ ذیل
کمانڈ کے ساتھ
ایسا کرسکتے
ہیں:
ssql
>
Clect
نام
sçla
سے
.
زبان
۔
+----------+| نام |+----------+|
انگریزی || اطالوی
|| جاپانی ||
مینڈارن ||
فرانسیسی ||
سیٹ میں جرمن
|+----------+6 قطاریں (0.01
سیکنڈ)
مطلوبہ
الفاظ سے سکیلا
ڈاٹ لینگویج
کا جزو سکیلا ڈیٹا
بیس اور اس کی زبان
کے جدول کی وضاحت
کرتا ہے ۔
یو ایس
ایس سکیلا میں
داخل ہونے کی
کوئی ضرورت
نہیں ہے۔ اس سوال
کو چلانے سے
پہلے.
اس نحو کو
دوسرے ایس کیو
ایل بیانات کے
ساتھ بھی
استعمال کیا
جاسکتا ہے ،
بشمول اپ
ڈیٹ ،
حذف ، داخل ، اور اس باب
میں بعد میں
بیان کرنے
والے بیانات
دکھائیں۔
یہ سیکشن
ڈبلیو اے آر
شق کا تعارف
کراتا ہے
اور وضاحت
کرتا ہے کہ
اظہار لکھنے
کے لئے
آپریٹرز کو کس
طرح استعمال
کرنا ہے۔
آپ ان کو
منتخب
بیانات اور
دیگر بیانات
جیسے اپ
ڈیٹ اور حذف میں
دیکھیں گے؛ ہم
آپ کو اس باب
میں بعد میں
مثالیں
دکھائیں گے۔
جہاں شق
ایک طاقتور
ٹول ہے جو آپ
کو فلٹر کرنے
کی اجازت دیتا
ہے کہ سلیکٹ
بیان سے کون
سی قطاریں واپس
کی گئی ہیں ۔
آپ اسے ان
قطاروں کو
واپس کرنے کے
لئے استعمال
کرتے ہیں جو
کسی شرط سے
میل کھاتی ہیں
، جیسے کالم
کی قدر جو
بالکل تار سے
میل کھاتی ہے
، ایک قدر سے
زیادہ یا کم
نمبر ، یا ایک
تار جو کسی دوسرے
کا سرفیکس ہے۔
اس اور اس
کے بعد کے
ابواب میں
ہماری تقریبا
تمام مثالوں
میں جہاں کی
شقیں ہیں ،
اور آپ ان سے
بہت واقف
ہوجائیں گے۔
سب سے
آسان شق وہ ہے جو
بالکل ایک قدر
سے میل کھاتی
ہے۔
ایک مثال
پر غور کریں
جہاں آپ زبان
کے جدول میں
انگریزی زبان
کی تفصیلات
معلوم کرنا
چاہتے ہیں ۔
mysql
>
SELECT
*
from
sakila
.
زبان
جہاں
نام
=
'انگریزی'
؛
+-------------+---------+---------------------+|
language_id | نام | last_update
|+-------------+---------+---------------------+| 1 |
انگریزی | 2006-02-15 05:02:19
|+-------------+---------+---------------------+1 قطار
سیٹ (0.00 سیکنڈ)
MySQL ان تمام
قطاروں کو
واپس کرتا ہے
جو آپ کی تلاش
کے معیار سے
مطابقت رکھتی
ہیں - اس
معاملے میں ،
صرف ایک قطار
اور اس کے
تمام کالم۔
آئیے ایک
اور عین مطابق
مثال کی کوشش
کرتے ہیں۔
فرض کریں
کہ آپ اداکار
کی میز
میں 4 کی actor_id قدر
کے
ساتھ اداکار کا
پہلا نام تلاش
کرنا چاہتے ہیں۔
آپ ٹائپ
کریں گے:
>
ایس ایل
ای سی ٹی
اداکار
سے first_name
جہاں
actor_id
=
4
۔
+------------+| first_name |+------------+|
سیٹ میں
جینیفر |+------------+1
قطار (0.00 سیکنڈ)
یہاں آپ
ایک کالم اور
ایک قطار
فراہم کرتے
ہیں ، بشمول
منتخب مطلوبہ
الفاظ
کے بعد first_name کالم اور
کہاں actor_id = 4 کی
وضاحت کرنا۔
اگر ایک
قیمت ایک سے
زیادہ قطاروں
سے میل کھاتی
ہے تو ، نتائج
میں تمام میچ
شامل ہوں گے۔
فرض کریں
کہ آپ برازیل
سے تعلق رکھنے
والے تمام
شہروں کو
دیکھنا چاہتے
ہیں ، جس کی country_id 15 ہے۔
آپ ٹائپ
کریں گے:
شہر
سے
>
منتخب
شہر
جہاں
country_id
=
15
۔
+----------------------+| شہر
|+----------------------+| الوراڈا ||
انگرا ڈوس ریس
|| انپولس || Aparecida de Goinia |
| آراتوبا || بیگ ||
بیلم ||
بلومینو || بوآ
وسٹا || برازیلیا
| || ...
سیٹ میں |+----------------------+28
قطاریں (0.00
سیکنڈ)
نتائج
میں ان 28 شہروں
کے نام دکھائے
گئے ہیں جن کا
تعلق برازیل
سے ہے۔
اگر ہم
شہر کی میز سے
حاصل ہونے
والی معلومات کو
ملک کی میز سے
حاصل ہونے والی
معلومات کے
ساتھ جوڑ سکتے
ہیں تو ، ہم
شہروں کے نام
ان کے متعلقہ
ممالک کے ساتھ
ظاہر کرسکتے
ہیں۔
ہم
دیکھیں گے کہ
"جوائننگ ٹو
ٹیبلز" میں اس
قسم کے سوالات
کو کیسے انجام
دیا جائے۔
اب آئیے
ان اقدار کو
بازیافت کرتے
ہیں جو ایک حد
سے تعلق رکھتی
ہیں۔
عددی
رینج کے لئے
متعدد اقدار
کو بازیافت
کرنا آسان ہے
، لہذا آئیے 5
سے کم city_id والے
تمام شہروں کے
نام تلاش کرکے
شروع کرتے ہیں ۔
ایسا
کرنے کے لئے،
مندرجہ ذیل
بیان پر عمل
کریں:
>
شہر
سے
منتخب
شہر
جہاں
city_id<
5
۔
+--------------------+| شہر |
+--------------------+| اے کوروا
(لا کوریا) ||
آبھا ||
ابوظہبی || سیٹ
میں ایکوا
|+--------------------+4 قطاریں (0.00
سیکنڈ)
نمبروں
کے لئے ، اکثر
استعمال ہونے
والے آپریٹرز
برابر (=)،
(> سے زیادہ)، (<
سے کم)، کم یا
مساوی (<=)، زیادہ
یا مساوی (>=)، اور
برابر (<> یا !=)
نہیں ہیں۔
ایک اور
مثال پر غور
کریں.
اگر آپ ان
تمام زبانوں
کو تلاش کرنا
چاہتے ہیں جن
میں 2 کا language_id نہیں
ہے تو ،
آپ ٹائپ کریں
گے:
ssql
>
Slect
language_id
,
نام
ساکیلا
سے
.
زبان
>
language_id
<>
2
۔
+-------------+----------+| language_id |
نام |+-------------+----------+| 1 |
انگریزی || 3 | جاپانی
|| 4 |
مینڈارن || 5 |
فرانسیسی || 6 | سیٹ
میں جرمن |+-------------+----------+
5 قطاریں (0.00
سیکنڈ)
پچھلا
آؤٹ پٹ جدول
میں پہلی ،
تیسری اور بعد
کی تمام
زبانوں کو
ظاہر کرتا ہے۔
نوٹ کریں
کہ آپ
غیر مساوی
حالت کے لئے <> یا !=
آپریٹر
استعمال
کرسکتے ہیں۔
آپ تاروں
کے لئے ایک ہی
آپریٹر
استعمال
کرسکتے ہیں۔
پہلے سے
طے شدہ طور پر
، سٹرنگ
موازنہ کیس
حساس نہیں ہے
اور موجودہ
حروف سیٹ کا
استعمال کرتا
ہے۔
مثال کے
طور پر:
اداکار
سے
>
first_name
جہاں
first_name
<
'بی'
۔
+------------+| first_name |+------------+|
اے ایل ای سی ||
آڈری || اینی ||
انجیلا || آدم ||
انجلینا ||
البرٹ || آدم ||
انجیلا ||
البرٹ || آل ||
ایلن || سیٹ میں
AUDre |+------------+13 قطاریں (0.00
سیکنڈ)
"کیس
حساس نہیں" سے
ہمارا مطلب ہے
کہ بی اور بی کو
ایک ہی فلٹر
سمجھا جائے گا
، لہذا یہ
سوال ایک ہی
نتیجہ فراہم
کرے گا:
اداکار
سے first_name
>
first_name
<
بی'
۔
+------------+| first_name |+------------+|
اے ایل ای سی ||
اے یو ڈی آر ای |
| اینی || انجیلا ||
آدم || انجلینا || البرٹ
|| آدم || انجیلا ||
البرٹ || آل ||
ایلن || سیٹ میں
AUDREY |+------------+13 قطاریں (0.00
سیکنڈ)
تاروں کے
ساتھ انجام
دینے کا ایک
اور عام کام ایسے
میچوں کو تلاش
کرنا ہے جو
پہلے سے شروع
ہوتے ہیں ،
ایک تار پر
مشتمل ہوتے
ہیں ، یا لاحقہ
میں ختم ہوتے
ہیں۔
مثال کے
طور پر ، ہم
لفظ "ریٹرو"
سے شروع ہونے
والے تمام
البم کے نام
تلاش کرنا
چاہتے ہیں۔ ہم
یہ لائک
آپریٹر کے
ساتھ ایک
ایسی شق میں کر
سکتے ہیں۔
آئیے ایک
مثال دیکھیں
جہاں ہم ایک
ایسی فلم کی
تلاش کر رہے
ہیں جس کا
عنوان ہے جس
میں لفظ خاندان
شامل ہے:
>فلم
سے
منتخب
عنوان
جہاں
عنوان
'٪فیملی٪'
کی
طرح
ہے۔
+----------------+|
عنوان |+----------------+|
سمندری طوفان
کا خاندان || ڈوگما
فیملی || سیٹ
میں فیملی
سویٹ |+---------------- +3
قطاریں (0.00
سیکنڈ)
آئیے ایک
نظر ڈالتے ہیں
کہ یہ کیسے
کام کرتا ہے.
لائیک شق
تاروں کے ساتھ
استعمال کی
جاتی ہے اور
اس کا مطلب یہ
ہے کہ ایک میچ
کو مندرجہ ذیل
تار میں پیٹرن
پر پورا اترنا
ہوگا۔
ہماری
مثال میں ، ہم
نے لائک
'٪فیملی٪' کا
استعمال کیا ہے ،
جس کا مطلب ہے
کہ تار میں
خاندان ہونا
ضروری ہے ،
اور اس سے
پہلے یا اس کے
بعد صفر یا
زیادہ حروف
ہوسکتے ہیں۔
لائیک کے
ساتھ استعمال
ہونے والی
زیادہ تر
تاروں میں
وائلڈ کارڈ
کردار کے طور
پر فیصد کردار
(٪)
ہوتا ہے جو
تمام ممکنہ
تاروں سے میل
کھاتا ہے۔
آپ اسے
ایک ایسی تار
کی وضاحت کرنے
کے لئے استعمال
کرسکتے ہیں جو
لاحقے میں ختم
ہوتی ہے - جیسے "٪ing"- یا
ایک تار جو
کسی خاص ذیلی
تار سے شروع
ہوتی ہے ،
جیسے "کرپشن٪"۔
مثال کے
طور پر ، "جان
٪" جان
اسمتھ اور جان
پال گیٹی جیسے جان
سے شروع ہونے
والے تمام
تاروں سے میل
کھائے گا۔
پیٹرن
"٪پال" ان تمام
تاروں سے میل
کھاتا ہے جن کے آخر
میں پال ہے۔
آخر میں ،
پیٹرن "٪پال٪"
ان تمام
تاروں سے میل
کھاتا ہے جن میں پولس ہے ، بشمول
شروع میں یا
آخر میں۔
اگر آپ
لائیک شق میں
بالکل ایک
وائلڈ کارڈ
کردار کا
مقابلہ کرنا
چاہتے ہیں تو ،
آپ نمایاں
کردار (_) کا
استعمال کرتے
ہیں۔
مثال کے
طور پر ، اگر
آپ ایک اداکار
کی اداکاری
والی تمام
فلموں کے
عنوانات
چاہتے ہیں جس
کا نام تین
حروف این اے
ٹی سے شروع
ہوتا ہے تو ،
آپ استعمال
کرتے ہیں:
film_list
سے
منتخب
> عنوان
جہاں
اداکار
'NAT_٪'
کو پسند
کرتے
ہیں
۔
+----------------------+|
عنوان |+----------------------+|
فینٹسی
ٹروپرز ||
بیوقوف مذاق اڑانے
والے پرندے ||
ہولز برنیگن ||
کووائی ہوم وارڈ
|| لائسنس ویک
اینڈ || نیٹ ورک
کی چوٹی || این
یو ٹی ایس
ٹائیز || مسخ
شدہ قزاق ||
ناقابل معافی
زولینڈر |+----------------------+9
قطاریں سیٹ
میں (0.04 سیکنڈ)
اشارہ کرنا
عام طور
پر ، آپ کو
پیٹرن کے آغاز
میں فیصد (٪) وائلڈ
کارڈ استعمال
کرنے سے گریز
کرنا چاہئے ،
جیسے مندرجہ
ذیل مثال میں:
فلم
سے
منتخب
عنوان
>
جہاں
عنوان
'٪دن٪' کی
طرح
ہے۔
آپ کو
نتائج مل یں
گے ، لیکن MySQL اس
حالت کے تحت
انڈیکس
استعمال نہیں
کرے گا۔
وائلڈ
کارڈ کا
استعمال مائی
ایس کیو ایل
کو نتائج کو
بازیافت کرنے
کے لئے پوری
ٹیبل کو پڑھنے
پر مجبور کرے
گا ، جو اگر
ٹیبل میں
لاکھوں قطاریں
ہوں تو
کارکردگی پر
شدید اثر پڑ
سکتا ہے۔
اب تک، ہم
نے ایک
شرط کو جانچنے
کے لئے کہاں کی شق
کا استعمال
کیا
ہے، اس پر
پورا اترنے
والی تمام
قطاروں کو
واپس کر دیا
ہے.
آپ بولین
آپریٹرز اور ،
یا ، نہیں ،
اور ایکس او
آر کا استعمال
کرتے ہوئے دو
یا زیادہ
شرائط کو یکجا
کرسکتے
ہیں۔
چلو ایک
مثال سے شروع
کرتے ہیں.
فرض کریں
کہ آپ سائنس
فکشن فلموں کے
عنوانات تلاش
کرنا چاہتے
ہیں جنہیں پی
جی درجہ دیا
گیا ہے۔
یہ اے این
ڈی آپریٹر کے
ساتھ سیدھا
ہے:
film_list
سے
> منتخب
عنوان
جہاں
زمرہ
'سائنس
فائی'
>
اور
درجہ
بندی
'پی جی'
کی
طرح
ہے۔
+----------------------+|
عنوان |+----------------------+|
چینسو اپ ٹاؤن
|| چارڈ ڈفل ||
فریسکو
فارریسٹ ||
گڈفیلس سلام ||
گرافیٹی محبت
|| جامنی رنگ کا
سوگ || اوپن
افریقی ||
سلوراڈو گولڈ
فنگر || ٹائٹنز
جرک || ٹروجن کل ||
ناقابل معافی
زولینڈر ||
ونڈر لینڈ
کرسمس |+----------------------+12
قطاریں سیٹ
میں (0.07 سیکنڈ)
ڈبلیو اے آر
شق میں اینڈ
آپریشن نتائج
کو ان قطاروں
تک محدود کرتا
ہے جو دونوں
شرائط پر پورا
اترتے ہیں۔
او آر
آپریٹر کا
استعمال
قطاروں کو
تلاش کرنے کے
لئے کیا جاتا
ہے جو متعدد
شرائط میں سے
کم از کم ایک
پر پورا اترتے
ہیں۔
مثال کے
طور پر ، اب
تصور کریں کہ
آپ بچوں یا خاندانی
زمروں میں
فلموں کی ایک
فہرست چاہتے
ہیں۔
آپ یہ او
آر اور دو لائیک
شقوں کے ساتھ
کر سکتے ہیں:
film_list
سے
منتخب
عنوان
>
جہاں
زمرہ
'بچوں'
کی
طرح
>
یا
زمرہ '
خاندان'
کی
طرح
ہے۔
+------------------------+|
عنوان |+------------------------+|
افریقی انڈے ||
اپاچی الٰہی ||
اٹلانٹس کی
وجہ |... غلط طرز
عمل || زولینڈر
فکشن |+------------------------+129
قطاریں سیٹ
میں (0.04 سیکنڈ)
ڈبلیو
ایچ آر شق
میں او
آر آپریشن ان
لوگوں کے
جوابات کو
محدود کرتا ہے
جو دونوں
شرائط میں سے
کسی ایک پر
پورا اترتے ہیں۔
ایک طرف،
ہم دیکھ سکتے
ہیں کہ نتائج
کا حکم دیا
گیا ہے.
یہ محض
ایک اتفاق ہے۔
اس معاملے میں
، انہیں اس
ترتیب میں
رپورٹ کیا
جاتا ہے جس
میں انہیں ڈیٹا
بیس میں شامل
کیا گیا تھا۔
ہم "شق کے
مطابق آرڈر" میں
آؤٹ پٹ کو
ترتیب دینے پر
واپس آئیں گے۔
آپ اور اور
یا کو یکجا
کرسکتے ہیں ،
لیکن آپ کو یہ
واضح کرنے کی
ضرورت ہے کہ
آیا آپ پہلے اور
شرائط یا ان
کو جوڑنا
چاہتے ہیں یا
نہیں۔
بیان
کے کلسٹر حصوں
کو ایک ساتھ
کور کرتے ہیں اور
تاثرات کو
پڑھنے کے قابل
بنانے میں مدد
کرتے ہیں۔ آپ
انہیں اسی طرح
استعمال
کرسکتے ہیں جیسے
آپ بنیادی
ریاضی میں
کرتے ہیں۔
فرض کریں
کہ اب آپ
سائنس فکشن یا
خاندانی فلمیں
چاہتے ہیں جو
پی جی درجہ
بندی کی جاتی
ہیں.
آپ اس
سوال کو
مندرجہ ذیل کے
طور پر لکھ
سکتے ہیں:
film_list
سے
منتخب
عنوان
> (
کیٹیگری
جیسے
'سائنس
فائی'
یا
کیٹیگری
> جیسے
'فیملی'
)
اور '
پی جی'
جیسی
درجہ
بندی
؛
+------------------------+|
عنوان |+------------------------+| بے
خواب شادی شدہ
|| چینسو اپ ٹاؤن
|| چارڈ ڈفل ||
پیچھا کرنے کی
لڑائی || اثر
گلیڈی ایٹر |... |
ناقابل معافی
زولینڈر ||
ونڈر لینڈ
کرسمس |+------------------------+30
قطاریں سیٹ
میں (0.07 سیکنڈ)
کوہن
تشخیص کے آرڈر
کو واضح کرتے
ہیں: آپ سائنس
فائی یا فیملی
کیٹیگری سے
فلمیں چاہتے
ہیں ، لیکن ان
سب کو پی جی
ریٹڈ ہونے کی
ضرورت ہے۔
کوہن کے
استعمال کے
ساتھ ، تشخیص
کے آرڈر کو تبدیل
کرنا ممکن ہے۔
یہ
دیکھنے کا سب
سے آسان طریقہ
یہ ہے کہ یہ کس
طرح کام کرتا
ہے حساب کتاب
کے ساتھ
کھیلنا:
>
ایس ای
ایل ٹی
(
2
+
2
)
*
3
۔
+---------+| (2+2)*3 |+---------+| سیٹ
میں 12 |+---------+1 قطار (0.00
سیکنڈ)
>
ایس ایل
ای سی ٹی
2
+
2
*
3
۔
+-------+| 2+2*3 |+-------+| سیٹ
میں 8 |+-------+1 قطار (0.00
سیکنڈ)
نوٹ
تشخیص
کرنے کے لئے
سب سے مشکل
مسائل میں سے
ایک ایک سوال
ہے جو نحو کی
غلطیوں کے
بغیر چل رہا ہے
، لیکن یہ
توقع سے مختلف
اقدار واپس کر
رہا ہے۔
اگرچہ
کوہن اے این
ڈی آپریٹر کو
متاثر نہیں
کرتے ہیں ،
لیکن او آر
آپریٹر ان سے
نمایاں طور پر
متاثر ہوتا
ہے۔
مثال کے
طور پر، اس
بیان کے نتائج
پر غور کریں:
mysql
>
SELECT
*
from
sakila
.
وہ شہر
جہاں
city_id
=
3
->
یا
city_id
=
4
اور
country_id
=
60
۔
+---------+-----------+------------+---------------------+|
city_id | شہر | country_id | last_update
|+---------+-----------+------------+---------------------+| 3 | ابو ظہبی
| 101 | 2006-02-15 04:45:25
|| 4 | Acua | 60 | 2006-02-15 04:45:25
|+---------+-----------+------------+---------------------+2
قطاریں سیٹ (0.00
سیکنڈ)
اگر ہم
آپریٹرز کے
آرڈر کو تبدیل
کرتے ہیں تو،
ہم ایک مختلف
نتیجہ حاصل
کریں گے:
mysql
>
SELECT
*
from
sakila
.
وہ شہر
جہاں
country_id
=
60
->
اور
city_id
=
3
یا
city_id
=
4
۔
+---------+------+------------+---------------------+|
city_id | شہر | country_id | last_update |+---------+------+------------+---------------------+| 4 | Acua | 60 | 2006-02-15 04:45:25
|+---------+------+------------+---------------------+1 قطار
سیٹ (0.00 سیکنڈ)
کوہن کا
استعمال
سوالات کو
سمجھنے میں
بہت آسان
بنادیتا ہے
اور اس امکان
کو بڑھاتا ہے
کہ آپ کو وہ
نتائج ملیں گے
جن کی آپ توقع
کر رہے ہیں۔
ہم سفارش
کرتے ہیں کہ
جب بھی کوئی
موقع ہو کہ MySQL آپ
کے ارادے کی
غلط تشریح کر
سکتا ہے تو آپ
کوہن کا
استعمال
کریں۔ MySQL کے
پوشیدہ تشخیص
ی آرڈر پر
بھروسہ کرنے
کی کوئی اچھی
وجہ نہیں ہے۔
انری این
او ٹی
آپریٹر بولین
بیان کی نفی
کرتا ہے۔
اس سے
پہلے ہم نے
تمام زبانوں
کو 2 کے
برابر نہ
ہونے والی language_id کی
فہرست دینے کی
مثال دی تھی۔
آپ یہ
سوال این او
ٹی آپریٹر کے
ساتھ بھی لکھ
سکتے
ہیں:
ssql
>
Slect
language_id
,
نام
ساکیلا
سے
.
زبان
>
جہاں
نہیں
(
language_id
=
2
)؛
+-------------+----------+| language_id |
نام |+-------------+----------+| 1 |
انگریزی || 3 | جاپانی
|| 4 |
مینڈارن || 5 |
فرانسیسی || 6 | سیٹ
میں جرمن |+-------------+----------+
5 قطاریں (0.01
سیکنڈ)
کوہن میں
اظہار ، (language_id = 2)، شرط
کو میچ کرنے
کے لئے دیتا
ہے، اور این
او ٹی
آپریشن اس کی
نفی کرتا ہے،
لہذا آپ کو ان
نتائج کے
علاوہ سب کچھ
مل جاتا ہے جو
حالت سے مطابقت
رکھتے ہیں.
اس کے
علاوہ بھی کئی
طریقے ہیں جن
سے آپ اسی خیال کے
ساتھ کہاں کی
شق لکھ سکتے
ہیں۔
باب 5
میں ،
آپ دیکھیں گے
کہ کچھ دوسروں
کے مقابلے میں
بہتر
کارکردگی
رکھتے ہیں۔
نوٹ اور
کوہن کا
استعمال کرتے
ہوئے ایک اور
مثال پر غور
کریں۔
فرض کریں
کہ آپ 7 سے کم
ایف آئی ڈی کے
ساتھ تمام
فلموں کے
عنوانات کی
فہرست حاصل کرنا
چاہتے ہیں ،
لیکن ان کی
تعداد 4 یا 6
نہیں ہے۔
آپ
مندرجہ ذیل
سوال کے ساتھ
ایسا کر سکتے
ہیں:
>
ایس ایل
ای سی ٹی
ایف آئی
ڈی
،
film_list
سے
عنوان
جہاں
ایف آئی
ڈی
<
7
اور
نہیں
(
ایف آئی
ڈی
=
4
یا
ایف آئی
ڈی
=
6
)؛
+------+------------------+| فیڈ |
عنوان |+------+------------------+| 1 |
اکیڈمی
ڈائناسور || 2 | اے سی
ای گولڈ فنگر
|| 3 |
موافقت کے
سوراخ ||
5 | افریقی
انڈے |+------+------------------+4
قطاریں سیٹ
میں (0.06 سیکنڈ)
آپریٹر
کی ترجیحات کو
سمجھنا تھوڑا
مشکل ہوسکتا
ہے ، اور بعض
اوقات ڈی بی
اے کو کسی
سوال کو ڈی بگ
کرنے اور اس
بات کی
نشاندہی کرنے
میں کافی وقت
لگتا ہے کہ یہ
درخواست کردہ
اقدار کو واپس
کیوں نہیں
کررہا ہے۔
مندرجہ
ذیل فہرست
دستیاب
آپریٹرز کو سب
سے زیادہ
ترجیح سے لے
کر سب سے کم
درجے تک
دکھاتی ہے۔
آپریٹرز
جو ایک لائن
پر ایک ساتھ
دکھائے جاتے ہیں
ان کی ایک ہی
ترجیح ہوتی
ہے:
فاصلہ
بائنری، کولیٹ
!
-
(غیر معمولی
مائنس)، ~ (غیر رسمی
بٹ انورژن)
^
*, /, DIV, ٪, MO
-,+
<<،
>>
&
\|
=
(موازنہ)، < =>، >=،
>،
<=،
<،
<>،
!=،
آئی ایس، لائک، ریگسپ، آئی این، ممبر آف
درمیان، کیس، کب، پھر، اور
نہیں
اور، &&
XOR
یا، \|\\
=
(تفویض)، :=
مطلوبہ
نتائج حاصل
کرنے کے لئے
ان آپریٹرز کو
مختلف طریقوں
سے جوڑنا ممکن
ہے۔
مثال کے
طور پر ، آپ
کسی بھی فلم
کے عنوانات حاصل
کرنے کے لئے
ایک سوال لکھ
سکتے ہیں جس
کی قیمت $ 2 اور $ 4
کے درمیان ہے
، دستاویزی یا
ہارر زمرے سے تعلق
رکھتے ہیں ،
اور باب نام
کا ایک اداکار
ہے:
film_list
>
>
جہاں
قیمت 2 سے
4
>
کے
درمیان
ہوتی ہے
اور
(
کیٹیگری
'
ڈاکیومینٹری'
یا
کیٹیگری
جیسے
'ہارر'
)
سے
>
>
اور
اداکار
'
٪Bob٪ ''
۔
+------------------+|
عنوان |+------------------+|
سیٹ میں
ایڈپٹیشن
ہولز |+------------------ +1 قطار
(0.08 سیکنڈ)
آخر میں ،
اس سے پہلے کہ
ہم چھانٹی کی
طرف بڑھیں ،
نوٹ کریں کہ
ایسے سوالات
کو انجام دینا
ممکن ہے جو
کسی بھی نتائج
سے میل نہیں
کھاتے ہیں۔
اس صورت
میں ، سوال
ایک خالی سیٹ
واپس کرے گا:
film_list >> سے
منتخب
عنوان
جہاں
قیمت
2
سے
4
->
کے
درمیان
ہے اور
(
زمرے
'دستاویزی
فلم' یا
کیٹیگری
جیسے
'ہارر'
)
- >
اور
اداکار
جیسے
'٪گریپپا٪'
؛
خالی
سیٹ (0.04 سیکنڈ)
ہم نے اس
بات پر تبادلہ
خیال کیا ہے
کہ کالموں کا
انتخاب کیسے
کیا جائے اور
سوال کے نتیجے
کے حصے کے طور
پر کون سی
قطاریں واپس
کی جائیں ، لیکن
یہ کنٹرول
نہیں کیا جائے
کہ نتیجہ کس
طرح ظاہر ہوتا
ہے۔
رشتہ دار
ڈیٹا بیس میں
، ٹیبل میں
قطاریں ایک سیٹ
تشکیل دیتی
ہیں۔ قطاروں
کے درمیان
کوئی داخلی
ترتیب نہیں ہے
، لہذا ہمیں MySQL
سے نتائج کو ترتیب
دینے کے لئے
کہنا ہوگا اگر
ہم انہیں کسی خاص
ترتیب میں
چاہتے ہیں۔
یہ سیکشن
وضاحت کرتا ہے
کہ ایسا کرنے
کے لئے آرڈر
بائی
شق کو کس طرح
استعمال کیا
جائے۔
چھانٹی
اس بات پر اثر
انداز نہیں
ہوتی ہے کہ
کیا واپس کیا
جاتا ہے؛ یہ
صرف اس بات پر
اثر انداز
ہوتا ہے کہ
نتائج کس
ترتیب میں
واپس کیے جاتے
ہیں۔
اشارہ کرنا
MySQL میں انو
ڈی بی ٹیبلز
میں ایک خاص
انڈیکس ہوتا ہے
جسے کلسٹر
انڈیکس کہا
جاتا ہے جو
قطار کے اعداد
و شمار کو
اسٹور کرتا
ہے۔
جب آپ
ٹیبل پر
بنیادی کلید
کی وضاحت کرتے
ہیں تو ، انو
ڈی بی اسے
کلسٹر انڈیکس
کے طور پر استعمال
کرتا ہے۔
فرض کریں
کہ آپ بنیادی
کلید کی بنیاد
پر سوالات پر
عملدرآمد کر
رہے ہیں۔
اس صورت
میں ، قطاروں
کو بنیادی
کلید کے ذریعہ
چڑھتے ہوئے
ترتیب میں
واپس کردیا
جائے گا۔
تاہم ، اگر آپ
کسی خاص حکم
کو نافذ کرنا
چاہتے ہیں تو
ہم ہمیشہ آرڈر
بائی شق
استعمال کرنے
کی سفارش کرتے
ہیں۔
فرض کریں
کہ آپ سکیلا
ڈیٹا بیس میں
پہلے 10 گاہکوں
کی ایک فہرست
واپس کرنا
چاہتے ہیں ، جسے
نام کے لحاظ
سے حروف تہجی
کے مطابق
ترتیب دیا گیا
ہے۔
یہاں آپ
کیا ٹائپ کریں
گے:
customer_list
>
آرڈر
سے
>
ایل
آئی ایم
ٹی
10
>
نام
۔
+-------------------+| نام
|+-------------------+| ہارون
سیلبی || ایڈم
گوچ || ایڈرین کلیری
|| ایگنس بشپ ||
ایلن کاہن ||
البرٹ کروس ||
البرٹو ہیننگ
|| الیکس گریشم ||
الیگزینڈر
فینل || الفریڈ
کاسیلاس |+-------------------+10
قطاریں سیٹ
میں (0.01 سیکنڈ)
آرڈر
بائی
شق اس بات کی
نشاندہی کرتی
ہے کہ چھانٹی
کی ضرورت ہے ،
اس کے بعد
کالم ہے جسے
ترتیب کی کلید
کے طور پر
استعمال کیا
جانا چاہئے۔
اس مثال
میں ، آپ حروف
تہجی کے لحاظ
سے چڑھتے ہوئے
ترتیب میں نام
کے لحاظ سے
درجہ بندی کر
رہے ہیں - پہلے
سے طے شدہ قسم
کیس غیر حساس
اور بڑھتی
ہوئی ترتیب
میں ہے ، اور
مائی ایس کیو
ایل خود بخود
حروف تہجی کے
مطابق ترتیب
دیتا ہے کیونکہ
کالم حروف کی
تاریں ہیں۔
تاروں کو
ترتیب دینے کا
طریقہ اس
کردار کے سیٹ
اور کولیشن
آرڈر سے طے
ہوتا ہے جو
استعمال کیا
جارہا ہے۔
ہم ان پر "کولیشن
اور کریکٹر
سیٹس" میں
تبادلہ خیال کرتے
ہیں۔
اس کتاب
کے زیادہ تر
حصے کے لئے،
ہم فرض کرتے ہیں
کہ آپ پہلے سے
طے شدہ
ترتیبات
استعمال کر رہے
ہیں.
آئیے ایک
اور مثال
دیکھتے ہیں۔
اس بار ،
آپ last_update کالم کی
بنیاد پر
ایڈریس ٹیبل
سے آؤٹ پٹ کو
بڑھتے ہوئے
ترتیب میں
ترتیب دیں گے اور صرف
پہلے پانچ
نتائج
دکھائیں گے:
>
ایل ای سی
ایل ٹی
ایڈریس
،
حد
5
کے
ذریعہ
ایڈریس
>
آرڈر
سے
last_update last_update
۔
+-----------------------------+---------------------+|
ایڈریس | last_update |
+-----------------------------+---------------------+| 1168
نجف آباد پارک
وے | 2014-09-25 22:29:59 || 1031 ڈوگا
ویپلز پارک وے
| 2014-09-25 22:29:59 || 1924
شیمونوسکی
ڈرائیو | 2014-09-25 22:29:59 || 757
رسٹن برگ
ایونیو | 2014-09-25----------------------
-----------------------------22:30:01 ||
جیسا کہ
آپ دیکھ سکتے
ہیں، مختلف
قسم کے کالموں
کو ترتیب دینا
ممکن ہے.
اس کے
علاوہ، ہم دو
یا زیادہ
کالموں کے
ساتھ چھانٹی
کو کمپاؤنڈ
کرسکتے ہیں.
مثال کے
طور پر ، فرض
کریں کہ آپ
پتوں کو حروف
تہجی کے مطابق
ترتیب دینا
چاہتے ہیں ،
لیکن ضلع کے
لحاظ سے گروپ
کیا گیا ہے:
>
سلیکٹ
ایڈریس،
ضلع
سے
پتہ
>
ترتیب
بلحاظ
ضلع
، پتہ
؛
+----------------------------------------+----------------------+|
پتہ | ضلع
|+----------------------------------------+----------------------+| 1368
ماراکابو بلیوارڈ
| || 18
ڈوئسبرگ
بلیوارڈ | || 962
ٹاما لوپ | || 535
احمد نگر منور
| ابوظہبی || 669
فیروز آباد
لوپ | ابو ظہبی |
- 1078 اسٹارا
زگورہ ڈرائیو
| آچے || 663 بہاء
بلانکا پارک
وے | اڈانا || 842
سالزبرگ لین |
اڈانا || 614 پاک
کریٹ اسٹریٹ |
ادیس ابیبہ || 751
لیما لوپ | عدن ||
1157 نیری لوپ | ایڈیجیا
|| 387
میگاواٹ-ڈیٹو
ڈرائیو | آہل || 775 ostka
Drive | الدقالیہ || ...
|| - 1416 سان خوان
بوٹسٹا
ٹکسٹیپیک
ایونیو | ظفر || 138
کراکس
بلیوارڈ |
زولیا
|+----------------------------------------+----------------------+603
قطاریں سیٹ
میں (0.00 سیکنڈ)
آپ اترتے
ہوئے ترتیب
میں بھی ترتیب
دے سکتے ہیں ،
اور آپ ہر قسم
کی کلید کے
لئے اس طرز
عمل کو کنٹرول
کرسکتے ہیں۔
فرض کریں
کہ آپ حروف
تہجی کی ترتیب
سے پتوں کو ترتیب
دینا چاہتے
ہیں اور اضلاع
کو چڑھتے ہوئے
ترتیب میں
ترتیب دینا
چاہتے ہیں۔
آپ یہ
ٹائپ کریں گے:
>
ایل ای
ایل ٹی
ایڈریس
،
ضلع
اے ایس سی
کی
طرف
سے
ایڈریس
>
آرڈر
،
ڈی ای ایس
سی->
ایل آئی
ایم ٹی
10
کا
پتہ؛
+-------------------------+-------------+|
ایڈریس | ضلع
|+-------------------------+-------------+| 962 ٹاما
لوپ | || 18
ڈوئسبرگ
بلیوارڈ | || 1368
ماراکابو بلیوارڈ
| || 669 فیروز
آباد لوپ |
ابوظہبی || 535
احمد نگر منور
| ابوظہبی || 1078
اسٹارا زگورہ
ڈرائیو | آچے || 842
سالزبرگ لین |
اڈانا || 663 بہاء
بلانکا پارک
وے | اڈانا || 614
پاک کریٹ
اسٹریٹ | ادیس
ابیبہ || 751 لیما
لوپ | عدن
|+-------------------------+-------------+10 قطاریں
سیٹ میں (0.01
سیکنڈ)
اگر
اقدار کا
ٹکراؤ ہوتا ہے
اور آپ کسی
اور قسم کی
کلید کی وضاحت
نہیں کرتے ہیں
تو ، ترتیب غیر
واضح ہے۔
یہ آپ کے
لئے اہم نہیں
ہوسکتا ہے. آپ
کو اس آرڈر کی
پرواہ نہیں
ہوسکتی ہے جس
میں ایک ہی
نام کے ساتھ
دو گاہک "جان
اے" ہیں۔
اسمتھ"
ظاہر ہوتا ہے.
اگر آپ اس
معاملے میں
کسی خاص حکم
کو نافذ کرنا
چاہتے ہیں تو
، آپ کو آرڈر
بائی شق میں
مزید کالم
شامل کرنے کی
ضرورت ہے ،
جیسا کہ پچھلی
مثال میں
دکھایا گیا
ہے۔
جیسا کہ
آپ نے نوٹ کیا
ہوگا ، پچھلے
سوالات میں سے
کچھ نے حد کی
شق کا استعمال
کیا ہے۔
یہ ایک
مفید غیر
معیاری ایس
کیو ایل بیان
ہے جو آپ کو یہ
کنٹرول کرنے
کی اجازت دیتا
ہے کہ کتنی
قطاریں آؤٹ پٹ
ہیں۔
اس کا
بنیادی فارم
آپ کو سلیکٹ
اسٹیٹمنٹ سے
واپس آنے والی
قطاروں کی
تعداد کو
محدود کرنے کی
اجازت دیتا ہے ، جو
اس وقت مفید
ہوتا ہے جب آپ
کسی نیٹ ورک
یا آؤٹ پٹ پر
اسکرین پر
منتقل کردہ
ڈیٹا کی مقدار
کو محدود کرنا
چاہتے ہیں۔
مثال کے
طور پر ، آپ
اسے کسی جدول
سے ڈیٹا کا نمونہ
حاصل کرنے کے
لئے استعمال
کرسکتے ہیں ،
جیسا کہ یہاں
دکھایا گیا
ہے:
حد
10
> customer_list سے
ایس ای
ایل ای سی
کا نام
؛
+------------------+| نام
|+------------------+| ویرا
میککوئے ||
ماریو چیٹھم ||
جوڈی گرے || جون
کیرول ||
انتھونی شواب
|| کلاڈ ہرزوگ ||
مارٹن بیلز |
| بوبی بوڈریو ||
ولی مارکھم ||
اردن
آرچولیٹا |+------------------+
حد کی شق
میں دو
دلائل ہوسکتے
ہیں۔
اس
معاملے میں ،
پہلی دلیل
واپسی کے لئے
پہلی قطار کی
وضاحت کرتی ہے
، اور دوسری
واپسی کے لئے
زیادہ سے
زیادہ قطاروں
کی وضاحت کرتی
ہے۔
پہلی
دلیل کو آفسیٹ
کے نام سے
جانا جاتا ہے۔
فرض کریں
کہ آپ پانچ
قطاریں چاہتے
ہیں ، لیکن آپ
پہلی پانچ
قطاروں کو
چھوڑنا چاہتے
ہیں ، جس کا
مطلب ہے کہ
نتیجہ چھٹی
قطار سے شروع
ہوگا۔
حد کے
لئے ریکارڈ
آفسیٹ 0 سے شروع
ہوتا ہے ،
لہذا آپ یہ
مندرجہ ذیل
طریقے سے
کرسکتے ہیں:
customer_list حد
5,5
سے
>
ایل ای سی
ٹی
کا نام۔
+------------------+| نام
|+------------------+| کلاڈ
ہرزوگ || مارٹن
بیلز || بوبی
بوڈریو || ولی
مارکھم || اردن
آرکولیٹا |+------------------+5
قطاریں سیٹ
میں (0.00 سیکنڈ)
آؤٹ پٹ
سلیکٹ سوال سے
قطار 6 سے 10 تک
ہے ۔
ایک
متبادل نحو ہے
جو آپ محدود
مطلوبہ الفاظ
کے لئے دیکھ
سکتے ہیں: حد 10، 5
لکھنے کے
بجائے
، آپ لمیٹ
10 آفسیٹ 5 لکھ
سکتے ہیں۔
آفسیٹ
نحو اس
میں بیان
کردہ این
اقدار
کو خارج
کرتا
ہے۔
یہاں ایک
مثال ہے جس
میں کوئی
آفسیٹ نہیں
ہے:
>
ایلیکٹ
آئی ڈی
،
customer_list->
آرڈر
سے آئی
ڈی
حد
10
کا
نام
؛
+----+------------------+| ID | نام
|+----+------------------+| 1 |
میری سمتھ || 2 | پیٹریشیا
جانسن || 3
| لنڈا ولیمز || 4 | باربرا
جونز || 5 |
الزبتھ براؤن
|| 6 |
جینیفر ڈیوس || 7 | ماریہ
ملر || 8 |
سوسن ولسن | 9 |
مارگریٹ مور || 10 |
ڈوروتھی ٹیلر
|+----+------------------+10 قطاریں
سیٹ میں (0.00
سیکنڈ)
اور یہاں 5
کے آفسیٹ کے
ساتھ نتائج
ہیں:
customer_list
>
>آرڈر
سے
نام
بذریعہ
آئی
ڈی
حد 10
آفسیٹ
5
؛
+----+----------------+| ID | نام
|+----+----------------+| 6 |
جینیفر ڈیوس || 7 | ماریہ
ملر || 8 |
سوسن ولسن | 9 |
مارگریٹ مور || 10 |
ڈوروتھی ٹیلر
|| 11 | لیزا
اینڈرسن || 12 | نینسی
تھامس || 13 | کیرن
جیکسن || 14 | بیٹی
وائٹ || 15 | ہیلن ہیرس
|+----+----------------+10 قطاریں
سیٹ میں (0.01
سیکنڈ)
اب تک ہم
اپنے سلیکٹ
سوالات میں
صرف ایک ٹیبل کے
ساتھ کام کر
رہے ہیں ۔
تاہم ،
زیادہ تر
معاملات کو
ایک ہی وقت
میں ایک سے
زیادہ ٹیبل سے
معلومات کی
ضرورت ہوگی۔
جیسا کہ
ہم نے سکیلا
ڈیٹا بیس میں
جدولوں کی
تلاش کی ہے ،
یہ واضح ہو
گیا ہے کہ
تعلقات کا استعمال
کرکے ، ہم
مزید دلچسپ
سوالات کا
جواب دے سکتے
ہیں۔
مثال کے
طور پر ، یہ
جاننا مفید
ہوگا کہ ہر
شہر کس ملک
میں ہے۔
یہ سیکشن
آپ کو دکھاتا
ہے کہ دو
جدولوں کو جوڑ
کر اس طرح کے
سوالات کا
جواب کیسے دیا
جائے۔
ہم باب 5
میں شامل ہونے
کے بارے میں
ایک طویل ، زیادہ
جدید بحث کے
حصے کے طور پر
اس مسئلے پر
واپس آئیں گے۔
ہم اس باب
میں صرف ایک
جوائن نحو
استعمال کرتے
ہیں۔
دو اور
(بائیں اور دائیں
جوائن) ہیں ، اور
ہر ایک آپ کو
دو یا زیادہ
جدولوں سے
ڈیٹا اکٹھا
کرنے کا ایک
مختلف طریقہ
فراہم کرتا ہے۔
یہاں ہم
جو نحو
استعمال کرتے
ہیں وہ اندرونی
جوائن ہے
، جو روزمرہ
کی سرگرمیوں
میں سب سے
زیادہ استعمال
ہوتا ہے۔
آئیے ایک
مثال دیکھیں ،
اور پھر ہم اس
بارے میں مزید
وضاحت کریں گے
کہ یہ کیسے
کام کرتا ہے:
>
منتخب
شہر
،
اندرون
شہر
سے
ملک >
شہر
میں شامل
ہوں
.
country_id
=
ملک
country_id
>
کہاں
ملک
.
country_id
<
5
->
بلحاظ
ملک
،
شہر
;
+----------+----------------+| شہر |
ملک |+----------+----------------+|
کابل |
افغانستان ||
بٹنہ | الجزائر
|| بچر | الجزائر ||
Skikda | الجزائر || Tafuna |
امریکی ساموا
|| بینگیلا |
انگولا || Namibe |
انگولا |+----------+----------------+7
قطاریں سیٹ
میں (0.00 سیکنڈ)
پیداوار 5 سے کم country_id والے
ہر ملک کے
شہروں کو ظاہر
کرتی ہے۔
آپ پہلی
بار دیکھ سکتے
ہیں کہ ہر ملک
میں کون سے
شہر ہیں.
اندرونی
شمولیت کیسے
کام کرتی ہے ؟ بیان
کے دو حصے ہیں:
پہلا، دو جدول
کے نام اندرونی
مطلوبہ الفاظ
سے الگ کیے
گئے ہیں؛ اور
دوسرا، او این
مطلوبہ الفاظ
جو شرط کو
ترتیب دینے کے
لئے مطلوبہ
کالموں کی
وضاحت کرتا
ہے.
اس مثال
میں ، شامل
ہونے والے دو
جدول شہر اور ملک
ہیں ، جن کا
اظہار شہر
اندرونی
جوائن ملک
کے طور پر کیا
جاتا ہے
(بنیادی اندرونی
شمولیت کے لئے
، اس
سے کوئی فرق
نہیں پڑتا ہے
کہ آپ ٹیبلز
کو کس ترتیب
میں درج کرتے
ہیں ، لہذا ملک
کے اندرونی
جوائن شہر کا
استعمال کرنے سے
ایک ہی اثر
پڑے گا)۔
او این شق (او
این city.country_id = country.country_id) وہ
جگہ ہے جہاں
ہم MySQL کو وہ کالم
بتاتے ہیں جو
جدولوں کے
درمیان تعلق
رکھتے ہیں؛ آپ
کو ہمارے ڈیزائن
اور باب 2 میں
ہماری پچھلی
بحث سے یہ یاد رکھنا
چاہئے۔
اگر
جوائن کی حالت
میں میچنگ کے
لئے استعمال ہونے
والے دونوں
جدولوں میں
کالم کے نام
ایک جیسے ہیں
تو ، آپ اس کے
بجائے
استعمال کی شق
استعمال
کرسکتے
ہیں:
(country_id
)
>
>
کہاں
ملک
کا
استعمال کرتے
ہوئے
شہر
سے
>
ملک شامل
ہوں۔
country_id
<
5
->
بلحاظ
ملک
،
شہر
;
+----------+----------------+| شہر |
ملک |+----------+----------------+|
کابل |
افغانستان ||
بٹنہ | الجزائر
|| بچر | الجزائر ||
Skikda | الجزائر || Tafuna |
امریکی ساموا
|| بینگیلا |
انگولا || Namibe |
انگولا |
سیٹ میں +----------+----------------+7
قطاریں (0.01
سیکنڈ)
تصویر 3-1 میں
وین ڈایاگرام اندرونی
جوڑ کی وضاحت
کرتا ہے۔
سلیکٹ
چھوڑنے سے
پہلے ، ہم آپ
کو ان افعال
میں سے ایک کا
ذائقہ دیں گے
جو آپ مجموعی
اقدار کے لئے
استعمال
کرسکتے ہیں۔
فرض
کریں کہ آپ
شمار کرنا
چاہتے ہیں کہ
ہمارے ڈیٹا
بیس میں اٹلی
کے کتنے شہر
ہیں۔
آپ دو
میزوں کو جوڑ
کر اور اس country_id کے
ساتھ قطاروں کی
تعداد گن کر
ایسا کرسکتے
ہیں۔
یہ کس طرح
کام کرتا ہے:
>
منتخب
کاؤنٹ
(
1
)
اندرون
شہر
سے
ملک
> شہر
میں شامل
ہوں
۔
country_id
=
ملک
country_id
>
کہاں
کا ملک
.
country_id
=
49
->
قانب
ملک
،
شہر
;
+----------+| گنتی (1)
|+----------+| 7 |
سیٹ میں +---------- +1
قطار (0.00 سیکنڈ)
ہم باب 5
میں سلیکٹ اور
مجموعی افعال کی
مزید خصوصیات
کی وضاحت کرتے ہیں۔
کاؤنٹ ()
فنکشن کے
بارے میں مزید
جاننے کے لئے ،
"مجموعی
افعال"
دیکھیں۔
جدولوں
میں نیا
ڈیٹا شامل
کرنے کے لئے
انسرٹ بیان استعمال
کیا جاتا ہے۔
یہ سیکشن
اس کے بنیادی
نحو کی وضاحت
کرتا ہے اور
کچھ آسان
مثالوں کے
ذریعے چلتا ہے
جو سکیلا ڈیٹا
بیس میں نئی
قطاریں شامل
کرتے ہیں ۔
باب 4
میں ،
ہم موجودہ
جدولوں یا
بیرونی ڈیٹا
ذرائع سے ڈیٹا
لوڈ کرنے کے
طریقے پر
تبادلہ خیال
کریں گے۔
ڈیٹا
داخل کرنا عام
طور پر دو
صورتوں میں
ہوتا ہے: جب آپ
اپنا ڈیٹا بیس
بناتے وقت ایک
بڑے بیچ میں
بلک لوڈ کرتے
ہیں ، اور جب
آپ ڈیٹا بیس
استعمال کرتے
وقت ایڈہاک
بنیاد پر ڈیٹا
شامل کرتے
ہیں۔
MySQL میں ، ہر
صورتحال کے
لئے سرور میں
مختلف آپٹیمائزیشن
بنائے جاتے
ہیں۔
اہم بات
یہ ہے کہ
دونوں صورتوں
میں سرور کے
ساتھ کام کرنا
آپ کے لئے
آسان بنانے کے
لئے مختلف ایس
کیو ایل نحو
دستیاب ہیں۔
ہم اس
سیکشن میں
بنیادی انسرٹ
نحو کی وضاحت
کریں گے اور آپ
کو بلک اور
سنگل ریکارڈ
داخل کرنے کے
لئے اسے
استعمال کرنے
کی مثالیں
دکھائیں گے۔
آئیے
زبان کے جدول
میں ایک نئی
قطار داخل
کرنے کے
بنیادی کام سے
شروع کرتے
ہیں ۔
ایسا
کرنے کے لئے،
آپ کو میز کی
ساخت کو سمجھنے
کی ضرورت ہے.
جیسا کہ
ہم نے "سکیلا
ڈیٹا بیس کا
استعمال کرتے
ہوئے"
میں وضاحت کی
ہے ، آپ اسے شو
کالمز کے
بیان کے ساتھ
تلاش کرسکتے ہیں:
>
زبان
سے
کالم
دکھائیں
۔
+-------------+-------------------+------+-----+-------------------+...|
میدان | قسم |
صفر | کلید |
پہلے سے طے شدہ
|...+-------------+-------------------+------+-----+-------------------+...|
language_id | چھوٹا سا
دستخط شدہ |
نہیں | پی آر
آئی | نول |.... | نام |
چار(20) | نہیں | | نول |.... |
last_update | ٹائم
اسٹیمپ | نہیں
| | CURRENT_TIMESTAMP
|...+-------------+-------------------+------+-----+-------------------+......+-----------------------------------------------+...|
اضافی |...+-----------------------------------------------+...
| auto_increment |....
|...| اپ ڈیٹ CURRENT_TIMESTAMP
پر DEFAULT_GENERATED |...+-----------------------------------------------
+3 قطاریں سیٹ
میں (0.00 سیکنڈ)
یہ آپ کو
بتاتا ہے کہ language_id کالم
خود کار طریقے
سے تیار ہوتا
ہے ، اور جب بھی
اپ ڈیٹ آپریشن
ہوتا ہے تو last_update
کالم کو اپ
ڈیٹ
کیا
جاتا ہے۔
آپ باب 4
میں اگلے
دستیاب شناخت
کنندہ کو خود
بخود تفویض
کرنے کے لئے
AUTO_INCREMENT شارٹ کٹ کے
بارے میں مزید
سیکھیں گے۔
آئیے
پرتگالی زبان
کے لئے ایک
نئی قطار شامل
کرتے ہیں۔
ایسا
کرنے کے دو
طریقے ہیں.
سب سے عام
بات یہ ہے کہ MySQL
کو language_id کے لئے
پہلے سے طے شدہ
قیمت کو پر
کرنے دیں،
جیسے:
میسکل
>
زبان کی
قدروں
میں
انسرٹ
(
نول
،
'پرتگالی'
،
اب
())؛
Query OK, 1 row
متاثر (0.10 سیکنڈ)
اگر آپ
ابھی ٹیبل پر
سلیکٹ پر عمل
کرتے ہیں تو ، ہم
دیکھیں گے کہ MySQL
نے قطار داخل
کی ہے:
زبان
سے
>
سلیکٹ
*
؛
+-------------+------------+---------------------+|
language_id | نام | last_update |+-------------+------------+---------------------+| 1 |
انگریزی | 2006-02-15 05:02:19 || 2 | اطالوی
| 2006-02-15 05:02:19 || 3 |
جاپانی | 2006-02-15 05:02:19 || 4 |
مینڈارن | 2006-02-15 05:02:19 || 5 |
فرانسیسی | 2006-02-15 05:02:19
|| 6 |
جرمن | 2006-02-15 05:02:19 || 7 |
پرتگالی | 2020-09-26 09:11:36
|+-------------+------------+---------------------+7
قطاریں سیٹ (0.00
سیکنڈ)
نوٹ کریں
کہ ہم نے last_update کالم میں
فنکشن ناؤ ()
استعمال کیا۔
اب () فنکشن MySQL
سرور کی
موجودہ تاریخ
اور وقت واپس
کرتا ہے۔
دوسرا
آپشن دستی طور
پر language_id کالم کی
قیمت داخل کرنا
ہے ۔
اب جبکہ
ہمارے پاس
پہلے ہی سات
زبانیں ہیں ،
ہمیں language_id کی
اگلی قدر کے
لئے 8 کا
استعمال کرنا
چاہئے۔
ہم اس ایس
کیو ایل
ہدایات کے
ساتھ اس کی
تصدیق کرسکتے
ہیں:
زبان
سے
>
سلیکٹ
میکس
(
language_id
)
؛
+------------------+|
زیادہ سے
زیادہ (language_id) |+------------------+| سیٹ
میں 7 |+------------------+1 قطار
(0.00 سیکنڈ)
میکس ()
فنکشن آپ کو
پیرامیٹر کے
طور پر فراہم
کردہ کالم کی
زیادہ سے
زیادہ قیمت
بتاتا ہے۔
یہ زبان
سے سلیکٹ language_id
استعمال کرنے
سے زیادہ
صاف ہے ،
جو تمام
قطاروں کو
پرنٹ کرتا ہے
اور آپ کو زیادہ
سے زیادہ قیمت
تلاش کرنے کے
لئے ان کا معائنہ
کرنے کی ضرورت
ہوتی ہے۔
آرڈر
بائی
اور لمیٹ شق
شامل کرنے سے یہ
آسان ہوجاتا
ہے ، لیکن میکس ()
کا استعمال ڈی ای
ایس سی لمیٹ 1
کے ذریعہ زبان
کے آرڈر سے منتخب
language_id سے کہیں
زیادہ آسان ہے
، جو
اسی جواب کو
واپس language_id ہے۔
اب ہم
قطار داخل
کرنے کے لئے
تیار ہیں۔
اس انسرٹ
میں ، ہم دستی
طور پر بھی
last_update ویلیو داخل
کرنے جارہے
ہیں ۔
>
زبان کی
قدروں
میں
انسرٹ
(
8
،
'روسی'
،
'2020-09-26 10:35:00'
)؛
Query OK, 1 row
متاثر (0.02 سیکنڈ)
MySQL رپورٹ
کرتا ہے کہ
ایک قطار
متاثر ہوئی ہے
(اس معاملے
میں شامل کی
گئی ہے)، جس کی
ہم جدول کے
مندرجات کو
دوبارہ چیک
کرکے تصدیق کرسکتے
ہیں:
زبان
سے
>
سلیکٹ
*
؛
+-------------+------------+---------------------+|
language_id | نام | last_update |+-------------+------------+---------------------+| 1 |
انگریزی | 2006-02-15 05:02:19 || 2 | اطالوی
| 2006-02-15 05:02:19 || 3 |
جاپانی | 2006-02-15 05:02:19 || 4 |
مینڈارن | 2006-02-15 05:02:19 || 5 |
فرانسیسی | 2006-02-15 05:02:19
|| 6 |
جرمن | 2006-02-15 05:02:19 || 7 |
پرتگالی | 2020-09-26 09:11:36 || 8 | روسی |
2020-09-26 10:35:00 |+-------------+------------+---------------------+8
قطاریں سیٹ
میں (0.00 سیکنڈ)
سنگل
قطار انسرٹ
اسٹائل
بنیادی کلیدی
نقلوں کا پتہ
لگاتا ہے اور
جیسے ہی اسے
تلاش کرتا ہے
رک جاتا ہے۔
مثال کے
طور پر ، فرض
کریں کہ ہم
اسی language_id کے ساتھ ایک
اور قطار داخل
کرنے کی کوشش
کرتے ہیں:
> زبان
کی
قدروں
میں آئی
این ایس
آر ٹی
(
8
،
'عربی'
،
'2020-09-26 10:35:00'
)؛
غلطی
1062 (23000): کلیدی
'زبان' کے لئے
ڈپلیکیٹ
اندراج '8'۔
پرائمری'
جب یہ ڈپلیکیٹ
کلید کا پتہ
لگاتا ہے تو
انسرٹ آپریشن
رک جاتا ہے۔
اگر آپ
چاہیں تو غلطی
کو روکنے کے
لئے نظر انداز
کرنے کی شق
شامل کرسکتے
ہیں ، لیکن
نوٹ کریں کہ
قطار اب بھی
داخل نہیں کی
جائے گی:
>
آئی این
ایس آر ٹی
زبان
کی
قدروں کو
نظر
انداز کرتا
ہے
(8
،
'عربی'
،
'2020-09-26 10:35:00'
)؛
سوال
ٹھیک ہے، 0 قطاریں
متاثر، 1
انتباہ (0.00
سیکنڈ)
زیادہ تر
معاملات میں
آپ ممکنہ
مسائل کے بارے
میں جاننا
چاہیں گے ،
حالانکہ (آخر
کار ، بنیادی
چابیاں منفرد
سمجھی جاتی
ہیں ) ، لہذا یہ نظر
انداز
نحو شاذ و
نادر ہی
استعمال ہوتا
ہے۔
ایک ہی
وقت میں متعدد
اقدار داخل
کرنا بھی ممکن
ہے:
>
زبان کی
قدروں
میں
انسرٹ
(
نول
،
'ہسپانوی'
،
اب
())،
>
(
نول
،
'عبرانی'
،
اب
())؛
سوال
ٹھیک ہے، 2
قطاریں متاثر
(0.02 سیکنڈ)
ریکارڈ: 2 نقلیں:
0 انتباہ: 0
نوٹ کریں
کہ مائی ایس
کیو ایل بڑے
پیمانے پر داخل
ہونے کے نتائج
کو سنگل
انسریشن سے
مختلف طریقے
سے رپورٹ کرتا
ہے۔
پہلی
لائن آپ کو
بتاتی ہے کہ
کتنی قطاریں
داخل کی گئیں
، جبکہ دوسری
لائن میں پہلا
اندراج آپ کو
بتاتا ہے کہ
اصل میں کتنی
قطاریں (یا
ریکارڈ) پر
عمل کیا گیا
تھا۔
اگر آپ انسرٹ
نظر انداز کا
استعمال کرتے
ہیں
اور ڈپلیکیٹ
ریکارڈ داخل
کرنے کی کوشش
کرتے ہیں (جس
کے لئے بنیادی
کلید موجودہ
قطار سے میل کھاتی
ہے) تو مائی
ایس کیو ایل
خاموشی سے اسے
داخل کرنا
چھوڑ دے گا
اور اسے دوسری
لائن پر دوسری
انٹری میں نقل
کے طور پر
رپورٹ کرے گا:
>
آئی این
ایس آر ٹی
زبان
کی
قدروں کو
نظر
انداز کرتا
ہے
(
9
،
'پرتگالی'
،
اب
())،
(
11
،
'عبرانی'
،
'اب
())؛
سوال
ٹھیک ہے، 1
قطار متاثر، 1
انتباہ (0.01
سیکنڈ) ریکارڈ:
2 نقل: 1 انتباہ: 1
ہم
انتباہ کی
وجوہات پر
تبادلہ خیال
کرتے ہیں ، جو
باب 4 میں آؤٹ
پٹ کی دوسری
لائن پر تیسری
انٹری کے طور
پر دکھایا گیا
ہے۔
پچھلے
سیکشن میں
دکھائے گئے
ویلیوز نحو کے
متعدد
متبادل موجود
ہیں۔
یہ سیکشن
ان کے ذریعے
چلتا ہے اور
ہر ایک کے فوائد
اور نقصانات
کی وضاحت کرتا
ہے.
اگر آپ اس
بنیادی نحو سے
خوش ہیں جو ہم
نے اب تک بیان
کیا ہے اور
کسی نئے موضوع
پر آگے بڑھنا
چاہتے ہیں تو
، "ڈیلیٹ
اسٹیٹمنٹ" پر
آگے بڑھنے کے
لئے آزاد
محسوس کریں۔
ہم جو
ویلیوز نحو
استعمال کر
رہے ہیں اس کے
کچھ فوائد ہیں
: یہ سنگل
اور بلک
انسرٹس دونوں
کے لئے کام
کرتا ہے ، اگر
آپ تمام
کالموں کے لئے
اقدار فراہم
کرنا بھول
جاتے ہیں تو
آپ کو غلطی کا
پیغام ملتا ہے
، اور آپ کو
کالم کے ناموں
میں ٹائپ کرنے
کی ضرورت نہیں
ہے۔
تاہم ، اس
کے کچھ
نقصانات بھی
ہیں: آپ کو
کالموں کی
ترتیب کو یاد
رکھنے کی
ضرورت ہے ، آپ
کو ہر کالم کے
لئے ایک قدر
فراہم کرنے کی
ضرورت ہے ، اور
نحو بنیادی
جدول کی ساخت
سے قریب سے
منسلک ہے۔
یعنی ،
اگر آپ جدول
کی ساخت کو
تبدیل کرتے
ہیں تو ، آپ کو
داخل بیانات
کو تبدیل کرنے
کی ضرورت ہے ۔
خوش
قسمتی سے ، ہم
نحو کو تبدیل
کرکے ان نقصانات
سے بچ سکتے
ہیں۔
فرض کریں
کہ آپ جانتے
ہیں کہ اداکار کی میز پر
چار کالم ہیں
، اور آپ کو ان
کے نام یاد
ہیں ، لیکن آپ
ان کا حکم
بھول گئے ہیں۔
آپ
مندرجہ ذیل
نقطہ نظر کا
استعمال کرتے
ہوئے ایک قطار
داخل کرسکتے
ہیں:
>
اداکار
(
actor_id
، first_name
،
last_name
،
last_update
)
- >
والیوز
(
این یو
ایل
،
'ونیسیئس'
،
'گریپپا'
،
ناؤ
())؛
Query OK, 1 row
متاثر (0.03 سیکنڈ)
کالم کے
نام جدول کے
نام کے بعد
کوہن میں شامل
کیے جاتے ہیں
، اور ان
کالموں میں
ذخیرہ کردہ اقدار
کو ویلیوز
مطلوبہ الفاظ
کے بعد کوہن
میں درج کیا
جاتا
ہے۔
لہذا ، اس
مثال میں ،
ایک نئی قطار
تشکیل دی جاتی
ہے ، اور قیمت 201 کو actor_id
کے طور پر
ذخیرہ کیا
جاتا ہے (یاد
رکھیں ، actor_id میں
auto_increment کی
خصوصیت ہے) ،
ونیسیئس کو first_name کے طور پر
ذخیرہ کیا
جاتا ہے ،
گریپا
کو last_name کے طور
پر ذخیرہ کیا
جاتا ہے ، اور last_update کالم
موجودہ ٹائم
اسٹیمپ کے
ساتھ آباد
ہوتا ہے۔
اس نحو کے
فوائد یہ ہیں
کہ یہ پڑھنے
کے قابل اور
لچکدار ہے
(تیسرے نقصان
کو حل کرنے کے
لئے جو ہم نے
بیان کیا ہے)
اور ترتیب سے
آزاد (پہلے
نقصان کو حل
کرنا).
بوجھ یہ
ہے کہ آپ کو
کالم کے نام
جاننے اور انہیں
ٹائپ کرنے کی
ضرورت ہے۔
یہ نیا
نحو آسان نقطہ
نظر کے دوسرے
نقصان کو بھی
حل کرسکتا ہے -
یعنی ، یہ آپ
کو صرف کچھ
کالموں کے لئے
اقدار داخل
کرنے کی اجازت
دے سکتا ہے۔
یہ
سمجھنے کے لئے
کہ یہ کس طرح
مفید ہوسکتا
ہے، آئیے شہر
کی میز کو
تلاش کریں :
میسکل>
ڈی ای ایس
سی
شہر
۔
+------------- +----------------------+------+-----+-------------------+...|
میدان | قسم |
صفر | کلید | طے
شدہ |...+-------------+----------------------+------+-----+-------------------+...|
city_id | (5) غیر دستخط
شدہ | نہیں | پی
آر آئی | نول |.... | شہر
| ورچر(50) | نہیں | | نول |.... | country_id
| (5) غیر دستخط شدہ
| نہیں | ایم یو
ایل | نول |.... | last_update |
ٹائم اسٹیمپ |
نہیں | |
CURRENT_TIMESTAMP
|...+-------------+----------------------+------+-----+-------------------+......+-----------------------------------------------+...|
اضافی
|...+-----------------------------------------------+... | auto_increment |
...|
|...|
|...| اپ ڈیٹ CURRENT_TIMESTAMP
پر |....سیٹ میں
----------------------------------------------- +
4 قطاریں (0.00
سیکنڈ)
نوٹ کریں
کہ last_update کالم میں
CURRENT_TIMESTAMP کی ڈیفالٹ
ویلیو ہے۔
اس کا
مطلب یہ ہے کہ
اگر آپ last_update کالم
کے لئے کوئی قدر
داخل نہیں
کرتے ہیں تو ، MySQL
پہلے سے طے
شدہ طور پر
موجودہ تاریخ
اور وقت داخل
کرے گا۔
یہ وہی ہے
جو ہم چاہتے
ہیں: جب ہم
کوئی ریکارڈ اسٹور
کرتے ہیں، تو
ہم تاریخ اور
وقت کی جانچ پڑتال
کرنے اور اسے
ٹائپ کرنے کی
زحمت نہیں اٹھانا
چاہتے ہیں.
آئیے ایک
نامکمل
اندراج داخل
کرنے کی کوشش
کرتے ہیں:
>
شہر
(
شہر
،
country_id
)
اقدار
(
'بیبیڈورو'
،
19
)؛
Query OK, 1 row
متاثر (0.00 سیکنڈ)
ہم نے city_id
کالم کے لئے
کوئی قیمت
مقرر نہیں کی تھی ،
لہذا MySQL اسے
اگلی دستیاب
قیمت (auto_increment پراپرٹی
کی وجہ سے) پر
ڈیفالٹ کرتا
ہے ، اور
last_update
موجودہ تاریخ
اور وقت کو
اسٹور کرتا
ہے۔
آپ اسے
ایک سوال کے
ساتھ چیک کر
سکتے ہیں:
میسکل
>
سلیکٹ
*
اس شہر
سے
جہاں
شہر
'بیبیڈورو'
کی
طرح
ہے۔
+---------+-----------+------------+---------------------+|
city_id | شہر | country_id | last_update
|+---------+-----------+------------+---------------------+| 601 | Bebedouro | 19 | 2021-02-27 21:34:08 |+---------+-----------+------------+---------------------+1
قطار سیٹ (0.01
سیکنڈ)
آپ اس
نقطہ نظر کو
بڑے پیمانے پر
داخل کرنے کے لئے
بھی استعمال
کرسکتے ہیں ،
جیسا کہ
مندرجہ ذیل
ہے:
>
آئی این
ایس آر ٹی
ان
سٹی
(
شہر
،
country_id
)
اقدار
- >
(
'ساؤ
کارلوس'
،
19
)،
->
(
'آراکورا'
،
19
)،
->
(
'ریبیرو
پریٹو'
،
19
)؛
سوال
ٹھیک ہے، 3
قطاریں متاثر
(0.00 سیکنڈ)
ریکارڈ: 3 نقل: 0
انتباہ: 0
کالم کے
ناموں کو یاد
رکھنے اور
ٹائپ کرنے کی ضرورت
کے علاوہ ، اس
نقطہ نظر کا
ایک نقصان یہ ہے
کہ آپ حادثاتی
طور پر کالموں
کے لئے اقدار کو
چھوڑ سکتے
ہیں۔
MySQL حذف شدہ
کالموں کو
پہلے سے طے
شدہ اقدار پر
سیٹ کرے گا۔
MySQL جدول کے
تمام کالموں
میں نول کی
ڈیفالٹ ویلیو
ہوتی ہے ، جب
تک کہ ٹیبل
بنانے یا
ترمیم کرنے پر
ایک اور
ڈیفالٹ ویلیو
واضح طور پر
تفویض نہ کی
جائے۔
جب آپ کو
جدول کالموں
کے لئے پہلے
سے طے شدہ اقدار
استعمال کرنے
کی ضرورت ہو
تو ، آپ ڈیفالٹ
مطلوبہ الفاظ
(MySQL 5.7 اور اس کے
بعد کی حمایت
یافتہ)
استعمال
کرنا چاہیں
گے۔
یہاں ایک
مثال ہے جو
ڈیفالٹ کا
استعمال کرتے
ہوئے ملک کی
جدول میں ایک
قطار شامل
کرتی ہے:
>ملک
ویلیوز
میں
آئی این
ایس ای آر ٹی
(
نول
،
'یوراگوئے'
،
ڈیفالٹ
)؛
Query OK, 1 row
متاثر (0.01 سیکنڈ)
مطلوبہ
الفاظ ڈیفالٹ مائی
ایس کیو ایل
کو اس کالم کے
لئے ڈیفالٹ ویلیو
استعمال کرنے
کے لئے کہتا
ہے ، لہذا
موجودہ تاریخ
اور وقت ہماری
مثال میں داخل
کیا گیا ہے۔
اس نقطہ
نظر کے فوائد
یہ ہیں کہ آپ
پہلے سے طے شدہ
اقدار کے ساتھ
بلک انسرٹ کی
خصوصیت
استعمال
کرسکتے ہیں ،
اور آپ غلطی
سے کسی کالم
کو کبھی نہیں
چھوڑ سکتے
ہیں۔
ایک اور
متبادل داخل
نحو
ہے ۔
اس نقطہ
نظر میں ، آپ
کالم کے ناموں
اور اقدار کو
ایک ساتھ درج
کرتے ہیں ،
لہذا آپ کو
کالموں کی
پچھلی فہرست
میں اقدار کی
فہرست کو ذہنی
طور پر نقشہ
بنانے کی
ضرورت نہیں
ہے۔
یہاں ایک
مثال ہے جو
ملک کی میز پر
ایک نئی قطار
شامل کرتی ہے :
ملک
میں
آئی این
ایس ای آر ٹی
>
country_id country_id
این
یو ایل
،
>
ملک
=
'بہاماس'
،
last_update
=
ناؤ
()؛
Query OK, 1 row
متاثر (0.01 سیکنڈ)
نحو میں
آپ کو ٹیبل کا
نام ، مطلوبہ
الفاظ ایس
ای ٹی ،
اور پھر کالم
کے مساوی قدر
کے جوڑے درج
کرنے کی ضرورت
ہوتی ہے ، جو
کوما کے ذریعہ
الگ ہوتے ہیں۔
جن
کالموں کے لئے
اقدار فراہم
نہیں کی جاتی
ہیں وہ ان کی
طے شدہ اقدار
پر سیٹ کیے
جاتے ہیں۔
ایک بار
پھر ، نقصانات
یہ ہیں کہ آپ
حادثاتی طور
پر کالموں کے
لئے اقدار کو
چھوڑ سکتے ہیں
اور آپ کو
کالم کے ناموں
کو یاد رکھنے
اور ٹائپ کرنے
کی ضرورت ہے۔
ایک اہم
اضافی نقصان
یہ ہے کہ آپ اس
طریقہ کار کو
بڑے پیمانے پر
داخل کرنے کے
لئے استعمال
نہیں کرسکتے
ہیں۔
آپ کسی
سوال سے واپس
کی گئی اقدار
کا استعمال کرتے
ہوئے بھی داخل
کرسکتے ہیں۔
ہم باب 7
میں اس پر بحث
کرتے ہیں.
DELETE بیان کو جدول سے
ایک یا زیادہ
قطاروں کو
ہٹانے کے لئے
استعمال کیا
جاتا ہے۔
ہم یہاں
سنگل ٹیبل حذف
کی وضاحت کرتے
ہیں اور باب 7
میں ملٹی ٹیبل
حذف پر تبادلہ
خیال کرتے ہیں
- جو ایک بیان
کے ذریعہ دو
یا دو سے
زیادہ جدولوں
سے ڈیٹا کو
ہٹاتے ہیں۔
DELETE کا سب سے
آسان استعمال ٹیبل
میں تمام
قطاروں کو
ہٹانا ہے۔
فرض کریں
کہ آپ اپنے
کرایہ کی میز
خالی کرنا چاہتے
ہیں ۔
آپ اس کے
ساتھ ایسا کر
سکتے ہیں:
کرایہ
سے
>
ڈی ایل ای
ٹی
۔
سوال
ٹھیک ہے، 16044
قطاریں متاثر
ہوئیں (2.41 سیکنڈ)
ڈیلیٹ نحو
میں کالم کے
نام شامل نہیں
ہیں کیونکہ یہ
پوری قطاروں
کو ہٹانے کے
لئے استعمال
ہوتا ہے نہ کہ
صرف قطار سے
اقدار کو۔
قطار میں
کسی قدر کو ری
سیٹ کرنے یا
ترمیم کرنے کے
لئے ، آپ اپ
ڈیٹ اسٹیٹمنٹ
کا استعمال
کرتے ہیں ، جو
"اپ ڈیٹ
اسٹیٹمنٹ"
میں بیان کیا
گیا ہے۔
نوٹ کریں
کہ ڈیلیٹ بیان
خود ٹیبل کو
نہیں ہٹاتا
ہے۔
مثال کے
طور پر ،
کرایہ کے جدول
میں تمام قطاروں
کو حذف کرنے
کے بعد
، آپ اب بھی
جدول سے پوچھ
گچھ کرسکتے
ہیں:
کرایہ
سے
>
ایس ایل
ای سی ٹی
*
؛
خالی
سیٹ (0.00 سیکنڈ)
آپ اس کی
ساخت کو بیان
کریں یا تخلیق
کریں ٹیبل کا
استعمال کرتے
ہوئے تلاش
کرنا جاری رکھ
سکتے
ہیں ،
اور انسرٹ کا
استعمال کرتے
ہوئے نئی
قطاریں داخل
کرسکتے ہیں۔
جدول کو
ہٹانے کے لئے
، آپ باب 4 میں بیان
کردہ ڈراپ
بیان استعمال
کرتے ہیں۔
نوٹ کریں
کہ اگر جدول
کا کسی دوسرے
جدول کے ساتھ
تعلق ہے تو ،
غیر ملکی
کلیدی رکاوٹ
کی وجہ سے حذف
ناکام ہوسکتا
ہے:
زبان
سے
>
حذف
۔
غلطی
1451 (23000): والدین کی
قطار کو حذف
یا اپ ڈیٹ
نہیں کرسکتا:
ایک غیر ملکی
کلید ناکام ہو
جاتی ہے
('سکیلا'.'فلم'،
رکاوٹ 'fk_film_language' غیر
ملکی کلید ('language_id')
حوالہ جات
'زبان' ('language_id') اپ ڈیٹ
کیسکیڈ پر)
اگر آپ نے
پچھلے سیکشن
میں قطاروں کو
حذف کیا ہے تو
، "اینٹیٹی
ریلیشن شپ
ماڈلنگ
مثالیں" میں
ہدایات پر عمل
کرکے اب اپنے سکیلا
ڈیٹا بیس کو
دوبارہ لوڈ
کریں۔
آپ کو اس
سیکشن میں
مثالوں کے لئے
کرایہ
کے جدول میں
بحال کردہ
قطاروں کی
ضرورت ہوگی۔
ایک یا
ایک سے زیادہ
قطاروں کو
ہٹانے کے لئے
، لیکن ٹیبل
میں تمام
قطاریں نہیں ،
ڈبلیو
ایچ اے کی شق
کا استعمال
کریں۔
یہ اسی
طرح کام کرتا
ہے جیسے یہ
سلیکٹ کے لئے
کرتا ہے۔
مثال کے
طور پر ، فرض
کریں کہ آپ 10 سے کم rental_id کے
ساتھ کرایہ
کی میز سے
تمام قطاروں
کو ہٹانا
چاہتے ہیں۔
آپ اس کے
ساتھ ایسا کر
سکتے ہیں:
کرایہ
سے
>
rental_id
<
10
;
Query OK, 9
قطاریں متاثر
(0.01 سیکنڈ)
اس کا
نتیجہ یہ ہوتا
ہے کہ معیار
سے مطابقت رکھنے
والی نو
قطاریں ہٹا دی
جاتی ہیں۔
اب فرض
کریں کہ آپ
میری اسمتھ
نامی گاہک سے
تمام
ادائیگیوں کو
ڈیٹا بیس سے
ہٹانا چاہتے
ہیں۔
سب سے
پہلے ، اندرونی
جوائن
کا استعمال
کرتے ہوئے گاہک اور ادائیگی کے
جدولوں کے ساتھ ایک
سلیکٹ انجام
دیں (جیسا کہ
"جوائننگ ٹو
ٹیبلز"
میں بیان کیا
گیا ہے):
first_name
>
last_name
،
گاہک
.
ادائیگی
سے customer_id
>
payment_date
کسٹمر >
آن
کسٹمر
میں شامل
ہوں
۔
customer_id
=
ادائیگی
customer_id
>
کہاں
first_name
'مریم'
کی طرح
اور >
اسمتھ
' کی طرح
last_name
۔
+------------ +-----------+-------------+--------+---------------------+|
first_name | last_name | customer_id | رقم | payment_date
|+------------+-----------+-------------+--------+---------------------+
| مریم | سمتھ | 1 |
2.99 | 2005-05-25 11:30:37 || مریم |
سمتھ |
1 | 0.99 | 2005-05-28 10:35:23
|| مریم | سمتھ | 1 |
5.99 | 2005-06-15 00:54:12 || مریم |
سمتھ |
1 | 0.99 | 2005-06-15 18:02:53
|... مریم | سمتھ | 1 |
1.99 | 2005-08-22 01:27:57 || مریم |
سمتھ | 1 |
2.99 | 2005-08-22 19:41:37 || مریم |
سمتھ |
1 | 5.99 | 2005-08-22 20:03:46
|+------------+-----------+-------------+--------+---------------------+32
قطاریں سیٹ (0.00
سیکنڈ)
اگلا ، ادائیگی کے
جدول سے 1 کے customer_id
کے ساتھ قطار
کو ہٹانے کے
لئے درج ذیل
DELETE
آپریشن
انجام
دیں:
ادائیگی
سے
> ڈی
ایل ای ٹی
جہاں
customer_id
=
1
؛
سوال
ٹھیک ہے، 32
قطاریں متاثر
ہوئیں (0.01 سیکنڈ)
آپ DELETE کے
ساتھ آرڈر
بائی اور محدود
شقیں استعمال کرسکتے
ہیں۔
آپ عام
طور پر ایسا
کرتے ہیں جب
آپ حذف کردہ
قطاروں کی
تعداد کو
محدود کرنا
چاہتے ہیں۔
مثال کے
طور پر:
10000
>
حد
کے ذریعہ
ادائیگی
customer_id
آرڈر
سے
ڈی لیٹ
؛
Query OK, 10000
قطاریں متاثر
ہوئیں (0.22 سیکنڈ)
اشارہ کرنا
کارکردگی
کے مسائل کی
وجہ سے ہم
قطاروں کے چھوٹے
سیٹوں کے لئے
ڈیلیٹ اور اپ
ڈیٹ آپریشنز
کا استعمال
کرنے کی
انتہائی
سفارش کرتے
ہیں۔
مناسب
قیمت ہارڈ
ویئر پر منحصر
ہوتی ہے ،
لیکن انگوٹھے
کا ایک اچھا
اصول فی بیچ
تقریبا 20،000-40،000 قطاریں
ہیں۔
اگر آپ
ٹیبل میں تمام
قطاروں کو
ہٹانا چاہتے ہیں
تو ، انہیں DELETE
کے ساتھ ہٹانے
سے کہیں زیادہ
تیز طریقہ ہے۔
جب آپ ٹرانکٹ
ٹیبل
بیان استعمال
کرتے ہیں تو ، MySQL
ٹیبل کو
چھوڑنے ، ٹیبل
ڈھانچے کو
ہٹانے اور پھر
انہیں دوبارہ
تخلیق کرنے کا
شارٹ کٹ لیتا
ہے۔
جب ایک
میز میں بہت
ساری قطاریں
ہوتی ہیں تو ، یہ
بہت تیز ہوتا
ہے۔
نوٹ
تجسس کے
طور پر ، MySQL 5.6 میں
ایک بگ موجود
ہے جو اس وقت
مائی ایس کیو
ایل کو روک
سکتا ہے جب
مائی ایس کیو
ایل کو ایک
بڑے انوڈ بی
بفر پول (200 جی بی
یا اس سے
زیادہ) کے
ساتھ تشکیل
دیا جاتا ہے۔
تفصیلات
کے لئے بگ
رپورٹ
دیکھیں۔
اگر آپ
ادائیگی کے
جدول میں
موجود تمام
ڈیٹا کو ہٹانا
چاہتے ہیں تو ، آپ
اسے انجام دے
سکتے ہیں:
>
ٹی
آر ٹی
ٹیبل
کی
ادائیگی
؛
Query OK, 0
قطاریں متاثر
(0.07 سیکنڈ)
نوٹ کریں
کہ متاثرہ
قطاروں کی
تعداد صفر کے
طور پر دکھائی
گئی ہے:
آپریشن کو تیز
کرنے کے لئے، مائی
ایس کیو ایل
حذف شدہ
قطاروں کی
تعداد کی گنتی
نہیں کرتا ہے،
لہذا دکھایا
گیا نمبر حذف شدہ
قطاروں کی اصل
تعداد کی
عکاسی نہیں
کرتا ہے۔
ٹرانکٹ
ٹیبل بیان بہت
سے طریقوں سے ڈیلیٹ
سے مختلف ہے
، لیکن یہ کچھ
قابل ذکر ہے:
ٹرانکٹ آپریشنز
ڈراپ اور ٹیبل
کو دوبارہ
تخلیق کریں ،
جو قطاروں کو
ایک ایک کرکے
حذف کرنے سے
کہیں زیادہ
تیز ہے ، خاص
طور پر بڑے
ٹیبلوں کے
لئے۔
ٹرانکٹ آپریشنز
ایک پوشیدہ
عزم کا سبب
بنتے ہیں ، لہذا
آپ انہیں واپس
نہیں لے سکتے
ہیں۔
اگر
سیشن میں ایک
فعال ٹیبل لاک
ہے تو آپ
ٹرانک
آپریشنز
انجام نہیں دے
سکتے
ہیں۔
جدول کی
اقسام ، لین
دین ، اور
لاکنگ پر باب 5
میں تبادلہ
خیال کیا گیا
ہے۔
ان میں سے
کوئی بھی حدود
عملی طور پر
زیادہ تر ایپلی
کیشنز کو
متاثر نہیں
کرتی ہیں ،
اور آپ اپنی
پروسیسنگ کو
تیز کرنے کے
لئے ٹرانکیٹ
ٹیبل کا
استعمال
کرسکتے ہیں۔
یقینا ،
باقاعدہ
آپریشن کے
دوران پورے
جدولوں کو حذف
کرنا عام نہیں
ہے۔
ایک
استثنا عارضی
جدول ہے جو
کسی خاص صارف
سیشن کے لئے سوالات
کے نتائج کو
عارضی طور پر
اسٹور کرنے کے
لئے استعمال
ہوتا ہے ، جسے
اصل ڈیٹا
کھوئے بغیر
حذف کیا
جاسکتا ہے۔
اپ ڈیٹ
بیان ڈیٹا کو
تبدیل کرنے کے
لئے استعمال
کیا جاتا ہے۔
اس
سیکشن میں ،
ہم آپ کو
دکھاتے ہیں کہ
ایک ہی جدول
میں ایک یا
زیادہ قطاروں
کو اپ ڈیٹ
کرنے کا
طریقہ۔
"اپ
ڈیٹس" میں
ملٹی ٹیبل اپ
ڈیٹس پر
تبادلہ خیال
کیا گیا ہے۔
اگر آپ نے
اپنے سکیلا
ڈیٹا بیس سے
قطاریں حذف کردی
ہیں تو
، جاری رکھنے
سے پہلے اسے دوبارہ
لوڈ کریں۔
اپ ڈیٹ
بیان کا سب سے
آسان استعمال ٹیبل
میں تمام
قطاروں کو
تبدیل کرنا ہے۔
فرض کریں
کہ آپ کو تمام
ادائیگیوں
کے لئے
10٪ شامل کرکے
ادائیگی ٹیبل
کے رقم کالم
کو اپ ڈیٹ
کرنے کی ضرورت
ہے۔
آپ اس پر
عمل درآمد
کرکے یہ کر
سکتے ہیں:
میری
ایس کیو ایل
>
یو پی ڈیٹ
ادائیگی
کی رقم
=
رقم
*
1
.
1
;
سوال
ٹھیک ہے، 16025
قطاریں متاثر
ہوئیں، 16025
وارننگز (0.41
سیکنڈ) قطاریں
میچ ہوئیں: 16049
تبدیل شدہ: 16025
انتباہ: 16025
نوٹ کریں
کہ ہم last_update
اسٹیٹس کو اپ
ڈیٹ کرنا بھول
گئے
ہیں۔
اسے
متوقع ڈیٹا
بیس ماڈل کے
ساتھ ہم آہنگ
بنانے کے لئے
، آپ مندرجہ
ذیل بیان چلا
کر اسے ٹھیک کرسکتے
ہیں:
mysql
>
upDate
ادائیگی
سیٹ
last_update
=
'2021-02-28 17:53:00'
؛
سوال
ٹھیک ہے، 16049
قطاریں متاثر
ہوئیں (0.27 سیکنڈ)
قطاریں میچ
ہوئیں: 16049 تبدیل
شدہ: 16049 انتباہ: 0
اشارہ کرنا
آپ
عملدرآمد کے
موجودہ ٹائم
اسٹیمپ کے
ساتھ last_update
کالم
کو اپ ڈیٹ
کرنے کے لئے ناؤ ()
فنکشن کا
استعمال
کرسکتے ہیں۔
مثال کے
طور پر:
مائی
ایس کیو ایل
>
یو پی ڈیٹ
ادائیگی
سیٹ
last_update
=
اب
()؛
اپ ڈیٹ
بیان کے
ذریعہ رپورٹ
کی گئی دوسری
قطار بیان کے
مجموعی اثر کو
ظاہر کرتی ہے۔
ہماری
مثال میں، آپ
دیکھتے ہیں:
قطاریں
میچ: 16049 تبدیل: 16049
انتباہ: 0
پہلا
کالم ان
قطاروں کی
تعداد کی
اطلاع دیتا ہے
جو میچ کے طور
پر بازیافت کی
گئی تھیں؛ اس
معاملے میں،
چونکہ کوئی
کہاں
یا حد کی شق
نہیں ہے ،
لہذا ٹیبل میں
موجود تمام
قطاریں سوال
سے مطابقت
رکھتی ہیں۔
دوسرے
کالم میں
بتایا گیا ہے
کہ کتنی
قطاروں کو
تبدیل کرنے کی
ضرورت ہے ، جو
ہمیشہ ان
قطاروں کی
تعداد کے
برابر یا اس
سے کم ہوتی ہے
جو میل کھاتی
ہیں۔
اگر آپ
بیان کو
دہراتے ہیں تو
، آپ کو ایک
مختلف نتیجہ
نظر آئے گا:
mysql
>
upDate
ادائیگی
سیٹ
last_update
=
'2021-02-28 17:53:00'
؛
سوال
ٹھیک ہے، 0
قطاریں متاثر
(0.07 سیکنڈ)
قطاریں میچ: 16049
تبدیل شدہ: 0
انتباہ: 0
اس بار،
چونکہ تاریخ
پہلے ہی 2021-02-28 17:53:00
مقرر کی گئی
ہے اور کہاں
کوئی شرط نہیں
ہے ،
تمام قطاریں
اب بھی سوال
سے مطابقت رکھتی
ہیں لیکن کوئی
بھی تبدیل
نہیں کیا گیا
ہے.
یہ بھی
نوٹ کریں کہ
تبدیل شدہ
قطاروں کی
تعداد ہمیشہ
متاثر ہونے
والی قطاروں
کی تعداد کے
برابر ہوتی ہے
، جیسا کہ آؤٹ
پٹ کی پہلی
لائن پر بتایا
گیا ہے۔
اکثر ، آپ
ٹیبل میں تمام
قطاروں کو
تبدیل نہیں
کرنا چاہتے
ہیں۔
اس کے
بجائے ، آپ
ایک یا ایک سے
زیادہ قطاروں
کو اپ ڈیٹ
کرنا چاہتے
ہیں جو کسی
شرط سے میل
کھاتے ہیں۔
سلیکٹ اور ڈیلیٹ
کی
طرح ، ٹاسک کے لئے
جہاں
کی شق استعمال
ہوتی ہے۔
اس کے
علاوہ ، اسی
طرح جیسے
ڈیلیٹ کے ساتھ
،
آپ آرڈر بائی اور لمیٹ کو
ایک ساتھ
استعمال
کرسکتے ہیں
تاکہ یہ کنٹرول
کیا جاسکے کہ
آرڈر کردہ
فہرست سے کتنی
قطاروں کو اپ
ڈیٹ کیا گیا
ہے۔
آئیے ایک
مثال کی کوشش
کرتے ہیں جو
ٹیبل میں ایک
قطار میں
ترمیم کرتی
ہے۔
فرض کریں
کہ اداکارہ
پینیلوپ
گینیس نے اپنا
آخری نام
تبدیل کر لیا
ہے۔
ڈیٹا بیس
کے اداکار
ٹیبل میں اسے
اپ ڈیٹ کرنے
کے لئے ، آپ کو
عمل درآمد
کرنے کی ضرورت
ہے:
> یو
پی ڈیٹ
اداکار
سیٹ
last_name
=
اپر
(
'کروز'
)
->
>> اور
last_name
جیسے '
گینیس'
جیسے first_name
۔
سوال
ٹھیک ہے، 1
قطار متاثر (0.01
سیکنڈ) قطاریں
میچ: 1 تبدیل
شدہ: 1 انتباہ: 0
جیسا کہ
توقع تھی ،
مائی ایس کیو
ایل نے ایک قطار
سے میچ کیا
اور ایک قطار
کو تبدیل
کردیا۔
یہ
کنٹرول کرنے
کے لئے کہ
کتنی تازہ
کاریاں ہوتی
ہیں ، آپ آرڈر
بائی
اور
لمیٹ کا
امتزاج
استعمال کرسکتے
ہیں:
یو
پی
ڈیٹ
> ادائیگی
سیٹ
last_update
=
اب
()
حد
10
؛
سوال
ٹھیک ہے، 10
قطاریں متاثر
(0.01 سیکنڈ)
قطاریں میچ: 10
تبدیل شدہ: 10 انتباہ:
0
ڈیلیٹ کی
طرح ، آپ ایسا
کریں گے
کیونکہ آپ یا
تو چھوٹے حصوں
میں آپریشن
انجام دینا
چاہتے ہیں یا
صرف کچھ قطاروں
میں ترمیم
کرنا چاہتے
ہیں۔
یہاں ، آپ
دیکھ سکتے ہیں
کہ 10 قطاروں کو
میچ اور تبدیل
کیا گیا تھا۔
پچھلا
سوال بھی اپ
ڈیٹس کے ایک
اہم پہلو کی
وضاحت کرتا
ہے۔
جیسا کہ
آپ نے دیکھا
ہے ، اپ ڈیٹس
کے دو مراحل ہوتے
ہیں: ایک
میچنگ مرحلہ ،
جہاں قطاریں
پائی جاتی ہیں
جو کہاں کی
شق سے میل
کھاتی ہیں ، اور
ایک ترمیم کا
مرحلہ ، جہاں
قطاروں کو تبدیل
کرنے کی ضرورت
ہوتی ہے انہیں
اپ ڈیٹ کیا جاتا
ہے۔
ہم پہلے
ہی وضاحت کر
چکے ہیں کہ آپ ڈیٹا بیس
کی ساخت ، اس
کے جدولوں اور
جدول کالموں کے
بارے میں
معلومات حاصل
کرنے کے لئے
شو کمانڈ کا
استعمال کیسے
کرسکتے ہیں۔
اس
سیکشن میں ،
ہم سکیلا ڈیٹا
بیس کا
استعمال
کرتے ہوئے
مختصر مثالوں
کے ساتھ شو بیان
کی سب سے عام
اقسام کا
جائزہ لیں گے۔
مائی
ایس کیو شو
کمانڈ لائن
پروگرام وہی
افعال انجام
دیتا ہے جو
متعدد شو
کمانڈ ورژن
کرتے ہیں ،
لیکن آپ کو
مائی ایس کیو
ایل کلائنٹ
شروع کرنے کی
ضرورت کے
بغیر۔
شو ڈیٹا
بیس کا بیان
ان ڈیٹا بیسز کی
فہرست دیتا ہے
جن تک آپ
رسائی حاصل کرسکتے
ہیں۔
اگر آپ نے
"اینٹیٹی
ریلیشن شپ
ماڈلنگ
مثالوں" میں
ہمارے نمونہ
ڈیٹا بیس
انسٹالیشن کے
اقدامات کی
پیروی
کی ہے
اور "بینک
ڈیٹا بیس ای
آر ماڈل
بنانا" میں بینک
ماڈل
تعینات کیا ہے تو ، آپ کا
آؤٹ پٹ مندرجہ
ذیل ہونا
چاہئے:
>
شاؤ
ڈیٹا بیس
۔
+--------------------+| ڈیٹا
بیس |+--------------------+| information_schema |
| bank_model || ملازمین ||
performance_schema || سکیلا ||
سیس || دنیا |+--------------------+8
قطاریں سیٹ
میں (0.01 سیکنڈ)
یہ وہ
ڈیٹا بیس ہیں
جن تک آپ یو
ایس ای کمانڈ
کے ساتھ رسائی
حاصل کرسکتے
ہیں (باب 4
میں تبادلہ
خیال کیا گیا ہے)؛
اگر آپ کے پاس
اپنے سرور پر
دوسرے ڈیٹا بیس
تک رسائی کے
استحقاق ہیں
تو ، یہ بھی
درج کیے جائیں
گے۔
آپ صرف
ڈیٹا بیس دیکھ
سکتے ہیں جس
کے لئے آپ کے پاس
کچھ مراعات
ہیں ، جب تک کہ
آپ کے پاس
گلوبل شو
ڈیٹا بیس استحقاق
نہ ہو۔
آپ
مائی سکل شو
پروگرام کا
استعمال کرتے
ہوئے کمانڈ
لائن سے وہی
اثر حاصل
کرسکتے
ہیں:
$
mysqls -uroot -pmsandbox -h 127.0.0.1 -P 3306
آپ ڈیٹا
بیس دکھانے کے
لئے
لائیک
شق شامل
کرسکتے
ہیں۔
اگر آپ کے
پاس بہت سارے
ڈیٹا بیس ہیں
اور آؤٹ پٹ کے
طور پر ایک
مختصر فہرست
چاہتے ہیں تو
یہ مفید ہے۔
مثال کے
طور پر ، صرف
ڈیٹا بیس
دیکھنے کے لئے
جن کے نام ایس
سے شروع ہوتے ہیں
،
چلائیں:
>
ڈیٹا بیس
کی طرح
کا
٪
'
؛
+---------------+| ڈیٹا
بیس (s٪) |+---------------+|
سکیلا || سیٹ
میں |+---------------+2
قطاریں (0.00 سیکنڈ)
لائک بیان
کا نحو سلیکٹ
میں اس کے
استعمال سے
ملتا جلتا ہے۔
ڈیٹا بیس
بنانے کے لئے
استعمال ہونے
والے بیان کو
دیکھنے کے لئے
، آپ ڈیٹا بیس
بنائیں بیان
استعمال
کرسکتے ہیں ۔
مثال کے
طور پر ، یہ
دیکھنے کے لئے
کہ آپ نے سکیلا
کیسے بنایا ،
ٹائپ کریں:
mysql
>
و ڈیٹا
بیس
بنائیں
سکیلا
بنائیں
۔
1.
قطار ***************************
ڈیٹا بیس:
سکیلا کریٹ
ڈیٹا بیس:
ڈیٹا بیس 'سکیلا'
/*!40100 ڈیفالٹ
کریکٹر ایس ٹی
یو ٹی ایف 8 ایم
بی 4 کولیٹ utf8mb4_0900_ai_ci */
/*!80016 ڈیفالٹ
خفیہ کاری='N' */
1 قطار میں سیٹ
(0.00 سیکنڈ)
یہ شاید
سب سے کم
دلچسپ شو بیان
ہے؛ یہ صرف
بیان ظاہر
کرتا ہے.
تاہم ،
نوٹ کریں کہ
کچھ اضافی
تبصرے شامل
ہیں ، / * !
اور */:
40100 ڈیفالٹ
کریکٹر سیٹ utf8mb4 clate
utf8mb4_0900_ai_ci80016 ڈیفالٹ
خفیہ کاری='N'
ان
تبصروں میں MySQL
کے مخصوص
مطلوبہ الفاظ
شامل ہیں جو
ایسی ہدایات
فراہم کرتے
ہیں جو دوسرے
ڈیٹا بیس
پروگراموں کے
ذریعہ سمجھنے
کا امکان نہیں
ہے۔
MySQL کے
علاوہ ایک
ڈیٹا بیس سرور
اس تبصرہ متن
کو نظر انداز
کرے گا ، لہذا
نحو MySQL اور دیگر
ڈیٹا بیس سرور
سافٹ ویئر
دونوں کے
ذریعہ قابل
استعمال ہے۔
تبصرہ کے
آغاز میں
اختیاری نمبر
MySQL کے کم از کم ورژن
کی نشاندہی
کرتا ہے جو اس
خاص ہدایت پر
عمل کرسکتا ہے
(مثال کے طور
پر، 40100
ورژن 4.01.00 کی
نشاندہی کرتا
ہے)؛ MySQL کے پرانے
ورژن ایسی
ہدایات کو نظر
انداز کرتے
ہیں۔
آپ باب 4 میں
ڈیٹا بیس
بنانے کے بارے
میں سیکھیں گے۔
شو
ٹیبلز
بیان ڈیٹا بیس
میں جدولوں کی
فہرست دیتا
ہے۔
سکیلا میں
میزوں کو چیک
کرنے کے لئے،
ٹائپ کریں:
>
سکیلا
سے
ٹیبل
دیکھیں
۔
+----------------------------+| Tables_in_sakila |+----------------------------+|
اداکار || actor_info ||
ایڈریس || زمرہ ||
شہر |
| ملک || گاہک || customer_list ||
فلم || film_actor || film_category || film_list || film_text
|| انوینٹری ||
زبان || nicer_but_slower_film_list ||
ادائیگی ||
کرایہ || sales_by_film_category || sales_by_store
|| عملہ ||
سیٹ میں
|+----------------------------+23 قطاریں
(0.01 سیکنڈ)
اگر آپ
پہلے ہی یو
ایس ای سکیلا
کمانڈ کے ساتھ
سکیلا ڈیٹا
بیس منتخب کر
چکے ہیں تو ، آپ
شارٹ کٹ
استعمال کرسکتے
ہیں:
>
و
ٹیبلز
۔
آپ مائی
ایس کیو شو
پروگرام میں ڈیٹا
بیس کے نام کی
وضاحت کرکے
اسی طرح کا نتیجہ
حاصل کرسکتے ہیں:
$
mysqlsh -uroot -pmsandbox -h 127.0.0.1 -P 3306 sakla
شو ڈیٹا
بیس کی طرح ، آپ
ایسے جدول
نہیں دیکھ
سکتے ہیں جن
کے لئے آپ کے
پاس استحقاق
نہیں ہیں۔
اس کا
مطلب یہ ہے کہ
آپ ایسے ڈیٹا
بیس میں جدول نہیں
دیکھ سکتے ہیں
جس تک آپ
رسائی حاصل
نہیں کرسکتے
ہیں ، یہاں تک
کہ اگر آپ کے
پاس شو ڈیٹا
بیس
عالمی
استحقاق ہے۔
شو کالمز
کا بیان
ایک جدول میں
کالموں کی
فہرست دیتا
ہے۔
مثال کے
طور پر، ملک
کے کالموں کو
چیک کرنے کے لئے،
ٹائپ کریں:
>ملک
سے
کالم
دکھائیں
۔
1.
فیلڈ
*************************** قطار: country_id
قسم: چھوٹے سے
غیر دستخط شدہ
نول: کوئی
کلید نہیں: پی
آر آئی
ڈیفالٹ: نول
اضافی: auto_increment***************************
2.
فیلڈ
*************************** قطار: ملک
کی قسم: ورچر (50)
نول: کوئی کلید
نہیں: ڈیفالٹ:
نول اضافی:
*************************** 3.
فیلڈ
*************************** قطار: last_update
قسم: ٹائم
اسٹیمپ نول:
کوئی کلید:ڈیفالٹ:
CURRENT_TIMESTAMP اضافی: سیٹ
میں CURRENT_TIMESTAMP3
قطاروں کی تازہ
کاری پر DEFAULT_GENERATED (0.00
سیکنڈ)
آؤٹ پٹ
تمام کالموں
کے ناموں ، ان
کی اقسام اور
سائز کی اطلاع
دیتا ہے ، کیا
وہ این
یو ایل
ہوسکتے ہیں ،
چاہے وہ کلید
کا حصہ ہوں ،
ان کی ڈیفالٹ
اقدار ، اور
کوئی اضافی
معلومات۔
باب 4 میں اقسام
، چابیاں ،
این یو ایل
اقدار ، اور
ڈیفالٹس پر
مزید تبادلہ
خیال کیا گیا
ہے۔
اگر آپ نے
پہلے ہی یو
ایس ای کمانڈ کے
ساتھ سکیلا
ڈیٹا بیس کا
انتخاب نہیں
کیا ہے
تو ، آپ ٹیبل
کے نام سے
پہلے ڈیٹا بیس
کا نام شامل
کرسکتے ہیں ،
جیسا کہ
سکیلا ڈاٹ ملک
میں ہے۔
پچھلے شو
بیانات کے
برعکس
، اگر آپ کو ٹیبل
تک رسائی حاصل
ہے تو آپ
ہمیشہ تمام
کالم کے نام
دیکھ سکتے
ہیں؛ اس سے
کوئی فرق نہیں
پڑتا ہے کہ آپ
کے پاس تمام
کالموں کے لئے
مخصوص مراعات
نہیں ہیں۔
آپ
ڈیٹا بیس اور
ٹیبل کے نام
کے ساتھ Mysql شو کا
استعمال کرکے
اسی طرح کا
نتیجہ حاصل
کرسکتے
ہیں:
$
mysqls -uroot -pmsandbox -h 127.0.0.1 -P 3306 sکیلا
ملک
آپ شو
کریٹ ٹیبل
بیان کا
استعمال کرتے
ہوئے کسی خاص
جدول کو بنانے
کے لئے
استعمال ہونے
والا بیان
دیکھ سکتے ہیں
(ہم باب
4 میں جدول
بنانے پر بھی
غور کریں گے)۔
کچھ
صارفین اس آؤٹ
پٹ کو شو
کالمز کے
مقابلے میں
ترجیح دیتے ہیں ،
کیونکہ اس میں
کریایٹ
ٹیبل
بیان
کی معروف شکل
ہے۔
یہاں ملک کی
میز کے لئے
ایک مثال ہے:
mysql
>
و ٹیبل
ملک
بنائیں
\
G
1.
قطار ***************************
ٹیبل: کنٹری
کریٹ ٹیبل:
ٹیبل 'ملک'
بنائیں ('country_id'
چھوٹے دستخط
شدہ غیر دستخط
شدہ AUTO_INCREMENT، 'ملک'
ورچر (50) نول
نہیں، 'last_update' ٹائم
اسٹیمپ نول
ڈیفالٹ نہیں CURRENT_TIMESTAMP
اپ ڈیٹ CURRENT_TIMESTAMP پر،
پرائمری کلید
('country_id')) انجن=انوڈ
بی AUTO_INCREMENT=110 ڈیفالٹ
چارسیٹ=utf8mb4
کولیٹ=سیٹ میں
utf8mb4_0900_ai_ci1 قطار (0.00
سیکنڈ)