SQL урок 1. Язык запросов SQL и оператор выбора SELECT

На уроке будет рассмотрен язык запросов: оператор SELECT sql — на выборку данных

Оператор SELECT sql

SQL-запрос Select предназначен для обычной выборки из базы данных. Т.е. если нам необходимо просто получить данные, не делая с ними никакой обработки и не внося изменений в базу данных, то можно смело использовать данный запмагарос.

Синтаксис оператора SELECT

SELECT * FROM имя_таблицы;

Это самый простой вариант работы с оператором, когда мы выбираем все записи из таблицы БД.

Символ * обозначает выборку всех записей из таблицы. При этом столбцы и строки результирующего набора не упорядочены.

Рассмотрим примеры sql запросов select:

Пример БД «Институт»: если вы создали локальную базу данных и заполнили таблицы, как в рассмотренном ранее уроке (или же воспользовались сервисом sqlFiddle), то выполним следующий пример.
Необходимо выбрать все записи из таблицы teachers
SELECT * FROM teachers;

sql запрос select

Задание 1_1. БД «Компьютерные курсы». Вывести все поля из таблицы Группы.

Чтобы ограничить количество выбранных записей используется служебное слово LIMIT:

SELECT * FROM имя_таблицы LIMIT 2,3;

В примере происходит выборка 3 записей из таблицы, начиная со 2 записи.
Этот запрос особо необходим при создании блока страниц навигации.

Чтобы упорядочить поля результирующего набора, их следует перечислить через запятую в нужном порядке после слова SELECT:

SELECT name, zarplata
FROM teachers;
Выберет все значения полей name и zarplata в том же порядке (сначала name, затем zarplata)

примеры sql запросов select

Задание 1_2. БД «Компьютерные курсы». Получить информацию только о фамилии и годе рождения из таблицы Список

Сортировка в SQL

Чтобы выполнить сортировку по любому из полей, указанных в предложении SELECT, используется предложение ORDER BY:

SELECT name, zarplata, premia
FROM teachers ORDER BY name;
Выберет значения полей name, zarplata, premia и отсортирует по полю name (по алфавиту)

sql order by

Пример: БД «Компьютерный магазин». Выбрать данные о скорости и памяти компьютеров. Требуется упорядочить результирующий набор по скорости процессора в порядке возрастания.
SELECT `Скорость`,`Память` FROM `pc` ORDER BY `Скорость` ASC

Или

SELECT `Скорость`,`Память` FROM `pc` ORDER BY 1 ASC

Результат:
sql ORDER BY пример

Сортировку можно выполнять по двум полям:

SELECT `Скорость`,`Память` FROM `pc` ORDER BY `Скорость` ASC, `Память` ASC
Задание sql select 1_1. База данных Компьютерный магазин: Получить информацию только о скорости процессора и объеме оперативной памяти компьютеров.
Задание sql select 1_2. База данных Компьютерный магазин: Требуется упорядочить результирующий набор по объему оперативной памяти в порядке убывания.

Сортировку можно производить по возрастанию, тогда добавляется параметр ASC (он же применяется по умолчанию) или по убыванию (в таком случае добавляется параметр DESC):

SELECT name, zarplata, premia
FROM teachers ORDER BY name DESC;
Выберет значения полей name, zarplata, premia и отсортирует по полю name по убыванию

sql asc и sesc сортировка

Задание 1_3. БД «Компьютерные курсы». Вывести информацию о фамилиях и годах рождения. Упорядочить результирующий набор по году рождения в порядке убывания.

Удаление повторяющихся значений в SQL

В случае когда необходимо получить уникальные строки, можно использовать ключевое слово DISTINCT.

DISTINCT (в переводе с английского ОТЛИЧИЕ) — аргумент, который устраняет двойные значения:

Пример БД «Институт»: требуется узнать возможные варианты размера премий. Если не использовать Distinct, в результате будет выдаваться два одинаковых значения. Удалить в sql повторяющиеся значения можно при введении Distinct — в результате дублирующиеся значения не повторяются.
  1. SELECT premia  
    FROM teachers;
  2. SELECT DISTINCT premia  
    FROM teachers;
  1. sql повторяющиеся значения
  2. sql повторяющиеся значения

Рассмотрим другой пример из базы данных «Компьютерный магазин»:

Пример: База данных «Компьютерный магазин»: требуется получить информацию только о скорости процессора и объеме оперативной памяти компьютеров
SELECT Скорость, Память FROM PC;

Результат:
sql distinct пример

В таблице PC первичным ключом является поле code. Поскольку это поле отсутствует в запросе, в приведенном выше результирующем наборе имеются дубликаты строк.

Когда требуется получить уникальные строки (например, нас интересуют только различные комбинации скорости процессора и объема памяти, а не характеристики всех имеющихся компьютеров), то нужно использовать Distinct:

SELECT DISTINCT Скорость, Память FROM PC;

Результат:
sql distinct пример

Задание sql select 1_3. База данных Компьютерный магазин: Из таблицы Продукты выбрать различные страны-производители.
Задание sql select 1_1. БД «Институт» Выполните запрос на выборку id и name из таблицы учителей. Отсортируйте фамилии учителей по убыванию
Задание sql select 1_2. БД «Институт» Выведите возможные варианты длины курсов (length) из таблицы курсов (courses), удалив повторяющиеся значения
Задание 1_4. БД «Компьютерные курсы». Из таблицы личные данные вывести поля Word и Excell. Получить уникальные строки

Язык sql: where условие

Условие выполняется предложением
WHERE <предикат>
которое записывается после предложения FROM.

При этом в результирующий набор попадут только те записи, для которых значение предиката равно TRUE (истина).

Пример БД «Институт»: Выводить данные преподавателя из таблицы teachers, фамилия которого Иванов
SELECT * FROM `teachers` WHERE `name` = 'Иванов'

sql where условие

Задание sql select 1_4. База данных Компьютерный магазин: Получить информацию о частоте процессора и объеме оперативной памяти для компьютеров с ценой ниже 6000
Задание sql select 1_5. База данных Компьютерный магазин: Вывести производителей принтеров
Задание 1_5. БД «Компьютерные курсы». Получить информацию по полям Фамилия, Имя, Отчество из таблицы Список, о студентках, имя которых Ольга

Несколько условий в SQL

Предикаты (условия) могут состоять как из одного выражения, так и из любой комбинации выражений, построенных с помощью булевых операторов:

  • AND,
  • OR
  • или NOT
  • Пример БД «Институт»: вывести код преподавателя, зарплата которого составляет 10000, а премия 500
    SELECT * FROM `teachers` WHERE `zarplata`=10000 AND `premia`=500
    Задание sql select 1_2. БД «Институт» Из таблицы courses вывести длину курса (length), название которого — «Программирование SQL»

    Реляционные операторы, встречающиеся в условиях:
    = Равный
    > Больше чем
    < Меньше чем
    >= Больше чем или равно
    <= Меньше чем или равно
    <> Не равно

    Задание sql select 1_6. База данных "Компьютерный магазин": Получить информацию о компьютерах, имеющих частоту процессора не менее 500 Мгц и цену ниже 25000
    Задание sql select 1_7. База данных "Компьютерный магазин": Получить информацию обо всех принтерах, которые не являются струйными и стоят меньше 5000
    Задание 1_6. БД "Компьютерные курсы". Получить информацию о студентах:
    - год рождения которых выше 1983 и обучающихся на первом курсе;
    - год рождения которых не 1980 или обучающихся на курсе старше второго.

    Between в SQL (между)

    Предикат BETWEEN проверяет, попадают ли значения проверяемого выражения в диапазон, задаваемый пограничными выражениями, соединяемыми служебным словом AND.

    Синтаксис:

    <Проверяемое выражение> [NOT] BETWEEN <Начальное выражение> AND 
    <Конечное выражение>
    Пример БД "Институт": Вывести фамилию и зарплату преподавателя, зарплата которого между 5000 и 10000.
    SELECT name, zarplata
    FROM teachers
    WHERE (zarplata BETWEEN 5000 AND 10000);

    between sql

    Пример БД "Институт": Вывести фамилию и зарплату преподавателя, зарплата которого не находится в диапазоне от 5000 до 10000.
    SELECT name, zarplata
    FROM teachers
    WHERE (zarplata NOT BETWEEN 5000 AND 10000);

    between sql

    Задание sql select 1_8. База данных "Компьютерный магазин": Требуется найти номер и частоту процессора компьютеров стоимостью от 25000 до 35000
    Задание 1_7. БД "Компьютерные курсы". Вывести список учащихся, год рождения которых между 1982 и 1985

    Предикат IN

    Предикат IN определяет, будет ли значение проверяемого выражения обнаружено в наборе значений, который явно определен.

    Синтаксис:

    <Проверяемое выражение> [NOT] IN (<набор значений>)
    Пример БД "Институт": вывести имена преподавателей, зарплата которых составляет 5000, 10000 или 11000
    SELECT name, zarplata
    FROM teachers
    WHERE (zarplata IN (5000,10000,11000));

    sql in

    Пример БД "Институт": вывести имена преподавателей, зарплата которых не находится среди значений: 5000, 10000 или 11000
    SELECT name, zarplata
    FROM teachers
    WHERE (zarplata NOT IN (5000,10000,11000));

    sql select in

    Задание sql select 1_3. БД "Институт" Вывести фамилию, зарплату и премию учителей, премия которых от 2000 до 5000 рублей.
    Задание sql select 1_9. База данных "Компьютерный магазин": Требуется найти номер, частоту процессора и объем жесткого диска тех компьютеров, которые комплектуются жесткими дисками 500 или 1000Гб.
    Задание 1_8. БД "Компьютерные курсы". Вывести фамилии студентов, обучавшихся в РГПУ, РГУ и ДГТУ.
    Задание 1_9. БД "Компьютерные курсы". Вывести учебные группы студентов, преподаватель которых Желудев М.Л.

    Предикат IN с подзапросом

    Предикат IN определяет, будет ли значение проверяемого выражения обнаружено в наборе значений, который получен с помощью табличного подзапроса.

    Синтаксис:

    <Проверяемое выражение> [NOT] IN (<подзапрос>)
    Пример: БД "Компьютерный магазин". Найти номер, частоту процессора и объем жесткого диска тех компьютеров, которые имеют частоту процессора 1000, 2000 и 3000 МГц и выпускаются производителем Америка
    SELECT `Номер`,`Скорость`,`HD` FROM `pc` 
      WHERE `Скорость` IN (1000,2000,3000) 
      AND `Номер` IN (SELECT `Номер` FROM product 
                     WHERE Производитель = "Америка")

    Результат:
    sql подзапрос

    Задание sql select 10. База данных "Компьютерный магазин": Найти производителей компьютеров, с частотой процессора не менее 2000 МГц
    Задание sql select. База данных Институт: Вывести зарплату тех преподавателей, у которых уже стоят уроки (есть записи в таблице lessons)

    Язык SQL запрос LIKE

    Предикат LIKE сравнивает проверяемое значение с шаблоном в выражении.

    Синтаксис:

    <Проверяемое значение>[NOT] LIKE <Выражение>
    Пример: Вывести все данные о преподавателях, фамилии которых заканчиваются на "а"
    SELECT * FROM teachers
    WHERE (name LIKE "%а");

    Символ % заменяет любую последовательность символов.

    Важно: При работе с СУБД Access символ % заменяется на символ *

    sql запрос like

    Задание sql select 14. База данных "Компьютерные курсы". Вывести данные о преподавателях, фамилия которых начинается с м. Упорядочить значения по возрастанию зарплаты
    Задание sql select 11. База данных "Компьютерный магазин": Найти все номера компьютеров, производитель которых начинается на букву "Я"
    Задание sql select 12. База данных "Компьютерный магазин": Найти все номера компьютеров, производитель которых заканчивается на букву "Я" и не начинается с буквы "Р"
    Задание 1_10. БД "Компьютерные курсы". Из таблицы Личные данные вывести Адрес студента, номер телефона которого заканчивается цифрами 33
    Задание 1_11. БД "Компьютерные курсы". Вывести сведения по студентам из таблицы Список, фамилия которых не заканчивается на "ин"