Оператор выбора SELECT . Формирование запросов к базе данных. Простые запросы
] ; " width="640"
Назначение оператора SELECT состоит в выборке и отображении данных одной или нескольких таблиц БД.
Синтаксис оператора SELECT:
SELECT [DISTINCT| ALL] {* | []} FROM
[WHERE ] [GROUP
BY ]
[HAVING ]
[ORDER BY
ВЫВОД] ;
• Наличие ключевого слова ALL (по умолчанию) означает, что в результирующую таблицу включаются все строки, удовлетворяющие условиям запроса, что может привести к появлению в результирующей таблице одинаковых строк;
• ключевое слово DISTINCT предназначено для приведения таблицы в соответствие с принципами теории отношений, где предполагается отсутствие дубликатов строк;
• символ " * " определяет очень часто встречаемую ситуацию, когда в результирующий набор включаются все столбцы из исходной таблицы запроса.
- Во фразе FROM задается перечень исходных таблиц
запроса.
, =, — для сравнения результатов вычисления двух выражений; более сложные выражения строятся с помощью логических операторов AND, OR, NOT ; • BETWEEN А AND В — предикат истинен, когда вычисленное значение выражения попадает в заданный диапазон; • IN — результат истинен тогда, когда сравниваемое значение входит в множество заданных значений; • LIKE и NOT LIKE — предикаты, смысл которых противоположен, требуют задания шаблона, с которым сравнивается заданное значение; " width="640"
WHERE определяет условия отбора строк или условия соединения строк исходных таблиц. В качестве условий отбора могут быть использованы следующие операторы:
• сравнения " = , , , =, — для сравнения результатов вычисления двух выражений; более сложные выражения строятся с помощью логических операторов AND, OR, NOT ;
• BETWEEN А AND В — предикат истинен, когда вычисленное значение выражения попадает в заданный диапазон;
• IN — результат истинен тогда, когда сравниваемое значение входит в множество заданных значений;
• LIKE и NOT LIKE — предикаты, смысл которых противоположен, требуют задания шаблона, с которым сравнивается заданное значение;
• IS NULL — предикат, применяющийся для выявления равенства значения некоторого атрибута неопределенному значению:
• EXIST и NOT EXIST, используемые во встроенных подзапросах.
GROUP BY задает список полей группировки.
HAVING задаются условия для каждой группы.
ORDER BY задает список полей упорядочения, то есть
список полей, который определяет порядок сортировки в
результирующей таблице.
Простые запросы
- ПОЛУЧЕНИЕ УКАЗАННЫХ ПОЛЕЙ ИЗ ТАБЛИЦЫ
SELECT id, country_title, count_people FROM table_name;
Получаем список записей: страны и их население.
Название нужных полей указываются через запятую.
SELECT * FROM table_name;
* обозначает все поля, то есть, будут выбраны все поля данных.
- SQL ЗАПРОС: ВЫВОД ЗАПИСЕЙ ИЗ ТАБЛИЦЫ ИСКЛЮЧАЯ ДУБЛИКАТЫ
SELECT DISTINCT country_title FROM table_name;
Получаем список записей: страны, где находятся наши пользователи. Пользователей может быть много из одной страны. В этом случае это ваш запрос.
100000000; Получаем список записей: страны, где количество людей больше 100 000 000. SQL ЗАПРОС: ВЫВОД ЗАПИСЕЙ ИЗ ТАБЛИЦЫ С УПОРЯДОЧИВАНИЕМ SELECT id, city_title FROM table_name ORDER BY city_title; Получаем список записей: города в алфавитном порядке. В начале А, в конце Я. SELECT id, city_title FROM table_name ORDER BY city_title DESC; Получаем список записей: города в обратном ( DESC ) порядке. В начале Я, в конце А. " width="640"
- SQL ЗАПРОС: ВЫВОД ЗАПИСЕЙ ИЗ ТАБЛИЦЫ ПО ЗАДАННОМУ УСЛОВИЮ
SELECT id, country_title, city_title FROM table_name WHERE count_people100000000;
Получаем список записей: страны, где количество людей
больше 100 000 000.
- SQL ЗАПРОС: ВЫВОД ЗАПИСЕЙ ИЗ ТАБЛИЦЫ С УПОРЯДОЧИВАНИЕМ
SELECT id, city_title FROM table_name ORDER BY city_title;
Получаем список записей: города в алфавитном порядке. В начале А, в конце Я.
SELECT id, city_title FROM table_name ORDER BY city_title DESC;
Получаем список записей: города в обратном ( DESC ) порядке. В начале Я, в конце А.
- SQL ЗАПРОС: ПОДСЧЕТ КОЛИЧЕСТВА ЗАПИСЕЙ
SELECT COUNT(*) FROM table_name ;
Получаем число (количество) записей в таблице. В данном случае НЕТ списка записей.
- SQL ЗАПРОС: ВЫВОД НУЖНОГО ДИАПАЗОНА ЗАПИСЕЙ
SELECT * FROM table_name LIMIT 2, 3;
Получаем 2 (вторую) и 3 (третью) запись из таблицы. Запрос полезен при создании навигации на WEB страницах.
- SQL ЗАПРОС: ПОДСЧЕТ КОЛИЧЕСТВА ЗАПИСЕЙ
SELECT COUNT(*) FROM table_name;
Вывод записей из таблицы по заданному условию с
использованием логических операторов.
использованием логических операторов.
- SQL ЗАПРОС: КОНСТРУКЦИЯ AND (И)
SELECT id, city_title FROM table_name WHERE country="Россия" AND oil=1;
Получаем список записей: города из России И имеют
доступ к нефти. Когда используется оператор AND , то
должны совпадать оба условия.
SQL ЗАПРОС: КОНСТРУКЦИЯ OR (ИЛИ)
- SELECT id, city_title FROM table_name WHERE country="Россия" OR country="США«
Получаем список записей: все города из России ИЛИ США.
Когда используется оператор OR , то должно совпадать
ХОТЯ БЫ одно условие.
- SQL ЗАПРОС: КОНСТРУКЦИЯ AND NOT (И НЕ)
SELECT id, user_login FROM table_name WHERE country="Россия" AND NOT count_comments Получаем список записей: все пользователи из России И сделавших НЕ МЕНЬШЕ 7 комментариев.
- SQL ЗАПРОС: КОНСТРУКЦИЯ IN (В)
SELECT id, user_login FROM table_name WHERE country IN ("Россия", "Болгария", "Китай");
Получаем список записей: все пользователи, которые
проживают в ( IN ) (России, или Болгарии, или Китая)
- SQL ЗАПРОС: КОНСТРУКЦИЯ NOT IN (НЕ В)
SELECT id, user_login FROM table_name WHERE country NOT IN ("Россия","Китай");
Получаем список записей: все пользователи, которые
проживают не в ( NOT IN ) (России или Китае).
- SQL ЗАПРОС: КОНСТРУКЦИЯ IS NULL (ПУСТЫЕ ИЛИ НЕ ПУСТЫЕ ЗНАЧЕНИЯ)
SELECT id, user_login FROM table_name WHERE status
IS NULL;
Получаем список записей: все пользователи, где status не
определен. NULL это отдельная тема и поэтому она
проверяется отдельно.
SELECT id, user_login FROM table_name WHERE state IS NOT NULL;
Получаем список записей: все пользователи, где status
определен (НЕ НОЛЬ).
- SQL ЗАПРОС: КОНСТРУКЦИЯ LIKE
SELECT id, user_login FROM table_name WHERE surname LIKE "Иван%“;
Получаем список записей: пользователи, у которых фамилия начинается с комбинации «Иван». Знак % означает ЛЮБОЕ количество ЛЮБЫХ символов. Чтобы найти знак % требуется использовать экранирование «Иван\%».
- SQL ЗАПРОС: КОНСТРУКЦИЯ BETWEEN
SELECT id, user_login FROM table_name WHERE salary BETWEEN 25000 AND 50000;
Получаем список записей: пользователи, которые получает зарплату от 25000 до 50000 включительно.
- Преобразование типов (CAST)
В SQL имеется возможность преобразовать значение столбца или функции к другому типу для более гибкого использования операций сравнения. Для этого используется функция CAST. Возможные преобразования
Из типа данных В тип данных
---------------------------------------
NUMERIC CHAR, VARCHAR, DATE
CHAR, VARCHAR NUMERIC, DATE
DATE CHAR, VARCHAR, DATE
SELECT first_name, last_name, dept_no
FROM employee WHERE CAST(dept_no AS char(20))
CONTAINING "00 ” ;
Получить список сотрудников,
занятых в отделах, номера которых содержат “00”.
FIRST_NAME LAST_NAME DEPT_NO
=============== ==================== =====
Robert Nelson 600
Terri Lee 000
Stewart Hall 900
Walter Steadman 900
Mary S. MacDonald 100
Oliver H. Bender 000
Kelly Brown 600
Michael Yanowski 100
- Упорядочивание с использованием имен столбцов
SELECT first_name, last_name, dept_no, job_code,salary
FROM employee ORDER BY last_name ;
Получить список сотрудников,упорядоченный по фамилиям в алфавитном порядке.