
- •2. Пользовательские и системные функции языка, выражения, идентификаторы, ключевые слова
- •2.1 Специальные символы pl/sql
- •2.2 Блоки pl/sql
- •2.3 Переменные и типы данных
- •2.4 Операторы условного перехода
- •2.5 Циклы и операторы безусловного перехода
- •2.6 Встроенные функции языка pl/sql
- •Initcap(строка)
- •Instr(строка 1, строка 2, [,a[,b]])
- •3. Работа с данными. Dml & pl/sql
3. Работа с данными. Dml & pl/sql
DML (Data Management Language) – язык для манипулирования данными.
Рассмотрим некоторые операторы этого языка.
Оператор INSERT, служит для заполнения таблиц БД данными и является достаточно простым в использовании. Давайте посмотрим, на синтаксис оператора INSERT:
INSERT INTO таблица (имя столбца таблицы) ,
VALUES (выражение);
оператор выбора
"Таблица" - это имя таблицы, куда вводятся данные. "имя столбца" - это список столбцов, в которые вводятся данные. "Выражение" - это собственно сами данные. "Оператор выбора" - это предложение SELECT, для заполнения таблицы. Используется без части VALUES.
Например:
Создаем таблицу PEOPLE:
CREATE TABLE PEOPLE
(
ID NUMBER PRIMARY KEY,
NM VARCHAR2(50),
FM VARCHAR2(50),
OT VARCHAR2(50)
)
Обратите внимание на поле ID таблицы PEOPLE! Оно имеет атрибут PRIMARY KEY, то есть является первичным ключом таблицы. В него можно записывать только отличные друг от друга значения. И это поле не принимает значения типа NULL! Теперь, применив оператор INSERT, согласно его синтаксического разбора введем в таблицу шесть значений:
INSERT INTO PEOPLE(ID, NM, FM, OT)
VALUES(1, 'John', 'Godwin', 'Petrovich')
/
INSERT INTO PEOPLE(ID, NM, FM, OT)
VALUES(2, 'Bob', 'Doris', 'Martovich')
/
INSERT INTO PEOPLE(ID, NM, FM, OT)
VALUES(3, 'Frank', 'Black', 'Milleniumich')
/
INSERT INTO PEOPLE(ID, NM, FM, OT)
VALUES(4, 'Pupkin', 'Misha', 'Semenovich')
/
INSERT INTO PEOPLE(ID, NM, FM, OT)
VALUES(5, 'Pistoletov', 'Makar', 'Patronovich')
/
INSERT INTO PEOPLE(ID, NM, FM, OT)
VALUES(6, 'Avtomatov', 'Kolya', 'Pricelovich')
/
COMMIT
В части INTO PEOPLE(ID, NM, FM, OT) оператора INSERT указаны поля в порядке ввода данных, если есть необходимость порядок следования полей можно изменить или вообще исключить некоторые из них. В части VALUES(6, 'Avtomatov', 'Kolya', 'Pricelovich') оператора INSERT указаны собственно данные для ввода. Вот так работает оператор INSERT.
В результате таблица PEOPLE получила шесть записей. А что, если у вас есть данные, которые быстро нужно загрузить не путая с тем, что уже было в таблице. Для этого можно применить оператор INSERT с выражением SELECT. Создадим промежуточную таблицу и перебросим содержимое основной в нее:
CREATE TABLE OLD_PEOPLE
(
ID NUMBER PRIMARY KEY,
NM VARCHAR2(50),
FM VARCHAR2(50),
OT VARCHAR2(50)
)
/
Теперь применяя INSERT с выражением, перегрузим данные в новую таблицу:
INSERT INTO OLD_PEOPLE SELECT * FROM PEOPLE
/
Теперь в обеих таблицах одинаковые данные. Вот таким образом можно, применяя оператор SELECT со всей его мощью, получать результаты разнообразных запросов. Но при этом количество, имена и типы данных обеих таблиц должны быть одинаковы!!!
Для удаления данных служит оператор DELETE. Синтаксис его таков:
DELETE FROM таблица WHERE условие
Как мы видим в операторе DELETE так же есть часть определения условия WHERE. То есть все, что можно использовать для описания работы WHERE в операторе SELECT, применимо и здесь. Допустим нам нужно удалить запись с номером три. Записываем:
DELETE FROM PEOPLE
WHERE ID = 3
/
COMMIT
Теперь давайте удалим все из таблицы PEOPLE. Записываем:
DELETE FROM PEOPLE
/
COMMIT
/
Вот так до неприличия просто работает оператор DELETE.
Данные в таблицах БД изменяются с помощью оператора DML - UPDATE. Синтаксис этого оператора таков:
UPDATE таблица SET имя столбца = выражение WHERE условие
Синтаксически все довольно просто, как видим, в операторе UPDATE так же присутствует предложение WHERE, а следовательно, применимы все правила получения результирующего набора. Давайте посмотрим на практике, что можно сделать с таблицей с помощью оператора DML - UPDATE.
UPDATE PEOPLE
SET NM = 'IVAN'
/
COMMIT
/
UPDATE PEOPLE
SET NM = 'Irvin',
FM = 'Show',
OT = 'Brefovich'
WHERE ID = 5
/
COMMIT
/