
- •Среда программирования vb.
- •Лабораторная работа №2 (проверочная) Рабочее задание:
- •Лабораторная работа №3.
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Лабораторная работа №9
- •Лабораторная работа №10
- •Лабораторная работа №11
- •Создание таблицы.
- •Первичные и внешние ключи.
- •Изменение таблицы, которая уже была создана.
- •Исключение таблицы.
- •Лабораторная работа №12 «Создание запросов»
- •Команда Select.
- •Реляционные операторы.
- •Булевы операторы.
- •Специальные операторы.
- •Использование выражений в командах Select.
- •Работа с данными с помощью функций агрегирования.
- •Использование множества таблиц в одном запросе.
- •Вложение запросов.
- •Использование агрегатных функций в подзапросах.
- •Применение подзапросов, которые формируют множественные строки с помощью in.
- •Связанные подзапросы.
- •Представления (view).
- •Групповые представления.
- •Удаление представлений.
Реляционные операторы.
Реляционный оператор – это математический символ, который задает определенный тип сравнения между двумя значениями.
= равно
> больше, чем
< меньше, чем
>= больше или равно
<= меньше или равно
<>неравно
Эти операторы имеют стандартное значение для числовых величин. Их определение от символьных значений зависит от используемого формата представления. SQL сравнивает символьные значения в терминах соответствующих чисел, определенных в формате преобразования. Предположим, необходимо увидеть всех работников с возрастом более 25.
SELECT * FROM adres WHERE vozrast > 25;
В выходных данных будет информация, начиная с 25,1.
Булевы операторы.
SQL распознает основные булевы операторы. Булевы выражения – это те выражения, относительно которых можно сказать истинны они или ложны. Булевы операторы связывают одно или несколько значений “истина/ложь” и в результате получают единственное значение “истина” или “ложь”. Стандартные булевы операторы, распознаваемые SQL – это AND, OR, NOT.
Основные принципы их действия:
AND берет два булевых выражения в качестве аргументов и дает в результате истину, если они оба истинны;
OR берет два булевых выражения в качестве аргументов и оценивает результат как истину, если хотя бы один из них истинен;
NOT берет единственное булево выражение в качестве аргумента и изменяет его значение с истинного на ложное или с ложного на истинное.
Используя условия с булевыми операторами, можно значительно увеличить их избирательную мощность.
Предположим необходимо увидеть данные на работников, чья фамилия начинается на К и проживают на улице Ломоносова:
SELECT * FROM adres
WHERE family like’K%’ AND mesto_git like’%Ломоносова%’;
При использовании OR, будут получены сведения обо всех работниках, которые либо живут на улице Ломоносова либо их фамилия на К:
SELECT * FROM adres
WHERE family like’K%’ OR mesto_git like’%Ломоносова%’;
NOT дает возможность получить отрицание булева выражения:
SELECT * FROM adres
WHERE family NOT like’K%’ OR mesto_git NOT like’%Ломоносова%’;
Специальные операторы.
Кроме булевых операторов и операторов сравнения, в SQL довольно широко используются специальные операторы, такие как IN, BETWEEN, LIKE.
IN полностью определяет множество, которому данное значение может принадлежать или не принадлежать. Синтаксис такой команды:
SELECT * FROM <имя таблицы>
WHERE <имя столбца> IN (‘значение1’,’значение2’,…);
Пример: чтобы получить сведения о продавцах, живущих либо в Москве, либо в Киеве можно написать команду:
SELECT * FROM prodav WHERE city=‘Москва’ Or city=’Киев’;
Однако, при наличии оператора IN команда пишется существенно проще:
SELECT * FROM prodav WHERE city IN (’Киев’, ‘Москва’);
Как видно из примера, IN определяет множество, элементы которого точно перечисляются в круглых скобках и разделяются запятыми. Если в поле, имя которого указано слева от IN, есть одно из перечисленных в списке значений (требуется точное совпадение), то предикат считается истинным. Если элементы множества имеют числовой, а не символьный тип, то одиночные кавычки непосредственно слева и справа от значения необходимо опустить. Например, можно найти всех покупателей, обслуживаемых продавцами 123, 124, 125. Запрос будет выглядеть:
SELECT * FROM prodav WHERE person_n IN (123,124,125);
Оператор BETWEEN сходен с IN. Вместо перечисления элементов множества, как это делается в IN, BETWEEN задает границы, в которые должно попадать значение, чтобы предикат был истинным. Используется ключевое слово BETWEEN, за которым следуют начальное значение, ключевое слово AND и конечное значение. Также как и IN, BETWEEN чувствителен к порядку: первое значение в предложении должно быть первым в соответствии с алфавитном или числовым порядком. Синтаксис команды:
SELECT * FROM <имя таблицы> WHERE <имя столбца> BETWEEN значение1 AND значение2;
Пример: для запроса о продавцах, комиссионные которых имеют величину в диапазоне 0.10 и 0.12, команда будет выглядеть:
SELECT * FROM prodav WHERE comm BETWEEN 0.10 AND 0.12;
Оператор BETWEEN является включающим, т.е. граничные значения делают предикат истинным. SQL непосредственно не поддерживает исключающий BETWEEN. Необходимо сформулировать граничные значения так, чтобы включающая интерпретация была справедлива, либо сделать примерно следующую запись:
SELECT * FROM prodav WHERE (comm BETWEEN 0.10 AND 0.12) AND NOT comm IN (0.10,0.12);
Как видно из этой записи, оператор BETWEEN можно комбинировать с булевыми операторами для создания более сложных запросов.
Аналогично всем операторам сравнения, BETWEEN действует и на символьных полях, т.е. для выборки данных можно воспользоваться алфавитным порядком. Следующий запрос выбирает всех покупателей имена которых попадают в заданный алфавитный диапазон:
SELECT * FROM pokypat WHERE name BETWEEN ‘A’ AND ‘G’;
LIKE применим только к полям типа CHAR или VARCHAR, поскольку он используется для поиска подстрок: т.е. LIKE осуществляет просмотр строки для выяснения: входит ли заданная подстрока в указанное поле. С этой же целью используются шаблоны – специальные символы, которые могут обозначать все, что угодно. Существует два типа шаблонов, используемых с LIKE:
символ “подчеркивание” ( _ ) заменяет один любой символ. Например, образцу “b_t” соответствует “bat” или “bit”, но не соответствует “brat”;
символ “процент” (%) заменяет последовательность символов произвольной длины, в том числе и нулевой. Например, образцу ‘%p%t’ соответствуют ‘put’, ‘posit’, ‘opt’, но не ‘spite’.
Синтаксис команды с использованием LIKE:
SELECT * FROM <имя таблицы> WHERE <имя столбца> LIKE <значение>;
Пример, можно найти покупателей, фамилии которых начинаются на К:
SELECT * FROM pokypat WHERE name LIKE ‘K%’;
LIKE необходим при осуществлении поиска имени или другого значения, полное написание которого неизвестно. Предположим, не совсем понятно, как правильно написать фамилию одного из продавцов, чтобы вывести о нем сведения – Тимченко или Тимчинко. Команда на запрос будет выглядеть так:
SELECT * FROM prodav WHERE name LIKE ‘Т_ _ _ _н%’;
Каждый символ подчеркивания в шаблоне представляет единственный символ, поэтому среди выходных данных будут только те фамилии, у которых между Т и Н находится 4 буквы. Символ % в конце строки необходим для тех случаев, когда длина поля name превосходит количество букв в конкретном имени. Т.е. если в слове Тимченко – 8 букв, а длина поля name определена как 30 символов, то в данном случае последовательностью будет ряд пробелов.
Примечание! Символ подчеркивания используется не только как специальный шаблон, он может использоваться в именах, тогда для того, чтобы найти имена, в который имеется символ подчеркивания, используется Escape – символ. Этот символ используется в предикате непосредственно перед символом процента или подчеркивания и означает, что следующий за ним символ интерпретируется именно как обычный символ, а не как символ шаблона. Например, поиск символа подчеркивания в столбце name можно задать следующим образом:
SELECT * FROM prodav WHERE name LIKE ‘%/_%’ESCAPE’/’;
Предложение ESCAPE определяет ‘/’ как Escape – символ, который используется в LIKE-строке, за ним следует символ процента, символ подчеркивания или сам символ ‘/’, т.е. тот символ, поиск которого будет осуществляться в столбце и который уже не распознается как символ шаблона. Escape – символ может быть единственным символом и применяться только к единственному символу, который следует за ним. В приведенном примере начальный и конечный символы процента являются символами шаблона, только символ подчеркивания представляет собой как таковой.
Специальные операторы IN, BETWEEN и LIKE могут непосредственно предшествовать булеву оператору NOT. Этим они отличаются от операторов сравнения, которые должны содержать NOT перед всем выражением.
Например, если необходимо исключить из выходных данных все пустые значения, то нужно использовать NOT для того, чтобы придать предикату противоположное значение:
SELECT * FROM prodav WHERE comm IS NOT NULL;
Можно также использовать NOT и IN. Например, чтобы выбрать всех продавцов, кроме 123,124,125 используется запрос:
SELECT * FROM prodav WHERE person_n NOT IN (123,124,125);
Другой способ выразить то же самое:
SELECT * FROM prodav WHERE NOT person_n IN (123,124,125);
Аналогичным образом используются NOT BETWEEN и NOT LIKE.