سلام به همه! همه ما در اینجا برای یک هدف کار می کنیم - تبدیل شدن به
توسعه دهندگان جاوا . شاید مهمترین مرحله در مسیر حرفه ای شدن، مصاحبه فنی باشد. به عنوان یک قاعده، مصاحبه کننده موضوعات اصلی را مرور می کند و چند سوال می پرسد. در این مقاله، ما در مورد یکی از موضوعات کلیدی -
پایگاه داده ها صحبت خواهیم کرد . بیایید به سوالات متداول نگاه کنیم و سعی کنیم بدون فرو رفتن عمیق در مطالب به آنها پاسخ دهیم، زیرا در این صورت حجم کتاب برای ما کافی نخواهد بود! پس بزن بریم.
1. پایگاه داده چیست؟ به چه انواعی تقسیم می شوند؟
منظور از DBMS چیست؟
پایگاه داده (DB) یک ساختار سازمان یافته است که برای ذخیره، تغییر و پردازش اطلاعات مرتبط به هم، عمدتاً حجم زیاد، طراحی شده است. به عبارت دیگر پایگاه داده یک ذخیره سازی ساختار یافته داده است. مثلا دفترچه تلفن.
انواع پایگاه داده
- پایگاه داده رابطه ای مجموعه ای از داده ها با روابط از پیش تعریف شده بین آنها است. داده ها به صورت مجموعه ای از جداول متشکل از ستون ها و ردیف ها ذخیره می شوند. جداول اطلاعات مربوط به اشیاء ارائه شده در پایگاه داده را ذخیره می کند. هر ستون جدول یک نوع داده خاص را ذخیره می کند و هر سلول یک مقدار مشخصه را ذخیره می کند.
- سیستم های غیر رابطه ای (NoSQL) سیستم هایی هستند که برای مدل های داده خاص با طرحواره های انعطاف پذیر طراحی شده اند. به عبارت دیگر، اینها پایگاه های داده ای هستند که داده ها را نه به صورت طرح های جدولی، ردیف ها و ستون ها، بلکه در قالب های دیگر ذخیره می کنند.
در این مقاله میتوانید اطلاعات بیشتری درباره پایگاههای داده غیررابطهای بخوانید:
راهنمای NoSQL برای توسعهدهندگان .
سیستم مدیریت پایگاه داده (DBMS) مجموعهای از نرمافزار است که کاربر میتواند با آن پایگاههای داده (DB) ایجاد کند و عملیاتهای مختلفی را بر روی آنها انجام دهد: تکمیل، بهروزرسانی، حذف، انتخاب و غیره. DBMS ایمنی، یکپارچگی، امنیت را تضمین میکند. ذخیره سازی داده ها و به شما اجازه دسترسی به مدیریت پایگاه داده را می دهد. به عنوان مثال، MySql یک DBMS است که دسترسی به یک پایگاه داده رابطهای یا MongoDB را برای یک پایگاه غیر رابطهای فراهم میکند.
2. عادی سازی چیست؟ فرم نرمال شده؟ چند شکل عادی سازی وجود دارد؟ سه مورد اول را نام ببرید.
عادی سازی فرآیند سازماندهی و ساختاردهی داده ها در یک پایگاه داده است که با حذف افزونگی و ناسازگاری وابستگی ها، انعطاف پذیری بیشتر پایگاه داده را فراهم می کند.
فرم نرمال یک ویژگی جدول است که در چارچوب نرمال سازی در نظر گرفته می شود که جدول را از نظر سادگی و درستی ساختار مشخص می کند. فرم معمولی به عنوان مجموعه ای از الزامات تعریف می شود که یک جدول باید برآورده کند. در مجموع شش فرم معمولی وجود دارد، اما در عمل بیش از سه مورد اول استفاده نمی شود:
- اولین فرم عادی:
- همه صفات بسیط هستند (یعنی اتمی و غیر قابل تقسیم).
- همه داده ها اسکالر هستند (یعنی مثبت).
- هیچ ردیف تکراری وجود ندارد (برای این، یک کلید اصلی برای هر ردیف ایجاد می شود).
- فرم عادی دوم:
- شرایط اولین فرم نرمال رعایت می شود.
- هر صفت غیر کلیدی به یک کلید اصلی ارجاع می دهد.
- فرم عادی سوم:
- شرایط گروه دوم عادی برقرار است.
- فیلدهای بدون کلید مستقل از سایر فیلدهای بدون کلید هستند: آنها فقط می توانند با یک کلید اصلی مرتبط شوند.
3. عادی سازی
غیرعادی سازی عبارت است از کاهش یا نقض عمدی اشکال عادی سازی پایگاه داده، معمولاً برای تسریع خواندن از پایگاه داده با افزودن داده های اضافی. به طور کلی، این یک فرآیند معکوس به عادی سازی است. این به این دلیل اتفاق می افتد که نظریه اشکال عادی همیشه در عمل قابل اجرا نیست. به عنوان مثال، مقادیر غیر اتمی همیشه "شر" نیستند: گاهی اوقات حتی برعکس. در برخی موارد، اتصالات اضافی در هنگام اجرای پرس و جوها، به ویژه هنگام پردازش حجم زیادی از اطلاعات، ضروری است. این در نهایت می تواند عملکرد را بهبود بخشد. پایگاه های داده ای که برای تجزیه و تحلیل در نظر گرفته شده اند، اغلب برای سرعت بخشیدن به اجرای پرس و جو غیرعادی می شوند. به عنوان مثال، شما اغلب از برخی دادهها برای گزارشهایی که ستونهای غیرکلیدی به یکدیگر مرتبط هستند نمونهگیری میکنید. شما عمداً شکل سوم نرمال سازی را حذف می کنید و همه چیز را در یک جدول برای سهولت نمونه گیری ترکیب می کنید - به طوری که مجبور نیستید پرس و جوهای اضافی را برای جداول دیگر ایجاد کنید.
4. شاخص ها
ایندکس مجموعه مرتب شده ای از مقادیر است که با یک جدول یا نمای با یک ستون خاص مرتبط است که بازیابی داده ها را سرعت می بخشد. یعنی این یک نوع نمایه است: مانند الفبای دفترچه تلفن که هنگام جستجو با نام خانوادگی به ما کمک می کند. در صورت استفاده صحیح، این ویژگی می تواند عملکرد را در هنگام کار با پایگاه داده های بزرگ تا حد زیادی بهبود بخشد. یا می توانید آن را بسیار پایین بیاورید. برای سرعت بخشیدن به جستجو، این کلیدها در یک ساختار درختی متعادل ذخیره می شوند که جستجو از طریق آن انجام می شود. به عنوان یک قاعده، فهرست ها باید در قسمت هایی که اغلب جستجو می شوند وارد شوند. شما باید زودتر از زمانی که حداقل 10 هزار رکورد دارید به ایجاد یک شاخص فکر کنید. در غیر این صورت، نتیجه قابل توجهی نخواهید دید، زیرا بهینه سازی زودرس
یک شر است . و میپرسید چگونه یک شاخص میتواند بر عملکرد سیستم تأثیر بگذارد؟ هنگامی که داده های جدید درج می شود یا داده های قدیمی حذف می شوند، ساختار درختی متعادل دوباره محاسبه می شود. در واقع، هر چه داده ها و شاخص ها بیشتر باشد، درختان بیشتری باید شمارش شوند. وضعیت را تصور کنید: شما حدود 20000 رکورد و 7 شاخص در این جدول دارید. یعنی هنگام درج داده ها باید 7 درخت را دوباره محاسبه کنید که هر کدام 20000 رکورد دارند. به عبارت دقیق تر، استفاده از نمایه ها برای جداولی که داده ها به طور مکرر به آنها اضافه/حذف می شوند به هیچ وجه توصیه نمی شود. در نهایت، میخواهم توجه داشته باشم که نمایههای ستونهایی که معمولاً مقدار در آنها یافت میشود،
null
چندان مؤثر نیستند، بنابراین ارزش افزودن آنها به چنین ستونهایی را ندارد.
تفاوت بین شاخص های خوشه ای و غیر خوشه ای در SQL چیست؟
خوشه ای:
- ترتیب فیزیکی فیلد انتخابی را ارائه می دهد.
- اگر جدولی دارای شاخص خوشه ای باشد، به آن می گویند خوشه ای است.
- بیش از یک شاخص در هر جدول مورد نیاز نیست.
- در MySQL، یک نمایه خوشهبندی شده به صراحت توسط کاربر مشخص نمیشود، زیرا اگر کلید اصلی را روی جدول خود تعریف نکنید، MySQL اولین فهرست را پیدا میکند
UNIQUE
که در آن همه ستونهای کلیدی قرار دارند NOT NULL
و InnoDB از آن به عنوان شاخص خوشهبندی شده استفاده میکند.
غیر خوشه ای:
- حداکثر 999 نمایه غیر خوشه ای در هر جدول امکان پذیر است.
- شامل یک اشاره گر به ردیف هایی با داده های واقعی در جدول است.
- نظم فیزیکی را فراهم نمی کند.
- برای نمایه های غیر خوشه ای، جداول جداگانه با داده های مرتب شده وجود دارد، یعنی یک جدول برای یک ستون که نمایه در آن قرار دارد، بنابراین، هنگام درخواست داده ای که بخشی از یک فیلد معین نیست، ابتدا پرس و جو در قسمت مورد نظر انجام می شود. در این جدول، و تنها پس از آن پرس و جو اضافی در برابر یک ردیف در جدول اصلی.
ایجاد یک نمایه غیر خوشه ای:
CREATE INDEX index_name ON table_name(column_name)
6. شاخص ترکیبی چیست؟
نمایه مرکب - ساخته شده با ارسال همزمان به چندین ستون. به عبارت دیگر، این یک شاخص پیچیده است که از چندین ستون تشکیل شده است. این شاخص ها زمانی استفاده می شوند که بیش از یک ستون در یک پرس و جو ظاهر شود. ایجاد یک شاخص ترکیبی:
CREATE INDEX index_name ON table_name(first_column_name, second_column_name, third_column_name)
به طور معمول، این شاخص ها زمانی استفاده می شوند که داده های ستون های متعدد به طور منطقی مرتبط باشند.
7. شاخص پوششی چیست؟ شاخص منحصر به فرد؟
نمایه پوششی شاخصی است که برای پاسخ به یک پرس و جو بدون دسترسی به خود جدول کافی است. با استفاده از این شاخص، می توانید کل ردیف داده ها را دریافت کنید، اما در واقع این به سادگی ضروری نیست. از آنجایی که نیازی نیست مستقیماً به جدول منبع بروید و می توانید فقط با استفاده از نمایه پاسخ دهید، استفاده از نمایه های پوششی کمی سریعتر است. در عین حال، فراموش نکنید که هر چه تعداد ستون ها بیشتر باشد، خود ایندکس دست و پا گیرتر و کندتر می شود. پس نباید از این موضوع سوء استفاده کرد. در بالا در مورد شاخص های خوشه ای و غیر خوشه ای صحبت کردیم که می توانند
منحصر به فرد باشند . این به این معنی است که هیچ دو فیلدی ارزش یکسانی برای کلید شاخص ندارند. در غیر این صورت، ایندکس یکتا نخواهد بود، زیرا ممکن است چندین ردیف دارای مقدار یکسانی باشند. نمونه ای از ایجاد یک نمایه غیر خوشه ای منحصر به فرد:
CREATE UNIQUE INDEX index_name ON table_name(column_name)
8. کلید اصلی چیست
کلید اصلی فیلدی در جدول است که هر ردیف را در جدول پایگاه داده مشخص می کند. فقط یک چنین فیلد در جدول وجود دارد و همه مقادیر باید منحصر به فرد باشند. چیزی یادت نرفته؟
به هر حال، یک کلید اولیه چیزی بیش از
یک شاخص منحصر به فرد و خوشه ای نیست. به عنوان یک قاعده، کلیدهای اولیه هنگام ایجاد جدول ایجاد می شوند:
CREATE TABLE table_name(
column_name int PRIMARY KEY,
…..)
یک محدودیت به طور خودکار به این ستون اضافه می شود -
NOT NULL
. همچنین می توانید یک کلید برای جدولی که قبلا ایجاد شده است تنظیم کنید:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
اگر یک کلید اولیه به روشی که در بالا توضیح داده شد اضافه شود، مقادیر فیلدهای مشخص شده به عنوان کلید اصلی (
column_name
) بررسی می شوند تا مطمئن شویم که حاوی مقادیر تهی نیستند (یک محدودیت نیز اضافه خواهد شد -
NOT NULL
).
کلید خارجی چیست؟
کلید خارجی خاصیتی است که برای ایجاد رابطه بین جداول ایجاد می شود. به طور معمول، یک کلید خارجی روی ستونهای یک جدول فرعی تنظیم میشود و به یکی از ستونهای جدول اصلی اشاره میکند. می توان در هنگام ایجاد جدول مشخص کرد:
CREATE TABLE table_name{
column_name int,
…..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) }
بنابراین پس از ایجاد جدول:
ALTER TABLE table_name
ADD FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name));
می توانید رفتار یک کلید خارجی را هنگام دستکاری فیلدی که به آن اشاره دارد تنظیم کنید.
ON DELETE
دستکاری ها می توانند از انواع زیر باشند
ON UPDATE
: گزینه های رفتاری ممکن:
CASCADE
- با این ویژگی، ردیفهای جدول وابسته به طور خودکار حذف یا تغییر میشوند، زمانی که ردیفهای مرتبط در جدول اصلی حذف یا تغییر میکنند.
SET NULL
- با این ویژگی، هنگامی که یک ردیف مرتبط از جدول اصلی حذف یا به روز می شود، مقدار NULL
ستون کلید خارجی تنظیم می شود.
NO ACTION
- در صورت وجود سطرهای مرتبط در جدول وابسته، تلاش برای حذف یا تغییر سطرها در جدول اصلی را رد می کند.
RESTRICT
- معادل NO ACTION
؛SET DEFAULT
- با این ویژگی، هنگامی که یک ردیف مرتبط از جدول اصلی حذف یا به روز می شود، مقدار پیش فرض (در صورت وجود) برای ستون کلید خارجی تنظیم می شود.
مثال استفاده:
CREATE TABLE table_name{
column_name int,
…..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) ON UPDATE CASCADE ON DELETE CASCADE }
ON DELETE
اگر رفتار برای و به صراحت تنظیم نشده باشد
ON UPDATE
، رفتار روی تنظیم می شود
RESTRICT
.
10. انواع اتصالات بین جداول (Join)
ارتباط بین جداول بر اساس داده های مشترک (فیلدها) ارائه می شود. این با استفاده از یک عملگر اتفاق میافتد
JOIN
، عملیاتی که ردیفهای یک جدول را با ردیفهایی در جدول دیگر مطابقت میدهد. نقشه برداری به گونه ای انجام می شود که ستون های هر دو جدول در مجاورت یکدیگر قرار گیرند، البته می توان آنها را از جداول جداگانه به دست آورد. و اگر فیلدهای مشترکی برای سه جدول داشته باشیم، می توانیم داده های آنها را به صورت یک جدول مشترک نمایش دهیم. با این حال، شایان ذکر است که هر چه جدول های کمتری به هم متصل شوند، پرس و جو سریعتر اجرا می شود. بنابراین، انواع
JOIN
:
INNER JOIN
- اتصالی که فقط آن دسته از داده های جدول اول را نشان می دهد که با برخی از داده های جدول دوم مطابقت دارند. بقیه پایین می روند.
LEFT JOIN
- اتصالی که تمام داده های جدول اول و داده های مربوطه را از جدول دوم در صورت وجود نشان می دهد. اگر داده مربوطه وجود نداشته باشد، فیلدهای مربوط به داده های جدول دوم خالی خواهند بود.
RIGHT JOIN
- اتصالی که تمام داده های جدول دوم و داده های مربوطه از جدول اول را در صورت وجود نشان می دهد. اگر داده مربوطه وجود نداشته باشد، فیلدهای مربوط به داده های جدول اول خالی خواهند بود.
FULL JOIN
- اتصالی که تمام داده های جداول اول و دوم را نشان می دهد. اگر هیچ داده مرتبطی در جدول دیگر وجود نداشته باشد، فیلدهای مربوط به آن داده خالی خواهند بود.
CROSS JOIN
- یک اتصال متقاطع که در آن هر ردیف از جدول اول به هر ردیف از جدول دوم (هر یک به هر کدام) متصل می شود. یعنی اگر دو جدول هر کدام 3 ردیف داشته باشند پس از این وصل شدن به نتیجه 9 ردیف می رسیم.
مثال
Join(inner)
:
SELECT *
FROM first_table
INNER JOIN second_table ON first_table.some_column = second_table.some_column
11. خاصیت ACID در پایگاه داده چیست؟
الف - اتمیسیتی ، تضمین می کند که هیچ تراکنش تا حدی به سیستم متعهد نیست. یا تمام عملیات فرعی آن انجام شده است یا هیچ کدام. به عنوان مثال، انتقال پول از یک بانک به حساب دیگر شامل دو عملیات است:
- انتقال پول به حساب بانکی.
- انتقال پول از یک حساب بانکی به یک حساب خاص.
اما هر چیزی ممکن است اتفاق بیفتد. به عنوان مثال به بانک مراجعه می کنند و سپس خطایی رخ می دهد و عملیات دوم تکمیل نمی شود. یا برعکس: فقط عملیات دوم انجام خواهد شد. بنابراین، این اقدامات در یک تراکنش انجام می شود و نتیجه یا همه یا هیچ است.
ج - ثبات : هر تراکنش موفق همیشه فقط نتایج قابل حل را ثبت می کند. این تضمین می کند که همه محدودیت ها رعایت شده اند (به عنوان مثال،
NOT NULL
)، در غیر این صورت تراکنش به عقب بازگردانده می شود.
و - جداسازی : در هنگام اجرای یک تراکنش، معاملات موازی نباید بر نتیجه آن تأثیر بگذارد. این به ما این امکان را می دهد که وضعیت های داده غیر نهایی را از همه پنهان کنیم. در واقع، به همین دلیل است که تراکنش های ناموفق نمی توانند چیزی را خراب کنند. کمی پایین تر با سطوح جداسازی تراکنش ها آشنا می شویم.
د - دوام : اگر تراکنش کامل شود، می توانید مطمئن باشید که تغییرات ایجاد شده به دلیل خرابی لغو نخواهد شد.
12. سطوح جداسازی تراکنش
هر سطح انزوا، اقدامات خاصی (فرصت ها) را مجاز/ممنوع می کند:
- خواندن فانتوم - در یک تراکنش، همان درخواست داده نتایج متفاوتی می دهد که به دلیل اضافه شدن داده ها توسط تراکنش (موازی) دیگر رخ می دهد.
- خواندن غیر تکراری - در یک تراکنش، درخواست داده یکسان نتایج متفاوتی می دهد که به دلیل تغییر یا حذف داده ها توسط تراکنش (موازی) دیگر رخ می دهد.
- خواندن "کثیف" - خواندن داده های اضافه شده یا تغییر یافته توسط تراکنش که متعاقباً برگردانده نمی شود.
- به روز رسانی از دست رفته - هنگامی که تراکنش های مختلف یک بلوک از داده ها را به طور همزمان تغییر می دهند، همه تغییرات به جز آخرین مورد از بین می روند (شبیه به "شرایط مسابقه" در multithreading).
برای راحتی، سطوح جداسازی و قابلیت های آنها را در جدول در نظر می گیریم:
سطوح عایق |
فانتوم خوانی |
خواندن غیر تکراری |
خواندن "کثیف". |
آپدیت از دست رفته |
قابل سریال سازی |
+ |
+ |
+ |
+ |
REPEATABLE_READ |
- |
+ |
+ |
+ |
READ_COMMITTED |
- |
- |
+ |
+ |
READ_UNCOMMITTED |
- |
- |
- |
+ |
13. تزریق SQL چیست؟
تزریق SQL یکی از روش های هک وب سایت است که ماهیت آن تزریق مقداری کد SQL به داده ها از طریق
GET
پرس و جو
POST
یا کوکی ها است. اگر وب سایتی چنین تزریق هایی را انجام دهد، امکان دسترسی به پایگاه داده و هک برنامه وجود دارد. به عنوان مثال، ما نام یک متغیر را می دانیم. بیایید
column_name
با نوع بگوییم
boolean
. اگر سیستم مستعد تزریق است، میتوانیم
OR column_name=true
هر آنچه را که نیاز داریم از پایگاه داده اضافه و سپس بنویسیم.
OR
یک شرط OR ایجاد می کند و عبارت ما بعد از آن همیشه خواهد بود
true
که ما را به جلوتر می برد. حمله به وب سایتی مانند تزریق SQL به دلیل پردازش نادرست داده های دریافتی مورد استفاده در پرس و جوهای SQL امکان پذیر است. هنگام اتصال به پایگاه داده با استفاده از
JDBC ، از انواع مختلف استفاده می کنید
Statements
. برای افزایش امنیت، لازم است
PreparedStatement
به جای موارد معمول استفاده شود
Statement
، زیرا در هنگام استفاده،
Statement
رشته ها و مقادیر پرس و جو به سادگی با هم جمع می شوند و امکان تزریق را فراهم می کنند. به نوبه خود،
PreparedStatement
یک الگوی درخواست خاص وجود دارد و داده ها با علامت نقل قول منعکس شده در آن درج می شوند. در نتیجه، تزریق SQL تنها به عنوان نمایش رشته ای از برخی زمینه ها درک می شود.
برای محافظت در برابر تزریق SQL، میتوانید از بررسیهای مبتنی بر عبارات منظم استفاده کنید ( در این مقاله میتوانید درباره عبارات منظم بیشتر بخوانید ).
گزینه دیگر این است که محدودیتی برای تعداد کاراکترهای پارامترهای ورودی تعیین کنید: به عنوان مثال، اگر نباید عددی بیشتر از 9999 دریافت کنید، محدودیت چهار کاراکتر ورودی انجام می شود. خطر هک کردن با استفاده از تزریق SQL را کاهش می دهد. می توانید از مقاله
"امنیت در جاوا: بهترین روش ها" در مورد امنیت در جاوا اطلاعات بیشتری کسب کنید .
14. رویه های ذخیره شده چیست؟ توابع ذخیره شده؟ ماشه؟
رویه های ذخیره شده در SQL یک موجودیت در پایگاه داده است که مجموعه ای از دستورالعمل های SQL است که یک بار کامپایل شده و در سرور ذخیره می شود. در یک کلام، این یک آنالوگ از روش ها در جاوا است. رویههای ذخیرهشده میتوانند اقداماتی را بر روی دادهها انجام دهند، هم کوئریهای معمولی و هم برخی اقداماتی که برای پرسوجوهای عادی در دسترس نیستند. یک رویه یک موجودیت SQL است که یک بار ایجاد می شود و سپس با ارسال آرگومان ها فراخوانی می شود. مزیت این روش این است که این دستورالعمل ها را می توان بیش از یک بار استفاده مجدد کرد. رویه های ذخیره شده عملکرد را بهبود می بخشد، قابلیت های برنامه نویسی را افزایش می دهد و از ویژگی های امنیت داده پشتیبانی می کند. بیایید ایجاد یک رویه را در نظر بگیریم:
CREATE PROCEDURE procedure_name (first_param some_type, second_param some_type..)
begin
……...
end
فراخوانی رویه:
CALL procedure_name (first_param, second_param…..);
تابع ذخیره شده نوعی رویه ذخیره شده است. تفاوت بین یک تابع این است که همیشه فقط یک مقدار را برمی گرداند، در حالی که یک رویه مجموعه ای از مقادیر را برمی گرداند. رویه های ذخیره شده را نمی توان با SQL معمولی مخلوط کرد، اما یک تابع ذخیره شده می تواند - و این مزیت آن است. از سوی دیگر، توابع ذخیره شده محدودیت های بسیار بیشتری نسبت به رویه ها دارند. ایجاد یک تابع ذخیره شده:
CREATE FUNCTION function_name (first_param, second_param…..)
RETURNS some_type
begin
……...
RETURN some_value;
end
فراخوانی یک تابع ذخیره شده:
SELECT function_name(first_param, second_param…..);
تریگر نوع دیگری از رویه های ذخیره شده است که مستقیماً توسط کاربر فراخوانی نمی شود، اما با تغییر داده ها فعال می شود. یعنی این رویه زمانی فعال میشود که شرایط خاصی مانند،
INSERT
یا
DELETE
، یا
UPDATE
دادههای موجود در یک ستون مشخص از یک جدول مشخص باشد. هنگامی که یک ماشه فعال می شود با استفاده از کلمات کلیدی
BEFORE
(محرک قبل از رویداد مرتبط فعال می شود) یا
AFTER
(پس از رویداد) تعیین می شود.
CREATE TRIGGER trigger_name
ON table_name
AFTER INSERT
begin
……...
end
15. تمرین کنید
به هر حال، رایج ترین سؤال SQL در مصاحبه، تمرین - حل مسئله است. هیچ فایده ای برای حدس زدن اینکه با کدام وظایف روبرو خواهید شد وجود ندارد، زیرا همه چیز به پیچیدگی تخیل شخص مقابل بستگی دارد. بنابراین، تنها گزینه کارآمد بهتر شدن در جستجوهای SQL با پیچیدگی های متفاوت است.
sql-ex.ru می تواند به عنوان منبعی برای تمرین در کارهای مختلف عمل کند . پس از بیست وظیفه اول تکمیل شده، برای همکار شما بسیار دشوار خواهد بود که شما را با هر کار SQL بترساند.
این همه برای امروز است: امیدوارم پس از خواندن این مقاله، سؤالات مربوط به پایگاه داده ها هیچ مشکل یا مشکلی ایجاد نکند. از توجه شما متشکرم و دوباره شما را می بینم!
GO TO FULL VERSION