Чтение онлайн

на главную - закладки

Жанры

Понимание SQL

Грубер Мартин

Шрифт:

COMPUTE SUM OF amt ON odate;

Столбец в предложении ON, предварительно, должен быть использован в команде BREAK.

ФУНКЦИИ

Для SQL в стандарте ANSI, вы можете применять агрегатные функции для столбцов или использовать их значения в скалярных выражениях, таких например как - comm * 100. Имеется много других полезных функций, которые вы, вероятно встречали на практике.

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

МАТЕМАТИЧЕСКИЕ ФУНКЦИИ

Эти функции применяются для чисел.

ФУНКЦИЯ

ЗНАЧЕНИЕ

ABX(X)

Абсолютное значение из X (преобразование отрицательного или положительного значений в положительное )

CEIL (X)

X - является десятичным значением которое будет округляться сверху.

FLOOR (X)

X - является десятичным значением которое будет округляться снизу.

GREATEST(X,Y)

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

LEAST(X,Y)

Возвращает меньшее из двух значений.

MOD(X,Y)

Возвращает остаток от деления X на Y.

POWER(X,Y)

Возвращает значение X в степени Y.

ROUND(X,Y)

Цикл от X до десятичного Y. Если Y отсутствует, цикл до целого числа.

SING(X)

Возвращает минус если X < 0, или плюс если X > 0.

SQRT (X)

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

СИМВОЛЬНЫЕ ФУНКЦИИ

Эти функции могут быть применены для строк текста, либо из столбцов текстовых типов данных, либо из строк литерных текстов, или же комбинация из этих двух.

ФУНКЦИЯ

ЗНАЧЕНИЕ

LEFT(<string>,X)

Возвращает крайние левые(старшие) символы X из строки.

RICHT(<string>,X)

Возвращает символы X младшего разряда из строки

ASCII(<string>)

Возвращает код ASCII которым представляется строка в памяти компьютера.

CHR(<ASCIIcode>)

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

VALUE(<string>)

Возвращает математическое значение для строки. Считается что строка имеет тип CHAR или VARCHAR, но состоит из чисел. VALUE('3') произведет число 3 типа INTEGER.

UPPER(<string>)

Преобразует все символы строки в символы верхнего регистра.

LOWER(<string>)

Преобразует все символы строки в символы нижнего регистра.

INlTCAP(<string>)

Преобразует символы строки в заглавные буквы. В некоторых реализациях может иметь название - PROPER.

LENGTH(<string>)

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

<string>||<string>

Объединяет две строки в выводе, так чтобы после первой немедленно следовала вторая. (значек || называется оператором сцепления).

LPAD(<string >,X,'*')

Дополняет строку слева звездочками '*', или любым другим указанным символом, с колличестве, определяемом X.

RPAD(<string>,X, ")

То же самое что и LPAD, за исключением того, что дополнение делается справа.

SUBSTR(<string >,X,Y)

Извлекает Y символов из строки начиная с позиции X.

ФУНКЦИИ ДАТЫ И ВРЕМЕНИ

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

ФУНКЦИЯ

ЗНАЧЕНИЕ

DAY(<date>)

Извлекает день месяца из даты. Подобные же функции существуют для MONTH(МЕСЯЦ), YEAR(ГОД), HOUR(ЧАСЫ), SECOND(СЕКУНДЫ) и так далее.

WEEKDAY(<date>)

Извлекает день недели из даты.

ДРУГИЕ ФУНКЦИИ

Эта функция может быть применена к любому типу данных.

ФУНКЦИЯ

ЗНАЧЕНИЕ

NVL(<column>,<value>)

NVL (NULL Значение) будет меняться на значение <value> каждое NULL значение найденое в столбце <column>. Если полученное значение <column > не=NULL, NVL ничего не делает.

INTERSECT И MINUS

Команда UNION, как вы уже видели в Главе 14, может объединить два запроса, обьединив их вывод в один. Два других обычно имеющихся способа объединения отдельных запросов - это INTERSECT(Плюс) и MINUS(Минус). INTERSECT выводит только строки произведенные обоими перекресными запросами, в то время как MINUS выводит строки которые производятся одним запросом, но не другим. Следовательно, следующие два запроса

SELECT *

FROM Salespeople

WHERE city='London'

INTERSECT

SELECT *

FROM Salespeople

WHERE 'London' IN

(SELECT city

FROM Customers

WHERE Customers.snum=

Salespeople.snum);

выведут строки произведенные обоими запросами, производящими всех продавцов в Лондоне которые имели по крайней мере одного заказчика размещенного там также. С другой стороны, запрос

SELECT *

FROM Salespeople

WHERE city='London'

MINUS

SELECT *

FROM Salespeople

WHERE 'London' IN

(SELECT sity

FROM Customers

WHERE Customers.snum=

Salespeople.snum);

удалит строки выбранные вторым запросом из вывода первого, и таким образом будут выводены все продавцы в Лондоне которые не имели там заказчиков. MINUS иногда еще называют DIFFERENCE (ОТЛИЧИЕ)

АВТОМАТИЧЕСКИЕ ВНЕШНИЕ ОБЬЕДИНЕНИЯ

В Главе 14, мы обсуждали внешнее обьединение и показывали вам как выполнять его используя команду UNION. Некоторые программы базы данных имеют более непосредственный способ выполнения внешних обьединений. В некоторых реализациях, вводимый знак " + " после предиката, может выводить строки которые удовлетворяют условию также как и строки которые ему не удовлетворяют. В условии предиката может содержаться поле совпадающее для обеих таблиц, и NULL значения будут вставлены там, где такого совпадения не будет найдено. Например, предположим вы хотите видеть ваших продавцов и соответствующих им заказчиков, не исключая тех продавцов которым не назначено ни одного заказчика (хотя такого нет в наших типовых таблицах, но в действительности это возможно ) :

SELECT a.snum, sname, cname

FROM Salespeople a, Customers b

WHEREa.snum=b.snum(+);

Это является эквивалентом следующего объединения (UNION):

SELECT a.snum, sname, cname

FROM Salespeople a, Customers b

WHERE a.snum=b.snum

UNION

SELECT snum, sname, '_ _ _ _ _ _ _ _ _ _'

FROM Salespeople

WHERE snum NOT IN

(SELECT snum

FROM Customers);

Мы считаем что подчеркивания будут отображены NULL значениями( см. команду FORMAT ранее в этом приложении где описывалось отображение NULL значениями).

ОТСЛЕЖИВАНИЕ ДЕЙСТВИЙ

Ваша SQL реализация - достаточна хороша, если она доступна многим пользователями, чтобы обеспечивать для них некий способ слежения за действиями выполняемыми в базе данных. Имеются две основные формы чтобы делать это:

Journaling(Протоколирование) и Auditing(Ревизия).

Эти формы отличаются по назначению. Journaling, пименяется с целью защиты ваших данных, при разрушении вашей системы. Сначала Вы используете реализационно-зависимую процедуру чтобы архивировать текущее содержание вашей базы данных, поэтому копия ее содержания где-нибудь будет сохранена. Затем вы просматриваете протокол изменений сделанных в базе данных. Он сохраняется в некоторой области памяти, но не в главной памяти базы данных а желательно на отдельном устройстве, и содержит список всех команд которые произвели изменения в структуре или в содержании базы данных. Если у вас вдруг появились проблемы и текущее содержание вашей базы данных оказалось нарушенным, вы можете повторно выполнить все изменения зарегистрированные в протоколе на резервной копии вашей базы данных, и снова привести вашу базу данных в состояние которое было до момента последней записи в протокол. Типичной командой чтобы начать протоколирование, будет следующяя:

Поделиться:
Популярные книги

Двойник Короля 2

Скабер Артемий
2. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля 2

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Гримуар темного лорда IX

Грехов Тимофей
9. Гримуар темного лорда
Фантастика:
попаданцы
альтернативная история
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда IX

Мечников. Открытие века

Алмазов Игорь
4. Жизнь Лекаря с нуля
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Мечников. Открытие века

Тринадцатый IX

NikL
9. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Тринадцатый IX

Барон нарушает правила

Ренгач Евгений
3. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон нарушает правила

Кодекс Охотника. Книга IX

Винокуров Юрий
9. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга IX

Дважды одаренный. Том III

Тарс Элиан
3. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
юмористическое фэнтези
5.00
рейтинг книги
Дважды одаренный. Том III

Локки 10. Потомок бога

Решетов Евгений Валерьевич
10. Локки
Фантастика:
фэнтези
юмористическое фэнтези
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Локки 10. Потомок бога

Газлайтер. Том 12

Володин Григорий Григорьевич
12. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 12

Позывной "Князь" 4

Котляров Лев
4. Князь Эгерман
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Позывной Князь 4

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

Спокойный Ваня

Кожевников Павел Андреевич
1. Спокойный Ваня
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Спокойный Ваня

Жена со скидкой, или Случайный брак

Ардова Алиса
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Жена со скидкой, или Случайный брак