Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MySQL.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
762.28 Кб
Скачать

Задания

  1. Сколько уникальных вариантов зарплаты имеется в компании? Представьте их в убывающем порядке.

  2. Сколько различных имен имеется в базе данных?

Возможные решения

  1. select distinct salary from

  2. employee_data order by salary DESC;

  3. mysql> select distinct f_name from employee_data;

Изменение записей

Команда UPDATE выполняет изменение данных в таблицах. Она имеет очень простой формат.

UPDATE имя_таблицы SET

имя_столбца_1 = значение_1,

имя_столбца_2 = значение_2,

имя_столбца_3 = значение_3, ...

[WHERE условия];

Как и все другие команды SQL можно вводить ее на одной строке или на нескольких строках.

Рассмотрим несколько примеров.

Предположим, директор увеличил свою зарплату на 20000 и надбавки на 5000. Его предыдущая зарплата была 200000, а надбавки были 50000.

UPDATE employee_data SET

salary=220000, perks=55000

WHERE title='директор';

На рис. 6.15. приведен результат запроса.

Рис. 6.15. Данные обновлены

Можно проверить эту операцию, выводя данные из таблицы.

select salary, perks from

employee_data WHERE

title = 'директор';

На рис. 6.16. приведен результат запроса.

Рис. 6.16. Данные обновлены

В действительности предыдущую зарплату знать не требуется. Можно воспользоваться арифметическими операторами. Следующий оператор сделает то же самое, при этом исходные данные знать заранее не требуется.

UPDATE employee_data SET

salary = salary + 20000,

perks = perks + 5000

WHERE title='директор';

Результат запроса аналогичен рис. 6.15.

В качестве другого примера можно попробовать изменить название должности "разработчик Web" на "программист Web".

mysql> update employee_data SET

-> title = 'программист Web'

-> WHERE title = 'разработчик Web';

На рис. 6.17. приведен результат запроса.

Рис. 6.17. Данные обновлены

Важно также перед выполнением изменений внимательно изучить часть оператора с условием, так как легко можно изменить не те данные. Оператор UPDATE без условий изменит все данные столбца во всех строках. Надо быть очень осторожным при внесении изменений.

Задания

  1. Измените фамилию Чащина на Петрова. Внесите соответствующие изменения в базу данных.

  2. Название должности "программист мультимедиа" необходимо изменить на "специалист по мультимедиа".

  3. Увеличьте зарплату всем сотрудниками (кроме директора) на 10000.

Возможные решения

  1. mysql> update employee_data SET

  2. -> l_name = 'Петрова'

  3. -> WHERE l_name = 'Чашина';

Примечание: Если бы были еще сотрудники с фамилией Чащина, то эти записи также были бы изменены. В таком случае может помочь столбец emp_id, так как он содержит уникальные значения. Лучше использовать значение emp_id вместоl_name, как в следующем примере:

mysql> update employee_data SET

-> l_name = 'Петрова'

-> WHERE emp_id = 4;

  1. mysql> update employee_data set

  2. -> title = 'специалист по мультимедиа'

  3. -> where title = 'программист мультимедиа';

  4. mysql> update employee_data set

  5. -> salary = salary + 10000

  6. -> where title != 'директор';

Лекция 7.

Поиск минимального и максимального значений

В MySQL имеются встроенные функции для вычисления минимального и максимального значений.

SQL имеет 5 агрегатных функций.

  1. MIN(): минимальное значение

  2. MAX(): максимальное значение

  3. SUM(): сумма значений

  4. AVG(): среднее значений

  5. COUNT(): подсчитывает число записей

В этом параграфе мы рассмотрим поиск минимального и максимального значений столбца.

Минимальное значение

select MIN(salary) from employee_data;

На рис. 7.1. приведен результат запроса.

Рис. 7.1. Поиск минимальной зарплаты

Максимальное значение

select MAX(salary) from employee_data;

На рис. 7.2. приведен результат запроса.

Рис. 7.2. Поиск максимальной зарплаты

Задания

  1. Найдите минимальные надбавки.

  2. Найдите максимальную зарплату среди всех "программистов".

  3. Найдите возраст самого старого "продавца".

  4. Найдите имя и фамилию самого старого сотрудника.

Возможные решения

1. mysql> select MIN(perks) from employee_data;

На рис. 7.3. приведен результат запроса.

Рис. 7.3. Минимальные надбавки

2.

mysql> select MAX(salary) from employee_data

-> where title = 'программист';

На рис. 7.4. приведен результат запроса.

Рис. 7.4. Максимальная зарплата среди программистов

3. mysql> select MAX(age) from employee_data

-> where title = 'продавец';

На рис. 7.5. приведен результат запроса.

Рис. 7.5. Возраст самого старого продавца

4. Вот один из способов сделать без использования агрегатных функций.

mysql> select f_name, l_name, age

-> from employee_data

-> order by age DESC limit 1;

На рис. 7.6. приведен результат запроса.

Рис. 7.6. Имя и фамилия самого старого сотрудника

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]