Локальные операторы языка SQL (BDE)
Вывод нужных полей
SELECTLastName, 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)
Мы научились выводить максимальное значение, например, можем узнать максимальный оклад у служащих, но куда полезнее было бы узнать кто тот счастливчик. Именно здесь используется механизм вложенных подзапросов