
2. Запросы на выборку
Для выборки информации из таблиц базы данных используется SQL-инструкций SELECT (выбрать) языка SQL.
Упрощенный синтаксис SQL-инструкций SELECT в общем случае выглядит следующим образом:
SELECT [DISTINCT] <СПИСОК АТРИБУТОВ>
FROM <список таблиц> [WHERE <условие выборки >]
[ORDER BY <СПИСОК АТРИБУТОВ>]
[GROUP BY <список атрибутов>]
[HAVING <условие>]
[UNION <выражение с оператором SELECT>];
Примечание: в квадратных скобках указаны элементы, которые могут отсутствовать в запросе.
Ключевое слово SELECT сообщает базе данных, что данное предложение является запросом на извлечение информации. После слова SELECT через запятую перечисляются наименования полей (список атрибутов), содержимое которых запрашивается.
Обязательным ключевым словом в предложении-запросе SELECT является слово FROM (из). За ключевым словом FROM указывается список разделенных запятыми имен таблиц, из которых извлекается информация.
3. Содержание работы
Задание №1. Создать запрос на выборку в режиме SQL всех значений полей ИМЯ и ФАМИЛИЯ из таблицы СПИСОК.
Перейдите на вкладку Запросы, щелкнув в Окне базы данных кнопку
Запросы. Нажмите кнопку Создать и в открывшемся окне Новый запрос
выберите Конструктор. Нажмите кнопку ОК, в открывшемся окне Добавление таблицы кнопку Закрыть. Щелкните на раскрывающемся списке кнопки Вид на панели инструментов и выберите режим SQL. В открывшемся окне Запрос 1: запрос на выборку наберите:
SELECT ИМЯ, ФАМИЛИЯ
FROM СПИСОК;
Для запуска запроса нажмите кнопку Запуск на панели инструментов.
Задание №2. Создать запрос на выборку в режиме SQL всех столбцов таблицы СПИСОК.
Вместо перечисления имен столбцов можно использовать символ «*» (звездочка).
SELECT *
FROM СПИСОК;
Результатом выполнения запроса будет вся таблица СПИСОК.
Задание №3. Создать запрос на выборку в режиме SQL названий городов, где проживают студенты, сведения о которых находятся в таблице ЛИЧНЫЕ_ДАННЫЕ.
SELECT ГОРОД
FROM ЛИЧНЫЕ_ДАННЫЕ;
Результатом запроса будет таблица, в которой будут встречаться одинаковые строки.
Внимание! Получаемые в результате SQL-запроса таблицы не в полной мере отвечают определению реляционного отношения. В частности, в них могут оказаться кортежи с одинаковыми значениями атрибутов.
Для исключения из результата SELECT запроса повторяющихся записей используется ключевое слово DISTINCT (отличный). Если запрос SELECT извлекает множество полей, то DISTINCT исключает дубликаты строк, в которых значения всех выбранных полей идентичны.
Предыдущий запрос можно записать в следующем виде.
SELECT DISTINCT ГОРОД
FROM ЛИЧНЫЕ_ДАННЫЕ;
В результате получим таблицу, в которой дубликаты строк исключены.
Ключевое слово ALL (все), в отличие от DISTINCT, оказывает противоположное действие, то есть при его использовании повторяющиеся строки включаются в состав выходных данных. Режим, задаваемый ключевым словом ALL, действует по умолчанию, поэтому в реальных запросах для этих целей оно практически не используется.
Задание №4. Создать запрос на выборку в режиме SQL, выполняющий выборку имен всех студентов с фамилией Воробьёв, сведения о которых находятся в таблице СПИСОК.
Для задания в запросе условия отбора используется ключевое слово WHERE (где), принимающее значение истина или ложь для значении полей строк таблиц, к которым обращается оператор SELECT. Предложение WHERE определяет, какие строки указанных таблиц должны быть выбраны. В таблицу, являющуюся результатом запроса, включаются только те строки, для которых условие (предикат), указанное в предложении WHERE принимает значение истина.
Запрос будет выглядеть следующим образом:
SELECT ФАМИЛИЯ, ИМЯ
FROM СПИСОК
WHERE ФАМИЛИЯ=’Воробьёв’;
Задание №5. Создать запрос на выборку в режиме SQL для получения имен и фамилий студентов, обучающихся в группе УИТ-41 и получающих стипендию (размер стипендии больше нуля).
В задаваемых в предложении WHERE условиях могут использоваться операции сравнения, определяемые операторами = (равно), > (больше), < (меньше), >= (больше или равно), < = (меньше или равно), <> (не равно), а также логические операторы AND, OR и NOT.
SQL-запрос будет выглядеть таким образом:
SELECT ИМЯ, ФАМИЛИЯ
FROM СПИСОК
WHERE ГРУППА =’УИТ-41’ AND СТИПЕНДИЯ> 0;
Задание №6. Создать запрос в режиме SQL. на выборку из таблицы ЛИЧНЫЕ_ДАННЫЕ сведении о студентах, имеющих оценки по физике только 4 и 5.
При задании логического условия в предложении WHERE могут быть использованы операторы IN, BETWEEN, LIKE, IS NULL.
Операторы IN (равен любому из списки) и NOT IN (не равен ни одному из списка) используются для сравнения проверяемого значения поля с заданным списком. Этот список значений указывается в скобках справа от оператора IN.
Построенный с использованием IN предикат (условие) считается истинны, если значение поля, имя которого указано слева от IN, совпадает (подразумевается точное совпадение) с одним из значений, перечисленных в списке, указанном в скобках справа от IN.
Предикат, построенный с использованием NOT IN, считается истинным, если значение поля, имя которого указано слева от NOT IN, не совпадает ни с одним из значений, перечисленных в списке, указанном в скобках справа от NOT IN.
Запрос будет выглядеть следующим образом:
SELECT *
FROM ЛИЧНЫЕ_ДАННЫЕ
WHERE ФИЗИКА IN (4, 5);
Задание №7. Coздать зanpoc и режиме SQL на выборку сведений о студентах, не имеющих ни одной экзаменационной оценки по физике и математике, равной 4 и 5.
SELECT *
FROM ЛИЧНЫЕ_ДАННЫЕ
WHERE ФИЗИКА NOT IN (4, 5) AND МАТЕМАТИКА NOT IN (4, 5);
Задание №8. Создать запрос в режиме SQL на выборку записей о преподавателях, часы которых находятся в пределах между 30 и 40.
Оператор BETWEEN используется для проверки условия вхождении значения поля в заданный интервал, то есть вместо списка значений атрибута этот оператор задает границы его изменения.
Оператор BETWEEN может использоваться как для числовых, так и для символьных типов полей.
Зanpoc будет иметь вид:
SELECT *
FROM ГРУППЫ
WHERE ЧАСЫ BETWEEN 30 AND 40;
Граничные значения, в данном случае значения 30 и 40, входят во множество значений, с которыми производится сравнение.
Задание №9. Создать запрос в режиме SQL на выборку из таблицы СПИСОК сведений о студентах, фамилии которых начинаются на букву «В».
Оператор LIKE применим только к символьным полям. Этот оператор просматривает строковые значения полей с целью определения, входит ли
Заданная в операторе LIKE подстрока (образец поиска) в символьную строку-значение проверяемого поля.
SELECT*
FROM СПИСОК
WHERE ФАМИЛИЯ LIKE 'В*';