SQL кестесінен деректерді қалай жоюға болады: SQL сұранысы DELETE FROM WHERE
SQL оқу курсы: Мәліметтер базасынан жазбаларды жою үшін SQL командаларын қалай жазуға болады?
Мен SQL жолдарын жоюды түсіндіремін, SQL жазбаларын қалай жоюға болатынын қарапайым сөздермен, артық ақпаратсыз. DELETE FROM WHERE операторы оңай! Ол MySQL, PostgreSQL, MS SQL, SQLite, Oracle, MariaDB және басқа SQL DBMS үшін жұмыс істейді.
SQL DELETE командасын SQL-де қолдану: Мәліметтер базасынан деректерді қалай жоюға болады?
SQL командасының синтаксисі DELETE FROM WHERE:
DELETE FROM tableName WHERE condition;
Бұл SQL сұранысы «DELETE FROM table, RECORDS MEETING condition» деген мағына береді.
Егер сіз шартты көрсетпесеңіз, бүкіл кесте тазаланады!
ID бойынша SQL-де жазбаны қалай жоюға болады?
Мысал ретінде бізде users деп аталатын пайдаланушылар кестесі бар және біз id 10-ға ие пайдаланушыны жоюымыз керек. Неліктен id? Бұл кестедегі әр жолға уникалді сандар.
Бір кестеде бірнеше бірдей id болуы мүмкін емес, сондықтан жазбаның id-ін білу бізге сол нақты жазбаны алуға гарантия береді.
ID бойынша SQL DELETE FROM WHERE сұранысының мысалы мынадай болады:
DELETE FROM users WHERE id = 10;
Ескерту маңызды, id сандық тип болса, біз оны тырнақша қолданбай көрсетеміз, ал жол мәндері немесе UUID үшін оны жалғыз тырнақшаға алуымыз керек.
DELETE командасын қолданған кезде өте сақ болу керек: жойылған деректерді қарапайым тәсілдермен қайтара алмайсыз (к backup механизмдері болса). Сондықтан, оны орындамас бұрын сұранысты мұқият қарастыру ұсынылады.
SQL-де көп жолдарды қалай жоюға болады? Шартпен SQL DELETE арқылы жаппай жою
Мысал ретінде, біз бір жылдан астам уақыт бойы кірмеген барлық пайдаланушыларды жойғымыз келеді. SQL-дің бай синтаксис мүмкіндіктерінің арқасында, біз SQL DATE_SUB функциясын пайдаланып, соңғы кірген күнін тексере аламыз. Сұраныстың мысалы:
DELETE FROM
users
WHERE
last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR);
Бұл мысалда, біз SQL функциясы DATE_SUB арқылы соңғы бір жыл бұрынғы күнді есептейміз, оны SQL функциясы NOW() арқылы аламыз.
SQL DELETE FROM WHERE-да бірнеше шарттардың мысалы
SQL синтаксисі жойылатын жазбаларды нақты таңдау үшін бірнеше шарттарды көрсетуге мүмкіндік береді. Мысал ретінде, белсенділігі «жоқ» статусына ие және сайтқа бір жылдан астам уақыт кірмеген пайдаланушыларды жою үшін SQL сұранысының мысалы:
DELETE FROM
users
WHERE
last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR)
AND
status = 'inactive';
SQL-де деректерді жойған кезде транзакцияларды қолдану
SQL транзакциялары DELETE командасын орындағаннан кейін, егер бір нәрсе дұрыс болмаса, барлық өзгерістерді қайтаруға мүмкіндік береді. Синтаксис мынадай:
Біз транзакцияны бастау үшін BEGIN командасын қолданамыз:
BEGIN;
Біз бір немесе бірнеше операцияны орындаймыз, мысалға:
DELETE FROM
users
WHERE
last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR)
AND
status = 'inactive';
Егер командалар ешқандай қате шықпай сәтті орындалса, келесі қадамға өтуге болады.
Барлық операциялары сәтті аяқталған жағдайда және сіз нәтижеге қанағаттансаңыз, SQL командалық COMMIT-ті пайдаланып SQL транзакциясын аяқтау керек, барлық өзгерістерді сақтау үшін:
COMMIT;
Дегенмен, егер өзгертулерді болдырмау қажет болса, SQL командасын ROLLBACK пайдаланамыз:
ROLLBACK;
SQL транзакциялары кезінде ROLLBACK командасы қатеден болған жағдайда немесе транзакция ішіндегі операциялардың нәтижелерімен қанағаттанбасаңыз, мәліметтер базасын транзакция басталғанға дейінгі күйіне қалпына келтіру үшін қолданылады.
DELETE командасын қолданған кезде сақ болыңыз, жойылмауы қажет нәрсені жойғаныңызды болдырмау үшін SQL сұраныстарын мұқият тексеріңіз. Маңызды деректермен жұмыс істегенде, SQL транзакция конструкцияларын пайдаланыңыз немесе DELETE операцияларынан бұрын SQL dump жасаңыз.