Delphi World - Локальные операторы языка SQL
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Локальные операторы языка SQL

Вывод нужных полей

SELECT LastName, FirstName, Salary FROM employee

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



Вывод всех полей из таблицы

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. Индексация начинается с нуля. Затем, например, по нажатию на кнопке напишем код:

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)

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


Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования