Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Белобжеский_Лекции_по_ББД.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

Проектирование в sql

Чтобы выполнить проектирование с помощью SQL, мы указываем имя отноше­ния, проекция которого берется, и перечисляем требуемые столбцы. При исполь­зовании стандартного синтаксиса SQL проекция СТУДЕНТ [ЛичныйНомер, Имя, Спе­циальность] выглядит следующим образом:

SELECT ЛичныйНомер, Имя, Специальность FROM СТУДЕНТ

Операторы SELECT и FROM являются обязательными; столбцы, которые нужно получить, перечисляются после оператора SELECT, а имя таблицы, проекция кото­рой берется, указывается после оператора FROM. Результат проектирования для данных из рис. 9.2 выглядит следующим образом:

Не путайте оператор SELECT с оператором выборки (selection) в реляционной алгебре. С помощью оператора SELECT можно выполнять определенные в реляци­онной алгебре операции проектирования и выборки, а также некоторые другие действия. Выборка же — это операция реляционной алгебры, заключающаяся в получении некоторого подмножества строк из таблицы.

Рассмотрим другой пример:

SELECT Специальность

FROM СТУДЕНТ

Результатом будет таблица, показанная на следующей странице.

Как можно видеть, данная таблица содержит одинаковые строки, и, следова­тельно, в строгом смысле она не является отношением. На самом деле, SQL не удаляет повторяющиеся строки автоматически, поскольку для этого может потребоваться много времени, а во многих случаях это нежелательно или не­нужно.

Если дублирующиеся строки должны быть удалены, нужно указать ключевое слово DISTINCT, как показано ниже:

SELECT DISTINCT Специальность

FROM СТУДЕНТ

Результатом этой операции явится отношение:

Выборка в sql

Операция выборки реляционной алгебры также выполняется с помощью коман­ды SELECT. Примером может служить следующее:

SELECT ЛичныйНомер. Имя, Специальность, Курс

FROM СТУДЕНТ

WHERE Специальность = 'МАТЕМАТИКА'

В выражении SELECT указаны имена всех столбцов таблицы. FROM определяет таблицу, из которой производится выборка, а новая фраза WHERE задает условия для выборки. Формат SELECT...FROM...WHERE - это фундаментальная структура операторов SQL. Следующая запись является эквивалентной формой предыду­щего запроса:

SELECT*

FROM СТУДЕНТ

WHERE Специальность = 'МАТЕМАТИКА'

Звездочка (*) означает, что предстоит получить все столбцы таблицы. Резуль­татом обоих этих запросов будет таблица:

Выборку и проектирование можно объединить:

SELECT Имя, Курс

FROM СТУДЕНТ

WHERE Специальность = 'МАТЕМАТИКА'

Результатом будет:

В предложении WHERE можно указать несколько условий. Например, выражение

SELECT Имя, Курс

FROM СТУДЕНТ

WHERE Специальность = МАТЕМАТИКА' AND Курс = 'АС'

приведет к следующей таблице:

Условия в предложении WHERE могут относиться к множеству значений. Для этого можно использовать операторы IN и NOT IN. Рассмотрим выражение

SELECT Имя

FROM СТУДЕНТ

WHERE Специальность IN ['МАТЕМАТИКА', 'БУХГАЛТЕРСКИЙ УЧЕТ']

Обратите внимание, что в скобках можно указывать несколько значений. Это выражение означает следующее: «Отобразить имена студентов, специализирую­щихся на математике или бухгалтерском учете». Результатом будет таблица:

Выражение

SELECT Имя

FROM СТУДЕНТ

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

WHERE Специальность NOT IN ['МАТЕМАТИКА', 'БУХГАЛТЕРСКИЙ УЧЕТ']

Выражение Специальность IN означает, что столбец Специализация может со­держать любые из перечисленных значений. Это эквивалентно логическому оператору ИЛИ. Выражение Специальность NOT IN означает, что значение в соот­ветствующем столбце не должно равняться ни одному из перечисленных зна­чений.

В предложениях WHERE можно также указывать диапазоны и шаблоны. Диа­пазоны задаются с помощью оператора BETWEEN. Например, оператор

SELECT Имя, Специальность

FROM СТУДЕНТ

WHERE ЛичныйНомер BETWEEN 200 AND 300 ,

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

Это выражение эквивалентно записи:

SELECT Имя, Специальность

FROM СТУДЕНТ

WHERE ЛичныйНомер >= 200 AND ЛичныйНомер <= 300

Таким образом, при использовании оператора BETWEEN граничные значения (здесь это 200 и 300) включаются в выбранный диапазон.

Оператор LIKE используется в SQL-выражениях для выборки по шаблону. Символ '_' (подчеркивание) представляет произвольный одиночный символ. Символ '%' (процент) представляет последовательность из одного или более произвольных символов. Так, результатом выражения

SELECT Имя, Курс

FROM СТУДЕНТ

WHERE Курс LIKE 'C_'

является отношение, имеющее два столбца — Имя и Курс, где Курс состоит из двух символов, первым из которых является 'С':

Следующее выражение позволяет найти студентов, чьи имена оканчиваются на 'С':

SELECT Имя

FROM СТУДЕНТ

WHERE Имя LIKE '%C'

Результатом будет:

(В Microsoft Access используется иной набор джокеров, чем в стандарте ANSI. Вместо символа подчеркивания используется символ '?', а вместо символа про­цента — символ '*'.)

Наконец, оператор IS NULL предназначен для поиска пустых (или отсутствую­щих) значений. Выражение

SELECT Имя

FROM СТУДЕНТ

WHERE Курс IS NULL

даст имена студентов, у которых отсутствует значение в столбце Курс. Из данных, приведенных на рис. 9.2, можно видеть, что запись о курсе имеется у всех студен­тов, поэтому результатом данного выражения будет отношение, не содержащее ни одной строки.