[Хотим
вывести только имя, фамилию и оклад
служащих]
Вывод
всех полей из таблицы
SELECT
* FROM employee
[
* обозначает все поля]
Задание
псевдонима таблице
SELECT
* FROM employee emp
where
emp.salary>35000
[Таблице
employee в качестве псевдонима задано
emp
Выводим
всех служащих с окладом свыше 35000]
Исключение
дубликатов
SELECT
DISTINCT Country FROM vendors
[Хотим
узнать из каких стран поставляют
продукцию]
Постановка условия
SELECT
* FROM vendors
Where
Country='Canada'
[Выводим
поставщиков из Канады]
Использование
логические операторов
SELECT
* FROM vendors
Where
Country='U.S.A.' and Preferred='True'
[Выводим
только предпочитаемых поставщиков
из США.
Когда
используем оператор AND должны
удовлетворяться оба условия]
SELECT
* FROM animals
Where
AREA='South America' or AREA='New Orleans'
[Хотим
видеть только тех животных,
которые обитают в Южной Америке
или Новом Орлеане
Когда
используем оператор OR должно
удовлетворяться хотя бы одно
условие]
SELECT
* FROM animals
Where AREA='South America' and not Weight<7
[Выводим
животных, обитающих в Южной
Америке с весом не менее 7 кг
Когда
используем оператор AND NOT
должно удовлетворяться первое
условие и не должно - второе]
SELECT
* FROM animals
Where Weight<5 or not Weight<10
[Выводим
животных, с весом менее 5 кг или
более 10 кг
Когда
используем оператор OR NOT должно
либо удовлетворяться первое
условие, либо не должно - второе]
Упорядочивание
записей по возрастанию/убыванию/по
номеру столбца
SELECT
* FROM animals order by Weight
[Выводим
животных в порядке увеличения веса:
сначала самые лёгкие, в конце самые
тяжелые]
SELECT
* FROM animals order by Weight desc
[...наоборот
- по убыванию]
SELECT
* FROM animals order by 3
[Упорядочить
по третьему столбцу (отсчёт
начинается с 1 )]
Объединение
нескольких запросов
SELECT
* FROM animals
Where Area='South America'
UNION
SELECT * FROM animals
Where Area='New Orleans'
[Выводим
тех животных, которые обитают в
Южной Америке, а так же тех, которые
обитают в Новом Орлеане
Оператором
UNION можем объединять несколько
запросов]
Максимальное/минимальное
значение поля
SELECT
MAX(Salary) FROM employee
[Выводим
максимальный оклад из таблицы
служащих]
SELECT
MIN(Salary) FROM employee
[Выводим
минимальный оклад из таблицы
служащих]
Сумма
всех значений/среднее значение
SELECT
SUM(Salary) FROM employee
[Так
можем узнать сколько получают
служащие некой фирмы вместе взятые]
SELECT
AVG(Salary) FROM employee
[Так
можем узнать среднестатистический
оклад]
Количество
записей в таблице/в поле
SELECT
COUNT(*) FROM employee
[Находим
количество записей в таблице - в
данном случае количество служащих]
SELECT
COUNT(*) FROM clients
Where occupation='Programmer'
[Посчитали
сколько человек увлекаются
программированием]
Группировка
записей
SELECT
Continent, MAX(Area) FROM country group by Continent
[С
помощью конструкции "group by"
можем узнать какая страна занимает
самую большую площадь для каждого
континента]
Конструкция
IN
select
* from Customer
Where Country IN ('US','Canada','Columbia')
[Выводим
покупателей из США, Канады и
Колумбии]
select
* from Customer
Where Country NOT IN ('US','Canada')
[Выводим
всех покупателей за исключением
тех, кто проживает в США, Канаде]
Вывод
пустых/непустых значений
select
* from Customer
Where State is NULL
[Выводит
те записи, где не введено значение
в поле State]
select
* from Customer
Where State is NOT NULL
[Выводит
те записи, где введено значение в
поле State]
Вывод
значений приблизительно
соответствующих нужным
select
* from employee
Where LastName like 'L%'
[Выводим
только тех служащих, у которых
фамилия начинается на букву 'L'.
Знак '%' - означает любые символы]
select
* from employee
Where LastName like 'Nels_n'
[Например,
мы не помним: как правильно пишется
'Nelson' или 'Nelsan', тогда нужно будет
воспользоваться знаком
подчёркивания, который означает
любой символ]
Диапазон
значений
select
* from employee
Where Salary BETWEEN 25000 AND 50000
[Можем
вывести только тех, кто получает от
25000 до 50000 включительно]
ANY, SOME,
ALL
SELECT
* FROM orders.db
where custno= ANY (select custno from customer.db where city = 'Largo');
или
SELECT
* FROM orders.db
where custno= SOME (select custno from customer.db where city =
'Largo');
или
SELECT
* FROM orders.db
where custno IN (select custno from customer.db where city = 'Largo');
[Выводим
заказы покупателей из города 'Largo']
SELECT
* FROM clients
where birth_date>All(select birth_date from clients where
city='Los Altos')
[Вывести
тех клиентов, которые моложе всех
из 'Los Altos']
EXISTS
SELECT
* FROM orders.db
where custno= ANY (select custno from customer where city = 'Largo')
and Exists(SELECT * FROM customer WHERE City='Largo')
[Выводим
заказы покупателей из города 'Largo'
если вообще есть покупатели с
этого города]
Использование
параметров
SELECT
* FROM clients
where Last_Name=:LastNameParam
[Если
мы хотим дать возможность
пользователю самому указывать
фамилию нужного ему клиента. мы
вместо значения для поля фамилия
указываем параметр. Параметры
указываются после двоеточия. И
получить доступ к ним можно по
индексу из свойства Params компонента
Query. Индексация начинается с нуля.
Затем, например, по нажатию на
кнопке напишем код:
[Если
зарплата указана не в долларах, а
какой-то другой валюте, курс
которой равен 1 к 100, мы можем
вывести данные в $, используя
вышеуказанное выражение]
Использование
нескольких таблиц
SELECT
o.orderno,o.AmountPaid, c.Company FROM orders o, customer c
where o.custno=c.custno and c.city='Largo'
[Выводим
номер и сумму заказа из таблицы
заказов и компанию сделавшую заказ
из таблицы покупателей]
Вложенные
подзапросы
SELECT
* FROM employee
where Salary=(select MAX(Salary) from employee)
[Мы
научились выводить максимальное
значение, например, можем узнать
максимальный оклад у служащих, но
куда полезнее было бы узнать кто
тот счастливчик. Именно здесь
используется механизм вложенных
подзапросов]
В статье рассматриваются различные операторы языка SQL, такие как SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, UNION, IN, EXISTS, LIKE, BETWEEN, ANY, SOME, ALL, EXISTS, параметры и вложенные подзапросы.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.