- •1. Бд и субд. Архитектура клиент-сервер.
- •2. Модели данных.
- •5. Реляционная модель данных.
- •6. Реляционная алгебра.
- •7. Нормализация баз данных
- •8. Язык sql: операторы определения данных. Ограничения целостности.
- •9. Ограничения внешнего ключа.
- •10. Оператор select. Выборка, поиск, сортировка.
- •11. Агрегатные функции и группировка
- •12. Вложенные запросы. Примеры.
- •13. Соединение таблиц (внутреннее, внешнее, полное)
- •14. Операторы вставки, удаления, модификации данных
- •15. Представления (View)
- •16. Транзакции.
- •17. Типовая структура экспертной системы.
- •18. Модели знаний
9. Ограничения внешнего ключа.
Ограничение внешнего ключа говорит, что значения в колонке (или группе колонок) должно совпадать со значениями, которые существуют в некоторых строках другой таблицы. Внешний ключ обслуживает ссылочную целостность между двумя относящимися друг к другу таблицами.
Например, пусть у нас есть таблица товаров product:
CREATE TABLE products (
product_no integer PRIMARY KEY,
name text,
price numeric
);
Также пусть у нас есть таблица orders, хранящая порядок этих товаров. Мы хотим иметь уверенность, что таблица с порядком товаров содержит только те товары, которые уже есть. Для этого мы определяем ограничение внешнего ключа в таблице orders, которое ссылается на таблицу products:
CREATE TABLE orders (
order_id integer PRIMARY KEY,
product_no integer REFERENCES products (product_no),
quantity integer
);
Теперь в таблице orders невозможно создать строку, в которой значение product_no не соответствует одному из значений в таблице products. В более кратком виде:
CREATE TABLE orders (
order_id integer PRIMARY KEY,
product_no integer REFERENCES products,
quantity integer
);
поскольку при опущенном списке колонок, в качестве колонок будет использоваться значение первичного ключа в ссылочной таблице. Внешний ключ может также ограничивать и ссылаться на группу колонок. Такое ограничение необходимо записывать как ограничение на таблицу. Пример:
CREATE TABLE t1 (
a integer PRIMARY KEY,
b integer,
c integer,
FOREIGN KEY (b, c) REFERENCES other_table (c1, c2)
);
10. Оператор select. Выборка, поиск, сортировка.
Оператор SELECT, представляющий язык запросов к данным (Data Query Language — DQL) в SQL, используется для составления запросов к БД. Он требует указания некоторых параметров с помощью ключевых слов. Кроме обязательных, у этого оператора имеется несколько необязательных ключевых слов, расширяющих его возможности. Оператор SELECT состоит из выражений, строящихся на основе следующих четырех ключевых слов.• SELECT• FROM• WHERE• ORDER BY
SELECT используется в совокупности с ключевым словом FROM для того, чтобы организовать извлечение данных из БД в удобном для чтения формате. Часть запроса, заданная ключевым словом SELECT, определяет источник отбора данных.
Синтаксис SELECT [ * | ALL | DISTINCT СТОЛБЕЦ1, СТОЛБЕЦ2 ] FROM ТАБЛИЦА1 [ , ТАБЛИЦА2 ];
За ключевым словом SELECT в запросе следует список столбцов, значения которых вы хотели бы видеть в результате запроса. За ключевым словом FROM следует список таблиц, из которых должны извлекаться данные. Опция ALL используется тогда, когда нужно показать все значения столбца, включая и повторяющиеся. Опция DISTINCT используется для того, чтобы повторения исключить. Из этих опций используемой по умолчанию опцией является ALL, которую поэтому указывать не обязательно.
Условие — это часть запроса, содержащая информацию, на основе которой отбираются данные. В выражении WHERE может содержаться несколько условий (они связываются операциями AND и OR)
Синтаксис SELECT [ ALL | * | DISTINCT СТОЛБЕЦ1, СТОЛБЕЦ2 ] FROM ТАБЛИЦА1[ , ТАБЛИЦА2 ] WHERE [ УСЛОВИЕ1| ВЫРАЖЕНИЕ1 ] [ AND УСЛОВИЕ2 | ВЫРАЖЕНИЕ2 ]
Сортировка вывода Обычно требуется, чтобы выводимые данные были как-то упорядочены. Выводимые данные можно упорядочить с помощью выражения, связанного с ключевым словом ORDER BY. По умолчанию будет упорядочение по возрастанию ASC, обозначается A—Z (А—Я) в случае сортировки имен. Для числовых значений между 1 и 9 упорядочение по возрастанию обозначается 1-9, а по убыванию — 9— 1 DESC.
Синтаксис SELECT [ ALL | * | DISTINCT СТОЛБЕЦ1, СТОЛБЕЦ2 ]
FROM ТАБЛИЦА1 [ , ТАБЛИЦА2 ]
WHERE [ УСЛОВИЕ1 | ВЫРАЖЕНИЕ1 ] AND [УСЛОВИЕ2 | ВЫРАЖЕНИЕ2 ]
ORDER BY СТОЛБЕЦ1 [ ASC|DESC ];
В SQL предлагаются и некоторые сокращения. Столбец, указанный в списке ключевого слова ORDER BY, можно заменить числом, соответствующим порядку столбца в списке после ключевого слова SELECT.
Можно задать упорядочение по нескольким столбцам, используя либо имена столбцов, либо соответствующие им в списке SELECT номера: ORDER BY 1,2,3
Резюме : В основе построения запросов лежит использование оператора SELECT, являющегося командой языка запросов к данным (DQL). Каждый оператор SELECT должен включать ключевое слово FROM. Вы узнали о том, как с помощью ключевого слова WHERE в запросах задаются условия отбора, а с помощью ключевого слова ORDER BY — условия сортировки. На основе простейших запросов строятся более сложные.
