Математические функции SQL

AVG()- функция возвращает среднее значение

числового столбца.

COUNT()- данная функция возвращает количество

строк, которые соответствует определенным критериям.

FIRST()- данная функция возвращает первое

значение для выбранного столбца.

LAST()- данная функция возвращает последнее

значение для выбранного столбца.

MAX()- функция возвращает наибольшее значение для

выбранного столбца.

MIN()- функция возвращает наименьшее значение для

выбранного столбца.

SUM()- функция возвращает сумму числового столбца.

 

Строковые функции SQL

UCASE()- функция преобразует символы в верхний

регистр.

LCASE()- функция преобразует символы в нижний

регистр.

MID()- функция используется для получения

определенного количества символов из текстового поля

LEN()- определяет длину строки.

ROUND()- данная функция используется для

округление плавающего числа.

NOW()- функция, которая возвращает текущую

системную дату и время.

FORMAT()- данная функция используется для

форматирования полей.

 

Таблица 8.2. Математические функции SQL
Математическая функция Описание
ABS(X) Возвращает абсолютное значение числа Х
ACOS(X) Возвращает арккосинус числа Х
ASIN(X) Возвращает арксинус числа Х
ATAN(X) Возвращает арктангенс числа Х
COS(X) Возвращает косинус числа Х
EXP(X) Возвращает экспоненту числа Х
SIGN(X) Возвращает -1, если Х<0,0, если Х=0, +1, если Х>0
LN(X) Возвращает натуральный логарифм числа Х
MOD(X,Y) Возвращает остаток от деления Х на Y
CEIL(X) Возвращает наименьшее целое, большее или равное Х
ROUND(X,n) Округляет число Х до числа с n знаками после десятичной точки
SIN(X) Возвращает синус числа Х
SQRT(X) Возвращает квадратный корень числа Х
TAN(X) Возвращает тангенс числа Х
FLOOR(X) Возвращает наибольшее целоеб меньшее или равное Х
LOG(a,X) Возвращает логарифм числа Х по основанию А
SINH(X) Возвращает гиперболический синус числа Х
COSH(X) Возвращает гиперболический косинус числа Х
TANH(X) Возвращает гиперболический тангенс числа Х
TRANC(X,n) Усекает число Х до числа с n знаками после десятичной точки
   
POWER(A,X) Возвращает значение А, возведенное в степень Х

Набор встроенных функций может изменяться в зависимости от версии СУБД одного производителя и также в СУБД различных производителей. Так, например, в СУБД SQLBase, Centure Inc. есть функция @ATAN2(X,Y), которая возвращает арктангенс Y/X, но отсутствует функция SIGN(X).Арифметические выражения необходимы для получения данных, которые непосредственно не сохраняются в колонках таблиц базы данных, но значения которых необходимы пользователю. Допустим, что вам необходим список служащих, показывающий выплату, которую получил каждый служащий с учетом премий и штрафов.SELECT ENAME, SAL, COMM, FINE, SAL + COMM – FINE

FROM EMPLOYEE

ORDER BY DEPNO;

Арифметическое выражение SAL + COMM - FINE выводится как новая колонка в результирующей таблице, которая вычисляется в результате выполнения запроса. Такие колонки называют еще производными (вычисляемыми) атрибутами или полями.

24Отбор записей с помощью предложения SELECT.Предложение SELECT является основой каждого запроса, предназначенного для выборки данных. Оно указывает процессору баз данных, какие поля требуется возвратить. Общая форма предложения SELECT имеет следующий вид:

SELECT *

А его содержание таково: "Вернуть значения всех полей, найденных в указанном источнике записей". Эта форма команды удобна тем, что вам не обязательно знать имена извлекаемых полей таблицы. Однако выборка всех полей таблицы может быть не рациональной, особенно в том случае, когда требуется только два поля, в то время как такой запрос осуществляет выборку двух десятков полей.Кроме команды, передаваемой процессору базы данных на возврат всех полей источника записей, можно задать конкретный перечень необходимых при отборе полей. Такое ограничение может улучшить эффективность выполнения запроса, особенно для больших таблиц, содержащих много полей, так как в этом случае отбираются только нужные поля.Ниже приводится пример предложения SELECT, которое извлекает из базы данных значения только двух полей таблицы- FirstName и LastName, содержащих имя и фамилию клиента.

SELECT [FirstName], [LastName]

Обратите внимание также на то, что предложение SELECT не готово к выполнению без предложения FROM (поэтому примеры предложения SELECT, приведенные в этом разделе, выполнить в таком виде нельзя). Чтобы полнее ознакомиться с предложениями SELECT, просмотрите примеры использования предложения FROM, приведенные в следующем разделе.Указание источника записей с помощью предложения FROMПредложение FROM указывает на источник записей, из которого запрос извлекает записи. Этим источником может быть как таблица, так и другой хранимый запрос. У вас также есть возможность отбора записей из нескольких таблиц, которая подробно рассматривается далее, в разделе об объединении нескольких таблиц в одном запросе.Предложения FROM работают совместно с предложениями SELECT. Например, чтобы отобрать все записи в таблице tblCustomer, используйте приведенную ниже команду SQL.

SELECT *FROM tblCustomer

При выполнении этого запроса считываются все записи и все поля в таблице tblCustomer (без какого-либо упорядочения записей).Чтобы отобрать только имя и фамилию клиентов, воспользуйтесь приведенной ниже командой SQL. SELECT FirstName, LastName FROM tblCustomerПосле изменения запроса в режиме конструктора представления выберите команду QueryRun (ЗапросЗапуск) для обновления результатов выполнения запроса

26) Для обеспечения структурированности в расположении строк результирующей таблицы в операторе SELECT используется конструкциия ORDER BY. При использовании команды ORDER BY строки в таблице расположены по умолчанию , если мы хотим расположить строки в порядке убывания\возврастания то мы должны использовать ключевые слова DESC\ASC.SELECT Параметр упорядовачивания(Например упорядочивать строку с Фамилиями или с Возврастом)(й) FROM имя таблицы ORDER BY Параметр упорядовачивания(й) ASC|DESC


Из соображений эффективности всегда ограничивайте число полей в предложении SELECT только теми полями, которые могут потребоваться вашему приложению. Обратите внимание, что записи, отобранные запросом SELECT FROM, в результирующем наборе не упорядочены. Если не задать порядок сортировки (использование предложения ORDER BY рассматривается ниже в этой главе), записи всегда возвращаются в неопределенном порядке.Формирование критериев с использованием предложения WHEREПредложение WHERE указывает процессору базы данных на необходимость ограничения количества отбираемых записей согласно одному или нескольким заданным критериям. Критерий — это логическое выражение, результатом оценки которого является либо "истина" (true), либо "ложь" (false). В языке SQL существует много аналогичных выражений эквивалентности, знакомых пользователям Visual Basic (например: >0 и =' Smith ').Предположим, вам нужно отобрать только тех заказчиков, которые проживают в Калифорнии (СА). Для этого можно использовать приведенный ниже запрос SQL. SELECT FirstName, LastName, State FROM tblCustomer

WHERE State = 'CA'

В результате выполнения этого запроса будет извлечена запись с данными о клиенте с именем Daisy Klein.Обратите внимание также на то, что для обозначения текстовой строки в предложении WHERE используется одиночная кавычка. Подобное обозначение удобно тем, что отличается от обозначения текстовой строки в Visual Basic двойной кавычкой, а инструкции SQL иногда встраиваются в код Visual Basic.Можно создавать более сложные предложения WHERE, связывая два и более критерия с помощью логических операторов AND или OR. Например, необходимо отобрать всех клиентов, проживающих в городе Денвер (Denver) штата Колорадо (СО), т.е. вас не интересуют те клиенты, которые проживают в других городах этого штата. Для этого нужно задать два критерия и связать их оператором AND, как показано в приведенном ниже примере. SELECT FirstName, LastName, City, State FROM tblCustomer WHERE (State = 'CO') AND (City = 'Denver')В результате выполнения этого запроса будет извлечена запись с данными о клиенте с именем ThurstonRyan, который живет в городе Денвер, штат Колорадо. Если в этом городе живут другие клиенты, то в результате выполнения данного запроса будут извлечены записи с информацией о них. Однако при этом не будут извлекаться сведения о клиентах, которые проживают в городах с тем же названием, но в других штатах.Если вас интересует информация о клиентах в штатах Вашингтон (WA) и Калифорния (СА), воспользуйтесь оператором OR, чтобы связать два критерия, как показано ниже.SELECT FirstName, LastName, City, State FROM tblCustomer WHERE State = 'CO' OR State = 'CA' В результате выполнения этого запроса будут извлечены три записи с данными о клиентах в штатах Вашингтон и Калифорния. Из сказанного выше следует, что для отбора данных из таблицы с помощью условий AND и OR можно составить практически любую комбинацию критериев в предложении WHERE. Операторы, используемые в предложении WHERE При построении предложения WHERE можно использовать операторы

Оператор Функция  
< Меньше  
<= Меньше или равно  
> Больше  
>= Больше или равно  
= Равно  
<> Не равно  
BETWEEN Внутри диапазона значений  
LIKE Соответствует образцу  
IN Входит в список значений  
25.Оператор BETWEEN используется для поиска значения внутри некоторого интервала, определяемого своими минимальным и максимальным значениями. При этом указанные значения включаются в условие поиска. Вывести список товаров, цена которых лежит в диапазоне от 100 до 150 (SELECT Название, Цена FROM Товар WHERE Цена BETWEEN 100 And 150) При использовании отрицания NOT BETWEEN требуется, чтобы проверяемое значение лежало вне границ заданного диапазона(Вывести список товаров, цена которых не лежит в диапазоне от 100 до 150.SELECT Товар.Название, Товар.Цена FROM Товар WHERE Товар.Цена NOT BETWEEN 100 And 150) С помощью оператора LIKE можно выполнять сравнение выражения с заданным шаблоном, в котором допускается использование символов-заменителей:Символ % – вместо этого символа может быть подставлено любое количество произвольных символов.Символ _ заменяет один символ строки.[] – вместо символа строки будет подставлен один из возможных символов, указанный в этих ограничителях.[^] – вместо соответствующего символа строки будут подставлены все символы, кроме указанных в ограничителях 27) В языке MYSQL существует множество обьединений но первую очередь, это разновидности объединений JOIN, к которым относятся INNER JOIN, LEFT JOIN, RIGHT JOIN.Пересечение или INNER JOIN Критерий объединения во всех вариантах операции JOIN указывается после ключевого слова ON. Критерий объединения может быть сложным, т.е. состоять из нескольких условий, связанных операторами AND и OR, но в наших примерах это всегда будет простое условие. Итак, свяжем данные из таблицы D_STAFF с данными из таблицы D_STAFF_PROFILE с целью получить идентификаторы всех профилей пользователей, с которыми связаны сотрудники в базе данных. ПРИМЕРSELECT D_STAFF.S_NAME, D_STAFF.S_EXPERIENCE, D_STAFF_PROFILE.PROFILE_ID FROM D_STAFF INNER JOIN D_STAFF_PROFILE ON D_STAFF_PROFILE.STAFF_ID=D_STAFF.XD_IID ORDER BY D_STAFF.S_EXPERIENCE DESCПересечение с необязательным присутствием слева или LEFT JOIN Разница INNER JOIN и LEFT JOIN будет очевидна, если мы возьмем тот же запрос, но поменяем INNER на LEFT.Пересечение с необязательным присутствием справа или RIGHT JOIN 20:10:04  
           

28. Знакомство с функциями аргумента LEN, MID, UCASE, LCASE и функциями результата для определения критериев отбора посредством конструкций HAVING и GROUP BY.

LEN() - определяет длину строки

Итак, мы хотим определить длину записей для колонки "Address".

SELECT LEN(Address) as LengthOfAddress FROM Persons

MID() - функция используется для получения определенного количества символов из текстового поля.

SELECT MID(column_name,start[,length]) FROM table_nameSELECT MID(City,1,4) as SmallCity FROM PersonsUCASE()- функция преобразует символы в верхний регистр.(сделать буквы большими)SELECT UCASE(column_name) FROM table_name

Теперь мы хотим выбрать поля "LastName" и "FirstName" и преобразовать колонку "LastName" в верхний регистр.

SELECT UCASE(LastName) as LastName,FirstName FROM Persons

LCASE()- функция преобразует символы в нижний регистр.(cсделать буквы маленькими)SELECT LCASE(column_name) FROM table_nameSELECT LCASE(LastName) as LastName,FirstName FROM Persons MIN() - функция возвращает наименьшее значение для выбранного столбца.SELECT MIN(column_name) FROM table_nameТеперь мы хотим найти наименьшее значение из колонки "OrderPrice".SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM OrdersMAX() - функция возвращает наибольшее значение для выбранного столбца.SELECT MAX(column_name) FROM table_nameТеперь мы хотим найти наибольшее значение колонки "OrderPrice".SELECT MAX(OrderPrice) AS LargestOrderPrice FROM OrdersSUM()- функция возвращает сумму числового столбца.SELECT SUM(column_name) FROM table_nameТеперь мы хотим найти сумму всех записей"OrderPrice".SELECT SUM(OrderPrice) AS OrderTotal FROM OrdersAVG()- функция возвращает среднее значение числового столбца.SELECT AVG(column_name) FROM table_nameТеперь мы хотим найти среднее значение колонки "OrderPrice".Выполним запрос:SELECT AVG(OrderPrice) AS OrderAverage FROM Ordersеперь мы хотим найти клиентов, которые заказ OrderPrice больше чем в среднее значение колонки "OrderPrice".Выполним запрос:SELECT Customer FROM OrdersWHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)COUNT() - данная функция возвращает количество строк, которые соответствует определенным критериям.

COUNT(COLUMN_NAME) - функция возвращает определенная количество записей (NULL значения не будут учитываться) конкретного столбца:

SELECT COUNT(column_name) FROM table_name

Синтаксис SQL COUNT(*)

В COUNT (*) - функция возвращает все записи в таблице:

SELECT COUNT(*) FROM table_name

Синтаксис SQL COUNT(DISTINCT column_name)

COUNT(DISTINCT COLUMN_NAME) - возвращает только разные записи:

SELECT COUNT(DISTINCT column_name) FROM table_name

Синтаксис SQL COUNT(DISTINCT column_name)

COUNT(DISTINCT COLUMN_NAME) - возвращает только разные записи:

SELECT COUNT(DISTINCT column_name) FROM table_name

Теперь мы хотим подсчитать число заказов от клиента "Nilsen".

SELECT COUNT(Customer) AS CustomerNilsen FROM Orders

WHERE Customer='Nilsen'

HAVING - добавлена в SQL поскольку условие WHERE не может использовать функции.

SELECT column_name, aggregate_function(column_name)

FROM table_name