Содержание:
Оператор SELECT sql
SQL-запрос Select предназначен для обычной выборки из базы данных. Т.е. если нам необходимо просто получить данные, не делая с ними никакой обработки и не внося изменений в базу данных, то можно смело использовать данный запмагарос.
Синтаксис оператора SELECT
SELECT * FROM имя_таблицы;Это самый простой вариант работы с оператором, когда мы выбираем все записи из таблицы БД.
Символ
*
обозначает выборку всех записей из таблицы. При этом столбцы и строки результирующего набора не упорядочены.
Рассмотрим примеры sql запросов select:
Необходимо выбрать все записи из таблицы
teachers
SELECT * FROM teachers; |
Чтобы ограничить количество выбранных записей используется служебное слово
LIMIT
:
SELECT * FROM имя_таблицы LIMIT 2,3;В примере происходит выборка 3 записей из таблицы, начиная со 2 записи.
Этот запрос особо необходим при создании блока страниц навигации.
Чтобы упорядочить поля результирующего набора, их следует перечислить через запятую в нужном порядке после слова
SELECT
:
SELECT name, zarplata FROM teachers; |
name
и zarplata
в том же порядке (сначала name
, затем zarplata
)Список
Сортировка в SQL
Чтобы выполнить сортировку по любому из полей, указанных в предложении
SELECT
, используется предложениеORDER BY
:
SELECT name, zarplata, premia FROM teachers ORDER BY name; |
name
, zarplata
, premia
и отсортирует по полю 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; |
name
, zarplata
, premia
и отсортирует по полю name
по убываниюУдаление повторяющихся значений в SQL
В случае когда необходимо получить уникальные строки, можно использовать ключевое слово
DISTINCT
.DISTINCT (в переводе с английского ОТЛИЧИЕ) — аргумент, который устраняет двойные значения:
Distinct
, в результате будет выдаваться два одинаковых значения. Удалить в sql повторяющиеся значения можно при введении Distinct
— в результате дублирующиеся значения не повторяются. SELECT premia FROM teachers; |
SELECT DISTINCT premia FROM teachers; |
Рассмотрим другой пример из базы данных «Компьютерный магазин»:
SELECT Скорость, Память FROM PC; |
В таблице PC
первичным ключом является поле code
. Поскольку это поле отсутствует в запросе, в приведенном выше результирующем наборе имеются дубликаты строк.
Когда требуется получить уникальные строки (например, нас интересуют только различные комбинации скорости процессора и объема памяти, а не характеристики всех имеющихся компьютеров), то нужно использовать Distinct
:
SELECT DISTINCT Скорость, Память FROM PC; |
Продукты
выбрать различные страны-производители.id
и name
из таблицы учителей. Отсортируйте фамилии учителей по убываниюlength
) из таблицы курсов (courses
), удалив повторяющиеся значенияWord
и Excell
. Получить уникальные строкиЯзык sql: where условие
Условие выполняется предложением
WHERE <предикат>
которое записывается после предложенияFROM
.При этом в результирующий набор попадут только те записи, для которых значение предиката равно
TRUE
(истина).
teachers
, фамилия которого ИвановSELECT * FROM `teachers` WHERE `name` = 'Иванов' |
Фамилия
, Имя
, Отчество
из таблицы Список
, о студентках, имя которых Ольга Несколько условий в SQL
Предикаты (условия) могут состоять как из одного выражения, так и из любой комбинации выражений, построенных с помощью булевых операторов:
AND
,OR
или NOT
код преподавателя
, зарплата которого составляет 10000, а премия 500SELECT * FROM `teachers` WHERE `zarplata`=10000 AND `premia`=500 |
courses
вывести длину курса (length
), название которого — «Программирование SQL»Реляционные операторы, встречающиеся в условиях:
=
Равный
>
Больше чем
<
Меньше чем
>=
Больше чем или равно
<=
Меньше чем или равно
<>
Не равно
- год рождения которых выше 1983 и обучающихся на первом курсе;
- год рождения которых не 1980 или обучающихся на курсе старше второго.
Between в SQL (между)
Предикат
BETWEEN
проверяет, попадают ли значения проверяемого выражения в диапазон, задаваемый пограничными выражениями, соединяемыми служебным словомAND
.Синтаксис:
<Проверяемое выражение> [NOT] BETWEEN <Начальное выражение> AND <Конечное выражение>
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
определяет, будет ли значение проверяемого выражения обнаружено в наборе значений, который явно определен.Синтаксис:
<Проверяемое выражение> [NOT] IN (<набор значений>)
5000
, 10000
или 11000
SELECT name, zarplata FROM teachers WHERE (zarplata IN (5000,10000,11000)); |
5000
, 10000
или 11000
SELECT name, zarplata FROM teachers WHERE (zarplata NOT IN (5000,10000,11000)); |
2000
до 5000
рублей.Предикат IN с подзапросом
Предикат
IN
определяет, будет ли значение проверяемого выражения обнаружено в наборе значений, который получен с помощью табличного подзапроса.Синтаксис:
<Проверяемое выражение> [NOT] IN (<подзапрос>)
SELECT `Номер`,`Скорость`,`HD` FROM `pc` WHERE `Скорость` IN (1000,2000,3000) AND `Номер` IN (SELECT `Номер` FROM product WHERE Производитель = "Америка") |
lessons
)Язык SQL запрос LIKE
Предикат
LIKE
сравнивает проверяемое значение с шаблоном в выражении.Синтаксис:
<Проверяемое значение>[NOT] LIKE <Выражение>
"а"
SELECT * FROM teachers WHERE (name LIKE "%а"); |
Символ %
заменяет любую последовательность символов.
%
заменяется на символ *
м
. Упорядочить значения по возрастанию зарплатыЛичные данные
вывести Адрес
студента, номер телефона которого заканчивается цифрами 33Список
, фамилия которых не заканчивается на "ин"