Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Бази даних-20210115T104840Z-001 / Lab5R-Functions-Group-by-Having-Order-by-NEW

.pdf
Скачиваний:
6
Добавлен:
15.01.2021
Размер:
782.02 Кб
Скачать

 

 

Лабораторная работа 5

 

 

 

Функции SQL Oracle. Дополнительные фразы предложения SELECT

 

 

 

Содержание

 

1.

Цели лабораторной работы .................................................................................................................................

1

2.

Теоретические основы ...........................................................................................................................................

2

 

2.1. Функции SQL Oracle......................................................................................................................................

2

 

2.1.1. Агрегатные функции ..............................................................................................................................................

2

 

2.1.2. Функции одной строки ..........................................................................................................................................

3

 

2.2. Фразы GROUP BY и HAVING .....................................................................................................................

9

 

2.2.1. Синтаксис:...............................................................................................................................................................

9

 

2.2.2. Назначение ..............................................................................................................................................................

9

 

2.3. Фраза ORDER BY .........................................................................................................................................

10

 

2.3.1. Синтаксис:.............................................................................................................................................................

10

 

2.3.2. Назначение ............................................................................................................................................................

10

3.

Описание и примеры.............................................................................................................................................

10

 

3.1. Агрегатные функции ...................................................................................................................................

10

 

3.2. Фразы GROUP BY и HAVING ...................................................................................................................

11

 

3.3. Фраза ORDER BY .........................................................................................................................................

12

4.

Варианты заданий................................................................................................................................................

13

 

4.1. Вариант 1........................................................................................................................................................

15

 

4.2. Вариант 2........................................................................................................................................................

15

 

4.3. Вариант 3........................................................................................................................................................

16

 

4.4. Вариант 4........................................................................................................................................................

17

 

4.5. Вариант 5........................................................................................................................................................

18

 

4.6. Вариант 6........................................................................................................................................................

18

 

4.7. Вариант 7........................................................................................................................................................

19

 

4.8. Вариант 8........................................................................................................................................................

20

 

4.9. Вариант 9........................................................................................................................................................

21

 

4.10.

Вариант 10 ...........................................................................................................................................

23

 

4.11.

Вариант 11 ...........................................................................................................................................

24

 

4.12.

Вариант 12 ...........................................................................................................................................

25

 

4.13.

Вариант 13 ...........................................................................................................................................

26

 

4.14.

Вариант 14 ...........................................................................................................................................

27

 

4.15.

Вариант 15 ...........................................................................................................................................

28

 

4.16.

Вариант 16 ...........................................................................................................................................

29

 

4.17.

Вариант 17 ...........................................................................................................................................

30

 

4.18.

Вариант 18 ...........................................................................................................................................

31

5.

Контрольные вопросы..........................................................................................................................................

32

1.Цели лабораторной работы

Изучить функции SQL Oracle, а также фразы GROUP BY, HAVING, ORDER BY предложения SELECT.

1

Приобрести практический опыт по использованию фраз GROUP BY, HAVING, ORDER BY предложения SELECT с использованием SQL*Plus.

2.Теоретические основы

2.1. Функции SQL Oracle

Функции SQL являются встроенными в Oracle и доступны для использования в соответствующих фразах различных предложений SQL. Не смешивайте функции SQL с пользовательскими функциями, написанными на языке PL/SQL.

Если вы вызываете функцию со значением аргумента null, то она автоматически возвращает значение null. Единственными функциями, которые соответствуют этому правилу, являются CONCAT, DECODE, DUMP, NVL и REPLACE.

Имеется следующие две категории функций SQL:

Функции Эти функции возвращают единственное значение для каждой строки таблицы. Эти функции одной могут использоваться в списке select (если предложение SELECT не содержит фразы GROUP BY) строки и во фразе WHERE.

Агрегат- Они возвращают одно значение на основании совокупности строк таблицы. Агрегатные ные функции могут использоваться в списке select и фразе HAVING.

функции

2.1.1.Агрегатные функции

Если вы используете фразу GROUP BY в предложении SELECT, SQL разделяет строки таблицы на группы. В запросе, содержащем фразу GROUP BY, все элементы в списке select должны использоваться либо выражения из фразы GROUP BY, либо выражения, содержащие агрегатный функции, либо константы. SQL применяет агрегатные функции в списке select к каждой группе строк и возвращает единственную результирующую строку в качестве результата для каждой группы.

Если фраза GROUP BY отсутствует, Oracle применяет агрегатную функция в списке select ко всем строкам таблицы запроса. Если агрегатная функция используется во фразе HAVING, то она используется для определения условия удаления групп строк, задаваемых фразой GROUP BY. Фразы GROUP BY и HAVING будут изучены в этой Лаб. позже.

Многие агрегатные функции используют следующие фразы:

DISTINCT

- указывает, что агрегатная функция должна принимать в расчет только различные значения из

 

аргумента.

ALL

- указывает, что агрегатная функция должна принимать в расчет все значения из аргумента,

 

включая и повторяющиеся. При отсутствии этих фраз по умолчанию подразумевается ALL.

Все агрегатные функции за исключением COUNT(*) игнорируют значения null.

Вы можете использовать функцию NVL в аргументе агрегатной функции для замены значения null.

Если аргумент агрегатной функции не имеет строк или все строки имеют значения null, то агрегатная функция возвращает значение null

Имеются следующие агрегатные функции:

Функция

Синтаксис

 

Назначение

 

Пример

 

 

 

 

 

 

 

Возвращает количество строк в

SELECT COUNT(*) AS Total

 

 

запросе. Если указано expr, то

 

 

возвращается количество строк, в

FROM

TEACHER;

 

 

которых expr (в частном случае expr

SELECT COUNT(post)

 

 

– это столбец) не равно null. Можно

FROM

TEACHER;

COUNT

 

подсчитать либо все строки (ALL),

SELECT COUNT(DISTINCT post)

 

 

 

 

 

 

 

либо те,

в которых значения expr

FROM

TEACHER;

 

 

являются различными (DISTINCT).

 

 

 

 

Если указана звездочка (*), то

 

 

 

 

функция

возвращает количество

 

 

 

 

всех строк, включая и дубликаты и

 

 

2

 

 

те, которые имеют null.

 

 

 

 

 

 

 

 

 

 

Возвращает среднее значение среди

 

 

 

 

всех значений выражения expr по

SELECT

AVG(Salary)

AVG

 

всем строкам. Значения NULL не

FROM

TEACHER

 

 

учитываются

при

вычислении

WHERE

Post='professor';

 

 

функции

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает минимальное значение

 

 

MIN

 

expr

по

всем строкам. Значения

SELECT

MIN(Hiredate)

 

NULL

не

учитываются

при

FROM

TEACHER;

 

 

 

 

вычислении функции

 

 

 

 

 

 

 

 

 

 

 

Возвращает максимальное значение

SELECT

MAX(Hiredate)

MAX

 

expr

по

всем строкам. Значения

 

NULL

не

учитываются

при

FROM

TEACHER

 

 

 

 

вычислении функции

 

 

WHERE

Name LIKE 'А%';

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает сумму значений expr по

SELECT

SUM(Salary)

SUM

 

всем строкам. Значения NULL не

 

учитываются

при

вычислении

FROM

TEACHER

 

 

функции

 

 

 

 

WHERE

Post='assistant';

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает

стандартное отклоне-

 

 

 

 

ние x,. SQL вычисляет стандартное

SELECT

STDEV(Salary)

STDEV

 

отклонение как корень квадратный

 

 

от значения, вычисленного по

FROM

TEACHER;

 

 

функции VARIANCE.

 

 

 

 

 

 

 

 

 

 

 

Возвращает variance x,. SQL

 

 

 

 

вычисляет variance х по формуле:

 

 

VARIANCE

 

 

 

 

 

 

 

SELECT

VARIANCE(Salary)

 

 

 

 

 

 

 

FROM

TEACHER;

 

 

где:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi -

один

из

элементов

x.

 

 

 

 

n – количество элементов во

 

 

 

 

множестве x. Если n = 1, то variance

 

 

 

 

равен 0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.1.2.Функции одной строки

Имеются следующие типі функций одной строки:

числовые функции,

символьные функцииc,

функции даты,

функции преобразования,

другие функции одной строки.

Мы обсудим только наиболее часто используемые функции этих типов.

2.1.2.1.Числовые функции

Функ-

Синтаксис

 

Назначение

 

 

Пример

ция

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SELECT

ABS(-15)

ABS

 

Возвращает абсолютное значение n.

 

"Absolute"

 

 

 

 

 

 

FROM

DUAL;

 

 

 

 

 

 

 

 

CEIL

 

Возвращает

наименьшее

целое,

которое

SELECT

CEIL(15.7) "Ceil"

 

больше или равно n.

 

 

FROM

DUAL;

 

 

 

 

 

 

 

 

 

 

 

 

FLOOR

 

Возвращает

наибольшее

целое,

которое

SELECT

FLOOR(15.7)

 

 

 

 

 

 

 

 

3

 

 

меньше или равно n.

 

 

 

"Floor"

 

 

 

 

 

 

 

 

 

FROM

DUAL;

 

 

 

 

 

 

 

 

 

 

SIN,

 

Возвращает

sin,

cos или

tan n

(угол

в

SELECT SIN(30*3.1415/180)

COS,

 

 

радианах).

 

 

 

 

 

FROM

DUAL;

TAN

FUN – имя функции.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SINH,

 

озвращает гиперболический sin, cos или tan

SELECT

SINH(1) AS

COSH,

 

"Hyperbolic sine of 1"

 

n.

 

 

 

 

 

TANH

FUN- имя функции.

 

 

 

 

 

FROM

DUAL;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает e в степени n, где

 

 

SELECT

EXP(4) AS

EXP

 

 

 

"e to the 4th power"

 

 

e = 2.71828183 ...

 

 

 

 

FROM

DUAL;

 

 

 

 

 

 

 

 

 

 

 

 

 

LN

 

Возвращает натуральный логарифм n, где n

SELECT

LN(95) AS

 

больше или равно 0.

 

 

 

"Natural log of 95"

 

 

 

 

 

FROM

DUAL;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает логарифм n по основанию m.

 

 

 

 

Основание

m

может

быть

любым

SELECT

LOG(10,100) AS

LOG

 

положительным числом, отличным от 0 или

"Log base 10 of 100"

 

 

1 и n могжет быть любым положительным

FROM

DUAL;

 

 

числом.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MOD

 

Возвращает

остаток от деления

m на

n.

SELECT

MOD(11,4)

 

Возвращает m, если n = 0.

 

 

 

FROM

DUAL;

 

 

 

 

 

 

 

 

 

 

 

 

Вовращает m в степени n. Основание m и

 

 

POWER

 

показатель степени n могут быть любыми

SELECT

POWER(3,2)

 

числами, однако, если m отрицательное, то

FROM

DUAL;

 

 

 

 

n долдно быть целым числом.

 

 

 

 

 

 

 

 

 

 

 

Если n<0, то функция возвращает -1. Если

SELECT

SIGN(-15) "Sign"

SIGN

 

n=0, то функция возвращает 0. Если n>0, то

 

 

функция возвращает 1.

 

 

 

FROM

DUAL;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает корень квадратный от n.

 

 

SQRT

 

Значение n не может быть отрицательным.

SELECT

SQRT(26)

 

SQRT возвращает в качестве результата

FROM

DUAL;

 

 

 

 

число типа "real".

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает n округленное до m позиции

 

 

 

 

справа от десятичной точки. Если

m

SELECT

ROUND(15.193,1)

ROUND

 

опущено, n округляется до

позиции 0.

m

AS

"Round"

 

может быть отрицательным для округления

 

 

FROM

DUAL;

 

 

до позиции слева от десятичной точки. m

 

 

должно быть целым числом.

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает n, отсеченное до позиции m

 

 

 

 

справа от десятичной точки. Если m

 

 

 

 

опщено, n отсекается до позиции 0. m

SELECT

TRUNC(15.79,1)

TRUNC

 

может быть отрицательным. В этом случае

AS

"Truncate"

 

 

отсечение (устанавливаются в нулевое

FROM

DUAL;

 

 

значение) m цифр слева от десятичной

 

 

 

 

точки.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.1.2.2. Символьные функции

Имеется два типа символьный функций:

возвращающие символьное значение и

возвращающие числовое значение.

ОНи обсуждаются ниже. Некоторые из них представлены в упрощенном виде.

Character functions returning character values

4

Функ-

Синтаксис

 

 

 

 

 

Назначение

 

 

 

 

Пример

ция

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает символ, имеющий бинарный

 

 

 

 

эквивалент значению n либо согласно

SELECT

CHR(67)

CHR

 

набору

 

символов

базы

данных,

либо

 

 

согласно

 

 

национальному

 

набору

FROM

DUAL;

 

 

символов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает строку char1, конкатениро-

 

 

CONCAT

 

ванную

со строкой char2. Эта функция

SELECT

CONCAT('AB','CD')

 

эквивалентна

оператору

кнокатенации

FROM

DUAL;

 

 

 

 

строк (||).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает char, в которой первые буквы

 

 

 

 

каждого

 

слова

преобразованы

в

 

 

 

 

прописные,

 

все

остальные

буквы

 

 

INITCAP

 

преобразуются в строчные. Словами

SELECT INITCAP('the soap')

 

считаются последовательности символов,

FROM

DUAL;

 

 

 

 

ограниченные пробелами или символами,

 

 

 

 

которые

 

не

являются

буквенно-

 

 

 

 

цифровыми.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает char со всеми буквами,

SELECT LOWER('Mr. Scott')

LOWER

 

преобразованными в строчные. Возвраща-

AS "lower case"

 

емое значение имеет тип аргумента char

 

 

FROM

DUAL;

 

 

(CHAR или VARCHAR2).

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает char со всеми буквами,

SELECT UPPER('Mr. Scott')

UPPER

 

преобразованными в прописные. Возвра-

AS "UPPER CASE"

 

щаемое

значение

имеет

тип

аргумента

 

 

FROM

DUAL;

 

 

char (CHAR или VARCHAR2).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает char1, дополненную слева до

 

 

 

 

длины

n

последовательностью

 

символов

SELECT LPAD('Page',8,'*.')

LPAD

 

из

char2; char2 по умолчанию равно

 

единственному пробелу. Если char1

AS "LPAD example"

 

 

FROM

DUAL;

 

 

длиннее n, то char1 усекается до n

 

 

символов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает char1, дополненную справа

 

 

 

 

до

длины

 

n

последовательностью

SELECT RPAD('Page',8,'*.')

RPAD

 

символов из char2; char2 по умолчанию

 

равно единственному пробелу. Если char1

AS "RPAD example"

 

 

FROM

DUAL;

 

 

длиннее n, то char1 усекается до n

 

 

символов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Удаляет в char те символы слева, которые

 

 

 

 

присутствуют в set; set по умолчанию

SELECT LTRIM('xyxYZ','xy')

LTRIM

 

равен единственному пробелу.

Если char

AS "LTRIM example"

 

 

является строковым литералом, то его

FROM

DUAL;

 

 

следует заключить в одиночные кавычки.

 

 

 

 

 

 

 

 

 

Удаляет в char те символы справа,

 

 

 

 

которые присутствуют в set; set по

SELECT RTRIM('xYZxy','xy')

RTRIM

 

умолчанию

 

равен

единственному

 

пробелу. Если char является строковым

AS "RTRIM example"

 

 

FROM

DUAL;

 

 

литералом, то его следует заключить в

 

 

 

 

одиночные кавычки.

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает char, в которой все

SELECT REPLACE('JACK and

REPLACE

 

вхождения строки search заменяются на

JUE','j', 'BL')

 

строку replace. Если строка опущена или

AS "REPLACE example"

 

 

 

 

равна

replace

null, то

все вхождения

FROM

DUAL;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

строки search удаляются. Если строка

 

 

 

 

search равна null, то возвращается char.

 

 

 

 

Эта

 

функция

 

предоставляет

 

 

 

 

дополнительные

возможности

по

 

 

 

 

сравнению с функцией TRANSLATE.

 

 

 

 

TRANSLATE

предоставляет возможность

 

 

 

 

произвести

посимвольную

замену.

 

 

 

 

REPLACE, в свою очередь, позвроляет

 

 

 

 

заменить одну подстроку на другую, а

 

 

 

 

также произвести удаление подстрок.

 

 

 

 

 

 

 

 

 

 

 

Возвращает подстроку строки char,

 

 

 

 

начинающуюся с символа m, и

 

 

 

 

содержащую n символов.

 

 

 

 

 

 

 

Если

аргумент m

=

0,

то

он

SELECT SUBSTR('ABCDE',2,2)

 

 

рассматривается равным 1. Если m

AS "SUBSTR example"

 

 

 

 

SUBSTR

 

положительный, то нахождение началь-

FROM

DUAL;

 

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

 

 

 

 

SELECT SUBSTR('ABCDE',-4,2)

 

 

char. Если m отрицательный, то Oracle

AS "SUBSTR example"

 

 

начальный символ отыскивается слева от

FROM

DUAL;

 

 

char. Если n отсутствует, SQL возвращает

 

 

 

 

все символы до конца char. Если n

 

 

 

 

меньше 1, возвращается null.

 

 

 

 

 

 

 

 

 

 

 

 

Вовращает char, в которой все вхождения

 

 

 

 

символа из from заменяются на

 

 

 

 

соответствующий символ из to. Символы

 

 

 

 

из char, которые отсутствуют в from, не

 

 

 

 

заменяются. Аргумент from может

 

 

 

 

содержать больше символов, чем to. В

SELECT TRANSLATE('ABCDE',

TRANSLAT

 

этом случае дополнительные символы в

'ABCD', '1234')

 

конце

from

не

имеют

соответствующих

E

 

AS "TRANSLATE example"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

символов

в

to.

 

Если

такие

FROM

DUAL;

 

 

дополнительные

символы

появляются

в

 

 

 

 

char, то они удаляются. Нельзя

 

 

 

 

использовать пустую строку to для

 

 

 

 

удаления всех символов из char, которые

 

 

 

 

содержатся в from.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Строковые функции, которые возвращают числовые значения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Функ-

Синтаксис

 

 

 

Назначение

 

 

 

Пример

ция

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Производит поиск в строке char1,

 

 

 

 

 

 

 

 

 

 

начиная с позиции n, m-го вхождения

 

 

 

 

 

строки char2 и возвращает позицию

 

 

 

 

 

символа в char1, в которой такое

SELECT INSTR('CORPORATE

 

 

 

вхождение первого символа из char2

 

FLOOR','OR','3','2')

 

 

 

найдено. Если n отрицательный,

FROM

DUAL;

 

 

 

Oracle производит поиск с конца

 

 

INSTR

 

 

строки

char1. Значение m должно

 

 

 

 

 

быть положительным. По умлочанию

 

 

значения n и m равны 1; это означает, что Oracle производит поиск, начиная с первого символа char1 и отыскивает первое вхождение строки char2. Возвращаемое значение вычисляется относительно начала строки char1 не зависимо от значения n и выражается в количестве символов. Если поиск оказался безуспешным (то есть char2 не присутствует m раз после n-го символа char1) то возвращается значение 0.

6

 

 

Возвращает

длину

char

в

 

 

 

 

количестве

символов.

Если

char

SELECT INSTR('CORPORATE

LENGTH

 

имеет

тип

CHAR,

то

в

длину

 

FLOOR','OR','3','2')

 

включаются

все

расположенные

 

 

 

 

FROM

DUAL;

 

 

справа пробелы. Если char равно

 

 

 

 

null, то функция возвращает null.

 

 

 

 

 

 

 

 

Возвращает десятичное представление

SELECT ASCII('Q')

ASCII

 

первого

символа из

char в

наборе

FROM

DUAL;

 

 

символов базы данных.

 

 

 

 

 

 

 

 

 

 

2.1.2.3.Функции даты

Функции даты оперируют со значениями типа DATE. Все функции даты возвращают значение типа DATE, за исключением MONTHS_BETWEEN, которая возвращает число.

Функ-

Синтаксис

 

 

Назначение

 

 

Пример

ция

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает дату d плюс n месяцев.

 

 

 

 

Аргумент n может быть любым целым

 

 

 

 

числом. Если d последний день месяца

SELECT

TO_CHAR(

ADD_

 

или

если

результирующий

месяц

ADD_MONTHS(Hiredate,1),

 

содержит меньше дней, чем компонента

'DD-MON-YYYY')

 

 

MONTHS

 

 

 

 

дня в d, то результат будет содержать

FROM

TEACHER

 

 

 

 

последний день результирующего месяца.

WHERE

Name = 'John';

 

 

В противном случае результат будет

 

 

 

 

иметь ту же компоненту дня, что и d.

 

 

 

 

 

 

 

 

 

 

 

Возвращает

дату с

последним

днем

SELECT SYSDATE,

LAST_

 

месяца из

d. Можно использовать эту

LAST_DAY(SYSDATE),

DAY

 

функцию для определения сколько дней

LAST_DAY(SYSDATE)-SYSDATE

 

 

осталось в текущем месяце.

 

FROM DUAL;

 

 

 

 

 

 

 

Возвращает дату того дня недели,

 

 

 

 

который указан в char и который следует

SELECT NEXT_DAY(

NEXT_

 

за датой d.

Аргумент char должен быть

'15-MAR-98','TUESDAY')

DAY

 

названием дня недели,

в полном виде или

AS "NEXT DAY"

 

 

сокращенном, заданным согласно языка,

FROM DUAL;

 

 

используемого в вашем сеансе работы.

 

 

 

 

 

 

 

 

 

 

 

Возвращает

количество месяцев

между

 

 

 

 

датами d1 и d2. Если дата d1 позже, чем

SELECT MONTHS_BETWEEN (

 

 

дата d2, то результат положителен; если

 

 

раньше, то отрицателен. Если d1 и d2

TO_DATE('28.10.2002',

 

 

 

 

MONTHS_

 

содержат либо одну и ту же компоненту

 

'DD.MM.YYYY'),

 

дня,

либо указанные дни являются

TO_DATE('28.10.2002',

BETWEEN

 

 

последними в месяце, то результат всегда

 

 

 

 

 

'DD.MM.YYYY'))

 

 

 

 

 

 

 

 

 

 

целое число. В противном случае Oracle

FROM

DUAL

 

 

дробную часть месяцев с на основе 31-

 

 

 

 

дневного месяца и с учетом разницы в

 

 

 

 

компонентах времени дат d1 и d2

 

 

 

 

 

 

 

 

 

Возвращает дату и время во временной зоне z2, когда дата и время в

 

 

временной зоне z1 равна d. Аргументы z1 и z2 могут быть следующими

 

 

текстовыми строками:

 

 

 

 

NEW_

 

AST, ADT - Atlantic Standard or Daylight Time

 

 

BST, BTD - Bering Standard or Daylight Time

 

TIME

 

 

 

 

 

 

 

 

 

 

 

 

CST, CDT - Central Standard or Daylight Time

 

 

 

EST, EDT - Eastern Standard or Daylight Time

 

 

 

GMT - Greenwich Mean Time

 

 

 

 

 

HST, HDT - Alaska-Hawaii Standard Time or Daylight Time

7

 

 

MST, MDT - Mountain Standard or Daylight Time

 

 

NST - Newfoundland Standard Time

 

 

 

PST, PDT - Pacific Standard or Daylight Time

 

 

YST, YDT - Yukon Standard or Daylight Time

 

 

Возвращает текущую дату и время.

SELECT TO_CHAR(SYSDATE,

SYSDATE

 

Аргументы отсутствуют. Эту функцию

 

нельзя

использовать

в

условии

'DD-MM-YYYY HH24:MI:SS)'

 

 

FROM DUAL;

 

 

ограничения CHECK.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.1.2.4.Функции преобразования

Эти функции преобразуют значение из одного типа в другой. Далее приводятся основные функции конвертирования.

Функ-

Синтаксис

 

 

Назначение

 

Пример

ция

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Преобразут d типа DATE в тип VARCHAR2 в формте, определенном

 

 

форматом даты fmt. Если fmt опущен, то

d преобразуется в значение

 

 

VARCHAR2 согласно формата даты по умолчанию. Наиболее часто

 

 

используемые элементы формата fmt следующие:

 

 

- / , . ; : 'text'- знаки пунктуации и текст в кавычках представляется в

 

 

результате как есть,

 

 

 

 

D

– День недели (1-7)

 

 

TO_

 

DAY

– Название дня, дополненное пробелами до 9 символов

CHAR

 

DD

День месяца (1-31)

 

 

 

 

(преоб-

 

DDD

День года (1-366)

 

 

разова-

 

 

 

 

HH

Час дня (1-12)

 

 

ние

 

 

 

 

 

Час дня (1-12)

 

 

даты)

 

HH12

 

 

 

 

HH24

Час дня (0-23)

 

 

 

 

MI

- Минуты (0-59)

 

 

 

 

MM

- Месяц в виде двух цифр (01-12; JAN = 01)

 

 

MON

- Сокращенное название месяца

 

 

MONTH

- Название месяца, дополненное до 9 символов

 

 

YYYY

- Год в виде 4-х цифр

 

 

 

YYY,YY, Y - Последние 3, 2 или 1 цифрі года.

 

 

Преобразует n типа NUMBER в значение типа VARCHAR2, с использование

 

 

факультативного формата fmt. Если fmt опущен, то n преобразуется в

 

 

значение типа VARCHAR2 таким образом, чтобы содержать все значащие

 

 

цифры. Наиболее часто используемые элементы формата fmt следующие:

 

 

Элемент

Пример

Описание

 

 

TO_

 

,

9,999

 

Возвращает запятуюв указанной позиции. Можно

CHAR

 

 

 

 

использовать много зяпятых в формате.

(прео-

 

. (точка)

99.99

 

Возвращает десятичную точку в указанной позиции.

бразо-

 

$

$9999

 

Возвращает значение с знаком доллара в начале.

вание

 

9

9999

 

Возвращает число с указанным количеством цифр с

числа)

 

 

 

 

пробелом в начале, если число положительное, или

 

 

 

 

 

минусом, если число отрицательное.

 

 

0

0999

 

Возвращает нули в начале.

 

 

 

9990

 

Возвращает нули в конце.

 

 

FM

FM90.9

Возвращает число без пробелов к начале и конце

 

 

EEEE

9.9EEEE Возвращает значение в научной нотации.

 

 

Преобразует значение char типа CHAR или

UPDATE TEACHER SET

TO_

 

VARCHAR2,

содержащее

строковое

salary = salary +

NUMBER

 

представление

 

числа в формате fmt, в

TO_NUMBER('100.00','99.9')

 

 

значение типа NUMBER.

 

WHERE Name = 'John';

 

 

 

 

 

 

 

 

8

TO_

DATE

Преобразует char типа CHAR или VARCHAR2 в значение типа DATE. fmt – это формат даты, определяющий формат представления даты в char. Если fmt опущен, то char должен содержать строковое представление даты ы формате по умолчанию.

UPDATE TEACHER SET Hiredate = TO_DATE( 'October 30, 2002, 11:00', 'Month dd, YYYY, HH:MI') WHERE Name = 'John';

2.1.2.5.Другие функции одной строки

Приведем функции одной строки, котоые не попадают ни под одну из указанных ранее категорий.

Функция

Синтаксис

 

 

Назначение

 

 

Пример

 

 

 

 

 

 

 

Возвращает наибольшее из значений в

 

 

 

 

списке exprs.

Все exprs после первого

SELECT

GREATEST(

 

 

 

 

 

 

GREATEST

 

неявно

преобразуются к типу первого

'HARRY','HARRIOT','HAROLD')

 

expr

до

выполнения

сравнения.

AS "Greatest"

 

 

 

 

Сравнение

сиволов базируется на

FROM

DUAL;

 

 

наборе символов базы данных.

 

 

 

 

 

 

 

 

 

Возвращает наибольшее из значений в

SELECT

LEAST(

 

 

 

 

 

 

LEAST

 

списке exprs. Все exprs после первого

'HARRY','HARRIOT','HAROLD')

 

неявно преобразуются к типу первого

AS "Least"

 

 

 

 

expr до выполнения сравнения.

FROM

DUAL;

 

 

 

 

 

 

 

Если expr1 равно null, то возвращается

 

 

 

 

expr2; если expr1 не null, возвращается

SELECT Name,

 

 

expr1.

Аргументы expr1

иexpr2 могут

NVL

 

иметь любой тип данных. Если их типы

 

NVL(TO_CHAR(Salary),

 

 

'NOT APPLICABLE')

 

 

данных разные, то SQL преобразует

 

 

 

FROM TEACHER;

 

 

expr2 в тип данных expr1 прежде, чем их

 

 

сравнивать.

 

 

 

 

 

 

 

 

 

USER

 

Возвращает текущего пользователя SQL

SELECT

USER

 

с типом данных VARCHAR2

 

FROM

DUAL;

 

 

 

 

 

 

 

 

 

 

 

2.2. Фразы GROUP BY и HAVING

2.2.1.Синтаксис:

2.2.2.Назначение

Фраза GROUP BY определяет столбец или список столбцов (выражение над столбцом или список выражений над столбцами), которые используются для группирования строк таблицы. Выражения фразы GROUP BY могут содержать любые столбцы из таблиц фразы FROM, не зависимо от того, появляетсяь ли столбец во списке select. Если запрос содержит фразу GROUP BY, то список select может содержать только:

константы,

выражения, включающие только агрегатные функции,

выражения из фразы GROUP BY,

выражения, которые включают упомянутые выше выражения.

Областью действия агрегатной функции являются все строки каждой группы. Таким образом, SQL применяет агрегатные функции в списке select к каждой группе строк и возвращает единственную результирующую строку для каждой группы. То есть, каждая сформированная группа порождает одну результирующую строку.

9

Назначение фразы HAVING – определить условие выбора на группах строк. Она ограничивает группы строк теми, на которых указанное условие равно TRUE..

Указывайте GROUP BY и HAVING фразы после фразы WHERE..

См. также описание синтаксиса для выражений в ПРиложении Лаб.4 и синтаксис описания условий в Приложении Лаб.2 .

2.3. Фраза ORDER BY

2.3.1.Синтаксис:

2.3.2.Назначение

Фраза ORDER BY позволяет упорядочить строки результата запроса. При отсутствии этой фразы нет ни какой гарантии, что будучи выполненным дважды, запрос выдаст строки результата в одном и том же порядке.

expr – означает, что строки упорядочиваются согласно значения выражения expr. Выражение может базироваться на столбцах из списка select или на столбцах из таблиц фразы FROM.

position – упорядочивает строки на основании значений выражения в указанной позиции списка select; position должно быть целым числом.

c_alias – упорядочивает строки на основании значения столбца (выражения), который имеет указанный алиас в списке select.

ASC и DESC указывают порядок сортировки: по возрастанию или убыванию. ASC – знчение по умолчанию.

Можно указать множество выражений во фразе ORDER BY. В этом случае производится многоуровневая сортировка. Oracle располагает значения null в конце при сортировке в порядке возрастания и в начале при сортировке в порядке убывания.

Ограничения:

Если вы указали фразу DISTINCT, то фраза ORDER BY должна ссылаться только на столбцы из списка select.

Если также задана фраза GROUP BY, то фраза ORDER BY ограничивается следующими выражениями:

-Константы

-Агрегатные функции

-Выражения, идентичные тем, что используются во фразе group by

-Выражения, включающие приведенные выше выражения, которые вычисляют одно и то же значение для всх строк в группе.

3.Описание и примеры

3.1. Агрегатные функции

Агрегатные функции без фраз WHERE и GROUP BY. Если фразы WHERE и GROUP BY отсутствуют, то областью действия агрегатной функции являются все строки таблицы.

Пример. Сколько строк в таблице TEACHER:

SELECT COUNT(*) AS Total_rows_in_TEACHER_table FROM TEACHER;

Пример. Чему равна сумма фондов всех факультетов:

SELECT SUM(Fund)

FROM FACULTY;

Пример. Какой средний фонд финансирования кафедр:

SELECT AVG(Fund)

10

Соседние файлы в папке Бази даних-20210115T104840Z-001