Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Использование операторов сравнения

Подмножество языка DML

 

ü INSERT INTO имя_объекта …; ввод данных

ü DELETE FROM имя_объекта; удаление данных

ü UPDATE имя_объекта SET …; изменение данных

ü SELECT <список полей> FROM <список таблиц> ….; извлечение данных

 

insert into Hobby values (‘волейбол’, 3);

insert into Hobby (Hobby_name) values (‘баскетбол’);

 

 

update Hobby set Risk=4 where Hobby_name=‘баскетбол’;

 

delete from Hobbby where Risk=1;

 

Оператор выбора SELECT

Все запросы на получение практически любого количества данных из одной или нескольких таблиц выполняются с помощью единственного предложения SELECT. Синтаксис оператора SELECT имеет следующий вид:

 

SELECT [ALL | DISTINCT] <список полей> | *

FROM <список таблиц>

[WHERE <условие фильтрации строк>]

[GROUP BY <условия группировки строк>]

[HAVING <условие фильтрации групп>]

[ORDER BY <условие сортировки результата запроса>]

 

Обязательными среди всех указанных параметров оператора SELECT являются параметры SELECT и FROM. Результатом выполнения оператора SELECT является набор данных (временная таблица), который затем либо передается пользователю, запросившему данные, либо используется как источник данных для другого оператора SELECT в качестве подзапроса. Представляет исторический интерес тот факт, что именно возможность включения одного предложения SELECT внутрь другого послужила мотивировкой использования прилагательного «структурированный» в названии языка SQL.

Запросы с использованием единственной таблицы

Выборка без использования параметра WHERE

Выборка данных без использования параметра WHERE с использованием единственной таблицы является наиболее простой формой использования оператора SELECT.

Выборка всей информации из таблицы

 

SELECT список_всех_полей_таблицы | * FROM имя_таблицы;

 

Данная форма оператора SELECT используется, когда не нужно выполнять ни горизонтальную, ни вертикальную фильтрации. Символ «*» заменяет необходимость указания всех полей таблицы. Например:

 

SELECT * FROM Students;

 

Вертикальная фильтрация с указанием порядка вывода атрибутов

 

SELECT поле1[, поле2, …] FROM имя_таблицы;

 

В результирующий набор записей попадут данные только из указанных полей таблицы, причем в том же самом порядке, в каком они указаны в операторе SELECT. Например:

 

-- вывод неполной информации о студентах

SELECT N_z,F_name FROM Students;

 

Исключение дубликатов

При использовании в операторе SELECT вертикальной фильтрации строк таблицы может сложиться ситуация, когда набор записей будет включать дубликаты – записи, значения полей которых полностью совпадают. Для исключения дубликатов из результирующего набора записей используют параметр DISTINCT, который указывают сразу после ключевого слова SELECT. Например:

 

-- вывод различных фамилий

SELECT DISTINCT S_name FROM Students;

 

Выборка вычисляемых значений

Наравне с перечнем полей таблиц после ключевого слова SELECT можно указывать выражения, вычисляемые на основе полей таблиц, либо встроенных функций СУБД.

 

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

Сортировка результирующего набора данных

Строки в таблицах базы данных изначально хранятся в том порядке, в каком их туда поместили. Иногда СУБД по своему усмотрению может менять внутреннюю организацию хранения данных. По этой причине никогда не стоит надеяться, что оператор SELECT вернет отсортированный набор данных, даже в том случае, если записи заносились в таблицу в соответствии с возрастанием или убыванием значений в определенных полях. Для сортировки результирующего набора данных используется параметр ORDER BY оператора SELECT. Например:

 

SELECT * FROM Students ORDER BY S_Name, F_Name;

 

Если после параметра ORDER BY указано более одного поля, сортировка сначала осуществляется по первому полю, потом, в случае наличия одинаковых значений, по второму и т.д. В приведенном примере результирующий набор данных сначала будет отсортирован по значениям поля Name, и в том случае, если в каких-то строках имена некоторых дилеров совпадут, эти строки отдельно будут отсортированы по значению поля Procent.

По умолчанию (неявно) сортировка всегда происходит по возрастанию. Но способ сортировки можно задать явно, указав после соответствующего поля параметр ASC или DESC для сортировки по возрастанию или убыванию соответственно. Например:

 

SELECT * FROM Students ORDER BY S_Name, F_Name DESC;

 

 

Выборка с использованием параметра WHERE

Параметр WHERE служит для реализации реляционной операции горизонтальной фильтрации, то есть отбора кортежей, или строк, удовлетворяющих определенному условию. Условие может быть составлено с использованием следующих конструкций:

ü операторы сравнения: =, <, >, <=, >=, <>;

ü булевы операторы: AND, OR, NOT;

ü оператор проверки на вхождение в множество: IN;

ü оператор проверки на вхождение в диапазон: BETWEEN;

ü оператор проверки на существование: EXISTS;

ü оператор проверки удовлетворению шаблону (только для символьных полей): LIKE;

ü операторы сравнения с NULL: IS NULL, IS NOT NULL;

ü агрегатные функции: COUNT, SUM, AVG, MAX, MIN;

ü константы и выражения;

ü подзапросы.

Следует быть осторожными при использовании булевых операторов, поскольку существует приоритет AND над OR (сначала выполняются все операции AND и только после этого операции OR). Для получения желаемого результата WHERE условия должны быть введены в правильном порядке, который можно организовать введением скобок.

При обработке условия числа сравниваются алгебраически – отрицательные числа считаются меньшими, чем положительные, независимо от их абсолютной величины. Строки символов сравниваются в соответствии с их представлением в коде, используемом в конкретной СУБД, например, в коде ASCII. Если сравниваются две строки символов, имеющих разные длины, более короткая строка дополняется справа пробелами для того, чтобы они имели одинаковую длину перед осуществлением сравнения.

Использование операторов сравнения

В параметре WHERE оператора SELECT для отбора нужных строк таблицы можно использовать операторы сравнения = (равно), <> (не равно), < (меньше), <= (меньше или равно), > (больше), > = (больше или равно), которые могут предваряться оператором NOT, создавая, например, отношения «не меньше» и «не больше».

 

SELECT Hobby_Name FROM Hobby WHERE Risk <=5;

 

-- то же самое с применением оператора NOT

SELECT Hobby_Name FROM Hobby WHERE NOT Risk >5;

 

Возможность использования нескольких условий, соединенных логическими операторами AND, OR, AND NOT и OR NOT, позволяет осуществить более детальный отбор строк.

 

Использование BETWEEN

С помощью оператора BETWEEN можно отобрать строки, в которых значение какого-либо столбца находятся в заданном диапазоне.

При помощи сочетания операторов NOT и BETWEEN можно отобрать строки, в которых значение какого-либо столбца не находится в заданном диапазоне. Например:

 

SELECT Hobby_Name FROM Hobby WHERE Risk NOT BETWEEN 5 and 8;

 

Использование оператора BETWEEN возможно не только по отношению к полям числового типа, он применим также к полям строкового типа и датам.

 

Использование IN

Оператор IN используется для проверки вхождения значения какого-либо столбца в множество. Например:

 

SELECT N_gr FROM Students

WHERE N_gr IN (11, 12, 13);

 

Рассмотренная форма IN является в действительности просто краткой записью последовательности отдельных сравнений, соединенных операторами OR.

 

В сочетании с оператором IN можно также использовать NOT для отбора строк, в которых значение какого-либо столбца наоборот не входит в множество. Например:

 

SELECT N_gr FROM Students

WHERE N_gr NOT IN (11, 12, 13);

 

Использование LIKE

Оператор LIKE используется для отбора строк, в которых значение какого-либо удовлетворяет определенному шаблону. Данный оператор применяется только к символьным полям. Обычная форма имя_столбца LIKE текстовая_константа для столбца символьного типа позволяет отыскать все значения указанного столбца, соответствующие шаблону, заданному текстовой_константой. Символы этой константы интерпретируются следующим образом:

· символ _ (подчеркивание) – заменяет любой одиночный символ;

· символ % (процент) – заменяет любую последовательность из любого количества символов, в том числе нулевого;

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

Примеры:

 

-- отбор информации о студентах,

-- фамилии которых начинаются с заглавной буквы «О»

-- и заканчивающихся на «ов»

SELECT * FROM Students WHERE S_Name LIKE ‘O%ов’;

 

 

Оператор LIKE также можно сочетать с NOT для получения строк, значения определенных столбцов которых не удовлетворяют указанному шаблону.

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...