30.2. Команда select
Эта команда предназначена для выбора информации из базы данных. Результатом работы команды Select (выбор) всегда является таблица. Общая форма данной команды имеет вид
Select [Distinct] <список полей>
From <список таблиц>
[Where <условия отбора>]
[Group By <поля> [Having <условия отбора для группировки>]
[Union <другой Select>]
[Order By <поля или номера полей>];
Например, для выбора всех фамилий из таблицы TSpis можно записать команду Select следующим образом:
Select FIO From Tspis;
В результате мы получим следующую таблицу:
FIO |
Иванов |
Сидоренко |
……. |
Если вместо списка имен полей поставить символ «*» (звездочка), то в итоговую таблицу будут включены все поля таблицы.
При описании полей выбора перед каждым именем поля можно вставить текстовую константу (литерал), которая будет выступать в роли «псевдо-столбца». Например:
Select ”Фамилия”, FIO, ” получает”, OKLAD, ” рублей” From TSpis;
Теперь мы получим следующую таблицу:
| FIO |
| OKLAD |
|
Фамилия | Иванов | получает | 300000 | рублей |
Фамилия | Сидоренко | получает | 200000 | рублей |
….. | ….. | ….. | ….. | ….. |
Квалификатор As
Квалификатор As позволяет при выводе итоговой таблицы изменять названия столбцов и таблиц, например:
Select FIO as Фамилия, OKLAD as Зарплата From TSpis;
Эта команда даст следующую таблицу:
Фамилия | Зарплата |
Иванов | 300000 |
Сидоренко | 200000 |
….. | …… |
Агрегатные функции
Эти функции позволяют производить вычисления над значениями какого–то столбца или подсчитать число строк в таблице:
• Sum – суммирование значений столбца;
• Min – определение минимального значения в столбце;
• Max – определение максимального значения в столбце;
• Avg – определение среднего значения от значений столбца;
• First – первое значение в столбце;
• Last – последнее значение в столбце;
• StDev – оценка среднеарифметического отклонения;
• StDevp – несмещенная оценка среднеарифметического отклонения;
• Var – оценка дисперсии;
• Varp – оценка несмещенной дисперсии;
• Count – число строк в таблице.
Рассмотрим пример расчета средней зарплаты и полного числа сотрудников:
Select Avg(OKLAD) as [Средняя зарплата], Count(*) as ЧС From TSpis;
В результате выполнения этой команды получим следующую таблицу:
Средняя зарплата | ЧС |
250000 | 2 |
Условия отбора строк
Отбор строк осуществляется оператором Where <предикат>. В предикате могут быть использованы следующие операции:
• = – равно;
• <> или != – не равно;
• > – больше;
• < – меньше;
• >= – больше или равно;
• <= – меньше или равно;
• Between – между;
• In – вхождение в множество значений;
• Like – похоже на что–то;
• Is Null – значение не задано;
• Exit – значение определено;
• Any – любое значение;
• All – все значения.
В операторе Where можно также использовать следующие логические операции:
• And – логическое И;
• Or – логическое ИЛИ;
• Not – логическое отрицание.
Рассмотрим несколько примеров использования оператора Where:
1. Найдем все строки, содержащие фамилию «Иванов»:
Select * From TSpis Where FIO=”Иванов”;
Значение поля можно заключать в двойные кавычки, а если в значащей строке есть специальные символы, включая пробел, то это значение нужно заключать в квадратные скобки, например, ”Иванов” или [Иванов].
2. Найдем всех сотрудников, у кого оклад лежит в заданном интервале:
Select * From TSpis Where OKLAD Between ”100000” and ”300000”;
3. Найдем всех сотрудников, у кого фамилии начинаются с букв «Ив»:
Select * From TSpis Where FIO Like ”Ив%”;
Следует отметить, что символ % (проценты) означает любую последовательность символов для стандарта ANSI–92, а для стандарта ANSI–89 следует использовать символ * (звездочка). Аналогично символ _ (подчеркивания) означает любой символ в стандарте ANSI–92, а в стандарте ANSI–89 для этих же целей используется символ ? (вопросительный знак).
4. Найти всех сотрудников с фамилиями «Иванов» или «Петров»:
Select * From TSpis Where FIO in [”Иванов”, ”Петров”];
5. Найти всех сотрудников, кому еще не установлен оклад:
Select * From TSpis Where OKLAD is Null;
Упорядочение строк
Упорядочение строк осуществляется в команде Select с помощью ключевого слова Order. Пример упорядочения строк по фамилиям сотрудников:
Select * From TSpis Order by FIO;
Связывание таблиц
Связывание таблиц производится в операторе Where команды Select по совпадению значений каких–либо двух полей в разных таблицах. Пример связывания таблиц TSpis и TDol по коду должности:
Select a.ID as Номер,
a.FIO as Фамилия,
b.NAMEDOL as Должность,
a.STAG as [Стаж работы],
a.OKLAD as Зарплата
From TSpis as a, TDol as b
Where a.CODEDOL=b.CODE;
Модификатор Distinct
Модификатор Distinct позволяет устранить дублирование строк в результирующей таблице. Например, можно узнать, сколько различных уровней зарплаты имеют сотрудники, следующим образом:
Select Distinct OKLAD as Зарплата
From TSpis Order by OKLAD;
Следующий пример показывает, как найти тех сотрудников, у кого совпадают дни рождения:
Select Distinct a.FIO as Фамилия, a.DATEB as [Дата рождения]
From TSpis as a, TSpis as b
Where a.DATEB=b.DATEB and a.ID<>b.ID
Order by a.DATAB;
В этом примере мы одну и ту же таблицу TSpis обозначили как таблицу «a» и таблицу «b», что позволило найти тех сотрудников, у кого совпадают дни рождения, но разные идентификационные номера «ID». Для исключения дублирования вставлен модификатор Distinct и проведена сортировка результирующей таблицы по дате рождения.
Работа с датами
Найдем, например, всех сотрудников, родившихся с 1 апреля 1980 г. по 31 июля 1981 г,:
Select * From TSpis
Where DATEB Between ’01/04/1980’ and ’31/06/1981’;
Эта команда записана в стандарте ANSI–92. Для стандарта ANSI–89 дату нужно заключать не в апострофы, а в символы «#» (решетка).
Текущую дату можно получить, использую функцию Date() без аргументов. Для выделения части даты из поля даты, например DATEB из таблицы TSpis, можно использовать следующие функции:
Year(DATEB) – год;
Month(DATEB) – месяц;
DatePart(”q”,DATEB) – квартал;
DatePart(”y”,DATEB) – год;
DatePart(”m”,DATEB) – месяц;
DatePart(”d”,DATEB) – день.
Например, найдем всех сотрудников, родившихся в апреле:
Select FIO as Фамилия, DATEB as [Дата рождения]
From TSpis Where DatePart(”m”,DATEB)=”04”;
Команда Transform
Эта команда есть только в MS Access. Она является расширением стандарта SQL и используется для создания перекрестных таблиц. Общий вид ее следующий:
Transform <агрегатная функция>
Select <инструкция>
Pivot <заголовки столбцов> [in [<знач1, знач2, ….>]];
Названия строк образуют значения полей в операторе Select, а названия столбцов образуют значения полей указанных в операторе Pivot. Например, чтобы построить таблицу, показывающую распределение числа сотрудников по должностям (по столбцам) и стажу работы (по стокам), можно написать следующую команду:
Transform Count(*)
Select a.STAG as Стаж
From TSpis as a, TDol as b
Where a.CODEDOL=b.CODE
Pivot b.NAMEDOL;
Таблица может принять, например, следующий вид:
Стаж | Инженер | Техник | … |
10 | 4 | 7 | … |
5 | 5 | 6 | … |
… | … | … | … |
- Программирование в среде Delphi
- Программирование в среде Delphi
- 1. История развития вычислительной техники, системы счисления и единицы информации.................................................7
- 2. Структура персонального компьютера и операционные системы.........................................................................13
- 3. Основы алгоритмизации и работа в delphi..........................18
- 4. Базовые элементы delphi...................................................................26
- 5. Стандартные функции и подпрограммы................................30
- 6. Операторы delphi......................................................................................33
- 7. Операторы циклов....................................................................................35
- 18. Выделение памяти под объект и прародитель всех классов – tobject..........................................................................................84
- 19. Обработка исключительных ситуаций................................87
- 20. Основные классы и общие свойства компонентов...93
- 26. Технология com.....................................................................................129
- 1. История развития вычислительной техники, системы счисления и единицы информации
- 1.1. История развития вычислительной техники
- 1.2. Системы счисления
- 1.3. Единицы информации
- 2. Структура персонального компьютера и операционные системы
- 2.1. Структура персонального компьютера.
- 2.2. Операционные системы
- 3. Основы алгоритмизации и работа в delphi
- 3.1. Основы программирования
- 3.2. Программирование в среде Delphi
- 4. Базовые элементы delphi
- 4.1. Алфавит среды Delphi
- 4.2. Константы
- 4.3. Переменные
- 4.4. Основные типы переменных
- 4.5. Операции над переменными и константами
- 5. Стандартные функции и подпрограммы
- 5.1. Математические функции
- 5.2. Функции преобразования
- 5.3. Дополнительные системные подпрограммы и функции
- 6. Операторы delphi
- 6.1. Оператор присваивания
- 6.2. Оператор безусловной передачи управления
- 6.3. Условный оператор if
- 6.4. Оператор разветвления Case
- 6.5. Составной оператор
- 7. Операторы циклов
- 7.1. Оператор цикла For
- 7.2. Оператор цикла Repeat
- 7.3. Оператор цикла While
- 8. Работа с массивами
- 9. Работа со строками
- 9.1. Процедуры работы со строками
- 9.2. Функции работы со строками
- 10. Работа с записями
- 11. Процедуры и функции
- 12. Модуль unit
- 13. Работа со множествами
- 14. Работа с файлами
- 14.1. Текстовые файлы
- 14.2. Типированные файлы
- 14.3. Нетипированные файлы
- 15. Работа с файлами и каталогами
- 16. Динамические переменные и структуры данных
- 16.1. Динамические переменные
- 16.2. Работа со стеком
- 16.3. Работа со списками или очередями
- 16.4. Работа с деревьями
- 17. Основы объектно–ориентированного программирования
- 17.1. Объекты и классы
- 17.2. Области видимости класса
- 17.3. Свойства (Property) и инкапсуляция
- 17.4. Методы, наследование и полиморфизм
- 17.5. События (Events)
- 18. Выделение памяти под объект и прародитель всех классов – tobject
- 18.1. Выделение памяти под объект
- 18.2. Описание класса tObject
- 18.3. Операторы приведения типов классов
- 19. Обработка исключительных ситуаций
- 19.1. Два вида оператора Try
- 19.2. Программное создание исключительной ситуации
- 19.3. Основные исключительные ситуации
- 20. Основные классы и общие свойства компонентов
- 20.1. Класс tList
- 20.2. Класс tStrings
- 20.3. Общие свойства компонентов
- 21. Графические возможности delphi
- 21.1. Класс Tcanvas
- 21.2. Классы тGгарhic и тРicture
- 21.3. Классы tFont, tPen и tBrush
- 21.4. Работа с изображениями
- 22. Визуальные компоненты delphi
- 22.1. Компонент tBitBtn
- 22.2. Компоненты tDrawGrid и tStringGrid
- 22.3. Компонент tPageControl
- 22.4. Компонент tTimer
- 22.5. Компонент tGauge
- 22.6. Компонент tСolorGrid
- 23. Стандартные диалоговые окна и типовые диалоги
- 23.1. Стандартные диалоговые окна
- 23.2. Типовые диалоги
- 24. Форма, приложение и глобальные объекты
- 24.1. Форма и ее свойства
- 24.2. Объект Application
- 24.3. Глобальные объекты
- Объект ClipBoard
- Объект Screen
- Объект Printer
- 25. Межпрограммное взаимодействие
- 25.1. Обмен сообщениями
- 25.2. Динамический обмен данными
- 25.3. Совместное использование общей памяти
- 25.4. Каналы
- 25.5. Сокеты
- 26. Технология com
- 26.1. Интерфейс
- 27. Технология автоматизации
- 27.1. Основы ole Automation
- 27.2. Примеры использования серверов автоматизации
- 27.3. Компоненты ActiveX
- 28. Динамические библиотеки
- 28.1. Создание dll
- 28.2. Использование dll
- 28.3. Пример написания dll
- 29. Работа с базами данных
- 29.1. Основные определения
- 29.2. Взаимодействие приложения на Delphi с базами данных
- 29.3. Компоненты взаимодействия с базами данных
- If adoTable1.Locate(’fio,stag’,varArrayOf([’Иванов’,’10’]),[])Then …;
- 29.4. Работа с локальной базой данных
- 30. Основы языка sql
- 30.1. Составные части sql
- 30.2. Команда select
- 30.3. Пример использования запросов в Delphi
- 31. Создание собственных компонентов
- 32. Работа с реестром
- 33. Перспективы программирования в delphi
- Литература
- 220013, Минск, п.Бровки, 6