Выбор данных с помощью Date


Вот как можно выбрать сотрудников, которые родились в марте.

select e_id, birth_datefrom employee_perwhere MONTH(birth_date) = 3;

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


Рис. 9.7. Поиск по месяцу

Можно также использовать вместо чисел названия месяцев.

select e_id, birth_datefrom employee_perwhere MONTHNAME(birth_date) = 'January';

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


Рис. 9.8. Использование названия месяца в поиске

Будьте внимательны при использовании названий месяцев, так как они различают регистр символов. Поэтому January будет работать, а JANUARY не будет!

Аналогично можно выбрать сотрудников, родившихся в определенный год или в определенный день.

select e_id, birth_datefrom employee_perwhere year(birth_date) = 1972;

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


Рис. 9.9. Поиск по году рождения

select e_id, birth_datefrom employee_perwhere DAYOFMONTH(birth_date) = 20;

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


Рис. 9.10. Поиск по дате рождения

Текущие даты

Ранее мы видели, что текущую дату, месяц и год можно вывести с помощью аргумента CURRENT_DATE предложений DAYOFMONTH(), MONTH() и YEAR(), соответственно. То же самое можно использовать для выборки данных из таблиц.

select e_id, birth_datefrom employee_per whereMONTH(birth_date) = MONTH(CURRENT_DATE);

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


Рис. 9.11. Поиск по текущему месяцу

 

Задания

  1. Вывести идентификаторы, даты рождения и адреса e-mail сотрудников, родившихся в апреле.
  2. Вывести идентификаторы, даты рождения и имена супругов сотрудников, родившихся в 1968 г., и отсортируйте записи на основе имен их супругов.
  3. Выведите идентификаторы сотрудников, родившихся в текущем месяце.
  4. Сколько в базе данных имеется уникальных годов рождения?
  5. Вывести список уникальных годов рождения и число сотрудников, родившихся в каждом таком году.
  6. Сколько сотрудников родились в каждом месяце? Выдача должна содержать названия месяцев (не номера), и записи должны быть упорядочены по убыванию по месяцам, начиная от наибольшего номера.

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

1. mysql> select e_id, birth_date, p_email2. -> from employee_per3. -> where month(birth_date) = 4;

4. Результат запроса представлен на рис. 9.12.


Рис. 9.12. Сотрудники, родившиеся в апреле

или

mysql> select e_id, birth_date, p_email -> from employee_per -> where MONTHNAME(birth_date) = 'April';

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

5. mysql> select e_id, birth_date, s_name6. -> from employee_per where7. -> YEAR(birth_date) = 19688. -> ORDER BY s_name;

9. Результат запроса представлен на рис. 9.13.


Рис. 9.13. Сотрудники 1968 года рождения, с сортировкой по именам

Примечание: Значение NULL показано в самом верху. Более подробно значение NULL будет рассмотрено ниже.

10. mysql> select e_id from employee_per11. -> where month(birth_date) = month(current_date);

12. Результат запроса представлен на рис. 9.14.


Рис. 9.14. Сотрудники родившиеся в этом месяце

13. mysql> select distinct year(birth_date) from employee_per;

14. Результат запроса представлен на рис. 9.15.


Рис. 9.15. Уникальные годы рождения

15. mysql> select year(birth_date) as Year,16. -> count(*) from employee_per17. -> GROUP BY Year;

18. Результат запроса представлен на рис. 9.16.


Рис. 9.16. Количество сотрудников, родившихся в каждом году

19. mysql> select MONTHNAME(birth_date) AS Month,20. -> count(*) AS Number21. -> from employee_per22. -> GROUP BY Month23. -> ORDER BY Number DESC;

24. Результат запроса представлен на рис. 9.17.


Рис. 9.17. Количество сотрудников, родившихся в каждом месяце

Тип столбца Null

В этой лекции мы уже встречались с типом NULL. Теперь рассмотрим его подробнее.

Тип столбца NULL является специальным значением. Чтобы вставить значение NULL, удалите просто имя столбца из оператора INSERT. Столбцы содержат NULL по умолчанию, если только не определены как NOT NULL. Значение null может использоваться для целочисленных, а также текстовых или двоичных данных.

NULL нельзя сравнивать с помощью арифметических операторов. Сравнение для NULL можно делать с помощью IS NULL или IS NOT NULL.

select e_id, childrenfrom employee_perwhere children IS NOT NULL;

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


Рис. 9.18. Сотрудники, имеющие детей

Приведенная выше команда выводит идентификаторы и количество детей сотрудников, у которых есть дети.

Задания

  1. Найти и вывести идентификаторы и имена супругов всех сотрудников, которые состоят в браке.
  2. Изменить предыдущее задание так, чтобы вывод был отсортирован по именам супругов.
  3. Сколько имеется сотрудников каждого пола (мужчин и женщин)?
  4. Сколько сотрудников состоят в браке, и сколько холостых?
  5. Найдите общее число детей.
  6. Сделайте уникальные группы по количеству детей и определите число детей каждой группы. Отсортируйте вывод групп по убыванию по количеству детей.

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

1. mysql> select e_id, s_name2. -> from employee_per3. -> where m_status = 'Y';

4. или

5. mysql> select e_id, s_name6. -> from employee_per7. -> where s_name IS NOT NULL;8. mysql> select e_id, s_name9. -> from employee_per10. -> where m_status = 'Y'11. -> ORDER BY s_name;12. 13. 14. mysql> select e_id, s_name15. -> from employee_per16. -> where s_name IS NOT NULL17. -> ORDER BY s_name;18.mysql> select sex, count(*)19. -> from employee_per20. -> GROUP BY sex;21.mysql> select m_status, count(*)22. -> from employee_per23. -> GROUP BY m_status;24.mysql> select sum(children) from employee_per;25.mysql> select children, count(*) AS26. -> число from employee_per27. -> GROUP BY children28. -> ORDER BY number DESC;

 

Строковые функции

В этой лекции рассмотрим команды MySql, предназначенные для обработки строковых данных.

ASCII(строка)

ORD(строка)

Возвращает числовое значение первого символа строки строка. Возвращает 0, если строка является пустой. Возвращает NULL, если строка равна NULL. ASCII() работает с символами в диапазоне кодов от 0 до 255.

mysql> SELECT ASCII('2') ;-> 50 mysql> SELECT ASCII(2);-> 50 mysql> SELECT ASCII('dx');-> 100

BIN(N)

Возвращает строковое представление двоичного значения N, где N - длинное целое (BIGINT). Это эквивалентно CONV(N, 10,2). Возвращает NULL, если N равно NULL.

mysql> SELECT BIN(12) ;-> '1100'

ВIT_LENGTH(строка)

Возвращает длину строки строка в битах.

mysql> SELECT BIT_LENGTH('text');-> 32

CHAR(iV,...)

Интерпретирует аргументы как целые и возвращает строку, состоящую из символов с кодами, заданными этими целыми. Значение NULL пропускаются.

mysql> SELECT CHAR(77,121,83,81,'76');-> 'MySQL' mysql > SELECT CHAR(77,77.3,'77.3');-> 'МММ'


Дата добавления: 2020-11-18; просмотров: 412;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.011 сек.