- •Содержание
- •Введение
- •1.1. Основные понятия
- •1.2. Компоненты БнД
- •1.3. Классификация БнД и бд
- •1.4. Этапы проектирования бд
- •2.1. Необходимость инфологического моделирования
- •1.5. Взаимосвязь этапов проектирования бд
- •Вопросы для самоконтроля
- •Раздел 2. Проектирование баз данных. Тема 2. Инфологическое моделирование (начало)
- •2.1.1. Виды ограничений целостности
- •2.1.2. Причины, приводящие к нарушению ограничений целостности
- •2.2. Описание объектов и их свойств
- •Тема 3. Инфологическое моделирование (окончание)
- •3.1. Описание связей между объектами.
- •3. 2. Описание сложных объектов
- •Вопросы для самоконтроля
- •Тема 4. Даталогическое проектирование
- •4.1. Общие сведения
- •4.2. Подход к даталогическому проектированию
- •4.3. Определение состава бд
- •4.4. Разновидности даталогических моделей
- •Вопросы для самоконтроля
- •Тема 5. Реляционная даталогическая модель базы данных
- •5.1. Основные понятия
- •5.2. Цели проектирования рбд
- •Возможность хранения всех необходимых данных в бд;
- •Исключение избыточности данных;
- •Сведение числа хранимых в бд отношений к минимуму;
- •5.2.1. Возможность хранения всех необходимых данных в бд
- •5.2.2. Исключение избыточности данных
- •5.2.3. Сведение числа хранимых в бд отношений к минимуму
- •5.2.4. Нормализация отношений
- •Вопросы для самоконтроля
- •Тема 6. Метод проектирования реляционной базы данных на основе илм
- •Вопросы для самоконтроля
- •Тема 7. Пример проектирования реляционной базы данных на основе илм
- •7.1. Описание объектов и связей между ними
- •7.2. Лингвистические отношения
- •7.3. Алгоритмические связи показателей
- •7.4. Описание информационных потребностей пользователей
- •7.5. Ограничения целостности
- •7.6. Определение состава бд
- •7.7. Определение отношений, включаемых в бд
- •7.8. Описание логической структуры бд на языке субд (схема бд)
- •7.9. Сравнение спроектированной рбд с однотабличной бд
- •Вопросы для самоконтроля
- •Раздел 3. Описание информационных потребностей пользователей базы данных. Тема 8. Информационные потребности пользователей базы данных.
- •8.1. Типы и языки запросов
- •8.2. Реляционная алгебра (алгебра отношений)
- •8.2.1. Проекция
- •8.2.2. Выборка
- •8.2.3. Соединение
- •8.2.8. Деление
- •8.3. Примеры запросов на реляционном языке
- •Вопросы для самоконтроля
- •Раздел 4. Использование языка sql для работы с базами данных. Тема 9. Структурированный язык запросов sql
- •9.1. Стандарт и разновидности языка sql
- •9.2. Краткое введение в sql
- •Тема 10. Основные элементы языка sql. Использование языка sql для выборки данных
- •10.1. Оператор select
- •Тема 11. Отбор строк из таблиц. Условия поиска строк
- •Вопросы для самоконтроля
- •Тема 12. Сортировка таблиц
- •Тема 13. Использование псевдонимов для обозначения таблиц базы данных. Самосоединение таблиц. Итоговые запросы и агрегатные функции
- •Вопросы для самоконтроля
- •Тема 14. Запросы с группировкой
- •Тема 15. Вложенные запросы
- •Вопросы для самоконтроля
- •Тема 16. Изменение данных в базе данных
- •16.1. Корректировка таблиц бд
- •16.2. Создание объектов бд
- •16.3. Создание представлений
- •Вопросы для самоконтроля
- •Рекомендуемая литература
Тема 10. Основные элементы языка sql. Использование языка sql для выборки данных
10.1. Оператор select
Этот оператор является основным в языке SQL и служит для отбора данных и выдачи результатов этого отбора в заданном виде. Оператор имеет следующий формат:
SELECT <предложение>
FROM <предложение>
[WHERE <условие>]
[GROUP BY <предложение>] [HAVING <условие>]
[UNION <подзапрос>]
[ORDER BY <предложение>]
Обязательными являются фразы (или предложения) SELECT и FROM. Все другие компоненты оператора SELECT, если они используются, должны записываться в том порядке, в котором они перечислены в формате оператора.
Рассмотрим правила записи отдельных компонентов оператора SELECT.
Фраза SELECT имеет следующий формат:
SELECT [DISTINCT] { * | <список выражений>}
Если указано DISTINCT, то в результирующую таблицу отбираются только уникальные строки. По умолчанию отбираются все строки, в том числе повторяющиеся.
Знак “*” указывает, что в результирующую таблицу выводятся все столбцы из таблиц, указанных в фразе FROM.
В списке выражений обычно перечисляются имена столбцов, которые будут выводиться в результирующую таблицу. Но могут быть указаны и константы; тогда это значение будет повторено во всех строках результирующей таблицы. Кроме того, в качестве элемента в списке выражений может быть задано арифметическое выражение для определения вычисляемого столбца.
В выражениях могут употребляться стандартные функции, в том числе: SUM (сумма), AVG (среднее), MIN (минимальное), MAX (максимальное), COUNT (число значений). Каждая из этих функций оперирует совокупностью значений в столбце, заданном в качестве аргумента функции.
Аргументу функции может предшествовать ключевое слово DISTINCT, которое указывает, что дублирующие значения не должны учитываться при определении результата. Например:
SELECT ‘ВСЕГО ЖИТЕЛЕЙ’, COUNT (DISTINCT nom),
‘СУММА ДОХОДОВ=’, SUM (money) FROM Have_D
Фраза FROM содержит список имен таблиц, которые используются для формирования результирующей таблицы. Например, чтобы получить таблицу с фамилиями жителей и их телефонами, нужен запрос
SELECT person.Fio,tphone.Ntel
FROM person,tphone
WHERE person.Adr=tphone.Adr
Тема 11. Отбор строк из таблиц. Условия поиска строк
Фраза WHERE задает условие, по которому выбираются строки для выполнения запроса. в предыдущем примере использован следующий формат фразы WHERE:
WHERE [NOT] [<имя таблицы1>.] <имя столбца>
<знак сравнения> [<имя таблицы2>.] <имя столбца>
Условие отбора строк может задаваться с использованием логических операций AND и OR. Например, если нужны данные только о жителях с фамилиями ИВАНОВ и ПЕТРОВ, то фраза WHERE может быть такой:
WHERE Fio=‘ИВАНОВ’ OR Fio=‘ПЕТРОВ’
Помимо логических операций можно использовать предикат IN (находится в, принадлежит). Фраза WHERE в этом случае имеет такой формат:
WHERE [NOT] <выражение> [NOT] IN
(<список значений><подзапрос>)
Например, WHERE Fio IN (‘ИВАНОВ’, ‘ПЕТРОВ’)
Если нужно выдать сведения о всех жителях, кроме Ивановых и Петровых, то запрос можно задать так:
SELECT * FROM person WHERE Fio NOT IN (‘ИВАНОВ’, ‘ПЕТРОВ’)
В условии может быть задан диапазон:
WHERE [NOT] <выражение> [NOT] BETWEEN <нижнее выражение> AND <верхнее выражение>
Например, получить сведения о жителях, родившихся в 1960 году, можно с помощью запроса
SELECT * FROM person WHERE Rdate BETWEEN '01/01/60' AND '31/12/60'
Предусмотрена возможность поиска символьной информации по шаблону (маске). Символ “%” обозначает в шаблоне любую последовательность символов, а символ “_” (подчеркивание) - любой единичный символ. Поиск по шаблону задается фразой
WHERE [NOT] <имя столбца> [NOT] LIKE ‘<шаблон>’
Так, запрос
SELECT * FROM person WHERE Fio LIKE ‘И%’
обеспечит выдачу сведений о всех жителях, фамилии которых начинаются буквой “И”.
