
- •Информационное обеспечение систем управления Построение запросов при работе с базой данных (Учебное пособие)
- •Тестовая база данных
- •Выборка данных. Команда select
- •Синтаксис оператора select
- •Простые варианты поиска данных
- •Упорядочение результата запроса. Предложение order by
- •Использование ключевого слова distinct
- •Предложение where
- •Синтаксис предложения where
- •Использование операторов сравнения
- •Использование варианта between
- •Проверка на присутствие в списке значений (вариант in)
- •Проверка на пустое значение
- •Поиск в строковых столбцах
- •Вариант like
- •Использование логических операций в условиях поиска
- •Порядок выполнения логических операций
- •Преобразование данных при выборке
- •Обобщение Данных с помощью Агрегатных Функций
- •Использование distinct с count
- •Предложение group by
- •Предложение having
- •Соединение таблиц
- •Внутренние соединения (связывание по равенству)
- •Внешние соединения
- •Левое внешнее соединение
- •Правое внешнее соединение
- •Полное внешнее соединение
- •Более сложные примеры соединений
- •Рефлексивное соединение, или самосоединение
- •Использование подзапросов в операторах sql
- •Выбор одного
- •Использование в подзапросе агрегатных функций
- •Связанные подзапросы
- •Использование оператора exists
- •Использование варианта in с подзапросами
- •Использование not exists
- •Объединение запросов
- •Команда union
- •Добавление данных. Команда insert
- •Добавление отдельной строки
- •Добавление группы строк
- •Обновление уже имеющихся данных. Команда update
- •Удаление данных из таблиц. Команда delete
- •Генераторы и их использование
- •Создание генераторов
- •Использование генераторов
- •Увеличение значения генератора
- •Получение значения генератора в приложение
- •Триггер
Простые варианты поиска данных
Рассмотрим вначале наиболее простые варианты использования оператора. Мы будем отыскивать данные каждый раз только в одной из таблиц базы данных.
Сразу после ключевого слова SELECT указывается список выбора — список столбцов таблицы, литералов, констант или выражений, которые попадут в результирующий набор данных.
В самом простом варианте оператора SELECT можно указать вместо списка отображаемых столбцов символ *, например:i
SELECT * FROM PERSON
Этот оператор возвращает все столбцы всех строк таблицы PERSON
Листинг 1. Выбор всех столбцов всех строк таблицы людей
PR_CODE |
PR_NAME |
PR_NAME2 |
PR_NAME3 |
PR_BIRTHDAY |
1 |
Зеленина |
Надежда |
Александровна |
11.12.1965 |
2 |
Бычкова |
Марина |
Валентиновна |
01.04.1957 |
3 |
Мельчакова |
Оксана |
Владимировна |
06.07.1978 |
4 |
Бычков |
Максим |
Владимирович |
08.09.1970 |
5 |
Попутько |
Павел |
Павлович |
05.05.1959 |
6 |
Лебедев |
Александр |
Анатольевич |
03.04.1977 |
7 |
Варанкина |
Елена |
Алевтиновна |
01.02.1952 |
8 |
Лядов |
Олег |
Владимирович |
07.06.1964 |
9 |
Вашкарина |
Лариса |
Вилльевна |
05.11.1980 |
10 |
Верхоланцева |
Анна |
Николаевна |
06.10.1991 |
11 |
Алексеев |
Юлий |
Альбертович |
19.09.1974 |
Следует исключить из списка коды личностей, которые обычному человеку ничего не говорят. Выполним оператор в следующем виде:ii
SELECT PR_NAME, PR_NAME2, PR_NAME3, PR_BIRTHDAY
FROM PERSON
Мы получим те же записи. Каждая будет содержать фамилию, имя, отчество и дату рождения человека.
Заголовки нам с вами, как проектировщикам таблиц нашей базы данных, понятны. Однако другим людям следует долго объяснять, что это такое. Лучше сразу сформировать заголовки на русском языке. Выполните:iii
SELECT PR_NAME2 AS "Имя",
PR_NAME3 AS "Отчество",
PR_NAME AS "Фамилия",
PR_BIRTHDAY AS "Дата рождения"
FROM PERSON
Результат станет более понятным, заголовки содержат правильные тексты.
Листинг 2. Добавление осмысленных заголовков
Имя |
Отчество |
Фамилия |
Дата рождения |
Надежда |
Александровна |
Зеленина |
11.12.1965 |
Марина |
Валентиновна |
Бычкова |
01.04.1957 |
Оксана |
Владимировна |
Мельчакова |
06.07.1978 |
Максим |
Владимирович |
Бычков |
08.09.1970 |
Павел |
Павлович |
Попутько |
05.05.1959 |
Александр |
Анатольевич |
Лебедев |
03.04.1977 |
Елена |
Алевтиновна |
Варанкина |
01.02.1952 |
Олег |
Владимирович |
Лядов |
07.06.1964 |
Лариса |
Вилльевна |
Вашкарина |
05.11.1980 |
Анна |
Николаевна |
Верхоланцева |
06.10.1991 |
Юлий |
Альбертович |
Алексеев |
19.09.1974 |
ЗАМЕЧАНИЕ
Обратите, пожалуйста, внимание на вид, в котором представляются операторы SELECT в этой главе. Вместо того чтобы даже короткие операторы размещать на одной строке, старайтесь отдельные группы переносить на новые строки. SQL позволяют для ввода любого оператора использовать произвольное количество cтрок.
В списке выбора могут присутствовать не только имена столбцов, но и константы или литералы (строки). Выполните следующий оператор:iv
SELECT PR_NAME2 AS "Имя",
PR_NAME3 AS "Отчество",
'Фамилия:' AS "Текст",
PR_NAME AS "Фамилия",
PR_BIRTHDAY AS "Дата рождения"
FROM PERSON
В результате выполнения запроса один столбец будет во всех строках содержать один и тот же текст — "Фамилия:". Ему мы и присвоили заголовок Текст
Листинг 3. Добавление в результат выбора текстовой строки "Фамилия:"
Имя |
Отчество |
Текст |
Фамилия |
Дата рождения |
Надежда |
Александровна |
Фамилия: |
Зеленина |
11.12.1965 |
Марина |
Валентиновна |
Фамилия: |
Бычкова |
01.04.1957 |
Оксана |
Владимировна |
Фамилия: |
Мельчакова |
06.07.1978 |
Максим |
Владимирович |
Фамилия: |
Бычков |
08.09.1970 |
Павел |
Павлович |
Фамилия: |
Попутько |
05.05.1959 |
Александр |
Анатольевич |
Фамилия: |
Лебедев |
03.04.1977 |
Елена |
Алевтиновна |
Фамилия: |
Варанкина |
01.02.1952 |
Олег |
Владимирович |
Фамилия: |
Лядов |
07.06.1964 |
Лариса |
Вилльевна |
Фамилия: |
Вашкарина |
05.11.1980 |
Анна |
Николаевна |
Фамилия: |
Верхоланцева |
06.10.1991 |
Юлий |
Альбертович |
Фамилия: |
Алексеев |
19.09.1974 |
Как это будет использоваться, покажем позднее, при исследовании ключевого слова UNION
В вывод может попадать не только столбец но и результат каких либо действий над столбцами, для примера, вместо имени, отчества и фамилии мы можем вывести один столбец содержащий результат объединения имени, отчества и фамилии из таблицы PERSON добавив между ними пробелы (соединение нескольких строк осуществляем при помощи операции конкатенации – ||): v
SELECT PR_NAME2 || ' ' || PR_NAME3 || ' ' || PR_NAME AS "ФИО",
PR_BIRTHDAY AS "Дата рождения"
FROM PERSON
В результате выполнения запроса получим
Листинг 4. Список людей с использованием соединения имени, отчества и фамилии при помощи операции конкатенации
ФИО |
Дата рождения |
Надежда Александровна Зеленина |
11.12.1965 |
Марина Валентиновна Бычкова |
01.04.1957 |
Оксана Владимировна Мельчакова |
06.07.1978 |
Максим Владимирович Бычков |
08.09.1970 |
Павел Павлович Попутько |
05.05.1959 |
Александр Анатольевич Лебедев |
03.04.1977 |
Елена Алевтиновна Варанкина |
01.02.1952 |
Олег Владимирович Лядов |
07.06.1964 |
Лариса Вилльевна Вашкарина |
05.11.1980 |
Анна Николаевна Верхоланцева |
06.10.1991 |
Юлий Альбертович Алексеев |
19.09.1974 |