Oracle SQL. 100 шагов от новичка до профессионала - страница 17

стр.

Синтаксис


Примеры

Вывести первые 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 является командой модификации данных, поэтому ее выполнение необходимо завершить одной из следующих команд:

COMMIT – фиксация изменений;

ROLLBACK – откат изменений.

Только после выполнения фиксации изменений данные появятся в базе.


Обратите внимание: при добавлении данных типа дата (DATE) мы использовали следующую конструкцию: DATE’YYYY-MM-DD», YYYY – текущий год, ММ – месяц, DD – день.


При использовании INSERT с запросом SELECT также необходимо, чтобы последовательность и типы колонок, перечисленных после команды INSERT, совпадали с последовательностью и типами колонок в запросе SELECT.

Вопросы учеников

Все же зачем применять COMMIT или ROLLBACK и что будет, если эти команды не выполнять?

Во многих СУБД применяется транзакционная модель, что это такое – узнаем чуть позже, но сейчас необходимо понимать, что при запуске операций изменения, вставки, удаления данных эти изменения появятся в базе только после выполнения команды COMMIT.

Я использовал только команду INSERT и не применял ни COMMIT, ни ROLLBACK, но данные все равно появились в базе. Почему так вышло?

Некоторые редакторы поддерживают режим автофиксации изменений, то есть выполняют команду COMMIT за вас.

Если я перечислю не все колонки, какие есть в таблице, куда мы добавляем данные, будет ошибка?

Необязательно. В колонки, которые вы не перечислили, будет добавлено пустое (NULL) значение, ошибка возникнет только если на колонках этой таблицы есть ограничение NOT NULL или первичный ключ.