какой оператор используется для выборки значений в пределах заданного диапазона
SQL SELECT и запросы на выборку данных
SELECT для выбора столбцов таблицы
Запрос с оператором SELECT для выбора всех столбцов таблицы имеет следующий синтаксис:
То есть для выбора всех столбцов таблицы после слова SELECT нужно ставить звёздочку.
Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке .
Этот запрос вернёт следующее (для увеличения картинки щёлкнуть по ней левой кнопкой мыши):
Этот запрос вернёт следующее:
Для выбора определённых столбцов таблицы нам потребуется вместо звёздочки перечислить через запятую названия всех столбцов, которые требуется выбрать:
SELECT и WHERE для выбора строк таблицы
Этот запрос вернёт следующие данные:
Этот запрос вернёт следующие данные:
Этот запрос вернёт следующие данные:
Для указания значений в строках, которые требуется выбрать, используются и знаки сравнения.
Запрос вернёт следующие строки:
Использование SELECT и предикатов IN, OR, BETWEEN, LIKE
Запросы с предикатом LIKE имеют следующий синтаксис:
Результат выполнения запроса:
На сайте есть подробный урок об использовании предиката IN.
Результат выполнения запроса:
На сайте есть подробный урок об использовании предиката BETWEEN.
Предикат LIKE используется для выборки тех строк, в значениях которых встречаются символы, указанные после предиката между апострофами (‘).
Символ подчёркивания (_) означает любой символ. Результат выполнения запроса:
Символ процентов (%) означает любое количество символов. Результат выполнения запроса:
На сайте есть подробный урок об использовании предиката LIKE.
Значения, указанные с использованием предикатов IN, OR, BETWEEN, LIKE можно инвертировать при помощи слова NOT. Тогда запрашиваемые данные будут иметь противоположный смысл. Если мы используем NOT IN (20, 84), то будут выведены данные сотрудников, которые работают во всех отделах, кроме имеющих номера 20 и 84. С использованием NOT BETWEEN 15000 AND 17000 можно получить данные сотрудников, зарплата которых не входит в интервал от 15000 до 17000. Запрос с NOT LIKE выведет данные сотрудников, чьи имена не начинаются или не содержат символов, указанных с NOT LIKE.
Написать SQL запросы с SELECT и предикатами IN, NOT IN, BETWEEN самостоятельно, а затем посмотреть решения
Пример 13. Вывести список актеров, которые играли во всех спектаклях WilliamShakespeare. Данные об авторах содержается в таблице play в столбце author.
Пример 14. Вывести спектакли, в которых средний возраст актеров от 20 до 30 (использовать BETWEEN, Group by, Having, AVG, перекрестное соединение таблиц (CROSS JOIN), удобнее без слова JOIN, а с перечислением таблиц через запятую).
Разобранные до сих пор запросы SQL SELECT возвращали строки, которые могли быть расположены в любой последовательности. Однако часто требуется отсортировать строки по порядку номеров, алфавиту и другим признакам. Для этого служит ключевое словосочетание ORDER BY. Такие запросы имеют следующий синтаксис:
Когда для значений строк таблицы не задано условие уникальности, в результатах запроса могут встретиться одинаковые строки. Часто требуется вывести лишь уникальные строки. Это делается при помощи выражения DISTINCT после оператора SELECT.
Результат выполнения запроса:
Оператор SELECT в подзапросах SQL
Пример 19. Пусть теперь требуетcя узнать, в каких подразделениях (без дублирования) работают сотрудники с заработной платой менее 13000. Для этого в секции WHERE внешнего SELECT (запрос к таблице Org) задаётся условие, принимающее диапазон значений (IN), а внутренний SELECT (к таблице Staff) как раз возвращает требуемый диапазон значений:
В этой и следующей статьях обсуждается, как использовать инструкцию SELECT для выборки данных из таблиц. В частности, рассматриваются все предложения этой инструкции и приводятся многочисленные примеры с использованием базы данных SampleDb для демонстрации практического применения каждого предложения.
Самая простая форма инструкции SELECT состоит из списка столбцов выборки и предложения FROM. (Все прочие предложения являются необязательными.) Эта форма инструкции SELECT имеет следующий синтаксис:
В параметре column_list указывается один или несколько из следующих спецификаторов:
символ звездочка (*) указывает все столбцы таблиц, перечисленных в предложении FROM (или с одной таблицы, если задано указателем в виде table2.*);
явное указание имен столбцов, из которых нужно извлечь значения;
спецификатор в виде column_name [as] column_heading, что позволяет заменить имя столбца при чтении данных (не в базе) или присвоить новое имя выражению;
системная или агрегатная функция.
Перед тем как можно выполнять примеры запросов в этой статье, вам необходимо заново создать базу данных SampleDb, которую можно найти в исходниках к этой статье. В следующем примере показана самая простая форма выборки данных посредством инструкции SELECT:
Результат выполнения этого запроса:
В примере инструкция SELECT извлекает все строки всех столбцов таблицы Department. Если список выбора инструкции SELECT содержит все столбцы таблицы (как это показано в примере), их можно указать с помощью звездочки (*), но использовать этот способ не рекомендуется. Имена столбцов служат в качестве заголовков столбцов в результирующем выводе.
Только что рассмотренная простейшая форма инструкции SELECT не очень полезна для практических запросов. На практике в запросах с инструкцией SELECT приходится применять намного больше предложений, чем в запросе, приведенном в примере выше. Далее показан синтаксис инструкции SELECT, содержащий почти все возможные предложения:
Порядок предложений в инструкции SELECT должен быть таким, как показано в приведенном синтаксисе. Например, предложение GROUP BY должно следовать за предложением WHERE и предшествовать предложению HAVING. Предложение INTO не является настолько важным, как другие предложения, и поэтому будет рассмотрено позже других.
Далее мы рассмотрим эти предложения в том порядке, в каком они следуют в запросе, а также рассмотрим свойство IDENTITY, возможность упорядочивания результатов, операторы над множествами и выражение CASE. Но так как первое в списке предложение INTO менее важно, чем остальные, оно будет рассматриваться позже, после всех других предложений.
Предложение WHERE
Часто при выборке данных из таблицы нужны данные только из определенных строк, для чего в запросе определяется одно или несколько соответствующих условий. В предложении WHERE определяется логическое выражение (т.е. выражение, возвращающее одно из двух значений: true или false), которое проверяется для каждой из строк, кандидатов на выборку. Если строка удовлетворяет условию выражения, т.е. выражение возвращает значение true, она включается в выборку; в противном случае строка пропускается.
Применение предложения WHERE показано в примере ниже, в котором происходит выборка имен и номеров отделов, расположенных в Москве:
Результат выполнения этого запроса:
Кроме знака равенства, в предложении WHERE могут применяться другие операторы сравнения, включая следующие:
При соединении условий оператором AND возвращаются только те строки, которые удовлетворяют обоим условиям. При соединении двух условий оператором OR возвращаются все строки таблицы, которые удовлетворяют одному или обоим этим условиям, как показано в примере ниже:
В этом примере происходит выборка номеров сотрудников, которые работают над проектом p1 или p2 (или над обоими). Результат выполнения этого запроса:
Результаты выполнения этого примера содержат дубликаты значений столбца Id. Эту избыточную информацию можно устранить с помощью ключевого слова DISTINCT, как показано в следующем примере:
Результат выполнения модифицированного кода:
Обратите внимание, что опцию DISTINCT можно использовать только один раз в списке выбора, и она должна предшествовать всем именам столбцов. Поэтому, код в примере ниже ошибочен:
Результатом выполнения этого запроса будет сообщение об ошибке, выданное сервером:
Если список выбора содержит больше, чем один столбец, то предложение DISTINCT выводит все строки с разными комбинациями значений столбцов.
Предложение WHERE может содержать любое число одинаковых или разных логических операций. Следует помнить, что логические операторы имеют разный приоритет выполнения: оператор NOT имеет самый высший приоритет, далее идет оператор AND, а оператор OR имеет самый низший приоритет. Неправильное размещение логических операторов может дать непредвиденные результаты, как это показано в примере ниже:
Результат выполнения этих запросов:
Как можно видеть, эти два кажущиеся одинаковыми запроса SELECT выдают два разных результирующих набора данных. В первой инструкции SELECT система сначала вычисляет оба оператора AND (слева направо), а потом вычисляет оператор OR. Во второй же инструкции SELECT порядок выполнения операторов изменен вследствие использования скобок, операторы в скобках выполняются первыми, в порядке слева направо. Как можно видеть, первая инструкция возвратила одну строку, тогда как вторая не возвратила ни одной.
Наличие логических операторов в предложении WHERE усложняет содержащую его инструкцию SELECT и способствует появлению в ней ошибок. В таких случаях настоятельно рекомендуется применять скобки, даже если они не являются необходимыми. Применение скобок значительно улучшает читаемость инструкции SELECT и уменьшает возможность появления в ней ошибок. Далее приводится первый вариант инструкции SELECT из примера выше, модифицированной в соответствии с этой рекомендацией:
Третий логический оператор NOT изменяет логическое значение, к которому он применяется, на противоположное. Это означает, что отрицание истинного значения (true) дает ложь (false) и наоборот. Отрицание значения NULL также дает NULL. Ниже демонстрируется использование оператора отрицания NOT:
В этом примере происходит выборка табельных номеров и имен сотрудников, не принадлежащих к отделу d2. В данном случае логический оператор NOT можно заменить логическим оператором сравнения <> (не равно).
Операторы IN и BETWEEN
Оператор IN позволяет указать одно или несколько выражений, по которым следует выполнять поиск в запросе. Результатом выражения будет истина (true), если значение соответствующего столбца равно одному из условий, указанных в предикате IN. В примере ниже демонстрируется использование оператора IN:
В этом примере происходит выборка всех столбцов сотрудников, чей табельный номер равен 10102, 28559 или 25348. Результат выполнения этого запроса будет следующим:
Оператор IN равнозначен последовательности условий, соединенных операторами OR. (Число операторов OR на один меньше, чем количество выражений в списке оператора IN.)
Оператор IN можно использовать совместно с логическим оператором NOT, как показано в примере ниже. В данном случае запрос выбирает все строки, не содержащие ни одного из указанных значений в соответствующих столбцах:
Результат выполнения этого запроса:
В отличие от оператора IN, для которого указываются отдельные значения, для оператора BETWEEN указывается диапазон значений, чьи границы определяются нижним и верхним значениями. Использование оператора BETWEEN показано в примере ниже:
Оператор BETWEEN возвращает все значения в указанном диапазоне, включая значения для границ; т.е. приемлемые значения могут быть между значениями указанных границ диапазона или быть равными значениям этих границ.
Оператор BETWEEN логически эквивалентен двум отдельным сравнениям, соединенным логическим оператором AND. Поэтому запрос, приведенный в примере выше, эквивалентен запросу:
Подобно оператору BETWEEN, оператор NOT BETWEEN можно использовать для выборки значений, находящихся за пределами указанного диапазона значений. Оператор BETWEEN также можно применять со значениями, которые имеют символьный или временной тип данных.
В примере ниже показаны две разные формы запроса SELECT, которые дают одинаковые результаты:
Запросы, связанные со значением NULL
Параметр NULL в инструкции CREATE TABLE указывает, что соответствующий столбец может содержать специальное значение NULL (которое обычно представляет неизвестное или неприменимое значение). Значения NULL отличаются от всех других значений базы данных. Предложение WHERE инструкции SELECT обычно возвращает строки, удовлетворяющие указанным в нем условиям сравнения. Но здесь возникает вопрос, как будут оцениваться в этих сравнениях значения NULL?
Все сравнения со значением NULL возвращают false, даже если им предшествует оператор NOT. Для выборки строк, содержащих значения NULL, в языке Transact-SQL применяется оператор IS NULL. Указание в предложении WHERE строк, содержащих (или не содержащих) значение NULL, имеет следующую общую форму:
Использование оператора IS NULL демонстрируется в примере ниже:
В этом примере происходит выборка табельных номеров служащих и соответствующих номеров проектов для служащих, чья должность неизвестна и которые работают над проектом p2. В следующем примере демонстрируется синтаксически правильное, но логически неправильное использование сравнения с NULL. Причиной ошибки является то обстоятельство, что сравнение любого значения, включая NULL, с NULL возвращает false:
Выполнение этого запроса не возвращает никаких строк. Условие «column IS NOT NULL» эквивалентно условию «NOT (column IS NULL)». Системная функция ISNULL позволяет отображать указанное значение вместо значения NULL:
Результат выполнения этого запроса:
В примере выше для столбца должностей Job в результате запроса используется заголовок ‘task’.
Оператор LIKE
Оператор LIKE используется для сопоставления с образцом, т.е. он сравнивает значения столбца с указанным шаблоном. Столбец может быть любого символьного типа данных или типа дата. Общая форма оператора LIKE выглядит таким образом:
Параметр ‘pattern’ может быть строковой константой, или константой даты, или выражением (включая столбцы таблицы), и должен быть совместимым с типом данных соответствующего столбца. Для указанного столбца сравнение значения строки и шаблона возвращает true, если значение совпадает с выражением шаблона.
Определенные применяемые в шаблоне символы, называющиеся подстановочными символами (wildcard characters), имеют специальное значение. Рассмотрим два из этих символов:
Использование подстановочных символов % и _ показано в примере ниже:
В этом примере происходит выборка имен, фамилий и табельных номеров сотрудников, у которых второй буквой имени является буква «а». Результат выполнения этого запроса:
Кроме знака процентов и символа подчеркивания, поддерживает другие специальные символы, применяемые с оператором LIKE. Использование этих символов ([, ] и ^) демонстрируется в примерах ниже:
В этом примере происходит выборка данных сотрудников, чье имя начинается с символа в диапазоне от «В» до «И». Результат выполнения этого запроса:
Как можно видеть по результатам примера, квадратные скобки [] ограничивают диапазон или список символов. Порядок отображения символов диапазона определяется порядком сортировки, указанным при установке системы.
Символ ^ обозначает отрицание диапазона или списка символов. Но такое значение этот символ имеет только тогда, когда находится внутри квадратных скобок, как показано в примере ниже. В данном примере запроса осуществляется выборка имен и фамилий тех сотрудников, чьи имена начинаются с буквы отличной от В-И, П-Я:
В примере ниже демонстрируется использование оператора LIKE совместно с отрицанием NOT:
Здесь выбираются все столбцы сотрудников, чьи имена начинаются на буквы, отличные от букв в диапазоне ‘А-И’.
Любой подстановочный символ (%, _, [, ] или ^), заключенный в квадратные скобки, остается обычным символом и представляет сам себя. Такая же возможность существует при использовании параметра ESCAPE. Поэтому оба варианта применения инструкции SELECT, показанные в примере ниже, эквивалентны:
Результат выполнения этих двух инструкций SELECT будет одинаковым. В этом примере обе инструкции SELECT рассматривают символ подчеркивания в значениях столбца FirstName, как таковой, а не как подстановочный. В первой инструкции SELECT это достигается заключением символа подчеркивания в квадратные скобки. А во второй инструкции SELECT этот же эффект достигается за счет применения символа перехода (escape character), каковым в данном случае является символ восклицательного знака. Символ перехода переопределяет значение символа подчеркивания, делая его из подстановочного символа обычным. (Результат выполнения этих инструкций содержит ноль строк, потому что ни одно имя сотрудника не содержит символов подчеркивания.)
Стандарт SQL поддерживает только подстановочные символы %, _ и оператор ESCAPE. Поэтому если требуется представить подстановочный символ как обычный символ, то вместо квадратных скобок рекомендуется применять оператор ESCAPE.
SQL урок 1. Язык запросов SQL и оператор выбора SELECT
Оператор SELECT sql
SQL-запрос Select предназначен для обычной выборки из базы данных. Т.е. если нам необходимо просто получить данные, не делая с ними никакой обработки и не внося изменений в базу данных, то можно смело использовать данный запмагарос.
Синтаксис оператора SELECT
SELECT * FROM имя_таблицы;
Это самый простой вариант работы с оператором, когда мы выбираем все записи из таблицы БД.
Символ * обозначает выборку всех записей из таблицы. При этом столбцы и строки результирующего набора не упорядочены.
Рассмотрим примеры sql запросов select:
SELECT * FROM teachers;
Чтобы ограничить количество выбранных записей используется служебное слово LIMIT :
SELECT * FROM имя_таблицы LIMIT 2,3;
В примере происходит выборка 3 записей из таблицы, начиная со 2 записи.
Этот запрос особо необходим при создании блока страниц навигации.
Чтобы упорядочить поля результирующего набора, их следует перечислить через запятую в нужном порядке после слова SELECT :
SELECT name, zarplata FROM teachers;
Сортировка в SQL
SELECT name, zarplata, premia FROM teachers ORDER BY name;
SELECT `Скорость`,`Память` FROM `pc` ORDER BY `Скорость` ASC
SELECT `Скорость`,`Память` FROM `pc` ORDER BY 1 ASC
Сортировку можно выполнять по двум полям:
SELECT `Скорость`,`Память` FROM `pc` ORDER BY `Скорость` ASC, `Память` ASC
Сортировку можно производить по возрастанию, тогда добавляется параметр ASC (он же применяется по умолчанию) или по убыванию (в таком случае добавляется параметр DESC ):
SELECT name, zarplata, premia FROM teachers ORDER BY name DESC;
Удаление повторяющихся значений в SQL
DISTINCT (в переводе с английского ОТЛИЧИЕ) — аргумент, который устраняет двойные значения:
SELECT premia FROM teachers;
SELECT DISTINCT premia FROM teachers;
Рассмотрим другой пример из базы данных «Компьютерный магазин»:
SELECT Скорость, Память FROM PC;
Когда требуется получить уникальные строки (например, нас интересуют только различные комбинации скорости процессора и объема памяти, а не характеристики всех имеющихся компьютеров), то нужно использовать Distinct :
SELECT DISTINCT Скорость, Память FROM PC;
Язык sql: where условие
При этом в результирующий набор попадут только те записи, для которых значение предиката равно TRUE (истина).
SELECT * FROM `teachers` WHERE `name` = ‘Иванов’
Несколько условий в SQL
Предикаты (условия) могут состоять как из одного выражения, так и из любой комбинации выражений, построенных с помощью булевых операторов:
SELECT * FROM `teachers` WHERE `zarplata`=10000 and `premia`=500
Реляционные операторы, встречающиеся в условиях:
= Равный
> Больше чем
Меньше чем
>= Больше чем или равно
Меньше чем или равно
<> Не равно
Between в SQL (между)
Синтаксис:
SELECT name, zarplata FROM teachers WHERE (zarplata BETWEEN 5000 And 10000);
SELECT name, zarplata FROM teachers WHERE (zarplata NOT BETWEEN 5000 And 10000);
Предикат IN
Предикат IN определяет, будет ли значение проверяемого выражения обнаружено в наборе значений, который явно определен.
Синтаксис:
SELECT name, zarplata FROM teachers WHERE (zarplata IN (5000,10000,11000));
SELECT name, zarplata FROM teachers WHERE (zarplata NOT IN (5000,10000,11000));
Предикат IN с подзапросом
Предикат IN определяет, будет ли значение проверяемого выражения обнаружено в наборе значений, который получен с помощью табличного подзапроса.
Синтаксис:
SELECT `Номер`,`Скорость`,`HD` FROM `pc` WHERE `Скорость` IN (1000,2000,3000) AND `Номер` IN (Select `Номер` FROM product where Производитель = «Америка»)
Язык SQL запрос LIKE
Предикат LIKE сравнивает проверяемое значение с шаблоном в выражении.
Синтаксис:
SELECT * FROM teachers WHERE (name LIKE «%а»);
Символ % заменяет любую последовательность символов.
1.6. Оператор выборки SELECT
1.6. Оператор выборки SELECT
SELECT [ALL | DISTINCT ]
FROM имя таблицы [[ AS ] псевдоним] [. п]
Рекомендуемые файлы
[ ORDER BY desc или asc ]
Используются встроенные функции
COUNT – подсчет количества в группе
AVJ – среднее арифметическое значение
[ HAVING критерии выбора групп >]
Обработка элементов оператора SELECT выполняется в следующей последовательности:
— FROM – определяются имена используемых таблиц;
— HAVING – фильтруются группы строк объекта в соответствии с указанным условием, определят условие по которому группы включаются в выходные данные, применяется только с GROUP BY ;
— SELECT – устанавливается, какие столбцы должны присутствовать в выходных данных;
— ORDER BY – определяется упорядоченность результатов выполнения операторов. сортировка). Сортировать можно по нескольким полям. ASC возрастающий он принят по умолчанию, DESC убывающий;
Порядок предложений и фраз в операторе SELECT не может быть изменен. Только два предложения SELECT и FROM являются обязательными, все остальные могут быть опущены. SELECT – закрытая операция: результат запроса к таблице представляет собой другую таблицу. Существует множество вариантов записи данного оператора, что иллюстрируется приведенными ниже примерами.
Оператор SELECT определяет поля (столбцы), которые будут входить в результат выполнения запроса. В списке они разделяются запятыми и приводятся в такой очередности, в какой должны быть представлены в результате запроса. Если используется имя поля, содержащее пробелы или разделители, его следует заключить в квадратные скобки. Символом * можно выбрать все поля, а вместо имени поля применить выражение из нескольких имен.
Если обрабатывается ряд таблиц, то (при наличии одноименных полей в разных таблицах) в списке полей используется полная спецификация поля, т.е. Имя_таблицы. Имя_поля.
1.6.1. Предложение FROM
Пример 1. Показать фамилии и имена студентов из таблицы «студент».
SELECT Fam, Imy FROM Student;
При указании списка полей данные будут выводиться в соответствие с этим списком, а не в соответствии со структурой.
Пример 2. Показать студентов и день рождения.
SELECT Fam, Birthday FROM Student;
SELECT * FROM Student ;
Пример 3. Показать города, в которых живут студенты.
SELECT City FROM Student;
SELECT DISTING City FROM Student;
Пример 4. Составить список сведений о всех клиентах.
SELECT * FROM Klient
Пример 5. Составить список всех фирм.
SELECT ALL Klient.Firma FROM Klient Или ( что эквивалентно )
Результат выполнения запроса может содержать дублирующиеся значения, поскольку в отличие от операций реляционной алгебры оператор SELECT не исключает повторяющихся значений при выполнении выборки данных.
Предикат DISTINCT следует применять в тех случаях, когда требуется отбросить блоки данных, содержащие дублирующие записи в выбранных полях. Значения для каждого из приведенных в инструкции SELECT полей должны быть уникальными, чтобы содержащая их запись смогла войти в выходной набор.
Причиной ограничения в применении DISTINCT является то обстоятельство, что его использование может резко замедлить выполнение запросов.
1.6.2.. Предложение WHERE
— сравнение, сравниваются результаты вычисления одного выражения с результатами вычисления другого.
— диапазон: проверяется, попадает ли результат вычисления выражения в заданный диапазон значений.
— принадлежность множеству, проверяется, принадлежит ли результат вычислений выражения заданному множеству значений.
— соответствие шаблону, проверяется, отвечает ли некоторое строковое значение заданному шаблону.
— значение NULL : проверяется, содержит ли данный столбец определитель NULL (неизвестное значение).
Пример 6. Отобразить студентов с ФИО Петров.
SELECT Fam, Imy FROM Student WHERE Fam = » Петров «;
Пример 7. Выбрать студентов 3 – его курса получивших стипендию.
SELECT Fam, Imy FROM Student WHERE Kurs = 3 AND Stip > 0;
Запрос выбирающий в следующем порядке Курс, ФИО, Стипендия. SELECT Kurs, Fam, Stip FROM Student;
В языке SQL можно использовать следующие операторы сравнения: = – равенство; – больше; = – больше или равно; <> – не равно.
Пример 8. Показать все операции отпуска товаров объемом больше 20.
— Выражение вычисляется слева направо.
— Первыми вычисляются подвыражения в скобках.
Для устранения любой возможной неоднозначности рекомендуется использовать скобки.
Пример 9. Вывести список товаров, цена которых больше или равна 100 и меньше или равна 150.
WHERE Cena>=100 And Cena
Пример 10. Вывести список клиентов из Москвы или из Самары.
SELECT Familiya, GorodKlienta
WHERE GorodKlienta=» Москва » Or GorodKlienta =» Самара «
Оператор BETWEEN используется для поиска значения внутри некоторого интервала, определяемого своими минимальным и максимальным значениями. При этом указанные значенья включаются в условие поиска.
Пример 11. Вывести список товаров, цена которых лежит в диапазоне от 100 до 150.
SELECT Nazvanie, Cena
WHERE Cena Between 100 And 150
Пример 12. Список товаров, цена которых не лежит в диапазоне от 100 до 150.
SELECT * FROM Subject
WHERE Hour BETWEEN 30 AND 40 i*
Пример 13. Получить сведения о студентах получающих стипендию от 100 – 140 руб.
SELECT * FROM Student WHERE Stip BETWEEN 100 AND 140
Пример 14. Вывести список товаров, цена которых лежит в диапазоне от 100 до 150.
SELECT Nazvanie, Cena
WHERE Cena Between 100 And 150
Пример 15. Вывести список клиентов из Москвы или из Самары
SELECT Familiya, GorodKlienta
WHERE GorodKlienta in (» Москва «, » Самара «)
NOT IN используется для отбора любых значений, кроме тех, которые указаны в представленном списке.
Пример 16. Вывести список клиентов, проживающих не в Москве и не в Самаре.
SELECT Familiya, GorodKlienta
WHERE GorodKlienta Not in (» Москва «,» Самара «)
Пример 17. Получить список предметов 1 – ого, 2 – ого семестра.
SELECT * FROM Subject WHERE Curs IN (1, 2) 4
Пример 18. Получить фамилии студентов 1 – ого, 4 – ого курса.
SELECT Fam FROM Student WHERE Curs IN (1, 4)
Пример 19. Определить товары, покупку которых осуществляют только клиенты из Москвы, и никто другой.
SELECT DISTINCT Tovar.Nazvanie, Klient. GorodKlient а
FROM Tovar INNER JOIN
(Klient INNER JOIN Sdelka
ON Klient.KodKlient а =Sdelka.KodKlient а )
ON Tovar. Код Tovar а =Sdelka. Kod Tovar а WHERE Tovar.Nazvanie NOT IN
FROM Tovar INNER JOIN Klient INNER JOIN Sdelka
ON Klient.KodKlient а =Sdelka.KodKlient а )
ON Tovar.KodTovar а =Sdelka.KodTovar а
WHERE Klient.GorodKlient ао ‘ Москва ‘)
Пример 20. Какие товары ни разу не купили московские клиенты?
SELECT DISTINCT Tovar.Nazvanie, Klient. GorodKlient а
FROM Tovar INNER JOIN
(Klient INNER JOIN Sdelka
ON Klient.KodKlient а =Sdelka.KodKlient а )
ON Tovar.KodTovar а =Sdelka.KodTovar а WHERE Tovar.Nazvanie NOT IN
(SELECT Tovar.Nazvanie FROM Tovar INNER JOIN
(Klient INNER JOIN Sdelka
ON Klient.KodKlient а =Sdelka.KodKlient а )
ON Tovar. KodTovar а =Sdelka.KodTovar а WHERE.GorodKlient а =’ Москва ‘)
С помощью оператора можно выполнять сравнение выражения с заданным шаблоном, в котором допускается использование символов – заменителей:
— Символ % – вместо этого символа может быть подставлено любое Kolichestvo произвольных символов.
— Символ __ заменяет один символ строки.
— [] – вместо символа строки будет подставлен один из возможных символов, указанный в этих ограничителях.
— [ ^ ] – вместо соответствующего символа строки будут подставлены все символы, кроме указанных в ограничителях.
Пример 21. Показать фамилии студентов начинающихся с буквы А SELECT * FROM Student WHERE Fam LIKE » A %»
Пример 22. Найти клиентов, у которых в номере телефона вторая цифра – 4.
SELECT Klient.Familiya, Klient.Telefon
WHERE Klient.Telefon Like»_4%»
Пример 23. Найти клинтов, у которых в номере телефона вторая цифра – 2 или 4.
SELiiCT Klient.Familiya, Klient.Telefon
WHERE Klient.Telefon Like » _[24]%»
SELECT Klient.Familiya, Klient.Telefon
WHERE Klient.Telefon Like » [2 – 4]%»
WHERE Klient.Familiya Like «% ро %»
Оператор IS NULL используется для сравнения текущего значения со значением NULL – специальным значением, указывающим на отсутствие любого значения. NULL – это не то же самое, что знак пробела (пробел – допустимый символ) или ноль (0 – допустимое число). NULL отличается и от строки нулевой длины (пустой строки).
Пример 26. Найти сотрудников, у которых нет телефона (поле Телефон не содержит никакого значения).
SELECT Familiya, Telefon
WHERE Telefon Is Null
Пример 27. Выборка сотрудников, у которых есть телефон (поле Телефон, содержит какое – либо значение).
SELECT Klient.Familiya, Klient.Telefon
WHERE Klient.Telefon Is Not ull
1.6.3. Предложение ORDER BY
Пример 28. Вывести список клиентов в алфавитном порядке.
SELECT Klient.Familiya, Klient.Telefon
Пример 29. Показать записи из таблицы предметы в алфавитном порядке наименование предметов.
SELECT * FROM Subject ORDER BY Name;
Пример 30. Показать в убывающем порядке количество часов
SELECT * FROM Subject ORDER BY Hours DESC;
Пример 31. Упорядочить по 2-м полям.
SELECT * FROM Subject ORDER BY Sem, Name;
Во фразе ORDER BY может быть указано и больше одного элемента. Главный (первый) ключ сортировки определяет общую упорядоченность строк результирующей таблицы. Если во всех строках результирующей таблицы значения главного ключа сортировки являются уникальными, нет необходимости использовать дополнительные ключи сортировки. Однако, если значения главного ключа не уникальны, в результирующей таблице будет присутствовать несколько строк с одним и тем же значением старшего ключа сортировки. В этом случае, возможно, придется упорядочить строки с одним и тем же значением главного ключа по какому – либо дополнительному ключу сортировки.
Лекция «16. Потери напора по длине потока» также может быть Вам полезна.