Современные информационные технологии/ 2. Вычислительная техника и программирование

 

Бурлибаева Ш.М., Мейірбекқызы Г.М., Тәжібай А.М.

 

MYSQL ДҚБЖ DELETE командасы

 

DELETE операторының синтаксисі:

немесе

немесе

DELETE операторы table_name кестеден where_definition –де берілген шарттарды қанағаттандыратын жолдарды жояды және жойылған жазбалардың санын қайтарады. 

Егер DELETE операторы WHERE  анықтамай іске қосылса, онда барлық жолдар жойылады. AUTOCOMMIT режимде орындалса, бұл TRUNCATE  операторын қолдануыға ұқсас болады. MySQL – де WHERE анықтамай DELETE операторы жойылған жазбалар саны ретінде  нольды қайтарады.

Егер барлық жолдарды жойған кезде жазбалар санын білу қажет болса, және де егер жылдамдығы төмендесе, онда DELETE командасы келесі формада қолдагуға болады:

mysql> DELETE FROM table_name WHERE 1>0;

Бұл жағдайда жолдар біртіндеп жойылып тұрғаннан, WHERE өрнексіз DELETE FROM table_name  қарағанда  бұл  форманың жұмыс істеуі төмен болады.

Егер LOW_PRIORITY  кілтті сөз берілсе, басқа клиенттер бұл кестені оқып болғанша бұл DELETE команданың орындалуы тоқталып тұрады.

Егер QUICK параметр берілсе, онда кестенің өңдеушісі жою операциясы орындауда индекстерді біріктірмейді – кейбір жағдайларда бұл операцияның орындалуын тездетеді.

MyISAM кестелерде жойылған жазбалар біріктірілген тізімде сақталынады, ал  келесі INSERT операциялар жойылған жазбалар орналасқан орындарды қайталап пайдалынады.Пайдаланбаған кеңістікті қайтару және файлдардың өлшемін азайту үшін, OPTIMIZE TABLE команданы немесе  кестелерді өзгерту үшін myisamchk утилитаны қолдануға болады. OPTIMIZE TABLE командасы қарапайымдау, бірақ  myisamchk утилитаның жұмыс істеуі жылдамырақ.

(1)                    формулада келтірілген DELETE  команданың көпкестелік форматын ДҚБЖ MySQL 4.0.0– ден бастап қолдайды. (2) формулада келтірілген DELETE команданың көпкестелік форматын MySQL 4.0.2 – ден бастап қолдайды.

FROM немесе USING  өрнектер алдындағы кестелердегі бірдей жолдар жойылады. Бұл бір мезгілде бірнеше кестелерден жолдарды жоюға, сонымен қатар іздеуге қосымша кестелерді пайдалануға мүмкіндік береді.

Кесте аттарынан кейінгі нүкте немесе жұлдызша (., *) символдары Access – пен үйлесімдігі үшін қажет:

DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id                        (4)

немесе

DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id           (5)

(5) t1 және t2 кестелерден бірдей жолдар жойылған.

Егер ORDER BY өрнек қолданса, онда жолдар көрсетілген ретімен жойылады. Бұл өрнек LIMIT қолданғанда қолайлы. Мысалы:

Бұл оператор WHERE  өрнекте көрсетілген ең ескі жазбаны жояды.

MySQL үшін DELETE команданың  LIMIT ерекше опциясы клиентке басқаруды қайтармай тұрып жойылатын жолдардың максималды санын серверге көрсетеді. Бұл опция DELETE команда орындалуына көп уақыт алмайтының кепілі болуына қоланылады. Жойылған жолдардың саны LIMIT  өлшемінен кем болғанша, DELETE команданы қайталап тұрса болады.

Бір кестеден жазбаларды жою үшін DELETE  командада кестелердің жиынын көрсетуге болады. Бірақ DELETE  операторының бұндай формасымен ORDER BY немесе LIMIT қолдануға болмайды.

 

ПАЙДАЛАНҒАН ӘДЕБИЕТТЕР

1.                 Конноли Т., Бегг К. Базы данных: проектирование, реализация, сопровождение. Теория и практика. 3-е изд. М.: Вильямс, 2008

2.                 Виктор Гольцман. MySQL 5.0. Библиотека программиста. СПб.: Питер.-253б

3.                 http://www.mysql.com MySQL Databases