SlideShare a Scribd company logo
1 of 22
Download to read offline
SELECT                GROUP BY                 INSERT, UPDATE, DELETE




                           Язык SQL

                          Информатика
                          10-11 классы


                        21 ноября 2012 г.




         Информатика 10-11 классы   Язык SQL
SELECT                 GROUP BY                 INSERT, UPDATE, DELETE



Повторим SELECT




          Информатика 10-11 классы   Язык SQL
SELECT                               GROUP BY                        INSERT, UPDATE, DELETE



Оператор SELECT



         id    first_name        last_name          gender   created_at
              Вспомним один из простейших запросов:

     Listing 1: SELECT
              SELECT ∗ FROM u s e r s
              WHERE ( g e n d e r = 1 )
              ORDER BY c r e a t e d _ a t DESC
              LIMIT 1




                        Информатика 10-11 классы     Язык SQL
SELECT                      GROUP BY                 INSERT, UPDATE, DELETE



Функции

         Зачастую встаёт задача не просто по выборке каких-либо
         данных из таблицы, а по их подсчёту.




               Информатика 10-11 классы   Язык SQL
SELECT                       GROUP BY                 INSERT, UPDATE, DELETE



Функции

         Зачастую встаёт задача не просто по выборке каких-либо
         данных из таблицы, а по их подсчёту.
         Пример “раз”: есть таблица учеников students. Сколько
         учеников имеет оценку 5?




                Информатика 10-11 классы   Язык SQL
SELECT                       GROUP BY                 INSERT, UPDATE, DELETE



Функции

         Зачастую встаёт задача не просто по выборке каких-либо
         данных из таблицы, а по их подсчёту.
         Пример “раз”: есть таблица учеников students. Сколько
         учеников имеет оценку 5?
         Пример “два”: какой максимальный балл набрал ученик за
         тест?




                Информатика 10-11 классы   Язык SQL
SELECT                       GROUP BY                 INSERT, UPDATE, DELETE



Функции

         Зачастую встаёт задача не просто по выборке каких-либо
         данных из таблицы, а по их подсчёту.
         Пример “раз”: есть таблица учеников students. Сколько
         учеников имеет оценку 5?
         Пример “два”: какой максимальный балл набрал ученик за
         тест?
         Пример “три”: чему равен средний балл по контрольной?




                Информатика 10-11 классы   Язык SQL
SELECT                       GROUP BY                 INSERT, UPDATE, DELETE



Функции

         Зачастую встаёт задача не просто по выборке каких-либо
         данных из таблицы, а по их подсчёту.
         Пример “раз”: есть таблица учеников students. Сколько
         учеников имеет оценку 5?
         Пример “два”: какой максимальный балл набрал ученик за
         тест?
         Пример “три”: чему равен средний балл по контрольной?
         Пример “четыре”: сколько пользователей банка за
         последний месяц воспользовались услугами
         Интернет–банкинга?




                Информатика 10-11 классы   Язык SQL
SELECT                       GROUP BY                 INSERT, UPDATE, DELETE



Функции

         Зачастую встаёт задача не просто по выборке каких-либо
         данных из таблицы, а по их подсчёту.
         Пример “раз”: есть таблица учеников students. Сколько
         учеников имеет оценку 5?
         Пример “два”: какой максимальный балл набрал ученик за
         тест?
         Пример “три”: чему равен средний балл по контрольной?
         Пример “четыре”: сколько пользователей банка за
         последний месяц воспользовались услугами
         Интернет–банкинга?
         Для работы со всем этим и применяются специальные
         функции.


                Информатика 10-11 классы   Язык SQL
SELECT                            GROUP BY                     INSERT, UPDATE, DELETE



Функции

         Функция         Аргументы           Описание
         COUNT(*)        не важно            считает количество записей в вы-
                                             борке
         MAX(mark)       название            находит максимальное значение в
                         столбца             столбце среди выбранных записей
         MIN(mark)       название            находит минимальное значение в
                         столбца             столбце среди выбранных записей
         SUM(mark)       название            находит сумму значений из столбца
                         столбца             mark среди выбранных записей
         AVG(mark)       название            находит среднее арифметическое
                         столбца             значение в столбце среди выбран-
                                             ных записей



                     Информатика 10-11 классы   Язык SQL
SELECT                         GROUP BY                       INSERT, UPDATE, DELETE



COUNT



            id   first_name        last_name       gender   created_at
                                   Таблица: users


         Сколько записей в таблице users?

     Listing 2: SELECT COUNT
         SELECT COUNT( ∗ ) FROM u s e r s ;

         Результат: 6




                  Информатика 10-11 классы    Язык SQL
SELECT                         GROUP BY                           INSERT, UPDATE, DELETE



COUNT с условием



            id    first_name       last_name      gender    created_at
                                   Таблица: users


         А сколько мужчин?

     Listing 3: SELECT COUNT
         SELECT COUNT( ∗ ) FROM u s e r s WHERE g e n d e r =1;

         Результат: 4




                  Информатика 10-11 классы   Язык SQL
SELECT                            GROUP BY                         INSERT, UPDATE, DELETE



MAX


                id      student_id       gender     mark     created_at
                                 Таблица: exam_results


         Какое максимальное (минимальное) количество баллов
         было набрано на экзамене?

     Listing 4: SELECT MAX
         SELECT MAX( mark ) FROM e x a m _ r e s u l t s ;
         SELECT MIN( mark ) FROM e x a m _ r e s u l t s ;




                     Информатика 10-11 классы     Язык SQL
SELECT                            GROUP BY                         INSERT, UPDATE, DELETE



AVG



                id      student_id       gender     mark     created_at
                                 Таблица: exam_results


         А каков средний балл?

     Listing 5: SELECT AVG
         SELECT AVG( mark ) FROM e x a m _ r e s u l t s ;




                     Информатика 10-11 классы     Язык SQL
SELECT                       GROUP BY                 INSERT, UPDATE, DELETE



GROUP BY



         А что, если я хочу узнать, сколько учеников получило
         оценку 5, сколько 4, и т.п.?
         Конечно, можно выполнить ряд последовательных
         запросов с поиском через WHERE.
         Но есть альтернатива! — GROUP BY.
         Оператор GROUP BY группирует результаты по заданному
         полю.




                Информатика 10-11 классы   Язык SQL
SELECT                            GROUP BY                         INSERT, UPDATE, DELETE



GROUP BY и COUNT



                id      student_id       gender     mark     created_at
                                 Таблица: exam_results


         Таблица: балл — количество учеников, его набравших.

     Listing 6: GROUP BY
         SELECT mark , COUNT( ∗ ) FROM e x a m _ r e s u l t s
         GROUP BY mark ;




                     Информатика 10-11 классы     Язык SQL
SELECT                            GROUP BY                         INSERT, UPDATE, DELETE



GROUP BY и AVG


                id      student_id       gender     mark     created_at
                                 Таблица: exam_results


         А если ученики писали не один экзамен, а несколько? Как
         подсчитать средний балл по каждому ученику?

     Listing 7: GROUP BY AVG
         SELECT ∗ , AVG( mark ) FROM e x a m _ r e s u l t s
         GROUP BY s t u d e n t _ i d ;




                     Информатика 10-11 классы     Язык SQL
SELECT                            GROUP BY                         INSERT, UPDATE, DELETE



GROUP BY и HAVING


                id      student_id       gender     mark     created_at
                                 Таблица: exam_results


         А если я хочу вывести только учеников, у которых средний
         балл выше 3? При этом отсортировать по убыванию
         баллов?

     Listing 8: GROUP BY HAVING
         SELECT ∗ , AVG( mark ) AS avg_mark FROM e x a m _ r e s u l t s
         GROUP BY s t u d e n t _ i d
         HAVING avg_mark
         ORDER BY avg_mark DESC ;



                     Информатика 10-11 классы     Язык SQL
SELECT                             GROUP BY                                 INSERT, UPDATE, DELETE



INSERT



                 id      student_id        gender       mark      created_at
                                  Таблица: exam_results


         Добавляем новую запись в таблицу.

     Listing 9: INSERT
         INSERT INTO e x a m _ r e s u l t s ( s t u d e n t _ i d , g e n d e r , mark )
         VALUES ( 1 , 1 , 5 ) ;




                      Информатика 10-11 классы      Язык SQL
SELECT                             GROUP BY                           INSERT, UPDATE, DELETE



UPDATE



                 id      student_id       gender     mark     created_at
                                  Таблица: exam_results


         Изменяем запись в таблицу.

     Listing 10: UPDATE
         UPDATE e x a m _ r e s u l t s SET g e n d e r =2 , mark=3
         WHERE i d = 5 ;




                      Информатика 10-11 классы     Язык SQL
SELECT                            GROUP BY                         INSERT, UPDATE, DELETE



DELETE



                id      student_id       gender     mark     created_at
                                 Таблица: exam_results


         Удаляем.

     Listing 11: DELETE
         DELETE FROM e x a m _ r e s u l t s
         WHERE c r e a t e d _ a t < "2012−01−01" ;




                     Информатика 10-11 классы     Язык SQL
SELECT                          GROUP BY                         INSERT, UPDATE, DELETE



Тестовая таблица courses




         id    title   desc   type     is_active    created_at     updated_at
          1    Ruby     ...     1          1        2012-01-01     2012-01-01
          2    Info     ...     0          0        2012-01-02     2012-02-01
          3   Google    ...     1          0        2012-03-25     2012-05-28
          4    Test     ...     0          1        2012-03-25     2012-11-13




                   Информатика 10-11 классы   Язык SQL

More Related Content

More from Evgeny Smirnov

Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyEvgeny Smirnov
 
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образованииEvgeny Smirnov
 
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.Evgeny Smirnov
 
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Evgeny Smirnov
 
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточкиEvgeny Smirnov
 
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz upEvgeny Smirnov
 
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraEvgeny Smirnov
 
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: началоEvgeny Smirnov
 
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)Evgeny Smirnov
 
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Evgeny Smirnov
 
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуEvgeny Smirnov
 
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Evgeny Smirnov
 
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмыEvgeny Smirnov
 
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамEvgeny Smirnov
 
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицамиEvgeny Smirnov
 
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицыEvgeny Smirnov
 
LMS42 в школьном образовании
LMS42 в школьном образованииLMS42 в школьном образовании
LMS42 в школьном образованииEvgeny Smirnov
 
Импликация и логические уравнения
Импликация и логические уравненияИмпликация и логические уравнения
Импликация и логические уравненияEvgeny Smirnov
 

More from Evgeny Smirnov (20)

Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
 
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
 
Newtonew Media
Newtonew MediaNewtonew Media
Newtonew Media
 
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
 
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2
 
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточки
 
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz up
 
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox Algebra
 
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: начало
 
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)
 
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
 
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
 
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
 
Блок-схемы
Блок-схемыБлок-схемы
Блок-схемы
 
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
 
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
 
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
 
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицы
 
LMS42 в школьном образовании
LMS42 в школьном образованииLMS42 в школьном образовании
LMS42 в школьном образовании
 
Импликация и логические уравнения
Импликация и логические уравненияИмпликация и логические уравнения
Импликация и логические уравнения
 

SQL

  • 1. SELECT GROUP BY INSERT, UPDATE, DELETE Язык SQL Информатика 10-11 классы 21 ноября 2012 г. Информатика 10-11 классы Язык SQL
  • 2. SELECT GROUP BY INSERT, UPDATE, DELETE Повторим SELECT Информатика 10-11 классы Язык SQL
  • 3. SELECT GROUP BY INSERT, UPDATE, DELETE Оператор SELECT id first_name last_name gender created_at Вспомним один из простейших запросов: Listing 1: SELECT SELECT ∗ FROM u s e r s WHERE ( g e n d e r = 1 ) ORDER BY c r e a t e d _ a t DESC LIMIT 1 Информатика 10-11 классы Язык SQL
  • 4. SELECT GROUP BY INSERT, UPDATE, DELETE Функции Зачастую встаёт задача не просто по выборке каких-либо данных из таблицы, а по их подсчёту. Информатика 10-11 классы Язык SQL
  • 5. SELECT GROUP BY INSERT, UPDATE, DELETE Функции Зачастую встаёт задача не просто по выборке каких-либо данных из таблицы, а по их подсчёту. Пример “раз”: есть таблица учеников students. Сколько учеников имеет оценку 5? Информатика 10-11 классы Язык SQL
  • 6. SELECT GROUP BY INSERT, UPDATE, DELETE Функции Зачастую встаёт задача не просто по выборке каких-либо данных из таблицы, а по их подсчёту. Пример “раз”: есть таблица учеников students. Сколько учеников имеет оценку 5? Пример “два”: какой максимальный балл набрал ученик за тест? Информатика 10-11 классы Язык SQL
  • 7. SELECT GROUP BY INSERT, UPDATE, DELETE Функции Зачастую встаёт задача не просто по выборке каких-либо данных из таблицы, а по их подсчёту. Пример “раз”: есть таблица учеников students. Сколько учеников имеет оценку 5? Пример “два”: какой максимальный балл набрал ученик за тест? Пример “три”: чему равен средний балл по контрольной? Информатика 10-11 классы Язык SQL
  • 8. SELECT GROUP BY INSERT, UPDATE, DELETE Функции Зачастую встаёт задача не просто по выборке каких-либо данных из таблицы, а по их подсчёту. Пример “раз”: есть таблица учеников students. Сколько учеников имеет оценку 5? Пример “два”: какой максимальный балл набрал ученик за тест? Пример “три”: чему равен средний балл по контрольной? Пример “четыре”: сколько пользователей банка за последний месяц воспользовались услугами Интернет–банкинга? Информатика 10-11 классы Язык SQL
  • 9. SELECT GROUP BY INSERT, UPDATE, DELETE Функции Зачастую встаёт задача не просто по выборке каких-либо данных из таблицы, а по их подсчёту. Пример “раз”: есть таблица учеников students. Сколько учеников имеет оценку 5? Пример “два”: какой максимальный балл набрал ученик за тест? Пример “три”: чему равен средний балл по контрольной? Пример “четыре”: сколько пользователей банка за последний месяц воспользовались услугами Интернет–банкинга? Для работы со всем этим и применяются специальные функции. Информатика 10-11 классы Язык SQL
  • 10. SELECT GROUP BY INSERT, UPDATE, DELETE Функции Функция Аргументы Описание COUNT(*) не важно считает количество записей в вы- борке MAX(mark) название находит максимальное значение в столбца столбце среди выбранных записей MIN(mark) название находит минимальное значение в столбца столбце среди выбранных записей SUM(mark) название находит сумму значений из столбца столбца mark среди выбранных записей AVG(mark) название находит среднее арифметическое столбца значение в столбце среди выбран- ных записей Информатика 10-11 классы Язык SQL
  • 11. SELECT GROUP BY INSERT, UPDATE, DELETE COUNT id first_name last_name gender created_at Таблица: users Сколько записей в таблице users? Listing 2: SELECT COUNT SELECT COUNT( ∗ ) FROM u s e r s ; Результат: 6 Информатика 10-11 классы Язык SQL
  • 12. SELECT GROUP BY INSERT, UPDATE, DELETE COUNT с условием id first_name last_name gender created_at Таблица: users А сколько мужчин? Listing 3: SELECT COUNT SELECT COUNT( ∗ ) FROM u s e r s WHERE g e n d e r =1; Результат: 4 Информатика 10-11 классы Язык SQL
  • 13. SELECT GROUP BY INSERT, UPDATE, DELETE MAX id student_id gender mark created_at Таблица: exam_results Какое максимальное (минимальное) количество баллов было набрано на экзамене? Listing 4: SELECT MAX SELECT MAX( mark ) FROM e x a m _ r e s u l t s ; SELECT MIN( mark ) FROM e x a m _ r e s u l t s ; Информатика 10-11 классы Язык SQL
  • 14. SELECT GROUP BY INSERT, UPDATE, DELETE AVG id student_id gender mark created_at Таблица: exam_results А каков средний балл? Listing 5: SELECT AVG SELECT AVG( mark ) FROM e x a m _ r e s u l t s ; Информатика 10-11 классы Язык SQL
  • 15. SELECT GROUP BY INSERT, UPDATE, DELETE GROUP BY А что, если я хочу узнать, сколько учеников получило оценку 5, сколько 4, и т.п.? Конечно, можно выполнить ряд последовательных запросов с поиском через WHERE. Но есть альтернатива! — GROUP BY. Оператор GROUP BY группирует результаты по заданному полю. Информатика 10-11 классы Язык SQL
  • 16. SELECT GROUP BY INSERT, UPDATE, DELETE GROUP BY и COUNT id student_id gender mark created_at Таблица: exam_results Таблица: балл — количество учеников, его набравших. Listing 6: GROUP BY SELECT mark , COUNT( ∗ ) FROM e x a m _ r e s u l t s GROUP BY mark ; Информатика 10-11 классы Язык SQL
  • 17. SELECT GROUP BY INSERT, UPDATE, DELETE GROUP BY и AVG id student_id gender mark created_at Таблица: exam_results А если ученики писали не один экзамен, а несколько? Как подсчитать средний балл по каждому ученику? Listing 7: GROUP BY AVG SELECT ∗ , AVG( mark ) FROM e x a m _ r e s u l t s GROUP BY s t u d e n t _ i d ; Информатика 10-11 классы Язык SQL
  • 18. SELECT GROUP BY INSERT, UPDATE, DELETE GROUP BY и HAVING id student_id gender mark created_at Таблица: exam_results А если я хочу вывести только учеников, у которых средний балл выше 3? При этом отсортировать по убыванию баллов? Listing 8: GROUP BY HAVING SELECT ∗ , AVG( mark ) AS avg_mark FROM e x a m _ r e s u l t s GROUP BY s t u d e n t _ i d HAVING avg_mark ORDER BY avg_mark DESC ; Информатика 10-11 классы Язык SQL
  • 19. SELECT GROUP BY INSERT, UPDATE, DELETE INSERT id student_id gender mark created_at Таблица: exam_results Добавляем новую запись в таблицу. Listing 9: INSERT INSERT INTO e x a m _ r e s u l t s ( s t u d e n t _ i d , g e n d e r , mark ) VALUES ( 1 , 1 , 5 ) ; Информатика 10-11 классы Язык SQL
  • 20. SELECT GROUP BY INSERT, UPDATE, DELETE UPDATE id student_id gender mark created_at Таблица: exam_results Изменяем запись в таблицу. Listing 10: UPDATE UPDATE e x a m _ r e s u l t s SET g e n d e r =2 , mark=3 WHERE i d = 5 ; Информатика 10-11 классы Язык SQL
  • 21. SELECT GROUP BY INSERT, UPDATE, DELETE DELETE id student_id gender mark created_at Таблица: exam_results Удаляем. Listing 11: DELETE DELETE FROM e x a m _ r e s u l t s WHERE c r e a t e d _ a t < "2012−01−01" ; Информатика 10-11 классы Язык SQL
  • 22. SELECT GROUP BY INSERT, UPDATE, DELETE Тестовая таблица courses id title desc type is_active created_at updated_at 1 Ruby ... 1 1 2012-01-01 2012-01-01 2 Info ... 0 0 2012-01-02 2012-02-01 3 Google ... 1 0 2012-03-25 2012-05-28 4 Test ... 0 1 2012-03-25 2012-11-13 Информатика 10-11 классы Язык SQL