metBD (1084482), страница 32

Файл №1084482 metBD (Учебное пособие) 32 страницаmetBD (1084482) страница 322018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 32)

Получаем:

НОМЕР_ДЕТАЛИ

P1

5448

P5

5448

P4

6356

P2

7718

P3

7718

P6

8626

Выборка с использованием between (между)

Выдать сведения о деталях, вес которых находится в диапа­зоне от 16 до 19 включительно:

SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД

FROM P

WHERE ВЕС BETWEEN 16 AND 19;

Имеем следующий результат:

НОМЕР_

ДЕТАЛИ

НАЗВАНИЕ

ЦВЕТ

ВЕС

ГОРОД

P2

Болт

Зеленый

17

Париж

P3

Винт

Голубой

17

Рим

P6

Блюм

Красный

19

Лондон

Может быть также специфицировано NOT BETWEEN (не при­надлежит диапазону между), например:

SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД

FROM P

WHERE ВЕС NOT BETWEEN 16 AND 19;

Получаем тогда:

НОМЕР_

ДЕТАЛИ

НАЗВАНИЕ

ЦВЕТ

ВЕС

ГОРОД

P1

Гайка

Красный

12

Лондон

P4

Винт

Красный

14

Лондон

P5

Кулачок

Голубой

12

Париж

Выборка с использованием in (принадлежит)

Выдать детали, вес которых равен 12, 16 или 17:

SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД

FROM Р

WHERE ВЕС IN (12, 16, 17);

Результат:

НОМЕР_

ДЕТАЛИ

НАЗВАНИЕ

ЦВЕТ

ВЕС

ГОРОД

P1

Гайка

Красный

12

Лондон

P2

Болт

Зеленый

17

Париж

P3

Винт

Голубой

17

Рим

P5

Кулачок

Голубой

12

Париж

Предикат IN является в действительности просто краткой записью предиката, представляющего собой последовательность отдельных сравнений, соединенных операторами OR (или). Пре­дыдущее предложение SELECT эквивалентно следующему:

SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД

FROM Р

WHERE ВЕС = 12

OR ВЕС = 16

OR ВЕС = 17;

Имеется в распоряжении также предикат NOT IN (не принад­лежит), например предложение;

SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД

FROM P

WHERE ВЕС NOT IN (12, 16, 17);

дает результат;

НОМЕР_

ДЕТАЛИ

НАЗВАНИЕ

ЦВЕТ

ВЕС

ГОРОД

P4

Винт

Красный

14

Лондон

P6

Блюм

Красный

19

Лондон

Подобно предикату IN предикат NOT IN может рассматри­ваться только как сокращенная запись другого предиката, кото­рый не использует NOT IN. Упражнение. Запишите «разверну­тую форму» предложения из предшествующего примера.

Выборка с использованием предиката like (похоже на)

Выдать все детали, названия которых начинаются с буквы «С»:

SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД

FROM P

WHERE НАЗВАНИЕ LIKE ’С%’;

Получаем результат:

НОМЕР_

ДЕТАЛИ

НАЗВАНИЕ

ЦВЕТ

ВЕС

ГОРОД

P5

Кулачок (Cam)

Голубой

12

Париж

P6

Блюм (Cog)

Красный

19

Лондон

Обычно предикат LIKE имеет форму:

имя—столбца LIKE литерная—строковая—константа,

где «имя—столбца» должно обозначать столбец типа CHAR или VARCHAR. Этот предикат принимает для заданной записи зна­чение истина, если значение в указанном столбце соответствует образцу, специфицируемому «литерной—строковой—константой». Литеры этой константы интерпретируются следующим образом:

  • Литера «_» (разрыв или подчеркивание) обозначает любую одиночную литеру.

  • Литера «%» (процент) обозначает любую последовательность из n литер (где n может быть нулем).

  • Все другие литеры обозначают просто сами себя.

Следовательно, в приведенном примере предложение SELECT будет осуществлять выборку записей из таблицы P, для которых значение в столбце НАЗВАНИЕ начинается буквой «С» и содер­жит любую последовательность из нуля или более литер, сле­дующую за этой буквой «С».

Ниже приведено еще несколько примеров, в которых исполь­зуется LIKE:

АДРЕС LIKE ’% Беркли %’ будет принимать значение истина, если АДРЕС содержит где-либо внутри него строку ’Беркли’

НОМЕР_ПОСТАВЩИКА LIKE ’S__’ будет принимать значение истина, если значение в столбце НОМЕР_ПОСТАВ­ЩИКА состоит в точности из трех литер и первая из них литера «S»

НАЗВАНИЕ LIKE ’% К___’ будет принимать значение истина, если значение в столбце НАЗВАНИЕ состоит из четырех или более литер и трем послед­ним из них предшествует литера «К»

ГОРОД NOT LIKE ’% Е %’ будет принимать значение истина, если значение ГОРОД не содержит литеры «Е»

Выборка, при которой вовлекается null (неопределенное значение)

Допустим, например, что значением в столбце СОСТОЯНИЕ для поставщика S5 является не 30, а неопределенное значение. Выдать номера поставщиков, у которых состояние больше, чем 25:

SELECT НОМЕР_ПОСТАВЩИКА

FROM S

WHERE СОСТОЯНИЕ > 25;

В результате получим:

НОМЕР_ПОСТАВЩИКА

S3

Здесь поставщик S5 не был назван в результате. Если неоп­ределенное значение сравнивается с некоторым другим значением при вычислении предиката, то независимо от используемого опе­ратора сравнения результатом сравнения никогда не является истина, даже если этот другой операнд также является неопре­деленным значением. Иными словами, если оказывается, что СОСТОЯНИЕ имеет неопределенное значение, то ни одно из сле­дующих сравнений не будет принимать значение истина:

СОСТОЯНИЕ > 25

СОСТОЯНИЕ < = 25

СОСТОЯНИЕ = 25

СОСТОЯНИЕ !=25

СОСТОЯНИЕ = NULL (Это недопустимая синтаксическая конструкция. См. ниже)

СОСТОЯНИЕ != NULL (Это—тоже).

Поэтому если издать запрос:

SELECT НОМЕР_ПОСТАВЩИКА

FROM S

WHERE СОСТОЯНИЕ < = 25;

и сравнить его результат с результатом предыдущего запроса, то можно установить, что поставщик S5 не появляется ни в одном из них. Результат приведенного запроса:

НОМЕР_ПОСТАВЩИКА

S1

S2

S4

Для проверки наличия (или отсутствия) неопределенного зна­чения предусмотрен специальный предикат вида:

имя — столбца IS [NOT] NULL

Например:

SELECT НОМЕР_ПОСТАВЩИКА

FROM S

WHERE СОСТОЯНИЕ IS NULL;

В результате имеем:

НОМЕР_ПОСТАВЩИКА

S5

Синтаксическая конструкция «СОСТОЯНИЕ = NULL» является некорректной, поскольку ничто — и даже само неопределенное значение — не считается равным неопределенному значению. (Не­смотря на это, два неопределенных значения рассматриваются, однако, как дубликаты друг друга при исключении дубликатов. Предложение SELECT DISTINCT (ВЫБРАТЬ РАЗЛИЧНЫЕ) даст в результате не более одного неопределенного значения. Ана­логичным образом индекс со спецификацией UNIQUE (уникаль­ный) будет допускать в индексируемом столбце не более одного неопределенного значения. Наконец, при упорядочении ORDER BY (УПОРЯДОЧИТЬ ПО) неопределенные значения интерпрети­руются, как будто бы они больше или равны всем значениям, не являющимся неопределенными).

Заметим, между прочим, что использование символа NULL во фразе SELECT не допускается. Например, следующая конст­рукция некорректна:

SELECT НОМЕР_ДЕТАЛИ, ’ВЕС = , NULL

FROM P

WHERE ВЕС IS NULL;

Запросы, использующие соединение

Способность «соединять» две или более таблицы в одну пред­ставляет собой одну из наиболее мощных возможностей реля­ционных систем. Фактически наличие операции соединения (join) — едва ли не самое главное, что отличает реляционные си­стемы от систем других типов. Итак, что такое соединение? Говоря нестрого, это запрос, в котором вы­борка данных осуществляется более чем из одной таблицы. Ниже приводится простой пример.

Простое эквисоединение

Выдать все комбинации информации о таких поставщиках и деталях, которые размещены в одном и том же городе (иначе говоря, «соразмещены»—безобразный, но удобный термин):

SELECT S.*, P.*

FROM S, Р

WHERE S.ГОРОД = Р.ГОРОД;

Заметим, что здесь ссылки на поля во фразе WHERE должны уточняться именами содержащих их таблиц. В результате полу­чим следующую ниже таблицу 50. (Во избежание двусмысленности в этой таблице два столбца ГОРОД показаны явным образом как S.ГOPOД и Р.ГОРОД.)

Характеристики

Тип файла
Документ
Размер
1,9 Mb
Тип материала
Предмет
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее