Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция спбд.docx
Скачиваний:
59
Добавлен:
14.09.2019
Размер:
223.04 Кб
Скачать

3) Представление.

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

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

Хранимая процедура – это объект БД, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. У них могут быть входные-выходные параметры, локальные переменные и т.д.

5) Типы данных.

Типы данных – это базовый элементы любого языка программирование или любого сервера СУБД. (IB console). В inter base существует 12 типов данных, которые подразделяются на 6-сть следующих групп:

  1. Для хранения целых чисел:

    1. Integer

    2. Small integer

  2. Вещественные

  3. Фиксированная точность

    1. Numeric

    2. Decimal

  4. Для хранения даты, времени и даты-времени

    1. Date

    2. Time

    3. Timestamp

  5. Для хранения динамически расширяемых данных

    1. Blob

Лекция 2. 10.02.12

Тема: Проектирование БД.

Концептуальная модель – это отражение предметной области для которой разрабатывается БД. Все объекты, обозначающие вещи, обозначаются в виде прямоугольника, атрибуты, характеризующие объект в виде овала, а связи между объектами в виде ромба. Мощность связи обозначается стрелками, в направлении, где мощность равна многим двойная стрелка, а со стороны, где равна единицы – одинарная.

Преобразование концептуальной модели в реляционную состоит в следующем:

  1. Построить набор предварительных таблиц и указать первичные ключи;

  2. Провести процесс нормализации;

Нормализация.

Существуют следующие нормальные формы: первая, фторая, третья формы, форма Бойса-Кодда, четвертая нормальная форма, пятая.

Отношение находится в первой нормальной форме, если все его атрибуты являются простыми (его нельзя разить на части).

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

Приведение отношения ко второй нормальной форме позволяет убрать зависимость не ключевых атрибутов от части ключа.

Отношение находится в третьей нормальной форме, если оно находится во второй нормальной форме если ни дин столбец в таблице не зависел от каких-либо других столбцов, кроме столбцов первичного ключа. Третья нормальная форма исключает транзитивную зависимость атрибутов.

Основные операторы языка SQL.

Оператор SELECT и конструкция FROM:

Основной всего оператора, который сообщает СУБД какое действие она должна выполнить является глагол SELECT, применение в операторе ключевого SELECT указывает на то, что должно быть выполнено только чтение информации, а нее ее модификация. Информация, подлежащая выборки, обозначается с помощью выражения или списка столбцов, которые непосредственно следуют за ключевым словом SELECT. Для указания имени таблицы, являющейся источником получения данных, служит конструкция FROM.

SELECT [DISTINCT | DISTINCTROW | ALL] select_expression,... [FROM table_references] [WHERE where_definition] [GROUP BY {unsigned_integer | col_name | formula} [HAVING where_definition] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]

Конструкция WHERE:

Позволяет налагать условие, определяющие, какую именно информацию должен возвратить запрос. Выражение, описывающие условие отбора, должно быть логическим. Его элементами могут быть: имена полей, операции сравнения, арифметические и логические операции, скобки, специальные функции LIKE, NULL, IN.

Критерий отбора представляет собой логическое выражение, в котором можно использовать следующие операции: =, <, >, <=, >=, !=.

LIKE – сравнение по шаблону.

IS NULL – проверка на нулевое значение.

IN – проверка на вхождение.

BETWEEN – проверка на вхождение на диапазон.

WHERE <выражение 1><оператор>< выражение 2>.

Выражение состоит из имен полей, функций ,констант, значений, знаков операций, круглых скобок.

Для сравнения строк вместо операций =, != можно использовать операцию LIKE, выполняющую сравнение по частичному совпадению.

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

Символ-шаблон

Описание

Пример

%

Любая строка длиной от нуля и более символов.

Инструкция WHERE Название LIKE '%компьютер%' выполняет поиск и выдает все названия книг, содержащие слово «компьютер».

_ (подчеркивание)

Любой одиночный символ.

Инструкция WHERE фамилия_автора LIKE '_етров' выполняет поиск и выдает все имена, состоящие из шести букв и заканчивающиеся сочетанием «етров» (Петров, Ветров и т.п.).

[ ]

Любой одиночный символ, содержащийся в диапазоне ([a-f]) или наборе ([abcdef]).

Инструкция WHERE Фамилия_автора LIKE '[Л-С]омов' выполняет поиск и выдает все фамилии авторов, заканчивающиеся на «омов» и начинающиеся на любую букву в промежутке от «Л» до «С», например Ломов, Ромов, Сомов и т.п. При выполнении операции поиска в диапазоне символы, включенные в диапазон, могут изменяться в зависимости от правил сортировки параметров сортировки.

[^]

Любой символ, содержащийся в диапазоне ([^a-f]) или наборе ([^abcdef]).

Инструкция WHERE Фамилия_автора LIKE 'ив[^а]%' выполняет поиск и выдает все фамилии, начинающиеся на «ив», в которых третья буква отличается от «а».

Для проверки нулевого значения служит операция IS NULL:

expression IS [ NOT ] NULL

BETWEEN выполняет проверку вхождения значения в диапазон и имеет формат:

test_expression [ NOT ] BETWEEN begin_expression AND end_expression

При отборе можно использовать несколько операция, задавая тем самым сложные критерии отбора записей. Сложный критерий состоит из простых условий и логических операций (OR, AND, NOT).

Лекция 3. 17.02.12

Тема: Продолжение.

Конструкция ORDER BY

Сортировка представляет собой упорядочивание записей по возрастанию или убыванию значений полей. Список полей, по которому выполняется сортировка, указывается в операнде ORDER BY. Порядок полей в этом операнде определяет порядок сортировки: сначало записи упорядочиваются по значению поля, указанного в этом списке первым, затем записи, имеющие одинаковое значение первого поля упорядочиваются по второму полю и т.д. Поля в списке обозначаются именами или номерами, которые соответствуют номерам в списке полей после слова SELECT. По умолчанию сортировка происходит в порядке возрастания значений полей (ASC), для указания обратного порядка сортировки по какому-либо полю нужно указать после имени или имени этого поля описатель DESC.

ORDER BY { поле | Integer [ ASC|DESC ] } [,...]

Агрегироввание данных с использованием конструкции GROUP BY.

Записи набора данных могут быть сгруппированиы по некоторому признаку. Группу образуют записи с одинаковыми значениями (типом) в полях, перечисленных в списке операнда GROUP BY. При группировании записей их проще анализировать и обрабатывать с помощью статических функций. Группирование записей автоматически исключает повтор значений в полях, заданных для группирования, т.к. записи с совпадающими значениями этих полей объединяются в одну группу.

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name

Функция COUNT для вычисления количества строк результатов запроса. Функции MIN и MAX определяют минимальное и максимальное значение для каждой группировки в выбранном столбце. Функция SUM вычисляет арифмитическую сумму для всех выбранных значений данного поля. AVG вычисляет среднего значения.

Оператор INSERT.

Вставка записи осуществляется с помощью оператора INSERT, который позволяет добавлять к таблицам одну или несколько записей.

INSERT INTO table_name (column1, column2, column3,...)

VALUES (value1, value2, value3,...)

В результате этого оператора к таблице, имя которой указано после слова INTO, добавляется одна запись. Для добавленной записи заполняются поля, перечисленные в списке. Значения полей берутся из списка расположенного после слова VALUES. Список полей и список значений должны соответствовать друг другу по числу элементов и по типу.

Оператор INSERT INTOSELECT.

При добавлении к таблице сразу нескольких записей оператор INSERT имеет формат:

INSERT INTO table_name SELECT …

В данном случае значение полей новых записей определяется через значения полей записей, отобранных с помощью оператора SELECT. Число добавленных записей равно числу отобранных записей. Список значенйи полей возвращаемых инструкцией SELECT должен соответствовать списку оператора INSERT по числу и типу полей.

Модификация данных с помощью оператора UPDATE.

Редактирование записей представляет собой изменение значений полей в группе записей.

UPDATE table_name

SET column1=value, column2=value2,...

WHERE some_column=some_value

После применения оператора UPDATE для всех записей, удовлетворяющих условию отбора, изменяются значения выбранных полей. column указывает модифицируемое поле всей совокупности записей, а value определяет значение, которое будет присвоено этому полю.

В одном операторе UPDATE можно изменить несколько значений полей, в этом случае для каждого из них указывается соответствующее значение.

Оператор DELETE.

Для удаления группы записей используется оператор DELETE.

DELETE FROM table_name

WHERE some_column=some_value

Соединения

Конструкция JOIN.

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

INNER JOIN

OUTER JOIN – LEFT, RIGHT

CROSS JOIN

Таблица 1.

Groupe

id_gr

name_gr

id_fac

Таблица 2.

Facultet

id_fac

name_fac

Group

id_gr

name_gr

id_fac

1

1410901

1

2

140902

1

3

140903

1

4

040901

3

5

040902

3

6

020901

2

7

030901

4

8

020903

2

9

080901

null

10

080902

null

Facultet

id_fac

name_fac

1

КНиТ

2

ФУП

3

БХФ

4

СТФ

5

Юридический

6

Экономический

INNER JOIN:

Это внутренние соединения. Объединяет две таблицы, где каждая строка обоих таблиц в точности соответствует условию. Если для строки одной таблицы не найдено соответствие в другой таблице, то она не включается в набор. Формат:

SELECT column FROM table1 INNER JOIN table2 ON condition(условие)

Пример для наших таблиц:

SELECT Groupe.name_gr, Facultet.name_fac FROM Groupe INNER JOIN Facultet ON Groupe.id_fac=Facultet.id_fac;

OUTER JOIN

Это внешнее объединение. Делится на LEFT JOIN и на RIGHT JOIN.

LEFT – это левое внешнее объединение. Выбираются вне записи первой таблицы, даже если они не соответствуют записям во второй таблице.

SELECT Groupe.name_gr, Facultet.name_fac FROM Groupe LEFT JOIN Facultet ON Groupe.id_fac=Facultet.id_fac;

- LEFT

-RIGHT

Конструкция FULL JOIN:

Это комбинация правого и левого объединения. Показывает строки из обеих таблиц: при наличии соответствия – это бъединенные данные, в противном случае – это null значения.

Конструкция CROSS JOIN:

Перекрестное объединение, выводятся все комбинации строк (декартово произведение множеств). Каждой строке первой таблице соответствует каждая строка второй таблице.