Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции для 16 группы.docx
Скачиваний:
45
Добавлен:
13.02.2015
Размер:
293.45 Кб
Скачать

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

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

В данном случае необходимо перейти от изучения языка определения данных DDL (Data Definition Language) к изучению языка манипуляции данными DML (Data Manipulation Language).

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

7.4.1. Операции вставки строк

Для выполнения вставки строк в таблицы предназначен оператор INSERT, который имеет следующий синтаксис:

INSERT INTO [имя_схемы.]имя_таблицы

[(имя_колонки1, имя_колонки2, ...)]

VALUES (выражение1, выражение2, ...)

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

Перечисление колонок (имя_колонки1, имя_колонки2, ...) является необязательным. В случае его отсутствия подразумевается, что при вставке строки будут заполнены поля соответствующие всем колонкам, при этом порядок следования колонок будет использоваться тот, который был задан при создании таблицы с помощью команды CREATE TABLE.

Параметры (выражение1, выражение2, ...) заменяются на вычисляемые значения.

Рассмотрим использование команды INSERT на примерах. Пусть таблица project была создана следующей командой:

CREATE TABLE project (

proj_no NUMBER(4),

proj_name VARCHAR2(30),

bdate DATE,

budget NUMBER(10,2) )

Тогда для вставки строк в таблицу project можно использовать следующие команды:

  1. INSERT INTO project (proj_name, proj_no, budget, bdate,) VALUES (’Проект 1’,1, ,123.45, TO_DATE(’01.06.2009’,’DD.MM.YYYY’))

  1. INSERT INTO project (proj_no, proj_name) VALUES (2, ’Проект 2’)

  1. INSERT INTO project VALUES (1, ’Проект 1’, TO_DATE(’01.06.2009’,’DD.MM.YYYY’), 123.45)

В команде (1) перечислены все колонки таблицы project в произвольном порядке. После ключевого слова VALUES записаны выражения, значения которых будут вычислены и помещены в соответствующие поля таблицы project.

При заполнении колонок, имеющих тип DATE, в прикладных программах пользовательский интерфейс позволяет вводить дату в обычном национальном формате (например, 2 символа числа, 2 символа месяца и 4 символа года, разделенные точкой). Однако при составлении запроса, выполняющего вставку строки, в которой есть колонки типа DATE, необходимо использовать встроенную функцию TO_DATE, которой в качестве параметров передаются строка, содержащая дату (’01.06.2009’), и строка, содержащая формат даты (’DD.MM.YYYY’).

В команде (2) перечислены не все колонки. При выполнении такой команды поля, соответствующие отсутствующим колонкам, будут заполнены неопределенным (NULL) значением.

В команде (3) перечисление колонок отсутствует, то есть по умолчанию подразумеваются тот состав и тот порядок колонок, которые были использованы в команде CREATE TABLE.

Строки, которые необходимо вставить в таблицу, могут быть результатом запроса к другой таблице или представлению. При этом синтаксис команды INSERT будет иметь следующий вид:

INSERT INTO [имя_схемы.]имя_таблицы

[(имя_колонки1, имя_колонки2, ...)]

подзапрос

В данной конструкции подзапрос представляет собой конструкцию на языке SQL, предназначенную для выборки строк из одной или нескольких таблиц или представлений.

Для примера рассмотрим ситуацию, когда существуют две таблицы project и project1, имеющие одинаковую структуру и порядок следования колонок. Тогда вставка всех строк таблицы project1 в таблицу project может быть представлена следующими командами:

  1. INSERT INTO project SELECT * FROM project1

  1. INSERT INTO project (proj_no, proj_name) SELECT proj_no, proj_name FROM project1

Подзапрос должен возвращать колонки тех типов и в той последовательности, которая должна быть вставлена в таблицу. В команде (1) по умолчанию выбираются все колонки и все строки таблицы project1 и вставляются в таблицу project. В команде (2) выбираются только колонки proj_no и proj_name таблицы project1, значения которых затем вставляются в строки таблицы project.