Все поля
Получить список всех студентов со всей необходимой информацией
Запрос: SELECT *
FROM students;
Результат:
SNAM |
SFAM |
SIMA |
SOTCH |
STIP |
1 |
Гулый |
Степан |
Игоревич |
60000 |
2 |
Макарова |
Анна |
Петровна |
45000 |
… |
… |
… |
… |
… |
Список полей
Получить список с фамилией, именем, названием предмета и оценкой по предмету всех студентов
Пример 1
Запрос: SELECT sfam, sima, pname, ocenka
FROM students, predmet, usp;
Результат:
SFAM |
SIMA |
PNAME |
OCENKA |
Гулый |
Степан |
математика |
6 |
Макарова |
Анна |
математика |
6 |
… |
… |
… |
… |
Список полей в определённой последовательности
Пример 2
Запрос:
SELECT PNAME, SFAM, TFAM, OCENKA
FROM STUDENTS, PREDMET, TEACHERS, USP;
Результат:
Получаем список с фамилией всех студентов, названием предмета, фамилией преподавателя и оценкой по предмету
Вычисления:
SELECT SNUM, SFAM, SIMA, SOTCH, STIP*10
FROM STUDENTS;
DISTINCT
Для получения результатов без дубликатов можно воспользоваться аргументом DISTINCT, который обеспечивает возможность устранять повторяющиеся значения из предложения SELECT:
Например:
Имеется таблица продаж за 2008 год - prodaji. Необходимо найти все фирмы, которые покупали у нас товар
№ |
Data |
nazvanie |
summa |
1 |
14.05.2008 |
Omega |
1056000 |
2 |
05.06.2008 |
Paradiz |
890000 |
3 |
20.06.2008 |
Omega |
960000 |
… |
… |
… |
… |
Запрос 1 Запрос 2
SELECT nazvanie SELECT distinct nazvanie
FROM prodaji; FROM prodaji;
Результат Результат
Выведутся все названия фирм Выведутся названия фирм и
они не повторятся
Omega Omega
Paradiz Paradiz
Omega …
…
Литералы
Литералы – это строковые константы, которые применяются наряду с наименованиями столбцов и, таким образом, выступают в роли “псевдо-столбцов”. Строка символов, представляющая собой литерал, должна быть заключена в одинарные или двойные кавычки.
Запрос:
SELECT SFAM, SIMA, “получает”, STIP,
’долларов в год’
FROM students;
WHERE
WHERE – предложение команды SELECT, которое позволяет устанавливать предикаты, условие которых может быть или верным или неверным для любой записи таблицы. Команда извлекает только те записи из таблицы, для которой такое утверждение истинно.
Типы предикатов, используемых в предложении WHERE:
Сравнение с использованием реляционных операторов:
= равно > больше
<> не равно < меньше
!= не равно >= больше или равно
<= меньше или равно
Операторы:
BETWEEN IS NULL
IN EXIST
LIKE ANY
CONTAINING ALL
Например:
Запрос: SELECT SFAM, STIP
FROM STUDENTS
WHERE STIP=25.50;
Результат:
SFAM STIP
-------------------------------
Поляков 25.50
Нагорный 25.50
IN, BETWEEN, LIKE, IS NULL
IN определяет набор значений, в которых данное значение должно быть включено.
Запрос 1
SELECT *
FROM STUDENTS
WHERE (SIMA = ‘Анатолий’) OR (SIMA = ‘Владимир’);
Такой же результат можно получить и другим способом :
Запрос 2
SELECT *
FROM STUDENTS
WHERE SIMA IN (‘Анатолий’, ‘Владимир’);
BETWEEN определяет диапазон значений, в который должны умещаться искомые значения, что и делает предикат верным.
Запрос:
SELECT SNUM, OCENCA
FROM USP
WHERE OCENCA BETWEEN 3 AND 5;
Результат:
SNUM OCENCA
----------------------------
15424 5
17451 4
25111 3
34160 4
34161 5
LIKE применим только к полям типа CHAR или VARCHAR, в которых он ищет подстроки, т.е. он ищет символы и проверяет, совпадают ли они с условием. Два типа групповых символов, используемые с LIKE: символ подчеркивания (заменяет любой одиночный символ) и знак процента (замещает последовательность любого числа символов).
Например: Вывести необходимые данные о преподавателях, у которых фамилия начинается на «К»
Запрос: SELECT TFAM, TIMA, TOTCH
FROM TEACHERS
WHERE TFAM LIKE ‘K%’;
Результат запроса:
TFAM TIMA TOTCH
----------------------------------------------------------------
Костыркин Олег Владимирович
Казанко Виталий Владимирович
Если требуется найти строку, которая содержит специальные символы (“%”, “_”) в качестве информационных символов.
Для этого с помощью ключевого слова ESCAPE нужно определить так называемый escape-символ, который, будучи поставленным перед символом “%” или “_”, укажет, что этот символ является информационным. Escape-символ не может быть символом “\” (обратная косая черта) и, вообще говоря, должен представлять собой символ, никогда не появляющийся в упоминаемом столбце как информационный символ. Часто для этих целей используются символы “@” и “~”.
Например: получить список сотрудников, в имени которых содержится “_”
Запрос: SELECT first_name, last_name
FROM employee
WHERE first_name LIKE "%@_%" ESCAPE "@"
В SQL-запросах NULL означает, что значение столбца неизвестно. Предикат IS NULL принимает значение true только тогда, когда выражение слева от ключевых слов “IS NULL” имеет значение null (пусто, не определено). Разрешено также использовать конструкцию IS NOT NULL, которая означает “не пусто”, “имеет какое-либо значение”.
Запрос: SELECT *
FROM USP
WHERE OCENCA IS NULL;
Данных в качестве результата этого запроса не будет, потому что в таблице отсутствуют значения NULL в поле OCENCA.
Запрос: SELECT *
FROM USP
WHERE OCENCA NOT NULL;
Данный запрос выведет все данные по столбцу OCENCA.
