• Авторизация


о взломе http://z-a.net.ua/ только теория и никаких туторов и пошаговых инструкций 13-12-2010 04:10 к комментариям - к полной версии - понравилось!


Итак, приступим к более детальному разбору операторов DML. Без применения этих операторов было бы вообще бессмысленна вся эта затея с серверами БД. Начать лучше всего с оператора DML - INSERT. Оператор INSERT, служит для заполнения таблиц БД данными и является достаточно простым в использовании. Давайте посмотрим, на синтаксис оператора INSERT:

---------------- INSERT INTO --- таблица ---------------------------------------------------
-------------------------------- (имя столбца таблицы) -------------------------------------
--------------------------------------- , --------------------------------------------------
----------------------- VALUES --- (выражение); --------------------------------------------
----------------------- оператор выбора --------------------------------------------

Я думаю, понятно, что "таблица" - это имя таблицы, куда вводятся данные. "имя столбца" - это список столбцов, в которые вводятся данные. "Выражение" - это собственно сами данные. "Оператор выбора" - это предложение SELECT, для заполнения таблицы. Используется без части VALUES. Давайте удалим все таблицы, которые вы создавали в прошлый раз, так как сейчас мы будем рассматривать их новый вариант. Удалять таблицы вы уже умеете. Если вы не сделали этого в прошлый раз то просто введите:

DROP TABLE PEOPLE
/

DROP TABLE NEWPEOPLE
/

COMMIT
/

Затем создаем таблицу PEOPLE с новыми параметрами:

CREATE TABLE PEOPLE
(
ID NUMBER PRIMARY KEY,
NM VARCHAR2(50),
FM VARCHAR2(50),
OT VARCHAR2(50)
)
/

COMMIT
/

Получаем:

SQL> CREATE TABLE PEOPLE
2 (
3 ID NUMBER PRIMARY KEY,
4 NM VARCHAR2(50),
5 FM VARCHAR2(50),
6 OT VARCHAR2(50)
7 )
8 /

Таблица создана.

SQL> COMMIT
2 /

Фиксация обновлений завершена.

Обратите внимание на поле 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
/

Получаем:

SQL> INSERT INTO PEOPLE(ID, NM, FM, OT)
2 VALUES(1, 'John', 'Godwin', 'Petrovich')
3 /

1 строка создана.

SQL> INSERT INTO PEOPLE(ID, NM, FM, OT)
2 VALUES(2, 'Bob', 'Doris', 'Martovich')
3 /

1 строка создана.

SQL> INSERT INTO PEOPLE(ID, NM, FM, OT)
2 VALUES(3, 'Frank', 'Black', 'Milleniumich')
3 /

1 строка создана.

SQL> INSERT INTO PEOPLE(ID, NM, FM, OT)
2 VALUES(4, 'Pupkin', 'Misha', 'Semenovich')
3 /

1 строка создана.

SQL> INSERT INTO PEOPLE(ID, NM, FM, OT)
2 VALUES(5, 'Pistoletov', 'Makar', 'Patronovich')
3 /

1 строка создана.

SQL> INSERT INTO PEOPLE(ID, NM, FM, OT)
2 VALUES(6, 'Avtomatov', 'Kolya', 'Pricelovich')
3 /

1 строка создана.

SQL> COMMIT
2 /

Фиксация обновлений завершена.

В части 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)
)
/

COMMIT
/

Получаем: SQL> CREATE TABLE OLD_PEOPLE 2 ( 3 ID NUMBER PRIMARY KEY, 4 NM VARCHAR2(50), 5 FM VARCHAR2(50), 6 OT VARCHAR2(50) 7 ) 8 / Таблица создана. SQL> COMMIT 2 / Фиксация обновлений завершена.

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

INSERT INTO OLD_PEOPLE
SELECT * FROM PEOPLE
/

Получаем:

SQL> INSERT INTO OLD_PEOPLE
2 SELECT * FROM PEOPLE
3 /

6 строк создано.

SQL> COMMIT
2 /

Фиксация обновлений завершена.

Теперь в обеих таблицах одинаковые данные. Вот таким образом можно, применяя оператор SELECT со всей его мощью, получать результаты разнообразных запросов. Но при этом количество, имена и типы данных обеих таблиц должны быть одинаковы!!! Например, таким оператором я часто пользуюсь при сливании таблиц телефонных номеров. Очень удобно. Таким образом, мы рассмотрели первый из трех основных операторов, DML - INSERT. Пока не удаляйте таблицы PEOPLE и OLD_PEOPLE, в следующем шаге они нам еще понадобятся. Пока можете поработать с тем материалом, который рассмотрели сейчас.
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник о взломе http://z-a.net.ua/ только теория и никаких туторов и пошаговых инструкций | Click_Zero - Дневник Click_Zero | Лента друзей Click_Zero / Полная версия Добавить в друзья Страницы: раньше»