Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ ORACLE SQL \ JAVA ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

FreeBSD and Nix

Общая

WEB Разработка

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


3урок по oracle sql, UNION, DDL, DML, Транзакции, Индексы


Продолжаем знакомство с возможностями запросов в ORACLE, это третий урок.

--Объединения таблиц

--Отбрасываем одинаковые строки
SELECT employee_id FROM HR.EMPLOYEES
UNION
SELECT employee_id FROM HR.JOB_HISTORY;

--Без отбрасывания дубликатов
SELECT employee_id FROM HR.EMPLOYEES
UNION ALL
SELECT employee_id FROM HR.JOB_HISTORY;

--Что есть общего между таблицами
SELECT employee_id FROM HR.EMPLOYEES
INTERSECT
SELECT employee_id FROM HR.JOB_HISTORY;

--Что есть уникального между таблицами
SELECT employee_id FROM HR.EMPLOYEES
MINUS
SELECT employee_id FROM HR.JOB_HISTORY;


--DML язык манипулирования данными

--INSERT - вставка строк
--С указанием полей

INSERT INTO HR.DEPARTMENTS(DEPARTMENT_ID,DEPARTMENT_NAME,MANAGER_ID,LOCATION_ID) VALUES(777, 'Luck_Dep', 200, 1700);
--Без указания полей
INSERT INTO HR.DEPARTMENTS VALUES(770, 'AnyDep', NULL, 1700);
--Вставка типа "дата"
INSERT INTO HR.EMPLOYEES VALUES(777,'Tes','Al','?','?',TO_DATE('SEP 12, 1999', 'MON DD, YYYY'),'ST_MAN',1,0.1,100,90);
--Вставка с помощью запроса
INSERT INTO HR.REGIONS
SELECT 5, CITY FROM HR.LOCATIONS WHERE POSTAL_CODE = '1730';

--UPDATE - изменение строк
UPDATE HR.REGIONS SET REGION_NAME = 'Sib' WHERE REGION_ID = 5;
UPDATE HR.REGIONS SET REGION_NAME = (SELECT REGION_NAME FROM HR.REGIONS WHERE REGION_ID = 4) WHERE REGION_ID = 5;

--DELETE - удаление строк
DELETE FROM HR.REGIONS WHERE REGION_ID = 5;

--TRUNCATE TABLE - полное удаление данных из таблицы
--TRUNCATE TABLE 'ИмяТаблицы'


--DDL создание и управление таблицами

--Формат команды CRETAE TABLE:
--CREATE TABLE  имя_таблицы   (имя_столбца тип столбца (атрибуты));

--Создадим таблицу с PRIMARY KEY(первичным ключом):
CREATE TABLE HR.t1(
  COUNTRY VARCHAR(30) NOT NULL PRIMARY KEY, 
  CURRENCY VARCHAR(30) NOT NULL
  );
  
--Создадим отношения(связь) между таблицами с помощью первичных и внешних ключей PRIMARY KEY, FOREGEN KEY
--Добавим CHECK(проверка на условие значений в столбце)

CREATE TABLE HR.t1_1(
  CODE varchar(30) NOT NULL,
  SALARY decimal NOT NULL,
  FOREIGN KEY (CODE) REFERENCES HR.t1(COUNTRY),
  CHECK (SALARY != 0)
  );
  
--Создадим таблицу с UNIQUE(уникальными значениями) ограничением на уровне столбца и на уровне таблицы:
CREATE TABLE HR.t2(
  I INT NOT NULL UNIQUE,
  PROJ CHAR(10) NOT NULL,
  ITEM INTEGER NOT NULL,
  CONSTRAINT t2_unique UNIQUE (PROJ, ITEM)
  );
  

--Изменение таблицы
--Добавить столбец

alter table HR.t2 add(test char(20));
--Удалить столбец
alter table HR.t2 drop column test; 
--Изменить столбец
alter table HR.t2 modify(PROJ varchar(20));
--Переименовать столбец
alter table HR.t2 rename column PROJ to PROM ;
--Удалить constarint
alter table HR.t2 drop constraint t2_unique;
--Добавить primary key
alter table HR.t2 add constraint t2_pk primary key (ITEM);

--Удаление таблицы
drop table HR.t2;


--Транзакции

--Операторы управления транзакциями:
--SAVEPOINT создает в транзакции точку сохранения
--ROLLBACK TO откатывает до указанной точки сохранения SAVEPOINT
--SET TRANSACTION устанавливает атрибуты транзакции, уровень изолированности, только для чтения данных, чтения и записи
--COMMIT work и ROLLBACK утверждают, либо откатывают транзакцию(согласовывают данные)

--Возможная конструкции транзакций():
--используется таблица: create table HR.tran (id number primary key, name char(20), age number);

--Откат(Данные не сохранятся)
insert into HR.tran values (1, 'A', 10);
insert into HR.tran values (2, 'B', 20);
rollback;
select * from HR.tran;

--Пример транзакции с откатом
--WHEN OTHERS THEN обрабатывает все прочие ошибки

begin 
 insert into HR.tran values (1, 'A', 10);
 insert into HR.tran values (2, 'B', 20);
 insert into HR.tran values (2, 'B', 20);
 commit work;
exception
 when others then
 rollback;
 insert into HR.tran values (1, 'r', 10);
end;
select * from HR.tran;

--Пример с точками сохранения(вторая строка не сохранится)
insert into HR.tran values (2, '2A', 10);
savepoint t1;
insert into HR.tran values (3, '2B', 20);
savepoint t2;
rollback to t1;
commit;
select * from HR.tran;


--Индексы

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

--Создание индеска
CREATE INDEX employee_id ON HR.employees(FIRST_NAME); 

--Удаление индекса
DROP INDEX employee_id;

 

На этом - все, видео можно посмотреть на моем канале YouTube:


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект