نگهداری جدولها و تراکنشها در SQL
نگهداری جدولها و تراکنشها در SQL
این فصل درج ردیفها، بهروزرسانی ردیفها، حذف ردیفها و تراکنشها را پوشش میدهد.
درج ردیفها
ردیفهای جدید را میتوان با دستور SQL INSERT یکبهیک به جدول افزود. نام جدول و فهرست ستونها در بند INTO و فهرست مقادیر ــ داخل پرانتز ــ در بند VALUES نوشته میشود.
COUNTRIES — قبل از درج| COUNTRY | POP | AREA | GNP | LANGUAGE | LITERACY |
|---|
| Algeria | 28539321 | 919595 | 89000 | Arabic | 57 |
| Yugoslavia | 11101833 | 39449 | 10000 | Serbo-Cro... | 89 |
INSERT
INTO COUNTRIES ( COUNTRY, LITERACY, AREA, POP )
VALUES ( 'Beulah', 100, 1146807, 144000 )
COUNTRIES — پس از درج| COUNTRY | POP | AREA | GNP | LANGUAGE | LITERACY |
|---|
| Algeria | 28539321 | 919595 | 89000 | Arabic | 57 |
| Yugoslavia | 11101833 | 39449 | 10000 | Serbo-Cro... | 89 |
| Beulah | 144000 | 1146807 | - | - | 100 |
- نام جدول در بند INTO مشخص میشود.
- فهرست ستونها بعد از نام جدول میآید.
- مقادیر مناسب در بند VALUES فهرست میشوند.
- ستونهایی که فهرست نشدهاند مقدار پیشفرض میگیرند.
نحو عمومی یک دستور INSERT شامل سه بند INSERT، INTO و VALUES است.
خلاصهٔ نحو INSERT| CLAUSE | PARAMETERS | EXAMPLE |
|---|
| INSERT | | |
| INTO | table ( col list ) | COUNTRIES ( COUNTRY, POP ) |
| VALUES | ( value list ) | ( 'Beulah', 144000 ) |
تمرینها
- همهٔ ستونها و همهٔ ردیفهای جدول JOBS را انتخاب کنید. سپس با عنوان شغلی A برای Author ردیفی به جدول JOBS اضافه کنید.
- همهٔ ستونهای افراد با شمارهٔ شخص بزرگتر یا مساوی ۵۰۰ را انتخاب کنید. سپس خودتان را با شمارهٔ شخص ۵۰۰ به جدول PERSONS اضافه کنید. همهٔ ستونها را پر کنید. اگر شغلتان در جدول JOBS نیست، از شغل R استفاده کنید.
- یک دوست را به جدول PERSONS اضافه کنید و شمارهٔ شخص ۵۰۱ را به او بدهید.
بهروزرسانی ردیفها
با دستور UPDATE میتوان یک یا چند ردیف جدول را تغییر داد. جدول در بند UPDATE مشخص میشود و مقادیر جدید در بند SET وارد میشوند. همهٔ ردیفها تغییر میکنند مگر آنکه از بند WHERE برای محدودکردن عملیات استفاده شود.
COUNTRIES — قبل از بهروزرسانی| COUNTRY | POP | AREA | GNP | LANGUAGE | LITERACY |
|---|
| Algeria | 28539321 | 919595 | 89000 | Arabic | 57 |
| Yugoslavia | 11101833 | 39449 | 10000 | Serbo-Cro... | 89 |
| Beulah | 144000 | 1146807 | - | - | 100 |
UPDATE COUNTRIES
SET AREA = 53501998, LANGUAGE = 'Hebrew', POP = 100000000
WHERE COUNTRY = 'Beulah'
COUNTRIES — پس از بهروزرسانی| COUNTRY | POP | AREA | GNP | LANGUAGE | LITERACY |
|---|
| Algeria | 28539321 | 919595 | 89000 | Arabic | 57 |
| Yugoslavia | 11101833 | 39449 | 10000 | Serbo-Cro... | 89 |
| Beulah | 100000000 | 53501998 | - | Hebrew | 100 |
- نام جدول در بند UPDATE مشخص میشود.
- مقادیر جدید در بند SET مشخص میشوند.
- بند WHERE تعیین میکند کدام ردیفها بهروزرسانی شوند.
- حذف WHERE باعث بهروزرسانی همهٔ ردیفها میشود.
خلاصهٔ نحو UPDATE| CLAUSE | PARAMETERS | EXAMPLE |
|---|
| UPDATE | table | COUNTRIES |
| SET | new value list | AREA = 7992, LANGUAGE = 'Hebrew' |
| WHERE | comparisons | COUNTRY = 'Beulah' |
تمرینها
- همهٔ نویسندگان را به Authors تغییر دهید. برای بررسی تغییرات یک پرسوجو اجرا کنید.
- تاریخ تولد خود را به تاریخی جدید تغییر دهید و شغلتان را Entertainer کنید؛ اما خودتان را نکشید ــ جوانتر نمیشوید. برای بررسی تغییرات پرسوجو اجرا کنید.
- اکنون نویسندگان را دوباره به Writers برگردانید و نتیجه را بررسی کنید.
حذف ردیفها
با دستور DELETE میتوان یک یا چند ردیف را از جدول حذف کرد. نام جدول در بند FROM و مقایسههای اختیاری در بند WHERE نوشته میشوند. حذف بند WHERE باعث حذف همهٔ ردیفها میشود.
COUNTRIES — قبل از حذف| COUNTRY | POP | AREA | GNP | LANGUAGE | LITERACY |
|---|
| Algeria | 28539321 | 919595 | 89000 | Arabic | 57 |
| Yugoslavia | 11101833 | 39449 | 10000 | Serbo-Cro... | 89 |
| Beulah | 100000000 | 53501998 | - | Hebrew | 100 |
DELETE
FROM COUNTRIES
WHERE COUNTRY = 'Yugoslavia'
COUNTRIES — پس از حذف| COUNTRY | POP | AREA | GNP | LANGUAGE | LITERACY |
|---|
| Algeria | 28539321 | 919595 | 89000 | Arabic | 57 |
| Beulah | 100000000 | 53501998 | - | Hebrew | 100 |
- نام جدول در بند FROM مشخص میشود.
- بند WHERE تعیین میکند کدام ردیفها حذف شوند.
- حذف WHERE باعث حذف همهٔ ردیفها میشود.
خلاصهٔ نحو DELETE| CLAUSE | PARAMETERS | EXAMPLE |
|---|
| DELETE | | |
| FROM | table | COUNTRIES |
| WHERE | comparisons | COUNTRY = 'Yugoslavia' |
تمرینها
- دوستتان و خودتان را با دستورهای جداگانه از پایگاه داده حذف کنید. با پرسوجو مطمئن شوید دیگر وجود ندارید. خودتان را نیشگون بگیرید ــ هنوز واقعاً نمردهاید.
- با پرسوجو تعداد افراد متولد قرن هجدهم را بشمارید. ۲۷ نفر وجود دارد. اکنون آنها را حذف کنید. پرسوجو را دوباره اجرا کنید و تغییر را بررسی کنید.
- چند ردیف در جدول RELIGIONS وجود دارد؟ همهٔ ردیفهایی را که دینشان عبارت orthodox دارد حذف کنید. نتیجه باید ۳۶۹ ردیف باقیمانده باشد.
تراکنشها
تراکنش (Transaction) مجموعهای از عملیات نگهداری مرتبط است که اثر آنها میتواند برای همیشه روی پایگاه داده اعمال شود یا بهطور کامل از پایگاه داده حذف شود. تراکنشها میتوانند عملیات INSERT، UPDATE و/یا DELETE را روی یک یا چند جدول شامل شوند.
ROLLBACK تراکنشها را بهطور دائمی معکوس میکند
دستور ROLLBACK همهٔ عملیات نگهداری انجامشده از ابتدای Session یا از آخرین COMMIT ــ هرکدام جدیدتر است ــ را «واگرد» میکند.
COMMIT تراکنشها را بهطور دائمی اعمال میکند
دستور COMMIT همهٔ عملیات نگهداری انجامشده از ابتدای Session یا از آخرین COMMIT را بهطور دائمی روی پایگاه داده اعمال میکند.
نحو عمومی دستورهای تراکنش SQL در زیر آمده است. دو دستور مستقل ROLLBACK و COMMIT وجود دارند.
خلاصهٔ نحو ROLLBACK| CLAUSE | PARAMETERS | EXAMPLE |
|---|
| ROLLBACK | | |
خلاصهٔ نحو COMMIT| CLAUSE | PARAMETERS | EXAMPLE |
|---|
| COMMIT | | |
تمرینها
- همهٔ تغییراتی را که تاکنون روی پایگاه داده ایجاد شده Rollback کنید. آیا A در جدول JOBS وجود دارد؟ اکنون چند ردیف در جدول RELIGIONS است؟ باید ۳۸۹ ردیف باشد.
- همهٔ ردیفهای PERSONS و ARMIES را حذف کنید. ببینید از بین رفتهاند. این تراکنش را Rollback کنید و بررسی کنید برگشتهاند.
- خودتان را دوباره به جدول PERSONS اضافه کنید و خودتان را Commit کنید. Rollback کنید: هنوز آنجا هستید؟ اگر هستید، خودتان را حذف و دوباره Commit کنید.