إنشاء وملء جدول SQL. أمثلة لاستخدام تحديد في

بعد إنشاء جداول فارغة، تكون الخطوة المنطقية التالية هي ملء بياناتها وتحديث هذه البيانات. للقيام بذلك، تم تصميم زوج من التعليمات للتعامل مع SQL. إدراج - تحديث..

ومع ذلك، غالبا ما تكون هناك حاجة إلى تغيير مخطط الجداول. على سبيل المثال، إذا تغير المفتاح الأساسي أو نوع بيانات العمود. من أجل عدم حذف الجداول القديمة وليس لإنشاءها مرة أخرى بمساعدة جدول "إنشاء" مع المعلمات الصحيحة، تنطبق تعليمات جدول التغيير. مناقشة استخدام هذه التصاميم الثلاثة أدناه.

ملء الجداول

يمكنك ملء جدول البيانات من خلال تصميم "إنشاء جدول"، ومع ذلك، فهذا نهج أكثر كفاءة لمشاركة إنشاء الجدول والملء، وخاصة المبتدئين في SQL، لأن:

  • أوضح بصريا
  • إنه أكثر ملاءمة إذا كانت جداول التعبئة مرجوحة.

للحصول على النوع التالي من الجدول:

هوية شخصية. مستأجر

تاريخ الولادة

رقم الشقة

عنوان البريد الإلكتروني

aleksin. V.V.

غوربونوف د.

[البريد الإلكتروني المحمي]

سيمونوفا k.r.

dormitotova k.s.

[البريد الإلكتروني المحمي]

سيكون من الضروري إنشاءه اصنع جدول وملء من خلال تطبيق إرشادات إدراج. تضيف التعليمات التالية سطر واحد إلى المنازل التي تم إنشاؤها بالفعل من قبلنا:

نقوم بحذف الإصدار السابق من جدول SORT LIMBEMATES؛ - إنشاء جدول. إنشاء جدول Sideemates (HouseMeateid Int Not Not Nather Conderaint Primary_ID مفتاح أساسي، Houstematename NVARCHAR (30) غير فارغ، Bithdate Date غير فارغ، Apartmentnumber Int NULL، البريد الإلكتروني NVARCHAR (30))؛ - أدخل البيانات في استخدام إدراج الدخول في (،،،) القيم (100، "aleksin v.v.،" 19721122 "، 11،" [البريد الإلكتروني المحمي]")، (101،" Gorbunov d.d. "،" 19220525 "، 25،" [البريد الإلكتروني المحمي]")، (102،" سيمونوفا K.R "،" 19560211 "، 13،" [البريد الإلكتروني المحمي]")، (103،" dormitotova k. "،" 19770815 "، 9،" [البريد الإلكتروني المحمي]")

في المثال أعلاه، يجب تمييز اثنين من كتل تصميم إدراج:

داخل - تشير إلى الجدول الذي يتم إضافة البيانات إليه

قيم. - تهيئة إدخال البناء.

في المعلمات (بين الأقواس) كتلة داخل يتم سرد الأعمدة في ترتيب ما يلي. يجوز هذا التسجيل بدون معلمات، إذا كان ترتيب الأعمدة عند إنشاء جدول وملء ذلك يتزامن. التعليمة البرمجية التالية مطابقة إلى السابق:

إدراج في القيم (100، "aleksin. v.v."، "19721122"، 11، " [البريد الإلكتروني المحمي]")، (101،" Gorbunov d.d. "،" 19220525 "، 25،" [البريد الإلكتروني المحمي]")، (102،" سيمونوفا K.R "،" 19560211 "، 13،" [البريد الإلكتروني المحمي]")، (103،" dormitotova k. "،" 19770815 "، 9،" [البريد الإلكتروني المحمي]")

إذا كنت بحاجة إلى تغيير ترتيب التعبئة، فيجب الإشارة بشكل صريح إلى:

إدراج في (،،،،،) القيم ("أليكسين. فلاديمير"، 101، "19721122"، " [البريد الإلكتروني المحمي]"، 11)، (" Gorbunov d.d. "، 102،" 19220525 "،" [البريد الإلكتروني المحمي]"، 25)، (" سيمونوفا K.R "، 103،" 19560211 "،" [البريد الإلكتروني المحمي]"، 13) (" Dormitotova K.S. "، 104،" 19770815 "،" [البريد الإلكتروني المحمي]",9)

في كتلة القيم، يتم تنفيذ تهيئة السطر حسب ترتيب أعمدة الكتلة. ملء السطر هو قائمة الخلايا بين قوسين. يتم سرد القيم من خلال الفاصلة والخطوط بين نفسها أيضا.

يمكنك تطبيق تصميم الإدراج فقط على تلك الأعمدة التي لا توجد بيانات بعد. خلاف ذلك، ستنشأ خطأ تنفيذ الاستعلام.

تحديث الجدول

تحدث الحاجة إلى تحديث الجداول إذا كنت بحاجة إلى تغيير البيانات التي تم إدخالها بالفعل في الجدول. يؤديها باستخدام التعليمات تحديث.وبعد إذا كان إدراج يعمل فقط مع الجداول الفارغة، فإن التحديث ممتلئ فقط. إذا تم توجيه الطلب إلى الخلايا الفارغة، فسوف يحدث خطأ.

يعين التعليمات البرمجية التالية صندوق بريد جديد لمقيم المنزل برقم تحديد رقم 103.

تحديث SEDEMATES SET EMAIL \u003d " [البريد الإلكتروني المحمي]"حيث housemeateid \u003d 103

منع جلس. - هذا كتلة التغيير. إذا كنت بحاجة إلى تحديث قيمة العديد من الخلايا، فسيتم سردها من خلال الفاصلة.

تحديث SEDEMATES SET EMAIL \u003d " [البريد الإلكتروني المحمي]"، housematename \u003d" Rurik S. "" حيث housemeateid \u003d 103

تغيير الجدول

في المراحل اللاحقة من التصميم أو بعد تطوير القاعدة، غالبا ما يكون ضروريا:

  • إضافة أو إزالة العمود؛
  • تغيير نوع العمود؛
  • تعيين عمود أو مجموعة عمود أساسي أو مفتاح خارجي، أو قم بإزالة هذه القيود.

لكل هذه العمليات، تهدف تعليمات التجاوز. طاولة ATER.

لإضافة عمود، يتم تطبيق تعليمات جدول ALTER مع عرض عرض. أضف عمود جديدا إلى جدول HomeMates من القسم الماضي:

Alter Table SideMates إضافة PhoneNumber Nvarchar (12) NULL؛

بحاجة إلى تطبيق العرض إليها تغيير العمود. داخل تغيير الجدول:

ALTER TABLE SUMDEMATES تغيير العمود فوننبار شار (25) لا لاغية؛

تتم إزالة العمود عن طريق التطبيق انخفاض العمود. داخل تغيير الجدول:

تغيير الجدول المنزلية إسقاط العمود phoneNumber؛

تتم إزالة المفتاح الأساسي أو الخارجي وإضافته بواسطة تغيير جدول إضافة قيود / قطرة، على التوالي:

إزالة تقييد المفتاح الأساسي من جدول تغيير HouseMeeteid House Drop Constrint Primar_ID؛ - عمود شعاعي housemeateid الرئيسية الرئيسية تغيير الجدول HouseSates إضافة قيود PK_ID مفتاح أساسي (HouseMeateid)؛

إذا حاولت تعيين مفتاح أساسي إلى الجدول، فهذا موجود هناك بالفعل مترجم سيعود الخطأ. لذلك، إذا كان الجدول يحتوي بالفعل على مفتاح أساسي، فيجب إزالته وتعيين مجموعة من الأعمدة إلى المفتاح الأساسي. على سبيل المثال، لذلك:

تغيير الجدول المنزلية انخفاض القيد pk_id؛ ALTER TABLE SUMDEMATES إضافة قيود PK_ID، مفتاح PK_AN الأساسي (HouseMeateid، ApartmentNumber)؛

  • كيفية الجمع بين التعليمات المحددة حتى أتمكن من حساب الفائدة والنجاحات والفشل في SQL Server؟
  • SQL: كيفية اختيار الخطوط الفردية فقط بناء على بعض قيم الخصائص
  • كيفية اختيار منتج بحد أقصى سعر لكل فئة؟
مستوى المنتج مين 1 × 1 2 Y 1 3 z 1 4 a 1

أحتاج إلى تكرار نفس البيانات في قاعدة البيانات عن طريق تغيير معرف المنتج فقط من 1 2.3 .... 40.

مستوى المنتج مين 1 × 2 2 Y 2 3 Z 2 4 A 2

يمكنني أن أفعل شيئا مثل

إدراج في dbo.levels حدد أعلى 4 * من dbo.levels ولكن ببساطة نسخ البيانات. هل هناك طريقة يمكنني نسخ البيانات ولصقها عن طريق تغيير قيمة المنتج فقط؟

أنت أكثر ما في الطريق - تحتاج إلى اتخاذ خطوة منطقية أخرى:

إدراج في dbo.levels (مستوى المستوى، دقيقة، المنتج) حدد مستوى المستوى، مين، 2 من dbo.levels حيث المنتج \u003d 1

... هل ستكرر صفوفك مع معرف منتج آخر.

لاحظ أيضا أنه حيث المنتج \u003d 1 سيكون أكثر موثوقية من أعلى 4. بمجرد أن يكون لديك أكثر من أربعة أسطر في الجدول، لن تتمكن من التأكد من أن أعلى 4 سيعود نفس الخطوط الأربعة إذا كنت لا تضيف ترتيب أيضا لتحديد، ومع ذلك، فإن المنتج \u003d ... سيعود دائما نفس الشيء وسوف تستمر في العمل، حتى إذا قمت بإضافة سطر إضافي مع معرف المنتج 1 (حيث تحتاج إلى التفكير في إمكانية تغيير أعلى 4 في أعلى 5، وما إلى ذلك، إذا أضفت خطوط إضافية).

يمكنك إنشاء معرف المنتج، ثم قم بتنزيله على:

< 40) INSERT INTO dbo.Levels(`min`, product) SELECT `min`, cte.n as product fROM dbo.Levels l cross join cte where l.productId = 1;

إنه يشير إلى أن LevelID هو عمود معرف يزداد تلقائيا عند إدراجه. ان لم:

مع CTE كما (حدد 2 as n Union، حدد n + 1 من cte حيث n< 40) INSERT INTO dbo.Levels(levelid, `min`, product) SELECT l.levelid+(cte.n-1)*4, `min`, cte.n as product fROM dbo.Levels l cross join cte where l.productId = 1;

إدراج في dbo.levels (exeniid، min، product) حدد أعلى 4 levelID، دقيقة، 2 من dbo.levels

يمكنك تضمين تعبيرات في تحديد، أو القيم المحددة بشكل صارم، أو شيء مثل المنتج + 1 أو أي شيء آخر.

أتوقع منك، ربما لا ترغب في إدراج مستوى المستوى، ولكن تركها هناك لتناسب عينتك. إذا كنت لا تريد حذفها ببساطة من أقسام الإدراج وحددها.

على سبيل المثال، يمكنك استخدام الصليب الانضمام لجدول الأرقام.

مع L0 AS (حدد 1 ك Ual Union All Select 1 ك O)، - 2 صفوف L1 AS (حدد 1 كما C من L0 كقابلة للانضمام L0 ك بواسطة (حدد null)) كما n من l1) حدد lvl.، lvl.، num. [n] من dbo. LVL Cross انضم إلى Nums Num

سيتم تكرار 4 مرات.

SQL - الدرس 3. إنشاء جداول وملء المعلومات

لذلك، تعرفنا على أنواع البيانات، الآن سنحسن الجداول لمنتدىنا. أولا سنقوم بتحليلها. ودعنا نبدأ مع جدول المستخدمين (المستخدمين). في ذلك لدينا 4 أعمدة:

ID_USER - القيم الصحيحة، وهذا يعني أن نوع INT، نحن نحدها مع 10 أحرف - INT (10).
الاسم - قيمة سلسلة varchar، والحد من 20 حرفا - varchar (20).
البريد الإلكتروني - قيمة سلسلة varchar، تحدها مع 50 حرفا - varchar (50).
كلمة المرور - قيمة سلسلة varchar، تقصرها مع 15 حرفا - varchar (15).

جميع القيم الميدانية مطلوبة لملء، فهذا يعني أنك بحاجة إلى إضافة نوع غير فارغ.

ID_USER INT (10) لا لاغ
اسم varchar (20) غير فارغ
البريد الإلكتروني varchar (50) غير فارغ

العمود الأول، كما تتذكر من النموذج المفاهيمي لقاعدة بياناتنا، هو المفتاح الأساسي (أي قيمها فريدة من نوعها، وبالتأكيد تحدد السجل). من الممكن مراقبة تفرد نفسك، ولكن ليس عقلانيا. للقيام بذلك، في SQL هناك سمة خاصة - زيادة تلقائية.عند الوصول إلى الجدول لإضافة بيانات يحسب الحد الأقصى لقيمة هذا العمود، تزداد القيمة التي تم الحصول عليها بنسبة 1 ويدخلها في العمود. وبالتالي، في هذا العمود، يتم إنشاء رقم فريد تلقائيا، وبالتالي فإن النوع غير فارغ غير متقدم. لذلك، نحن تعيين السمة إلى عمود المفتاح الأساسي:


اسم varchar (20) غير فارغ
البريد الإلكتروني varchar (50) غير فارغ
كلمة المرور varchar (15) غير فارغة

الآن تحتاج إلى تحديد أن حقل ID_USER هو المفتاح الأساسي. للقيام بذلك، يتم استخدام الكلمة الأساسية في SQL المفتاح الأساسي ()بين قوسين تشير إلى اسم الحقل الرئيسي. التغييرات:

ID_USER INT (10) Auto_incrent
اسم varchar (20) غير فارغ
البريد الإلكتروني varchar (50) غير فارغ
كلمة المرور varchar (15) غير فارغة
المفتاح الأساسي (ID_USER)

لذلك، الجدول جاهز، ويبدو إصداره النهائي هذا:

إنشاء مستخدمي الجدول (
ID_USER INT (10) Auto_incrent،
اسم varchar (20) لا لاغية،
البريد الإلكتروني varchar (50) غير فارغ،
كلمة المرور varchar (15) غير فارغة،
المفتاح الأساسي (ID_USER)
);

الآن سنتعامل مع الجدول الثاني - الموضوعات (المواضيع). من الواضح أن لدينا الحقول التالية:



ID_AUTHOR INT (10) غير فارغ
المفتاح الأساسي (ID_TOPOIT)

ولكن في نموذج قاعدة البيانات الخاصة بنا، يكون حقل ID_Author مفتاح خارجي، I.E. يمكن أن يكون لها القيم الموجودة في حقل ID_USER في جدول المستخدمين. من أجل تحديد ذلك في SQL هناك كلمة رئيسية مفتاح غريب ()الذي يحتوي على بناء الجملة التالي:

مفتاح خارجي (Life_nober__Name_nex_NEX_NEX_NEM_NAME_NAME_THER_NAME (S)؛

نشير إلى أن ID_Author هو مفتاح خارجي:

id_topic int (10) auto_incrent
topic_name varchar (100) غير فارغ
ID_AUTHOR INT (10) غير فارغ
المفتاح الأساسي (ID_TOPOIT)
المفتاح الأجنبي (ID_AUTHOR) مراجع المستخدمين (ID_USER)

الجدول جاهز، ويبدو أن النسخة النهائية هذه:

إنشاء مواضيع الجدول (
id_topic int (10) auto_incrent،
topic_name varchar (100) غير فارغة،

المفتاح الأساسي (ID_TOPOIC)،
المفتاح الأجنبي (ID_AUTHOR) مراجع المستخدمين (ID_USER)
);

ظل الجدول الأخير - المشاركات (الرسائل). هنا كل شيء مشابه، فقط مفتاحان خارجي:

إنشاء مشاركات الجدول (
ID_POST INT (10) Auto_incrent،
نص الرسالة لا لاغية،
ID_AUTHOR INT (10) غير فارغة،
id_topic int (10) لا لاغية،
المفتاح الأساسي (ID_POST)،
المفتاح الأجنبي (ID_AUTHOR) يشير إلى المستخدمين (ID_USER)،
المفتاح الأجنبي (ID_TOPOIC) مراجع الموضوعات (ID_TOPOIC)
);

يرجى ملاحظة أن المفاتيح الخارجية للجدول يمكن أن تكون إلى حد ما، ويمكن أن يكون المفتاح الأساسي في MySQL واحد فقط. في الدرس الأول، حذفنا قاعدة بيانات المنتدى لدينا، حان الوقت لإنشاءه مرة أخرى.

نبدأ خادم MySQL (START - MySQL - MySQL - MySQL Server 5.1 - عميل سطر الأوامر MySQL)، أدخل كلمة مرور، وإنشاء قاعدة بيانات منتدى (إنشاء منتدى قاعدة بيانات؛)، حدده للاستخدام (استخدم المنتدى؛) وإنشاء ثلاثة جداولنا :

ملاحظة، يمكن كتابة أمر واحد في العديد من الصفوف باستخدام مفتاح الإدخال (MySQL يحصل تلقائيا على رمز السطر الجديد -\u003e)، وفقط بعد فاصل (SEMICOLON) اضغط على مفتاح ENTER الرئيسي يؤدي إلى الاستعلام.

تذكر، إذا كنت قد فعلت شيئا خاطئا، فيمكنك دائما حذف الجدول أو قاعدة البيانات بأكملها باستخدام مشغل الإسقاط. لتصحيح شيء ما في سطر الأوامر غير مريح للغاية، فمن الأسهل أحيانا (خاصة في المرحلة الأولية) كتابة طلبات إلى بعض المحرر، على سبيل المثال، في دفتر الملاحظات، ثم انسخها وإدراجها في نافذة سوداء.

لذلك، يتم إنشاء الجداول للتأكد من أن هذا الفريق يتذكر عرض الجداول:

وأخيرا، دعونا نرى هيكل آخر جدولنا الأخير:

الآن يتم فهم قيم جميع الحقول الميدانية، باستثناء الحقل الافتراضي. هذا هو حقل القيمة الافتراضية. يمكننا تحديد بعض العمود (أو للجميع) القيمة الافتراضية. على سبيل المثال، إذا كان لدينا حقل باسم "متزوج \\ متزوج" ونوع المعمنة ("نعم"، "لا")، سيكون من المعقول إجراء واحدة من القيم الافتراضية. سيكون بناء الجملة ما يلي:

متزوج Enum ("نعم"، "لا") غير افتراضي ("نعم")

أولئك. تتم كتابة هذه الكلمة الرئيسية من خلال مساحة بعد تحديد نوع البيانات، ويتم الإشارة إلى القيمة الافتراضية بين قوسين.

ولكن العودة إلى جداولنا. الآن نحتاج إلى إجراء البيانات في جداولنا. في المواقع، عادة ما تدخل المعلومات في أي نموذج HTML، ثم يقوم البرنامج النصي بأي لغة (PHP، Java ...) باستخراج هذه البيانات من النموذج ويدخلها في قاعدة البيانات. يجعلها عن طريق استعلام SQL لجعل البيانات في قاعدة البيانات. ما زلنا لا نعرف كيفية كتابة البرامج النصية على PHP، ولكن إرسال طلبات SQL لعملية إجراء البيانات الآن.

للقيام بذلك، استخدم المشغل إدراج.وبعد بناء الجملة يمكن استخدام نوعين. يتم استخدام الخيار الأول لإجراء البيانات في جميع مجالات الجدول:

إدراج في القيم Name_Table ("Value_Stolbits"، "Value_Stolbits"، ...، "Value_Nast_Stolba")؛


دعونا نحاول إضافة القيم التالية إلى طاولتنا:

إدراج في قيم المستخدمين ("1"، "سيرجي"، " [البريد الإلكتروني المحمي]", "1111");

يتم استخدام الخيار الثاني لإجراء البيانات في حقول الجدول:

إدراج في Name_Table ("اسم اللاتين"، "STALL -BETNAME") القيم ("Value_Stolbits"، "Value_Stolber")؛


في مستخدمي طاولاتنا مطلوبة جميع الحقول لملء، ولكن حقلنا الأول لديه كلمة رئيسية - auto_incrent (I.E.EL ملأما تلقائيا)، حتى نتمكن من تخطي هذا العمود:

إدراج القيم في المستخدمين (الاسم والبريد الإلكتروني وكلمة المرور) ("Valera" " [البريد الإلكتروني المحمي]", "2222");

إذا كان لدينا حقول مع نوع NULL، I.E. اختياري لملء، يمكننا أيضا تجاهلها. ولكن إذا حاولت ترك حقل فارغ مع القيمة غير الفارغة، فسيعرض الخادم رسالة خطأ ولا يقوم بتنفيذ الطلب. بالإضافة إلى ذلك، عند إجراء البيانات، يتحقق الخادم الروابط بين الجداول. لذلك، لن يتم صنعك في هذا المجال، وهو مفتاح خارجي، والقيمة المفقودة في الجدول المرتبط. سوف تتأكد من أن البيانات في الجداولان المتبقية.

ولكن أولا قم بإجراء المعلومات حول العديد من المستخدمين. لإضافة عدة أسطر في وقت واحد، من الضروري إدراج الأقواس ببساطة بقيم الفاصلة:

الآن سنجعل البيانات في الجدول الثاني - المواضيع (المواضيع). كل نفس، ولكن من الضروري أن نتذكر أن القيم الموجودة في حقل ID_Author يجب أن تكون موجودة في جدول المستخدم (المستخدمين):

الآن دعونا نحاول عمل موضوع آخر، ولكن مع ID_Author، وهو ليس في جدول المستخدم (نظرا لأننا دخلنا جدول المستخدمين فقط 5 مستخدمين فقط، فإن معرف \u003d 6 غير موجود):

يقدم الخادم خطأ ويقول أنه لا يمكن أن يجعل مثل هذه السلسلة، لأن في هذا المجال، وهو مفتاح خارجي، يستحق القيمة المفقودة في جدول المستخدمين المرتبطين به.

الآن سنحضر عدة أسطر إلى جدول الوظائف (الرسائل)، تذكر أن لدينا 2 مفاتيح خارجية، I.E. ID_AUTHOR و ID_TOPOIT، والتي سنصدر يجب أن تكون موجودة في الجداول المرتبطة:

لذلك، لدينا 3 جداول يتم فيها البيانات. السؤال ينشأ - كيفية معرفة البيانات المخزنة في الجداول. هذا سنفعله في الدرس التالي.

إذا كان لديك الحاجة إلى حفظ مجموعة البيانات الناتجة، والتي أعادت استعلام SQL، فستكون هذه المقالة مثيرة للاهتمام بالنسبة لك، حيث سننظر إليها تعليمات اختيار في.بمساعدة منها في Microsoft SQL Server، يمكنك إنشاء جدول جديد واملأه بنتيجة استعلام SQL.

لنبدأ، بالطبع، مع وصف تعليمات Ino Select نفسه، ثم انتقل إلى الأمثلة.

اختر إلى تعليمات في Transact-SQL

حدد - تعليمات في لغة T-SQL، والتي تنشئ جدول جديد وإدراج الأسطر الناتجة من استعلام SQL في ذلك. هيكل الجدول، أي سيعتمد عدد وأسماء الأعمدة، وكذلك أنواع البيانات وخصائص قيم NULL، على الأعمدة ( التعبيرات) المحدد في قائمة التحديد من المصدر في عبارة SELECT. عادة ما يتم استخدام التحديد في التعليمات للتجمع في جدول بيانات واحد من عدة جداول، وجهات النظر، بما في ذلك بعض البيانات الحسابية.

من أجل استخدام التحديد إلى التعليمات، يلزم إذن إنشاء جدول في قاعدة البيانات التي سيتم فيها إنشاء جدول جديد.

يحتوي الاختيار في التعليمات على حجتين:

  • new_table - اسم الجدول الجديد؛
  • fileGroup - مجموعة الملفات. إذا لم يتم تحديد الوسيطة، فسيتم استخدام مجموعة الملفات الافتراضية. هذه الميزة متاحة من Microsoft SQL Server 2017.

لحظات مهمة حول الاختيار في التعليمات

  • يمكن استخدام التعليمات لإنشاء جدول على الخادم الحالي، على خادم بعيد إنشاء جدول غير مدعوم؛
  • يمكنك ملء الجدول الجديد من قبل كل من قاعدة البيانات الحالية والخادم الحالي وقاعدة بيانات أخرى أو من خادم بعيد. على سبيل المثال، حدد الاسم الكامل لقاعدة البيانات في النموذج base_data.shem. أو في حالة السيرفر المتحكم , ذات الصلة_server. base_data.shem.;
  • لا يرث عمود المعرف في الجدول الجديد خاصية الهوية إذا كانت: تحتوي التعليمات على جمعية (انضمامها، الاتحاد)، المجموعة حسب جملة، وظيفة إجمالية، أيضا إذا كان عمود المعرف جزءا من التعبير، تم الحصول عليه من جهاز التحكم عن بعد مصدر البيانات أو أكثر من مرة في اختيار القائمة. في كل هذه الحالات، لا يرث عمود المعرف خاصية الهوية ويتم إنشاؤه بأنه غير فارغ؛
  • باستخدام SELECT في العبارة، لا يمكنك إنشاء جدول مقسم، حتى إذا تم تقسيم جدول المصدر؛
  • كجدول جديد، يمكنك تحديد الجدول المعتاد، بالإضافة إلى جدول مؤقت، ولكن لا يمكنك تحديد متغير الجدول أو إرجاع معلمة قيمة الجداول؛
  • العمود المحسوب، إذا كان هناك مثل هذه قائمة اختيار تعليمات INO، في الجدول الجديد، يصبح المعتاد، أي غير محسوبة؛
  • حدد الدخول لا يمكن استخدامها مع حساب؛
  • باستخدام SELECT في، لا يتم نقل الفهارس والقيود والمشغلات إلى الجدول الجديد، يجب أن يتم إنشاؤها بالإضافة إلى ذلك، بعد تنفيذ التعليمات، إذا لزم الأمر؛
  • لا يضمن الأمر حسب العرض أن الصفوف الموجودة في الجدول الجديد سيتم إدراجها بالترتيب المحدد.
  • لا يتم نقل الجدول الجديد إلى سمة FileStream. كائنات Blob FileStream في الجدول الجديد ستكون مثل كائنات Blob Type Varbinary (MAX) ولديها حد 2 غيغابايت؛
  • يعتمد مقدار البيانات المسجلة في سجل المعاملات أثناء تنفيذ عمليات INO SELECT على نموذج الاسترداد. في قواعد البيانات التي تستخدم طراز استرداد السجل غير الكامل، ونموذج بسيط، يتم تسجيل العمليات الكتلة التي تختارها إلى حد ما بشكل حد أدنى. نظرا لهذا، قد تتحول الاختيار إلى التعليمات إلى أن تكون أكثر كفاءة من الإرشادات الفردية لإنشاء جدول وإدراج إرشادات لملء بياناتها.

أمثلة لاستخدام تحديد في

جميع الأمثلة سأؤدي في DBMS Microsoft SQL Server 2016 Express.

بيانات أولية

لتبدأ، دعنا نخلق طاولتين وملء البيانات مع البيانات، سنجمع بين هذه الجداول في الأمثلة.

قم بإنشاء جدول TertTable (الهوية (1،1) لا لاغية، وليس فارغة، (100) لا لاغية، NULL، خالية من إنشاء جدول TESTTABLE2 (الهوية (1،1) لا لاغية، (100) غير فارغ) على إدراج InsertTable القيم (1، لوحة المفاتيح "، 100)، (1،" الماوس "، 50)، (2،" الهاتف "، 300) تذهب إلى إدراج قيم TestTable2 (" مكونات الكمبيوتر ")، (" الأجهزة المحمولة ") الذهاب حدد * من TestTable Select * من TestTable2

مثال 1 - إنشاء جدول باستخدام تعليمات Ino Select مع تركيبة البيانات

دعونا نتخيل أننا نحتاج إلى الجمع بين الجدولين وحفظ النتيجة في جدول جديد ( على سبيل المثال، نحتاج إلى الحصول على البضائع باسم الفئة التي تتعلق بها).

حدد في Select T1.Productid العملية، T2.CategoryName، T1.ProductName، T1.Proice في TestTATABLE3 من TestTable T1 اليسار JOIN TESTTABLE2 T2 على T1.CategoryID \u003d T2.CategoryID - مجموعة البيانات من البيانات من تحديد جديد


نتيجة لذلك، أنشأنا طاولة مع العنوان testtable3 ومليئة ببياناتها المشتركة.

مثال 2 - إنشاء جدول مؤقت باستخدام التحديد إلى تعليمات مع مجموعة بيانات

الآن دعونا نفترض أننا بحاجة إلى بيانات مجمعة، على سبيل المثال، معلومات حول عدد البضائع في فئة محددة، وهذه البيانات التي نحتاج إلى الاحتفاظ بها في جدول مؤقت، على سبيل المثال، سوف نستخدم هذه المعلومات فقط في تعليمات SQL، لذلك نحن لا تحتاج إلى إنشاء جدول كامل.

قم بإنشاء جدول مؤقت (#TESTTable) باستخدام SELECT في تعليمات SELECT T2.CategoryName، العد (T1. اختيار البيانات من تحديد * من جدول الوقت القابل للحياة


كما ترون، تمكنا من إنشاء جدول مؤقت قابل للتطبيق وملء البيانات المجمعة.

لذلك استعرضنا التحديد إلى تعليمات في T-SQL، في كتابك " مسار مبرمج T-SQL "أقول بالتفصيل عن جميع تصاميم لغة T-SQL ( أوصي بالقراءة)، ولدي كل شيء، في الوقت الحالي!