Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РУБД - Теория по SQL .doc
Скачиваний:
4
Добавлен:
27.08.2019
Размер:
691.71 Кб
Скачать

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

Для сортировки в обратном порядке к имени столбца следует добавить ключевое слово DESC (по убыванию): mysql> SELECT name, birth FROM pet ORDER BY birth DESC;

name

birth

Puffball

1999-03-30

Chirpy

1998-09-11

Whistler

1997-12-09

Slim

1996-04-29

Claws

1994-03-17

Fluffy

1993-02-04

Fang

1990-08-27

Bowser

1989-08-31

Buffy

1989-05-13

Сортировку можно проводить по нескольким столбцам сразу.

mysql> SELECT name, species, birth FROM pet ORDER BY species, birth DESC;

name

species

birth

Chirpy

bird

1998-09-11

Whistler

bird

1997-12-09

Claws

cat

1994-03-17

Fluffy

cat

1993-02-04

Fang

dog

1990-08-27

Bowser

dog

1989-08-31

Buffy

dog

1989-05-13

Puffball

hamster

1999-03-30

Slim

snake

1996-04-29

Вычисление дат

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

mysql> SELECT name, birth, CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(birth))

-> - (RIGHT(CURRENT_DATE,5)<RIGHT(birth,5)) AS age FROM pet;

name

birth

URRENT_DATE

age

Fluffy

1993-02-04

2001-08-29

8

Claws

1994-03-17

2001-08-29

7

Buffy

1989-05-13

2001-08-29

12

Fang

1990-08-27

2001-08-29

11

Bowser

1989-08-31

2001-08-29

11

Chirpy

1998-09-11

2001-08-29

2

Whistler

1997-12-09

2001-08-29

3

Slim

1996-04-29

2001-08-29

5

Puffball

1999-03-30

2001-08-29

2

В этом примере функция YEAR() выделяет из даты год, а RIGHT() - пять крайних справа символов, представляющих календарный день (MM-DD). Часть выражения, сравнивающая даты, выдает 1 или 0, что позволяет уменьшить результат на единицу, если текущий день (CURRENT_DATE) находится к началу календаря ближе, нежели день рождения животного.

Упорядочить запрос

mysql> SELECT name, birth, CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(birth))

-> - (RIGHT(CURRENT_DATE,5)<RIGHT(birth,5)) AS age FROM pet ORDER BY name;

name

birth

CURRENT_DATE

age

Bowser

1989-08-31

2001-08-29

11

Buffy

1989-05-13

2001-08-29

12

Chirpy

1998-09-11

2001-08-29

2

Claws

1994-03-17

2001-08-29

7

Fang

1990-08-27

2001-08-29

11

Fluffy

1993-02-04

2001-08-29

8

Puffball

1999-03-30

2001-08-29

2

Slim

1996-04-29

2001-08-29

5

Whistler

1997-12-09

2001-08-29

3