Содержание

Слайд 2

Последовательность

Последовательность – это объект базы данных, предназначенный для генерации последовательных целых чисел.

Последовательность Последовательность – это объект базы данных, предназначенный для генерации последовательных целых чисел. SEQUENCE

SEQUENCE

Слайд 3

Создание

CREATE SEQUENCE имя [INCREMENT BY n] [START WITH n] [CACHE n | NOCACHE];

Создание CREATE SEQUENCE имя [INCREMENT BY n] [START WITH n] [CACHE n | NOCACHE];

Слайд 4

Пример

CREATE SEQUENCE seq1;
CREATE SEQUENCE seq2
INCREMENT BY -3
START WITH 25
CACHE 5;

Пример CREATE SEQUENCE seq1; CREATE SEQUENCE seq2 INCREMENT BY -3 START WITH 25 CACHE 5;

Слайд 5

Последовательность

Иногда бывают
Циклические (CYCLED)
С мин и макс значениями (MINVALUE, MAXVALUE)
Данные хранятся:
USER_SEQUENCES (ORACLE)
INFORMATION_SCHEMA.SEQUENCES (H2)

Последовательность Иногда бывают Циклические (CYCLED) С мин и макс значениями (MINVALUE, MAXVALUE)

Слайд 6

Использование

CURVAL
NEXTVAL
Можно:
в списке SELECT команды SELECT;
в предложении VALUES команды INSERT;
в предложении SET команды

Использование CURVAL NEXTVAL Можно: в списке SELECT команды SELECT; в предложении VALUES
UPDATE.

Слайд 7

Использование

CURVAL, NEXTVAL
НЕЛЬЗЯ:
в подзапросе;
в запросе к представлению;
SELECT с ключевым словом DISTINCT;
SELECT с предложением

Использование CURVAL, NEXTVAL НЕЛЬЗЯ: в подзапросе; в запросе к представлению; SELECT с
GROUP BY, HAVING или ORDER BY;
WHERE команды SELECT;
в (DEFAULT) значении столбца в предложении CREATE TABLE или ALTER TABLE;
в условии ограничения CHECK.

Слайд 8

Пример

SELECT seq2.CURRVAL
FROM dual;
Ошибка или предыдущее значение (СУБД !?!?)
SELECT seq2.NEXTVAL
FROM dual;
---------
25
В следующий

Пример SELECT seq2.CURRVAL FROM dual; Ошибка или предыдущее значение (СУБД !?!?) SELECT
раз вернет 22.

Слайд 9

Пример

В таблице s_emp все значения столбца id обновить, используя последовательность seq1.
UPDATE

Пример В таблице s_emp все значения столбца id обновить, используя последовательность seq1. UPDATE s_emp SET id=seq1.nextval;
s_emp
SET id=seq1.nextval;

Слайд 10

Каждый раз или один раз ???

SELECT seq1.CURRVAL, seq1.NEXTVAL, seq1.NEXTVAL, seq1.NEXTVAL*3, seq1.CURRVAL*3, id
FROM

Каждый раз или один раз ??? SELECT seq1.CURRVAL, seq1.NEXTVAL, seq1.NEXTVAL, seq1.NEXTVAL*3, seq1.CURRVAL*3,
s_region;

SELECT seq1.CURRVAL, seq1.NEXTVAL, seq1.NEXTVAL, seq1.NEXTVAL*3, seq1.CURRVAL*3, id FROM s_region;

(5 строки, 0 ms)

Слайд 11

Изменение

ALTER SEQUENCE имя
[RESTART WITH long] [INCREMENT BY n]

Изменение ALTER SEQUENCE имя [RESTART WITH long] [INCREMENT BY n]

Слайд 12

Пример: Созданную ранее последовательность seq2 нужно изменить таким образом, чтобы следующий элемент

Пример: Созданную ранее последовательность seq2 нужно изменить таким образом, чтобы следующий элемент
был 100 а интервал –4.

ALTER SEQUENCE seq2
RESTART WITH 100
INCREMENT BY -4;
Проверим:
SELECT seq2.NEXTVAL
FROM dual;
--------
100
---------
96

Слайд 13

Удаление

DROP SEQUENCE имя;
Пример:
DROP SEQUENCE seq2;

Удаление DROP SEQUENCE имя; Пример: DROP SEQUENCE seq2;

Слайд 14

Индексы

Индекс – объект базы данных, с помощью которого можно ускорить выполнение некоторых

Индексы Индекс – объект базы данных, с помощью которого можно ускорить выполнение некоторых запросов. INDEX
запросов.
INDEX

Слайд 15

Создание индекса

индекс в Вашей схеме и индексируется таблица Вашей схемы привилегия CREATE

Создание индекса индекс в Вашей схеме и индексируется таблица Вашей схемы привилегия
INDEX.
индекс в Вашей схеме, но индексируется таблица схемы другого пользователя, CREATE INDEX и INDEX по индексируемой таблице.
индексы в своей схеме, индексируя при этом таблицы любых пользователей CREATE ANY INDEX.
индекс в другой схеме CREATE ANY INDEX.

Слайд 16

Создание индекса

CREATE INDEX индекс
ON таблица (столбец, …);
CREATE INDEX s_emp_dept_id_idx
ON s_emp (dept_id);

Создание индекса CREATE INDEX индекс ON таблица (столбец, …); CREATE INDEX s_emp_dept_id_idx ON s_emp (dept_id);

Слайд 17

Когда и зачем?

Столбец часто используется в предложении WHERE или условии соединения.
Столбец имеет

Когда и зачем? Столбец часто используется в предложении WHERE или условии соединения.
широкий диапазон значений.
Столбец содержит большое количество неопределенных значений.
Таблица большого размера.

Слайд 18

Когда не стОит?

Таблица небольшого размера.
Столбцы не очень часто используются как условие в

Когда не стОит? Таблица небольшого размера. Столбцы не очень часто используются как
запросе.
Таблица часто обновляется.

Слайд 19

Удаление индекса

DROP INDEX имя_индекса;
DROP INDEX s_emp_dept_id_idx;

Удаление индекса DROP INDEX имя_индекса; DROP INDEX s_emp_dept_id_idx;

Слайд 20

Представления

Представление (view – представление, обзор, вид) – логическая таблица, созданная на основе

Представления Представление (view – представление, обзор, вид) – логическая таблица, созданная на
реальных таблиц или других представлений, называемых базовыми таблицами представления.
VIEW

Слайд 21

Создание

CREATE [FORCE | NOFORCE] VIEW представление [(псевдоним, …)] AS подзапрос;

Создание CREATE [FORCE | NOFORCE] VIEW представление [(псевдоним, …)] AS подзапрос;

Слайд 22

Пример

CREATE VIEW dept_45
AS (SELECT *
FROM s_emp
WHERE dept_id=45);

Пример CREATE VIEW dept_45 AS (SELECT * FROM s_emp WHERE dept_id=45);

Слайд 23

Пример

CREATE VIEW dept_sal
(name, minsal, maxsal, avgsal)
AS (SELECT d.name, MIN(e.salary), MAX(e.salary), AVG(e.salary)
FROM s_emp

Пример CREATE VIEW dept_sal (name, minsal, maxsal, avgsal) AS (SELECT d.name, MIN(e.salary),
e, s_dept d
WHERE e.dept_id=d.id
GROUP BY d.name);
SELECT * FROM dept_sal;

Слайд 24

Создать представление, содержащее номер, фамилию, имя, зарплату и номер начальника для каждого

Создать представление, содержащее номер, фамилию, имя, зарплату и номер начальника для каждого
подчиненного сотрудника №1.

CREATE VIEW man_1
AS (SELECT id, last_name, first_name, salary, manager_id
FROM s_emp
WHERE manager_id=1);

Слайд 25

Изменение данных

Можно удалять и обновлять строки, если нет:
условий соединения;
групповых функций и предложения

Изменение данных Можно удалять и обновлять строки, если нет: условий соединения; групповых
GROUP BY;
ключевого слова DISTINCT.
Можно добавлять если нет NOT NULL*

Слайд 26

Всем сотрудникам, имеющим зарплату 1400 через представление man_1 увеличить ее до 1800.

UPDATE

Всем сотрудникам, имеющим зарплату 1400 через представление man_1 увеличить ее до 1800.
man_1
SET salary=1800
WHERE salary=1400;

Слайд 27

Служащих с зарплатой 1450 посредством представления man_1 перевести к начальнику №2.

UPDATE

Служащих с зарплатой 1450 посредством представления man_1 перевести к начальнику №2. UPDATE
man_1
SET manager_id=2
WHERE salary=1450;
Имя файла: Язык-SQL.pptx
Количество просмотров: 87
Количество скачиваний: 0