База данных / Презентации / 6_Язык запросов SQL
.pdfПриближенные числовые типы
•Тип REAL. Значения типа соответствуют числам с плавающей точкой одинарной точности. Точность определяется в реализации, но обычно совпадает с точностью одинарной плавающей арифметики.
•Тип DOUBLE PRECISION. Точность значений этого типа определяется в реализации, но она должна быть больше точности типа REAL.
•Тип FLOAT. Это параметризуемый тип, значение параметра p которого задает необходимую точность значений. Допустимый диапазон значений парамет-ра p определяется в реализации.
Операции с числовыми типами
•+
•-
•*
•/
•аргументы в предикатах
•пользовательские функции
mass*/((growth/100)*(growth/100))
Stud_ID |
mass |
growth |
calculation |
|
|
|
|
1 |
60 |
160 |
23,4375 |
2 |
90 |
187 |
25,73708 |
3 |
55 |
167 |
19,72104 |
Типы символьных строк
•Тип CHARACTER (CHAR). Значениями типа являются символьные строки. Конкретный набор допустимых символов как правило, включает набор символов ASCII. При определении столбца допускается использование спецификаций CHARACTER (x) и просто CHARACTER.
После определения столбца типа CHARACTER (x) СУБД будет резервировать место для хранения x символов этого столбца во всех строках соответствующей таблицы.
•Тип CHARACTER VARYING (VARCHAR). При определении столбца допускается использование спецификаций
CHARACTER VARYING (x) и просто CHARACTER
VARYING. Если в некоторой таблице определяется столбец типа CHARACTER VARYING (x), то в каждой строке этой таблицы значения данного столбца будут занимать ровно столько места, сколько требуется для сохранения соответствующей символьной строки.
Операции с символьными строками
•Операция конкатенации (обозначается в виде «||») возвращает символьную строку, произведенную путем соединения строкоперандов в том порядке, в каком они заданы.
•Функция выделения подстроки (SUBSTRING) принимает три аргумента – строку, номер начальной позиции и длину – и возвращает строку, выделенную из строки-аргумента в соответствии со значениями двух последних параметров.
•Функция UPPER возвращает строку, в которой все строчные буквы строки-аргумента заменяются прописными. Функция LOWER, наоборот, заменяет в заданной строке все прописные буквы строчными.
•Функция определения длины (CHARACTER_LENGTH,
OCTET_LENGTH, BIT_LENGTH) возвращает длину заданной символьной строки в символах, октетах или битах (в зависимости от вида вычисляющей функции) в виде целого числа.
•Функция определения позиции (POSITION) определяет первую позицию в строке S, с которой в нее входит заданная строка S1 (если не входит, то возвращается значение нуль).
Примеры операций со строками
1.fName||Lname
2.substring (fName from 1 for 2)
3.upper(fName)
4.lower(fName)
5.length(LName)
6.Position(‘ва’,LName,)
7.‘Здравствуйте’
Stud_ID |
fName |
LName |
|
|
|
1 |
Иван |
Иванов |
|
|
|
2 |
Петр |
Петров |
|
|
|
3 |
Вася |
Сидоров |
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
ИванИванов |
Ив |
иван ИВАН |
6 |
2 |
Здравствуйте |
|
ПетрПетров |
Пе |
петр ПЕТР |
6 |
0 |
Здравствуйте |
|
ВасяСидоров Ва |
вася ВАСЯ |
7 |
0 |
Здравствуйте |
Типы даты и времени
•Тип DATE. Значения этого типа состоят из компонентовзначений года, месяца и дня некоторой даты. Значение года состоит из четырех десятичных цифр и соответствует летоисчислению от Рождества Христова до 9999 г. Значение месяца состоит из двух десятичных цифр и варьируется от 01 до 12. Значение номера дня месяца состоит из двух десятичных цифр и варьируется от 01 до 31, хотя значение месяца даты может накладывать ограничения на возможность использования значений дня месяца 29, 30 и 31.
•Тип TIME. Значения этого параметризованного типа состоят из компонентов-значений часа, минуты и секунды некоторого времени суток. Значение часа состоит из двух десятичных цифр и варьируется от 00 до 23. Значение минуты состоит из двух десятичных цифр и варьируется от 00 до 59. Основное значение секунды также состоит из двух цифр, но может включать дополнительные цифры, представляющие доли секунды.
Примеры операций с датой/временем
1.extract(year from date) {month, day, week, weekday}
2.extract(hour from time) {minute, second, millisecond}
3.dateadd(year, NNN, Date) {month, day, week}
4.datediff(year, DateOld, Date) {month, day, week}
5. date+10
1 |
2 |
3 |
2011 |
18 |
09.01.2012 |
2011 |
10 |
03.01.2012 |
2012 |
8 |
15.01.2012 |
Exam_ID |
date |
Time |
|
|
|
1 |
31.12.2011 |
18:00 |
|
|
|
2 |
24.12.2011 |
10:30 |
|
|
|
3 |
05.01.2012 |
8:00 |
|
|
|
Булевский тип
•Булевский тип состоит из трех значений: true, false и unknown (соответствующие литералы обозначаются
TRUE, FALSE и UNKNOWN)
Предикат условия
•Предикаты сравнения { =, <>, >,<, >=,<= }, которые имеют традиционный смысл.
•Предикат Between A and В — принимает значения между А и В. Предикат истинен, когда сравниваемое значение попадает в заданный диапазон, включая границы диапазона.
•Предикат вхождения в множество IN (множество) истинен тогда, когда сравниваемое значение входит в множество заданных значений.
•Предикаты сравнения с образцом LIKE <шаблон>. Предикат LIKE требует задания шаблона, с которым сравнивается заданное значение, предикат истинен, если сравниваемое значение соответствует шаблону, и ложен в противном случае.
•символ подчеркивания (_) — для обозначения любого одиночного символа;
•символ процента (%) — для обозначения любой произвольной последовательности символов;
•остальные символы, заданные в шаблоне, обозначают самих себя.
•Предикат сравнения с неопределенным значением IS NULL.
Примеры предикатов
1.gruppa=333
2.birthday>=‘05.01.1993’
3.stud_id between 3 and 24
4.gruppa in (332, 333)
5.LName like ‘_ва%’
6.birthday is null
Stud_ID |
fName |
LName |
birthday |
gruppa |
|
|
|
|
|
1 |
Иван |
Иванов |
31.12.1992 |
332 |
|
|
|
|
|
2 |
Петр |
Петров |
24.12.1993 |
333 |
|
|
|
|
|
3 |
Вася |
Сидоров |
null |
444 |
|
|
|
|
|