6.2. Ðзменение даннÑÑ #
ÐодиÑикаÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ , Ñже ÑÐ¾Ñ ÑанÑннÑÑ Ð² ÐÐ, назÑваеÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸ÐµÐ¼. ÐзмениÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ вÑе ÑÑÑоки ÑаблиÑÑ, либо подмножеÑÑво вÑÐµÑ ÑÑÑок, либо ÑолÑко избÑаннÑе ÑÑÑоки. ÐаждÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð¿Ñи ÑÑом можно изменÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимо Ð¾Ñ Ð´ÑÑÐ³Ð¸Ñ .
ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² ÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑÑÑÐ¾ÐºÐ°Ñ Ð¸ÑполÑзÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° UPDATE. Ðй ÑÑебÑеÑÑÑ ÑледÑÑÑÐ°Ñ Ð¸Ð½ÑоÑмаÑиÑ:
ÐÐ¼Ñ ÑаблиÑÑ Ð¸ изменÑемого ÑÑолбÑа
Ðовое знаÑение ÑÑолбÑа
ÐÑиÑеÑий оÑбоÑа изменÑемÑÑ ÑÑÑок
ÐÑли Ð²Ñ Ð¿Ð¾Ð¼Ð½Ð¸Ñе, в Ðлаве 5 говоÑилоÑÑ, ÑÑо в SQL в пÑинÑипе Ð½ÐµÑ ÑникалÑного иденÑиÑикаÑоÑа ÑÑÑок. Таким обÑазом, не вÑегда возможно Ñвно ÑказаÑÑ Ð½Ð° ÑÑÑокÑ, коÑоÑÑÑ ÑÑебÑеÑÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑказаÑÑ ÑÑловиÑ, каким Ð´Ð¾Ð»Ð¶Ð½Ñ ÑооÑвеÑÑÑвоваÑÑ ÑÑебÑÐµÐ¼Ð°Ñ ÑÑÑока. ТолÑко еÑли в ÑаблиÑе еÑÑÑ Ð¿ÐµÑвиÑнÑй клÑÑ (вне завиÑимоÑÑи Ð¾Ñ Ñого, обÑÑвлÑли Ð²Ñ ÐµÐ³Ð¾ или неÑ), можно однознаÑно адÑеÑоваÑÑ Ð¾ÑделÑнÑе ÑÑÑоки, опÑеделив ÑÑловие по пеÑвиÑÐ½Ð¾Ð¼Ñ ÐºÐ»ÑÑÑ. ÐÑим полÑзÑÑÑÑÑ Ð³ÑаÑиÑеÑкие инÑÑÑÑменÑÑ Ð´Ð»Ñ ÑабоÑÑ Ñ Ð±Ð°Ð·Ð¾Ð¹ даннÑÑ , даÑÑие возможноÑÑÑ ÑедакÑиÑоваÑÑ Ð´Ð°Ð½Ð½Ñе по ÑÑÑокам.
ÐапÑимеÑ, ÑледÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ÑвелиÑÐ¸Ð²Ð°ÐµÑ ÑÐµÐ½Ñ Ð²ÑÐµÑ ÑоваÑов, имевÑÐ¸Ñ Ð´Ð¾ ÑÑого ÑÐµÐ½Ñ 5, до 10:
UPDATE products SET price = 10 WHERE price = 5;
Ð ÑезÑлÑÑаÑе Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ Ð½Ð¾Ð»Ñ, одна или множеÑÑво ÑÑÑок. РеÑли ÑÑÐ¾Ð¼Ñ Ð·Ð°Ð¿ÑоÑÑ Ð½Ðµ бÑÐ´ÐµÑ ÑдовлеÑвоÑÑÑÑ Ð½Ð¸ одна ÑÑÑока, ÑÑо не бÑÐ´ÐµÑ Ð¾Ñибкой.
ÐавайÑе ÑаÑÑмоÑÑим ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿Ð¾Ð´Ñобнее. Ðна наÑинаеÑÑÑ Ñ ÐºÐ»ÑÑевого Ñлова UPDATE, за коÑоÑÑм идÑÑ Ð¸Ð¼Ñ ÑаблиÑÑ. Ðак обÑÑно, Ð¸Ð¼Ñ ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð¿Ð¸Ñано в полной ÑоÑме, в пÑоÑивном ÑлÑÑае она бÑÐ´ÐµÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° по пÑÑи. ÐаÑем идÑÑ ÐºÐ»ÑÑевое Ñлово SET, за коÑоÑÑм ÑледÑÐµÑ Ð¸Ð¼Ñ ÑÑолбÑа, знак ÑавенÑÑва и новое знаÑение ÑÑолбÑа. ÐÑим знаÑением Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð»Ñбое ÑкалÑÑное вÑÑажение, а не ÑолÑко конÑÑанÑа. ÐапÑимеÑ, еÑли Ð²Ñ Ð·Ð°Ñ
оÑиÑе поднÑÑÑ ÑÐµÐ½Ñ Ð²ÑеÑ
ÑоваÑов на 10%, ÑÑо можно ÑделаÑÑ Ñак:
UPDATE products SET price = price * 1.10;
Ðак видно из ÑÑого пÑимеÑа, вÑÑажение нового знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ ÑÑÑлаÑÑÑÑ Ð½Ð° ÑÑÑеÑÑвÑÑÑие знаÑÐµÐ½Ð¸Ñ ÑÑолбÑов в ÑÑÑоке. ÐÑ Ñакже опÑÑÑили в нÑм пÑедложение WHERE. ÐÑо ознаÑаеÑ, ÑÑо бÑдÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð²Ñе ÑÑÑоки в ÑаблиÑе. ÐÑли же ÑÑо пÑедложение пÑиÑÑÑÑÑвÑеÑ, изменÑÑÑÑÑ ÑолÑко ÑÑÑоки, коÑоÑÑе ÑооÑвеÑÑÑвÑÑÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ WHERE. ÐамеÑÑÑе, ÑÑо Ñ
оÑÑ Ð·Ð½Ð°Ðº ÑавенÑÑва в пÑедложении SET обознаÑÐ°ÐµÑ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¿ÑиÑваиваниÑ, а Ñакой же знак в пÑедложении WHERE иÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑÑавнениÑ, ÑÑо не пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº неоднознаÑноÑÑи. РконеÑно, в ÑÑловии WHERE не обÑзаÑелÑно должна бÑÑÑ Ð¿ÑовеÑка ÑавенÑÑва, а могÑÑ Ð¿ÑименÑÑÑÑÑ Ð¸ дÑÑгие опеÑаÑоÑÑ (Ñм. ÐлавÑ 9). ÐеобÑ
одимо ÑолÑко, ÑÑÐ¾Ð±Ñ ÑÑо вÑÑажение возвÑаÑало логиÑеÑкий ÑезÑлÑÑаÑ.
Ркоманде UPDATE можно измениÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑÑÐ°Ð·Ñ Ð½ÐµÑколÑкиÑ
ÑÑолбÑов, пеÑеÑиÑлив иÑ
в пÑедложении SET. ÐапÑимеÑ:
UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;