Я знаю, что для инструкции ORDER BY существует альтернативный синтаксис. Расскажите о нем.
Перепишем этот запрос с использованием альтернативного синтаксиса:
То есть вместо названий колонок таблиц в инструкции ORDER BY мы используем порядковый номер колонки в нашем запросе — у CITYCODE он равен 1, у CITYNAME 2, у PEOPLES 3.
Можно ли отсортировать запрос по полю, которого нет в запросе, но которое есть в таблице после инструкции FROM?
Да, синтаксис SQL это допускает, и вот пример:
Контрольные вопросы и задания для самостоятельного выполнения
1. Выберите записи из таблицы CITY, где в названии города (CITYNAME) есть слог «ем», отсортируйте запрос по названию города (CITYNAME) и по популяции (PEOPLES) в обратном порядке.
2. Выберите все записи из таблицы AUTO, отсортируйте записи по цвету (COLOR) и по марке (MARK) автомобиля в обратном порядке.
Шаг 14. Ограничение на количество выбранных строк ROWNUM, TOP (n)
Иногда запросы строятся таким образом, что на экран сразу выводится множество строк.
А что если нам необходимо ограничить количество строк выводимой информации, то есть из десятков тысяч строк нам достаточно нескольких строк для анализа информации?
Для решения этой задачи в разных диалектах языка SQL используются разные синтаксические конструкции: в MS SQL это конструкция TOP, в ORACLE есть специальный предикат ROWNUM, в PostgreSql, MYSQL для этого существует конструкция LIMIT.
Разберем диалект SQL ORACLE.
Конструкция ROWNUM позволит ограничить количество выводимых строк на заданную величину.
Примеры
Вывести первые 5 строк из таблицы AUTO.
Рисунок 29. Запрос с ограничением строк (первые 5)
Вывести первые 5 строк из таблицы CITY, где население (PEOPLES) городов больше 300 000.
Рисунок 30. Выбрать первые 5 строк, запрос города: население больше 300 000
Если использовать ROWNUM совместно с сортировкой, то необходимо прибегнуть к специальному приему, иначе ROWNUM не будет работать как нужно и запрос вернет неверные данные.
Правильно следует написать так:
Вывести первые 5 автомобилей, отсортированных по дате производства (RELEASEDT).
Ошибочный запрос:
Правильный запрос:
Покажите, как ограничивать вывод строк в MYSQL, MS SQL и PostgreSQL.
Разберемся на примере.
Вывести первые 5 строк из таблицы CITY, где население (PEOPLES) городов больше 3000.
ORACLE SQL
MY SQL
MS SQL
PostgreSQL
Контрольные вопросы и задания для самостоятельного выполнения
1. Поясните, как использовать ROWNUM с сортировкой в SQL-запросе.
2. Выведите на экран первые 3 строчки из таблицы CITY.
3. Выведите на экран первые 4 строчки из таблицы CITY, отсортированные по количеству населения (PEOPLES).
4. Выведите на экран данные из таблицы MAN.
Шаг 15. Вставка данных в таблицу — INSERT
Ранее мы с вами изучили, как создавать таблицы и изменять структуру таблиц, а также как извлекать данные из таблиц на экран с помощью команды SELECT. Мы выбирали данные, которые уже были в таблицах. Настало время узнать о том, как добавить необходимые данные в таблицу.
Для добавления данных в SQL используется команда INSERT.
Команда INSERT существует в SQL в двух вариантах.
Во-первых, для добавления заданных значений — VALUES.
Синтаксис
Важно помнить, что количество колонок в скобках и количество добавляемых значений должны соответствовать друг другу.
Также очень важно, чтобы колонки и значения соответствовали по типу данных.
Примеры
Добавим новые сведения о человеке в таблицу MAN:
В таблицу MAN добавлена строка о человеке с номером телефона «120120120», именем «Максим», фамилией «Леонидов», кодом города 2, ему 25 лет (PHONENUM, FIRSTNAME, LASTNAME, CITYCODE, YEAROLD).
Добавим сведения о новой машине в таблицу AUTO:
В таблицу AUTO добавлена строка о авто c номером «128877655» марки «LADA», цвет «КРАСНЫЙ», дата выпуска «2001-01-01», «123114444».
Второй вариант, для добавления из запроса SELECT
Здесь источником данных являются не одиночные значения, а настоящий запрос SELECT.
Синтаксис:
Примеры
В таблицу CITY1 добавить все строки из CITY, где население больше миллиона человек.
В таблицу MAN1 добавить все строки из MAN.
Команда INSERT является командой модификации данных, поэтому ее выполнение необходимо завершить одной из следующих команд:
Читать дальше
Конец ознакомительного отрывка
Купить книгу