- •1. Три ланкова архітектура системи баз даних
- •2. Моделі даних у системах баз даних
- •3. Етапи проектування автоматизованих інформаційних систем.
- •4. Проектування концептуальної моделі предметної області з використанням er – діаграми.
- •5. Структура даних і обмеження реляційної моделі.
- •6. Нормалізація відношень і теорія нормальних форм.
- •7. Алгоритм приведення відношень до третьої нормальної форми.
- •8. Використання операцій реляційної алгебри для створення мови запитів.
- •9. Використання реляційного числення для створення мови запитів
- •10. Призначення й структура мови sql.
- •Типы данных
- •11. Структура запитів мови sql.
- •12. Формування вкладених запитів в sql.
- •13. Концептуальне і фактичне виконання запитів у мові sql.
- •14. Мова маніпулювання даними sql.
- •Добавление строк.
- •Удаление строк.
- •Изменение данных.
- •15. Мова визначення даних sql.
- •16. Надання прав доступу в sql.
- •17. Архітектура бд клієнт – сервер.
- •18. Проектування застосівників до бд у системі клієнт-сервер.
- •Проектирование отчетов.
- •Тестирование приложения.
- •19. Способи доступу до бд із застосівників.
- •20. Повнота реляційної субд (правила Кодда).
- •21. Розподілені бд (правила Дейта).
- •22. Керування транзакціями.
- •23. Рівні ізоляції транзакцій.
- •24.Збережені процедури в tsql.
- •25. Функції користувача в tsql.
- •26. Представлення в tsql.
- •27.Тригери в tsql.
- •28. Курсори в tsql.
- •29. Створення індексів в tsql.
- •30. Команди керування даними в tsql.
Типы данных
CHAR(n) - строковый тип постоянной длины, где n - длина.
VARCHAR(n) - строковый тип переменной длины.
INT - целый.
SMALLINT - укороченный целый.
NUMERIC(a,b) - масштабируемый целый, где а - степень, b - точность.
DECIMAL(a,b) - масштабируемый десятичный.
FLOAT(a), REAL(a) - числа с плавающей точкой.
DOUBLEPRECISION - с удвоенной точностью.
TIME - время/дата.
TIMESTAMP - время/дата с точностью до секунд.
INTERVAL - интервальный тип.
BIT(n) - битовый тип.
Три формата даты: mm/dd/yyyy - американский; dd.mm.yyyy – европейский; yyyy_mm_dd – японский.
11. Структура запитів мови sql.
Запросы с условием. Условие формируется в фразе WHERE и содержит имена полей. Причем поля не обязательно должны присутствовать в фразе SELECT. В условии могут оспользоваться операторы сравнения:
-
=, !=, (, <, >, ), >=, <= ; 2) AND, OR, NOT ; 3)IN, BETWEEN, LIKE, IS NULL (NOT IS NULL).
LIKE позволяет указывать приближенные значения (CHAR и VARCHAR). Применяется для поиска подстрок. При этом два символа имеют специальное назначение: 1) % - замещение любого количества символов, в том числе и нулевого; 2) _ - замещение одного символа.
В SQL поддерживается неопределенное значение NULL
Агрегатные функции.
COUNT() - подсчитывает количество строк с непустым (не NULL) значением указанной колонки;
COUNT(*) - подсчитывает общее количество строк, удовлетворяющих условию, включая пустые (NULL);
SUM() - суммирует все значения в указанной колонке;
AVG() - вычисляет среднее значение для указанной колонки;
MAX() - находит максимальное значение в указанной колонке;
MIN() - находит минимальное значение в указанной колонке.
Агрегатные функции записываются в фразе SELECT.
Запросы с группировкой. Записи данных могут быть сгруппированы по некоторому признаку. Группу образуют записи с одинаковыми значениями в полях, перечисленных в выражении GROUP BY. При группировании записей их проще анализировать и обрабатывать, например, с помощью статистических (агрегатных) функций. C условием группировки: HAVING. Условие HAVING выполняется для всей группы в целом.
Сортировка (упорядочивание) выходных полей. Сортировка представляет собой упорядочивание записей по возрастанию или убыванию значений полей. Список полей, по которым выполняется сортировка, указывается в выражении ORDER BY. Порядок полей в этом выражении определяет порядок сортировки. Поля в списке обозначаются именами или номерами. По умолчанию сортировка происходит в порядке возрастания значений полей. Для обратного порядка сортировки нужно указать описатель DESC. Поле, по которому выполняется сортировка должно быть указано в SELECT, т.е. закрытой сортировки не должно быть.
Объединение таблиц (команда UNION). С помощью раздела UNION можно выполнять объединение данных из нескольких таблиц. Структура раздела UNION следующая:
{< query specification > | (< query expression >)} UNION [ALL]
{< query specification > | (< query expression >)}
12. Формування вкладених запитів в sql.
При определении условия выборки можно применять вложенные запросы. Например, определить какие продажи выполнены продавцом с фамилией 'Яковлев'
SELECT *
FROM O WHERE NПродавца = (SELECT DISTINCT Nпродавца FROM S WHERE ИмяПродавца = 'Яковлев')
Использование кванторов в подзапросах.
В SQL предусмотрены следующие кванторы:
1) EXISTS - квантор существования; 2) ANY - любой; 3) SOME - некоторый; 4) ALL - все.
Квантор существования определяет будет ли подзапрос генерировать выходные данные и выдает булевое значение ИСТИНА или ЛОЖЬ. Квантор NOT EXISTS работает с точностью до "наоборот": ИСТИНА если результат подзапроса пуст, и ЛОЖЬ в противном случае. Например, выдать записи, если существует покупатель из города Запорожье
SELECT NПокупателя, ИмяПокупателя, ГородПокупателя
FROM C
WHERE EXISTS (SELECT * FROM C WHERE ГородПокупателя = 'Запорожье')
Кванторы ANY, SOME и ALL применяются в сочетании с =>, <, <=, >=, <>
Например, Выдать тех покупателей, рейтинг которых больше рейтинга хотя бы одного покупателя из города Запорожье.
SELECT *
FROM C
WHERE Рейтинг > ANY(SELECT c1.Рейтинг FROM C c1 WHERE c1.ГородПокупателя = 'Запорожье')
[UNION [ALL] < query specification > | (< query expression >)[..n] ]
Конструкция UNION вставляется между двумя запросами, возвращающими одинаковый набор колонок. В результат будут включены колонки как из первой, так и из второй таблицы. Указание ключевого слова ALL предписывает включать в результат дублирующиеся строки. По умолчанию дублирующиеся строки в результат не включаются. Запросы с несколькими таблицами (операция СОЕДИНЕНИЕ в реляционной алгебре).
В запросе поля ставятся с префиксом через точку. Префиксом является имя таблицы.
<владелец_таблицы>.<имя_таблицы>.<поле>
Различают внутреннее и внешнее соединения. Внутреннее соединение представляет собой простейший случай, когда после слова SELECT перечисляются поля разных таблиц. В фразе WHERE указываются условия соединения. Если WHERE не указано, то получается декартовое произведение.
При внутреннем соединении все таблицы, поля которых указываются в SQL - запросе, являются равноправными.При внешнем соединении таблиц можно указать, какая из таблиц будет главной, а какая - подчиненной. При использовании внешнего соединения операнд FROM имеет следующий формат:
FROM <имя_таблицы_A> {INNER|FULL|LEFT|RIGHT|CROSS}[OUTER] JOIN <имя_таблицы_B> {ON|USING}(улсовие)
JOIN ON - соединение выполняется с условием. JOIN USING - выполняется при условии равенства (в скобках перечисляются общие столбцы). INNER - выполняется по умолчанию. LEFT - левое внешнее соединение включает все строки из левой таблицы и те строки из правой таблицы, для которых вып-ся условие. Для тех строк из таблицы А, для которых не выполняется условие, в столбцы из таблицы В заносится NULL. Правое внешнее соединение (RIGHT) наоборот включает все строки из правой таблицы. Полное соединение (FULL) включает все строки из 2-х таблиц. Причем для тех строк, для которых выполняется условие заполнение реальными данными, а для остальных как левое и правое вместе (NULL). CROSS - декартовое произведение. В результате выдаются всевозможные сочетания строк левой и правой таблиц.
MONEY - денежная единица.
Структура языка SQL
Стандарт языка SQL, хотя и основан на реляционной теории, но во многих местах отходит он нее. Например, отношение в реляционной модели данных не допускает наличия одинаковых кортежей, а таблицы в терминологии SQL могут иметь одинаковые строки. Имеются и другие отличия.
Язык SQL является реляционно-полным. Это означает, что любой оператор реляционной алгебры может быть выражен подходящим оператором SQL.
CREATE(DROP)(ALTER) TABLE;CREATE (ALTER) VIEW; DROP VIEW; CREATE(DROP) INDEX; DELETE;
INSERT; UPDATE .
предикату L. Если через А и В - обозначить множество атрибутов. Если соединение выполняется только при равенстве двух атрибутов, то это экви - соединение. Соединение таблиц по равенству атрибутов.
2.2. Естественное. Оно выполняется при условии, что в отношениях R и S есть одинаковые атрибуты. Тогда естественное соединение это экви-с-ние для одинаковых атрибутов, причем в резул-щую таблицу - один раз.
2.3. Полу соединение. В полу соединение входят только условия одного отношения, но условие соединения - выполняется. Условия выполняются, но атрибуты берутся только из одного соотношения
2.4. Внешние соединения. Часто бывает, когда нужно выдать данные из одной таблицы и только те данные из другой таблицы, для которых выполняются левые соединения. В результирующую таблицу попадают все кортежи левого отношения и только те кортежи правого отношения, которые удовлетворяют логическому предикату. Если в правом отношении нет соответствующих кортежей, то они заменяются неопределенными значениями (NULL).
3. Деление. Для того чтобы можно было выполнить деление, нужно чтобы мн-во атр-тов делителя входило в мн-во атрибутов делимого.
R÷S - В результате деления двух отношений получим отношение, которое содержит те атрибуты R, которых нет в S и те кортежи S, которые содержаться в R
R (A1, A2, … An, B1, B2,…, Bn)
S (B1, B2, …, Bn)
1) Q = ; 2) P1 = Q×S ; 3) P2 = P1 – R; 4) P3 = ; 5) P4 = Q – P3
R (x,y), S(y)