Локальные операторы языка SQL (BDE)

Материал из DRKB

Локальные операторы языка SQL (BDE)

Примеры запросов SQL


Вывод нужных полей[править | править код]

Хотим вывести только имя, фамилию и оклад служащих

SELECT LastName, FirstName, Salary FROM employee


Вывод всех полей из таблицы[править | править код]

* (звездочка) обозначает все поля

SELECT * FROM employee


Задание псевдонима таблице[править | править код]

Таблице employee в качестве псевдонима задано emp

Выводим всех служащих с окладом свыше 35000

SELECT * FROM employee emp
WHERE emp.salary > 35000


Исключение дубликатов[править | править код]

Хотим узнать из каких стран поставляют продукцию

SELECT DISTINCT Country FROM vendors


Постановка условия[править | править код]

Выводим поставщиков из Канады

SELECT * FROM vendors
WHERE Country = 'Canada'


Использование логические операторов[править | править код]

Выводим только предпочитаемых поставщиков из США.

Когда используем оператор AND должны удовлетворяться оба условия

SELECT * FROM vendors
WHERE Country = 'U.S.A.'
  AND Preferred = 'True'


Хотим видеть только тех животных, которые обитают в Южной Америке или Новом Орлеане Когда используем оператор OR должно удовлетворяться хотя бы одно условие

SELECT * FROM animals
WHERE AREA='South America' or AREA='New Orleans'


Выводим животных, обитающих в Южной Америке с весом не менее 7 кг Когда используем оператор AND NOT должно удовлетворяться первое условие и не должно - второе

SELECT * FROM animals
WHERE AREA='South America' and not Weight<7


Выводим животных, с весом менее 5 кг или более 10 кг Когда используем оператор OR NOT должно либо удовлетворяться первое условие, либо не должно - второе

SELECT * FROM animals
WHERE Weight<5 or not Weight<10


Упорядочивание записей по возрастанию/убыванию/по номеру столбца[править | править код]

Выводим животных в порядке увеличения веса: сначала самые лёгкие, в конце самые тяжелые

SELECT * FROM animals ORDER BY Weight


...наоборот - по убыванию

SELECT * FROM animals ORDER BY Weight DESC


Упорядочить по третьему столбцу (отсчёт начинается с 1 )

SELECT * FROM animals ORDER BY 3


Объединение нескольких запросов[править | править код]

Выводим тех животных, которые обитают в Южной Америке, а так же тех, которые обитают в Новом Орлеане Оператором UNION можем объединять несколько запросов

SELECT * FROM animals
WHERE Area = 'South America'
UNION
SELECT * FROM animals
WHERE Area = 'New Orleans'


Максимальное/минимальное значение поля[править | править код]

Выводим максимальный оклад из таблицы служащих

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'


Группировка записей[править | править код]

С помощью конструкции "GROUP BY" можем узнать какая страна занимает самую большую площадь для каждого континента

SELECT Continent, MAX(Area) FROM country GROUP BY Continent


Конструкция IN[править | править код]

Выводим покупателей из США, Канады и Колумбии

SELECT * FROM Customer
WHERE Country IN ('US','Canada','Columbia')


Выводим всех покупателей за исключением тех, кто проживает в США, Канаде

SELECT * FROM Customer
WHERE Country NOT IN ('US','Canada')


Вывод пустых/непустых значений[править | править код]

Выводит те записи, где не введено значение в поле State

SELECT * FROM Customer
WHERE State IS NULL


Выводит те записи, где введено значение в поле State

SELECT * FROM Customer
WHERE State IS NOT NULL


Вывод значений приблизительно соответствующих нужным[править | править код]

Выводим только тех служащих, у которых фамилия начинается на букву 'L'. Знак '%' - означает любые символы

SELECT * FROM employee
WHERE LastName LIKE 'L%'


Например, мы не помним: как правильно пишется 'Nelson' или 'Nelsan', тогда нужно будет воспользоваться знаком подчёркивания, который означает любой символ

SELECT * FROM employee
WHERE LastName LIKE 'Nels_n'


Диапазон значений[править | править код]

Можем вывести только тех, кто получает от 25000 до 50000 включительно

SELECT * FROM employee
WHERE Salary BETWEEN 25000 AND 50000


ANY, SOME, ALL[править | править код]

Выводим заказы покупателей из города 'Largo'

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');


Вывести тех клиентов, которые моложе всех из 'Los Altos'

SELECT * FROM clients
WHERE birth_date > All(SELECT birth_date FROM clients WHERE city = 'Los Altos')


EXISTS[править | править код]

Выводим заказы покупателей из города 'Largo' если вообще есть покупатели с этого города

SELECT * FROM orders.db
WHERE custno = ANY (SELECT custno FROM customer WHERE city = 'Largo')
and Exists(SELECT * FROM customer WHERE City = 'Largo')


Использование параметров[править | править код]

SELECT * FROM clients
WHERE Last_Name = :LastNameParam


Если мы хотим дать возможность пользователю самому указывать фамилию нужного ему клиента, мы вместо значения для поля фамилия указываем параметр. Параметры указываются после двоеточия. И получить доступ к ним можно по индексу из свойства Params компонента Query. Индексация начинается с нуля. Затем, например, по нажатию на кнопке напишем код:

Query1.Active := False;
Query1.Params[0].AsString := Edit1.Text;
Query1.Active := True;


Вывод дополнительного текста (использование выражений)[править | править код]

SELECT LastName, Salary/100, '$' FROM employee

Если зарплата указана не в долларах, а какой-то другой валюте, курс которой равен 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)


Мы научились выводить максимальное значение, например, можем узнать максимальный оклад у служащих, но куда полезнее было бы узнать кто тот счастливчик. Именно здесь используется механизм вложенных подзапросов



Source: Взято с http://delphiworld.narod.ru
ID: 03097