- •Архитектура субд
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная структура данных
- •Реляционная модель данных
- •Понятие отношения и таблицы
- •Представление базы данных
- •Связь между таблицами
- •Манипулирование реляционными данными
- •Основные операции над таблицами и их интерпретация Теоретико-множественные операции реляционной алгебры
- •Специальные операции реляционной алгебры
- •Первая нормальная форма (1nf)
- •Функциональные зависимости.
- •Теорема Хита
- •Третья нормальная форма (3nf)
- •Многозначные зависимости и четвертая нормальная форма (4nf).
- •Структура языка sql
- •Insert — осуществляет вставку строк в таблицу.
- •Типы хранимых процедур
- •Создание, изменение и удаление хранимых процедур
- •Операторы управления явным курсором
- •Атрибуты курсора
- •Типы триггеров
- •Ссылочная целостность
- •Транзакции
- •Использование between
- •Проверка на вхождение во множество in
- •Использование like
- •Предложение having
- •Создание индекса
- •Некластерный индекс
- •Кластерный индекс
- •Уникальный индекс
- •Удаление индекса
- •Изменение таблицы
- •Основные функции группы администратора бд
- •Объектно-ориентированная парадигма.
- •Реализации olap
- •Использование
- •Требования
- •Преимущества, Недостатки
- •Case-средство Erwin
Использование between
С помощью BETWEEN ... AND ... (находится в интервале от ... до ...) можно отобрать строки, в которых значение какого-либо столбца находятся в заданном диапазоне.
Например, выдать перечень продуктов, в которых значение содержания белка находится в диапазоне от 10 до 50:
SELECT Продукт, Белки FROM Продукты WHERE Белки BETWEEN 10 AND 50;
Можно задать и NOT BETWEEN (не принадлежит диапазону между), например
SELECT Продукт, Белки, Жиры FROM Продукты
WHERE Белки NOT BETWEEN 10 AND 50 AND Жиры > 100;
BETWEEN особенно удобен при работе с данными, задаваемыми интервалами, начало и конец которых расположен в разных столбцах.
Если, например, потребовалось узнать, какие изменения минимальных окладов производились в 1993/94 учебном году, то можно выдать запрос
SELECT Начало, Оклад FROM Оклад
WHERE Начало BETWEEN #01-09-93# AND #31-08-94#;
Отметим, что при формировании запросов значения дат следует заключать в #.
Для выявления всех значений минимальных окладов, которые существовали в 1993/94 учебном году, можно сформировать запрос
SELECT * FROM Оклад WHERE Начало BETWEEN #01-09-93# AND #31-08-94#
OR Конец BETWEEN #01-09-93# AND #31-08-94#;
Проверка на вхождение во множество in
Логическая операция, которую можно использовать в условии для операторов SELECT, UPDATE и DELETE это операция IN. Эта логическая операция возвращает истину, когда значение слева от слова IN входит во множество значений, указанного справа от слова IN. Множество возможных значений может быть указано явно - через запятую в скобках, а может формироваться другим оператором SELECT:
<выражение> IN (<значение 1>, <значение 2>, ....)
<выражение> IN (<оператор SELECT>)
Выдать сведения о блюдах на основе яиц, крупы и овощей
SELECT* FROM Блюда WHERE Основа IN (Яйца Крупа Овощи);
Форма IN является в действительности просто краткой записью последовательности отдельных сравнений, соединенных операторами OR. Предыдущее предложение эквивалентно такому:
SELECT * FROM Блюда WHERE Основа = Яйца OR Основа = Крупа OR Основа = Овощи;
Например, получить адреса фирм «АО Сделай Сам» и «ОСО Довгань»:
SELECT название,адрес FROM фирма WHERE название IN ("АО Сделай Сам", "ООО Довгань");
Это запрос можно сформулировать и с помощью операций "=" и "OR", но во многих случаях использование операции IN более наглядно и компактно.
Например, найти названия и адреса всех фирм, поставляющих молоко. Этот запрос выполняется одним SQL-оператором:
SELECT название, адрес FROM фирма WHERE id_фирмы IN (SELECT товар.id_фирмы FROM товар WHERE название = "молоко");
Найти все фирмы, которые еще не поставляют молоко:
SELECT название, адрес FROM фирма WHERE id_фирмы NOT IN(SELECT товар.id_фирмы FROM товар WHERE название = "молоко");
Если известно, что оператор SELECT возвращает одну запись, то можно вместо слова IN использовать проверку на равенство.
Например, получить список самых дорогих товаров, а именно их названия и цену (цена будет для всех одна - максимальная), то надо выполнить запрос:
SELECT название, цена FROM товар WHERE цена = (SELECT MAX(цена) FROM товар);