Изучаем SQL. №8. Работа с записями. Обновление и удаление.

Изучаем SQL
Итак, мы умеем создавать таблицу, наполнять ее данными, делать выборку и даже сортировать выбранные данные как нам заблагорассудится. Теперь пришел черед научиться обновлять информацию в базе данных и удалять ее по мере надобности.

Начнем с простого, обновления.

Обновление записей БД MySQL с помощью ключевого слова UPDATE:
У нас есть пользователь Паша, которому 33 года. Но вот мы узнали, что эта информация не верна и ему на самом деле 44. Наша задача изменить его данные на верные.

UPDATE human SET age=44 WHERE name = 'Паша';
SELECT * FROM human;
+----+-----------+-----+
| id | name      | age |
+----+-----------+-----+
|  1 | Сергей    |  22 |
|  2 | Паша      |  44 |
|  3 | Оксана    |  20 |
|  4 | Света     |  22 |
|  5 | Андрей    |  19 |
|  8 | Снежана   |  20 |
|  9 | Игорь     |  30 |
| 10 | Светлана  |  17 |
| 11 | Виталий   |  26 |
| 12 | Екатерина |  19 |
| 13 | Сергей    |  19 |
| 14 | Сергей    |  31 |
+----+-----------+-----+

А теперь вместо Сергея, которому 22 года и его id = 1, установим Альбину 19 лет.

UPDATE human SET name='Альбина',age=19 WHERE id = 1;
SELECT * FROM human;
+----+-----------+-----+
| id | name      | age |
+----+-----------+-----+
|  1 | Альбина   |  19 |
|  2 | Паша      |  44 |
|  3 | Оксана    |  20 |
|  4 | Света     |  22 |
|  5 | Андрей    |  19 |
|  8 | Снежана   |  20 |
|  9 | Игорь     |  30 |
| 10 | Светлана  |  17 |
| 11 | Виталий   |  26 |
| 12 | Екатерина |  19 |
| 13 | Сергей    |  19 |
| 14 | Сергей    |  31 |
+----+-----------+-----+

Будьте внемательны, если вы не укажете условие WHERE, а просто напишите UPDATE human SET age=19, то установите возраст 19 всем пользователям в таблице.

Удаление записей из БД MySQL с помощью ключевого слова DELETE:
Для тестирования удаления создадим новую таблицу пользователей users, чтобы не портить имеющуюся. У нее будут такие поля id, name, age, ban. Поле ban отвечает за информацию о забаненных пользователях. Если 1 — забанен, если 0 — нет.

CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(25), age INT, ban INT);
SHOW TABLES;
+------------------+
| Tables_in_people |
+------------------+
| human            |
| users            |
+------------------+

И наполняем ее 5 пользователями:

INSERT INTO users VALUES (NULL,'Олег',15,0);
INSERT INTO users VALUES (NULL,'Таня',18,0);
INSERT INTO users VALUES (NULL,'Коля',20,1);
INSERT INTO users VALUES (NULL,'Ира',22,1);
INSERT INTO users VALUES (NULL,'Петя',19,0);

SELECT * FROM users;
+----+------+------+------+
| id | name | age  | ban  |
+----+------+------+------+
|  1 | Олег |   15 |    0 |
|  2 | Таня |   18 |    0 |
|  3 | Коля |   20 |    1 |
|  4 | Ира  |   22 |    1 |
|  5 | Петя |   19 |    0 |
+----+------+------+------+

А теперь попробуем удалить всех пользователей, которые в бане или которым меньше 18 лет.
Но перед удалением проверим все селектом, чтобы не удалить лишнего, так как вернуть информацию не удастся.

SELECT * FROM users WHERE ban = 1 OR age < 18;
+----+------+------+------+
| id | name | age  | ban  |
+----+------+------+------+
|  1 | Олег |   15 |    0 |
|  3 | Коля |   20 |    1 |
|  4 | Ира  |   22 |    1 |
+----+------+------+------+

Отлично, ничего лишнего мы не заденем, приступаем к удалению:

DELETE FROM users WHERE ban = 1 OR age < 18;
SELECT * FROM users;
+----+------+------+------+
| id | name | age  | ban  |
+----+------+------+------+
|  2 | Таня |   18 |    0 |
|  5 | Петя |   19 |    0 |
+----+------+------+------+

Как видите, ничего сложного. На этом все. В следующих уроках поговорим, что же такое нормализация таблиц данных. И как вносить изменения в поля таблицы.
Вопросы задавайте в комментариях.

Введи свой e-mail:

2 thoughts on “Изучаем SQL. №8. Работа с записями. Обновление и удаление.

  1. Вот здесь ошибочка:
    mysql> CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(25), age INT, ban INT);
    ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key.
    Автоинкрементное поле должно быть определено как ключ и может быть только одно (примерно так)
    Надо написать:
    mysql> CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(25), age INT, ban INT);
    Тогда всё будет Гут 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *