Учебно-практическое пособие москва 2017 ббк


SELECT aircraft_code, fare_conditions, count( * )



Pdf көрінісі
бет32/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   28   29   30   31   32   33   34   35   ...   243
Байланысты:
Язык SQL. Базовый курс

SELECT aircraft_code, fare_conditions, count( * )
FROM seats
GROUP BY aircraft_code, fare_conditions
ORDER BY aircraft_code, fare_conditions;
aircraft_code | fare_conditions | count
---------------+-----------------+-------
319
| Business
|
20
319
| Economy
|
96
320
| Business
|
20
320
| Economy
| 120
...
(17 строк)
Контрольные вопросы и задания
1. Попробуйте ввести в таблицу aircrafts строку с таким значением атрибута «Код
самолета» (aircraft_code), которое вы уже вводили, например:
INSERT INTO aircrafts
VALUES ( 'SU9', 'Sukhoi SuperJet-100', 3000 );
Обратите внимание, что в этой команде мы не привели список атрибутов, что
вполне допустимо при задании значений атрибутов в том же порядке, в котором
атрибуты следуют в определении таблицы. Но в ваших прикладных программах
так поступать все же не следует, поскольку в случае возможной реструктуриза-
ции таблицы и изменения порядка следования атрибутов в ней ваши команды
INSERT могут перестать работать корректно.
Вы получите сообщение об ошибке.
ОШИБКА: повторяющееся значение ключа нарушает ограничение
уникальности "aircrafts_pkey"
,

ПОДРОБНОСТИ: Ключ "(aircraft_code)=(SU9)" уже существует.
Подумайте, почему оно появилось. Если вы забыли структуру таблицы aircrafts,
то можно вывести ее определение на экран с помощью команды
\d aircrafts
2. Предложение ORDER BY команды SELECT позволяет отсортировать данные при
выводе. По умолчанию сортировка выполняется по возрастанию значений ат-
рибута, указанного в этом предложении. Но можно упорядочить строки и по
убыванию значения атрибута. Для этого нужно после имени атрибута в пред-
ложении ORDER BY добавить ключевое слово DESC (это сокращение от слова
descendant — убывающий порядок). Самостоятельно напишите команду для вы-
борки всех строк из таблицы aircrafts, чтобы строки были упорядочены по убы-
ванию значения атрибута «Максимальная дальность полета, км» (range).
35


3. Команда UPDATE позволяет в процессе обновления выполнять арифметические
действия над значениями, находящимися в строках таблицы. Представим себе,
что двигатели самолета Sukhoi SuperJet стали в два раза экономичнее, вслед-
ствие чего дальность полета этого лайнера возросла ровно в два раза. Команда
UPDATE позволяет увеличить значение атрибута range в строке, хранящей ин-
формацию об этом самолете, даже не выполняя предварительно выборку с це-
лью выяснения текущего значения этого атрибута. При присваивании нового
значения атрибуту range можно справа от знака «=» написать не только чис-
ловую константу, но и целое выражение. В нашем случае оно будет простым:
range = range * 2. Самостоятельно напишите команду UPDATE полностью, при
этом не забудьте, что увеличить дальность полета нужно только у одной моде-
ли — Sukhoi SuperJet, поэтому необходимо использовать условие WHERE. Затем
с помощью команды SELECT проверьте полученный результат.
4. Если в предложении WHERE команды DELETE вы укажете логически и синтакси-
чески корректное условие, но строк, удовлетворяющих этому условия, в таблице
не окажется, то в ответ СУБД выведет сообщение
DELETE 0
Такая ситуация не является ошибкой или сбоем в работе СУБД. Например, ес-
ли после удаления какой-то строки вы повторно попытаетесь удалить ее же, то
получите именно такое сообщение.
Самостоятельно смоделируйте описанную ситуацию, подобрав условие, кото-
рому гарантированно не соответствует ни одна строка в таблице «Самолеты»
(aircrafts).
36




Достарыңызбен бөлісу:
1   ...   28   29   30   31   32   33   34   35   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет