Язык SQL
Основная команда SELECT
Написание команд SQL
Неопределенное значение (NULL)
Псевдоним (алиас) столбца
Оператор конкатенации
Дублирование строк
Устранение строк-дубликатов
Ограничение количества выбираемых строк путем отбора
Использование предложения WHERE
Прочие операторы сравнения
Использование оператора BETWEEN
Использование оператора IN
Использование оператора LIKE
Использование оператора LIKE
Логические операторы
Сортировка по нескольким столбцам
Однострочные функции
Два типа функций SQL
Использование функций манипулирования символами
Использование функции ROUND
Использование функции TRUNC
Работа с датами
Арифметические операции с датами
Использование арифметических операторов с датами
Неявное преобразование типов данных
Функция TO_CHAR с датами
Использование функции NVL
Вложенные функции
Темы
Выборка данных из нескольких таблиц
Что такое соединение?
Декартово произведение
Различение столбцов с одинаковыми именами
Темы
Типы групповых функций
Подзапросы
Указания по использованию подзапросов
Многостолбцовые подзапросы
Заключение
Манипулирование данными
Язык манипулирования данными (DML)
Транзакции базы данных
Преимущества команд COMMIT и ROLLBACK
Состояние данных до выполнения команды COMMIT или ROLLBACK
Состояние данных после выполнения команды COMMIT
Создание таблиц и управление ими
Ссылки на таблицы других пользователей
Принципы поддержки целостности в реляционной модели данных
поддержка структурной целостности
поддержка языковой целостности
поддержка ссылочной целостности
Семантическая поддержка целостности.
Включение ограничений
Пример
Оператор
Дополнительное ограничение для таблицы
Именованные ограничения
Создание BOOKS с именованными ограничениями
Таблица READERS:
Оператор
Таблица Examplar
Порядок создания таблиц
Средства определения схемы базы данных
Семантическое обеспечение целостности данных
Хранимые процедуры
Синтаксис
Функция получения ip-адреса
Пример процедуры
Триггеры
два типа триггеров
Синтаксис
Пример1
Пример2
Ограничения

Язык SQL. Реализация Oracle 10g

1. Язык SQL

Реализация Oracle 10g

2.

3. Основная команда SELECT

• SELECT [DISTINCT] {*, column
[alias],...)
• FROM table;
• SELECT указывает, какие столбцы
• FROM указывает, из какой таблицы

4. Написание команд SQL

• Команды SQL не различают регистры
символов
• Команды SQL могут занимать одну или
несколько строк
• Ключевые слова нельзя сокращать и
размещать на двух строках
• Предложения обычно пишутся на
отдельных строках
• Для облегчения чтения используются
табуляция и отступы

5.

6.

• Арифметические выражения
• Создаются из данных типа NUMBER
и DATE с помощью арифметических
операторов

7.

8. Неопределенное значение (NULL)

• Неопределенное значение (NULL) - это
когда значение недоступно, не присвоено,
неизвестно или неприменимо.
• Это не ноль и не пробел

9. Псевдоним (алиас) столбца

• Альтернативный заголовок столбца
• Удобен при вычислениях
• Следует сразу за именем столбца;
ключевое
слово AS между именем столбца с
псевдонимом необязательно
• Заключается в двойные кавычки, если
содержит пробелы, специальные
символы
или различает регистры символов

10.

11. Оператор конкатенации

• Соединяет столбцы или символьные
строки с другими столбцами
• Изображается двумя вертикальными
линиями (||)
• Создает столбец с результатом,
представляющий символьное
выражение

12. Дублирование строк

• По умолчанию выдаются все строки,
включая дубликаты.

13. Устранение строк-дубликатов

• Дубликаты устраняются с помощью
ключевого слова DISTINCT в команде
SELECT.

14. Ограничение количества выбираемых строк путем отбора

15.

16. Использование предложения WHERE

17. Прочие операторы сравнения

18. Использование оператора BETWEEN

• Оператор BETWEEN используется
для вывода строк по диапазону
значений.

19. Использование оператора IN

• Оператор IN используется для проверки
на вхождение значений в список.

20. Использование оператора LIKE

• Оператор LIKE используется для поиска
символьных значений по шаблону с
метасимволами.
• Условия поиска могут включать
алфавитные и цифровые символы.
• % обозначает ноль или много символов
• _ обозначает один символ

21. Использование оператора LIKE

• Метасимволы можно комбинировать.

22. Логические операторы

• .

23.

24. Сортировка по нескольким столбцам

• Последовательность сортировки
определяется порядком столбцов в
предложении ORDER BY.

25. Однострочные функции

• Различные типы функций в SQL.
• •Включение в команды SELECT
функций различных типов —
символьных, числовых и типа
"дата".
• •Функции преобразования данных и
их использование.

26. Два типа функций SQL

27.

28.

29.

30. Использование функций манипулирования символами

31.

32. Использование функции ROUND

33. Использование функции TRUNC

34. Работа с датами

• • Oracle хранит данные во внутреннем
цифровом формате.
• - Век, год, месяц, число, часы, минуты,
секунды
• По умолчанию дата выдается в формате
DD-MON-YY (число- месяц-год)
• Функция SYSDATE возвращает текущие
дату и время
• DUAL - это фиктивная таблица,
используемая для просмотра SYSDATE

35. Арифметические операции с датами

• Результатом прибавления числа к
дате и вычитания числа из даты
является дата.
• Результатом вычитания одной даты
из другой является количество дней,
разделяющих эти даты.
• Прибавление часов к дате
производится путем деления
количества часов на 24.

36. Использование арифметических операторов с датами

37.

38.

39. Неявное преобразование типов данных

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

40.

41. Функция TO_CHAR с датами

Модель формата:
■Должна быть заключена в
апострофы. Различает
символы верхнего и нижнего
регистров. •Может включать любые
разрешенные элементы
формата даты. •Использует элемент
fm для удаления конечных
пробелов и ведущих нулей.
•Отделяется от значения даты
запятой.

42.

43.

44.

45.

46.

47.

48. Использование функции NVL

49.

50.

51. Вложенные функции

52.

• Выборка данных из нескольких
таблиц

53. Темы

• Команды SELECT для выборки данных
из более, чем одной таблицы с
помощью эквисоединений и прочих
видов соединений.
• Использование внешних соединений
для просмотра данных, не
удовлетворяющих обычным условиям
соединения
• Соединение таблицы с собой

54. Выборка данных из нескольких таблиц

55. Что такое соединение?

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

56. Декартово произведение

• Декартово произведения образуется ,
если:
• Опущено условие соединения.
• Условие соединения недействительно.
• Все строки первой таблицы
соединяются со всеми строками второй
таблицы.
• Во избежание получения декартова
произведения предложение WHERE всегда
должно включать допустимое условие
соединения.

57.

58.

59.

60.

61. Различение столбцов с одинаковыми именами

• Для различения одноименных столбцов
из разных таблиц используются
префиксы в виде имен таблиц.
• Использование префиксов в виде имен
таблиц увеличивает
производительность.
• Одноименные столбцы из разных
таблиц можно различать по их
псевдонимам.

62.

63.

64.

65.

66.

67.

68.

69.

70.

71.

72.

• Агрегирование данных с помощью
групповых функций

73. Темы

• Общие сведения об имеющихся
групповых
функциях
• Использование групповых функций
• Вывод данных по группам с помощью
предложения GROUP BY
• Включение и исключение групп с
помощью
предложения HAVING

74.

75. Типы групповых функций


AVG
COUNT
МАХ
MIN
STDDEV
SUM
VARIANCE

76.

77.

78.

79.

80.

81.

82.

83.

84.

85.

86.

87.

88.

89.

90.

91.

92.

93.

94.

95. Подзапросы

• Типы проблем, решаемых с
помощью
подзапросов
• Определение подзапросов
• Типы подзапросов
• Написание однострочных и
многострочных подзапросов

96.

97.

98.

99. Указания по использованию подзапросов

• Подзапрос должен быть заключен в
скобки.
• Подзапрос должен находиться справа от
оператора сравнения.
• Подзапрос не может содержать
предложение ORDER BY.
• В однострочных подзапросах
используются однострочные операторы.
• В многострочных подзапросах
используются многострочные операторы.

100.

101.

102.

103.

104.

105.

106.

107.

108.

109.

110.

111. Многостолбцовые подзапросы

• Создание многостолбцовых
подзапросов
• Поведение подзапросов при выборке
неопределенных значений
• Включение подзапроса в
предложение
FROM

112.

113.

114.

115.

116.

117.

118.

119.

120.

121. Заключение

• Многостолбцовый подзапрос возвращает
значения нескольких столбцов.
• Сравнение столбцов в многостолбцовых
подзапросах может быть парным и
непарным.
• Многостолбцовый подзапрос может также
использоваться в предложении FROM
команды SELECT.

122. Манипулирование данными


Описание команд DML
Вставка строк в таблицы
Обновление строк в таблице
Удаление строк из таблицы
Управление транзакциями

123. Язык манипулирования данными (DML)

• • Команды DML выполняются при
следующих операциях:
• Вставка новых строк в таблицу
• Изменение существующих строк в
таблице
• Удаление существующих строк из
таблицы
• * Транзакция - это совокупность команд
DML, образующих логическую единицу
работы.

124.

125.

126.

127.

128.

129.

130.

131.

132.

133.

134.

135.

136.

137.

138.

139.

140. Транзакции базы данных

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

141.

142. Преимущества команд COMMIT и ROLLBACK

• Обеспечивают согласованность данных.
• Позволяют проверить изменения в
данных прежде, чем сделать их
постоянными.
• Логически группируют взаимосвязанные
операции.

143.

144.

145. Состояние данных до выполнения команды COMMIT или ROLLBACK

• Предыдущее состояние данных может быть
восстановлено, т.к. изменения производятся в
буфере базы данных.
• Текущий пользователь может просмотреть
результаты своих операций DML с помощью
команды SELECT.
• Другие пользователи не могут видеть
,
результаты команд DML, выполняемых
текущим пользователем.
• Измененяемые строки блокируются, и другие
пользователи не могут обновлять их
содержимое.

146. Состояние данных после выполнения команды COMMIT

• Измененные данные записываются в базу
данных.
• Предшествующее состояние данных
теряется.
• Все пользователи могут видеть
результаты.
• Измененные строки разблокируются, и
другие
пользователи получают доступ к ним для
обработки данных.
• Все точки сохранения стираются.

147.

148.

149.

150.

151.

152.

153.

154.

155. Создание таблиц и управление ими

• Главные объекты базы данных
• Создание таблиц
• Типы данных, которые могут
использоваться в определениях
столбцов
• Изменение определений таблиц
• Удаление, переименование и
усечение таблиц

156.

157.

158.

159. Ссылки на таблицы других пользователей

• Таблицы, принадлежащие другим
пользователям, не входят в схему
пользователя.
• В качестве префикса в имени
таблицы
следует указать имя владельца.

160.

161.

162.

163.

164.

165.

166.

167.

168.

169.

170. Принципы поддержки целостности в реляционной модели данных


поддержка структурной целостности
поддержка языковой целостности
поддержка ссылочной целостности
поддержка семантической
целостности.

171. поддержка структурной целостности

• реляционная СУБД должна допускать
работу только с однородными
структурами данных типа «реляционное
отношение» т.е.
• отсутствие дубликатов кортежей,
• соответственно обязательное наличие
первичного ключа,
• отсутствие понятия упорядоченности
кортежей.

172. поддержка языковой целостности

Реляционная СУБД должна обеспечивать
языки описания и манипулирования
данными не ниже стандарта SQL.
• He должны быть доступны иные
низкоуровневые средства
манипулирования данными, не
соответствующие стандарту.

173. поддержка ссылочной целостности

• кортежи подчиненного отношения
уничтожаются при удалении кортежа
основного отношения, связанного с ними.
• кортежи основного отношения
модифицируются при удалении кортежа
основного отношения, связанного с ними, при
этом на месте ключа родительского
отношений ставится неопределенное Null
значение.

174. Семантическая поддержка целостности.

• Семантическая поддержка может быть
обеспечена двумя путями:
• Декларативным и
• процедурным путем.

175. Включение ограничений

• Ограничения обеспечивают
декларативную поддержку
целостности.
• Что такое ограничения?
• Создание и сопровождение
ограничений

176.

177.

178.

179.

180.

181.

182.

183.

184.

185.

186.

187.

188.

189. Пример


Оператор создания таблицы BOOKS из базы данных «Библиотека».
Бизнес-правила:
Шифр книги — последовательность символов длиной не более 14,
однозначно определяющая книгу, значит, это — фактически первичный
ключ таблицы BOOKS.
Название книги — последовательность символов, не более 120.
Обязательно должно быть задано.
Автор — последовательность символов, не более 30, может быть не
задан.
Соавтор — последовательность символов, не более 30, может быть не
задан.
Год издания — целое число, не менее 1960 и не более текущего года.
По умолчанию ставится текущий год.
Издательство — последовательность символов, не более 20, может
отсутствовать.
Количество страниц — целое число не менее 5 и не более 1000.

190. Оператор

191. Дополнительное ограничение для таблицы

192. Именованные ограничения

• Для анализа ошибок целесообразно
именовать все ограничения, особенно
если таблица содержит несколько
ограничений одного типа.
• Для именования ограничений
используется ключевое слово
CONSTRAINT

193. Создание BOOKS с именованными ограничениями

194. Таблица READERS:

• Номер читательского билета - это целое число в
пределах 32 000 и он уникально определяет
читателя.
• Имя, фамилия читателя — это последовательность
символов, не более 30.
• Адрес — это последовательность символов, не более
50.
• Номера телефонов рабочего и домашнего —
последовательность символов, не более 12.
• Дата рождения — календарная дата. В библиотеку
принимаются читатели не младше 17 лет.

195. Оператор

196. Таблица Examplar

197. Порядок создания таблиц

• В нашем примере с библиотекой
порядок описания таблиц следующий:

198. Средства определения схемы базы данных

• В СУБД ORACLE база данных создается в
ходе установки программного обеспечения
собственно СУБД. Все таблицы
пользователей помещаются в единую базу
данных.
• Однако они могут быть разделены на группы,
объединенные в подсхемы.
• Понятие подсхемы не стандартизировано в
SQL и не используется в других СУБД.

199. Семантическое обеспечение целостности данных

Процедуры и триггеры

200. Хранимые процедуры

• Хранимые процедуры пишутся на
специальном встроенном языке
программирования, они могут включать
любые операторы SQL, а также
включают некоторый набор операторов,
управляющих ходом выполнения
программ

201. Синтаксис

• CREATE [ OR REPLACE]
• ( “аргумент” IN | OUT | IN OUT “Тип
данных” [,..])
• IS | AS
• “Тело процедуры PL/SQL”

202. Функция получения ip-адреса

• create or replace function
client_ip_address
return varchar2 is
begin
return dbms_standard.client_ip_address;
end;

203. Пример процедуры

• create or replace procedure update_debtsis
• Begin
• update computation c set n_pay=(select
sum(n_sum)
• from payment
• where n_client=clients.n_client
and d_pay between dates.d_computation and
add_months(dates.d_computation,1))
• end update_debts;

204. Триггеры

• Фактически триггер — это специальный вид
хранимой процедуры, которую SQL Server
вызывает при выполнении операций
модификации соответствующих таблиц.
• Триггер автоматически активизируется при
выполнении операции, с которой он связан.
• Триггеры связываются с одной или
несколькими операциями модификации над
одной таблицей.

205. два типа триггеров

• В СУБД Oracle определены два типа
триггеров:
• триггеры, которые могут быть запущены
перед реализацией операции модификации,
они называются BEFORE-триггерами,
• и триггеры, которые активизируются после
выполнения соответствующей модификации,
аналогично триггерам MS SQL Server, — они
называются AFTER-триггерами.

206. Синтаксис

• CREATE [ OR REPLACE] TRIGGER
<имя_триггера> BEFORE | AFTER
• ON <имя_таблицы>
• FOR { [INSERT] [,UPDATE] [, DELETE] }
• FOR EACH ROW
• WHEN (условие)
• AS
• SQL-операторы (Тело триггера)

207. Пример1

• create or replace trigger add_author AFTER
INSERT OR UPDATE OF C_AUTHOR
• ON T_CLAUSES
FOR EACH ROW
• DECLARE
id_cl int;
aut varchar2(500);
res int;
• BEGIN
id_cl := :new.N_ID_CL;
aut := :new.C_AUTHOR;
res := ANALIZ_AUT(id_cl, aut);
END;

208. Пример2


create or replace trigger "BI_COMPUTATION"
before insert on "COMPUTATION"
for each row
begin
select "COMPUTATION_SEQ".nextval into
:NEW.N_COMPUTATION
• from dual;
• :NEW.D_COMPUTATION := SYSDATE();
• end;

209. Ограничения

• Нельзя использовать в теле триггера операции
создания объектов БД (новой БД, новой таблицы,
нового индекса, новой хранимой процедуры, нового
триггера, новых индексов, новых представлений),
• Нельзя использовать в триггере команду удаления
объектов DROP для всех типов базовых объектов БД.
• Нельзя использовать в теле триггера команды
изменения базовых объектов ALTER TABLE, ALTER
DATABASE.
• Нельзя изменять права доступа к объектам БД, то
есть выполнять команду GRAND или REVOKE.
• Нельзя создать триггер для представления (VIEW).
• В отличие от хранимых процедур, триггер не может
возвращать никаких значений, он запускается
автоматически сервером и не может связаться
самостоятельно ни с одним клиентом.
English     Русский Правила