Читайте также:
|
|
Select является мощным средством создания запросов на выборку информации. Приведем ее предварительный синтаксис:
Select <поля, выражения или *> From <исходные таблицы>
Where <условие отбора записей> Group By <поля для группировки>
Having <условие отбора группы> Order By <поля для сортировки>
Рассмотрим фразы команды (не все фразы обязательны).
Select [Distinct] <выражение> [[As] <псевдоним>] [,...]
From <таблица> [<тип связи> Join <таблица> On <условие связи>]...
Distinct – дублирующие записи запроса не выводятся. Имя поля может быть составным, с включением имени таблицы, точки и самого имени поля. Если имя таблицы содержит пробелы, то оно заключается в апострофы. Вместо имени поля можно указать звездочку, если необходимо построить выборку из всех полей таблицы.
Псевдоним задает наименование колонки (пробелы запрещены).
Для связывания таблиц используется фраза Join. Тип связи задается словами: Left/Right (в запрос входят все записи из таблицы, стоящей в запросе слева/справа), Inner (входят только записи с совпадающими ключами связи).
Пример задания базового запроса по базе строек.
Select Stroiki.Ns, Stroiki.Ds, Stroiki.Ss, Stroiki.Fs, Stroiki.M, Stroiki.Em, Podrjdhiki.Np, Zakazhiki.Nz FROM “stroiki.DB“ Stroiki
Inner Join “zakazhiki.db“ Zakazhiki ON (Stroiki.Kz = Zakazhiki.Kz)
Inner Join “podrjdhiki.DB“ Podrjdhiki ON (Stroiki.Kp = Podrjdhiki.Kp)
В результате выполнения запроса получается совокупность колонок, в заголовках которых могут находиться имена полей. Если нас не устраивают имена, формируемые по умолчанию, то можно назначить свои (псевдонимы), указав их после слова As. В выражении могут использоваться собственные специальные арифметические функции, действующие “по вертикали”: среднее значение в группе (Avg),минимальное (Min),максимальное (Max),сумма (Sum),число записей в группе (Count). Функция может иметь в качестве аргумента звездочку (Count (*)), что означает подсчет всех записей, попавших в выборку.
Where<условие отбора> – условие отбора записей в запрос. В условиях допускается использование логических операторов And, Or, Not и круглых скобок. В условиях, кроме любых функций Pascal, могут содержаться следующие операторы SQL:
<выражение> Like <шаблон>позволяет построить условие сравнения по шаблону, набор символов: “_” (неопределенный символ), “%” (любые символы, например: Where Ns Like ‘Школа%’), [n‑k]% (любые символы из интервала от n до k, например: Like ‘[A‑D]%’);
<выражение> Between <нижнее значение> And <верхнее значение>проверяет, находится ли выражение в указанном диапазоне (Where [Ss] Between 0 And 1000000);
<выражение> In (<выражение>,<выражение>,...) проверяет, находится ли выражение, стоящее слева от слова IN, среди перечисленных справа от него (Where Kz In (1,2,6)).
Group By<колонка>[,<колонка>... ] – задаются колонки, по которым производится группирование выходных данных. Все записи таблицы, для которых значения колонок совпадают, отображаются в выборке единственной строкой. Группирование удобно для получения некоторых сводных характеристик (суммы, число записей, среднее) группы.
Пример. Вывести число сотрудников, максимальную, среднюю, минимальную и итоговую зарплату по подразделениям (поле Podr) по таблице SOTRUDNIKI.
Select podr, Count(*),Min (zarpl), Avg (zarpl), Max(zarpl), Sum (zarpl) From Sotrudniki Group By podr Order By podr
Having<условие отбора группы> задает критерий отбора сформированных в процессе выборки групп.
Order By<колонка> [Asc/Desc] [,<колонка> [Asc/Desc]...] – опция, которая задает упорядочение по колонкам по возрастанию (Asc) или убыванию (Desc). Колонка задается номером или именем поля (Order By Kp, Kz).
Рассмотрим другие команды SQL.
Create Table<имя таблицы> (<поле> <тип поля> [Not Null],...) – создание таблицы (Create Table Kadr (Tab Integer, Fam Char (30) Not Null Primary Key (Tab))). Обязательное присутствие значения в поле задается параметром Not Null. Основные типы полей в SQL в Delphi: SmallInt (Short), Integer (Long Integer), Numeric(x,y), Float (x,y), Char (n), Data, Boolean, Time, Money, Autoinc. Для других СУБД типы полей могут быть другими.
Create View <имя представления> [(<имя столбца>,...)] As <оператор Select> – создание представления с новыми именами столбцов (Create View NameStroek As Select Stroiki.Ns FROM Stroiki).
Alter Table<имя таблицы> {Add | Modify | Drop} <поле> [<тип поля>] [Not Null,... – изменение структуры таблицы: включение (Add), изменение (Modify) и удаление (Drop, тип поля не указывается) полей таблицы (Alter Table Stroiki Add Gorod Integer Drop Kp).
Update<таблица> Set <имя поля>={<новое значение>|Null},... [Where <условие>] – изменение значений полей (Update Kadr Set Oklad=1.5*Oklad Where Cex=”Цех N2”).
Insert Into<имя таблицы>(<список полей>) {Values (<список значений>)| Select...} – включение новой записи или группы записей из другой таблицы.
Примеры
Insert Into Zakazhiki (Kz,Nz) Values (3,’ЗИЛ’); // включение одной записи
Insert Into Podrjdhiki (Kp,Np) Select KPodr, NPodr From SpravPodr
Where DSozd >01.01.80; //включение группы записей из таблицы SpravPodr
Create [Unique] Index<имя индекса> On <таблица> (<поле> [{ Asc |esc}],...) – создание индекса (Create index indproba on stroiki (kz, kp)).
Drop Table/View<имя> – удаление таблицы/представления (Drop Table Stroiki).
Drop Index[“<имя таблицы>”.]<имя индекса> – удаление индекса.
Drop Index[“<имя таблицы>”.]Primary – удаление главного индекса.
Delete From<имя таблицы> [Where<условие>] – удаление записей.
В запросе любого типа может быть вложенный запрос, который называется подзапросом. Подзапрос– это запрос, результат которого используется в условии отбора в выражении Where другого внешнего запроса. Подзапрос заключается в круглые скобки.
Пример. Вывести крупные стройки со сметой выше средней по стройкам: Select * From Stroiki Where Ss > (Select Avg(Ss) From Stroiki).
Дата добавления: 2015-11-14; просмотров: 123 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Индексирование таблиц. Определение индекса и его назначение. Типы индексов | | | Распределенная база данных. Определение, основные термины, типы моделей, достоинства и недостатки |