Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Типы данных SQL. Оператор выбора SELECT




Оператор NULL

При работе с пустыми (не путать с нулевыми) значениями нолей следует использовать стандартную константу NULL ("пустой"). Она является значением любого поля, которое еще не заполнялось. Полю любого типа в качестве значения можно присвоить эту константу. Таким образом, это универсальное значение ("пустой") может являться универсальным маркером записи. На основании этого маркера происходит автоматический подсчет итогов в различных модификациях SQL (фраза - WITH ROLLUP). Но в реляционных структурах следует избегать возможности массового применения NULL. Так как это ставит под сомнение целостность данных.

Замечание! Так как NULL указывает на отсутствие значения, невозможно узнать каков будет результат любого сравнения с использованием NULL. Когда NULL сравнивается с любым значением, даже с другим таким же NULL, результат будет ни верным, ни неверным, он - неизвестен. Применение отрицания к неизвестной величине тоже ничего не дает:

NOT (неверное) - равняется верно,

NOT (неизвестное) - равняется неизвестно.

Значит, выражение типа 'ФИО = NULL' или 'ФИО IN (NULL)' будет неизвестно. Поэтому в SQL существует специальный оператор IS, который используется с ключевым словом NULL, для размещения значения NULL.

SELECT * FROM TAbonents WHERE Адрес IS NULL;

Существует два варианта записи выражения обратного действия:

SELECT * FROM TAbonents WHERE Адрес NOT NULL;

SELECT * FROM TAbonents WHERE NOT Адрес IS NULL;

5) DCL – язык управления доступом к данным (команды администрирования БД). В этот раздел входят команды, которые позволяют контролировать доступ пользователей к объектам БД, наделять их полномочиями.

CREATE USER - создание учетных записей;

ALTER USER - удаление учетных записей;

GRANT - привилегии доступа;

REVOKE - отмена привилегий;

ALTER PASSWORD – смена пароля;

6) Команды управления транзакциями. Транзакция - последовательность операций по изменению данных, которая может быть утверждена (Commit)либо отменена (RollBack). Использование транзакций позволяет корректно обрабатывать ошибочные ситуации, возникающие при одновременной работе сБД нескольких пользователей. Механизм транзакций реализован в современных СУБД.


В языке SQL существует шесть скалярных типов данных, определённых стандартом ISO. В некоторых случаях в целях упрощения манипулирования и преобразования, а также из-за сходства основных свойств, данные типов character и bit объединяются под понятием «строковые типы данных», а данные типов exact numeric и approximate numeric – под понятием «числовые типы данных». Итак, перечислим шесть основных типов данных:

1) character - символьный;

2) bit – битовый

3) exact numeric – точные числа

4) approximate numeric – округлённые числа

5) datetime – дата/время

6) interval – интервал

Символьные данные (тип character)

Символьные данные состоят из последовательностей символов, входящих в определенный создателями СУБД набор символов. Поскольку наборы символов являются специфическими для различных диалектов языка SQL, перечень символов, которые могут входить в состав значений данных символьного типа, также зависит от конкретной реализации. Чаще всего используются наборы символов ASCII и EBCDIC. Для определения данных символьного типа используется следующий формат:

CHARACTER [VARYING] [length]

При определении столбца с символьным типом данных параметр length используются для указания максимального количества символов, которые могут быть помещены в данный столбец (по умолчанию принимается значение 1). Символьная строка может быть определена как имеющая фиксированную или переменную (VARYING) длину. Если строка определена с фиксированной длинной значений, то при вводе в нее меньшего количества символов значение дополняется до указанной длины пробелами, добавляе­мыми справа. Если строка определена с переменной длинной значений, то при вводе в нее меньшего количества символов в базе данных будут сохранены только введенные символы, что позволяет достичь определенной экономии внешней памяти. Например, столбец NIN таблицы Staff (национальный страховой номер) имеет фиксированную длину в девять символов и может быть объявлен следующим образом:

nin CHAR(30)

Столбец Address таблицы Staff имеет переменную длину значения (максимум до 30 символов).

Битовые данные (тип bit)

Битовый тип данных используется для определения битовых строк, т.е. последо­вательности двоичных цифр (битов), каждая из которых может иметь значение либо 0, либо 1. Для определения данных битового типа используется формат, сходный с определением символьных данных:

BIT [VARYING] [length]

 

Точные числа (тип exact numeric)

Тип точных числовых данных используется для определения чисел, которые имеют точное представление в компьютере. Числа состоят из цифр, необязательной десятичной точки и необязательного символа знака. Данные точного числового типа определяются значностью (precision) и длиной дробной части (scale). Значность за­дает общее количество значащих десятичных цифр числа, в которое входят длина целой и дробной частей, но без учета самой десятичной точки. Дробная часть указы­вает количество дробных десятичных разрядов числа. Например, точное число -12.345 имеет значность, равную 5 цифрам, и дробную часть длиной 3. Особой разно­видностью точных чисел являются целые числа. Существует несколько способов оп­ределения данных точного числового типа:

NUMERIC [ precision [, scale] ]

DECIMAL [ precision [, scale] ]

INTEGER

SMALLINT

INTEGER может быть сокращено до INT a DECIMAL до DEC

Типы NUMERIC и DECIMAL предназначены для хранения чисел в десятичном формате. По умолчанию длина дробной части равна нулю, а принимаемая по умолчанию знач­ность зависит от реализации. Тип INTEGER используется для хранения больших поло­жительных или отрицательных целых чисел. Тип SMALLINT используется для хране­ния небольших положительных или отрицательных целых чисел. При использова­нии этого типа данных расход внешней памяти существенно сокращается. Максимальное абсолютное значение числа, которое может сохраняться в столбцах с типом данных SMALLINT, составляет 32 767. Для столбца Rooms таблицы Prop­erty for_Rent,, в котором сохраняются сведения о количестве комнат сдаваемого в аренду объекта, можно выбрать тип SMALLINT и объявить его следующим образом:

rooms SMALLINT

Столбец Salary таблицы Staff может быть объявлен следующим образом:

salary DECIMAL(7,2)

В этом случае максимальное значение заработной платы составит 99 999.99 фун­тов стерлингов.

 

Округленные числа (тип approximate numeric)

Тип округленных чисел используется для описания данных, которые нельзя точ­но представить в компьютере, - например, действительных чисел. Округленные числа или числа с плавающей точкой представляются в научной нотации, при кото­рой число записывается с помощью мантиссы, умноженной на определенную степень десятки (порядок), например: 10ЕЗ, +5.2Е6, -0.2Е-4. Существует несколько способов определения данных с типом округленных чисел:

FLOAT [precision]

REAL

DOUBLE PRECISION

Параметр precision задает значность мантиссы. Значность определений типа REAL и DOUBLE PRECISION зависит от конкретной реализации.

 

Дата и время (тип datetime)

Тип данных "дата/время" используется для определения моментов времени с не­которой установленной точностью. Примерами являются даты, отметки времени и время суток. Стандарт ISO разделяет тип данных "дата/время" на подтипы YEAR (Год), MONTH (Месяц), DAY (День), HOUR (Час), MINUTE (Минута), SECOND (Секунда), TIMEZONEJIOUR (Зональный час) и TIMEZONEJ1INUTE (Зональная минута). Два последних типа определяют час и минуты сдвига зонального времени по отношению к универ­сальному координатному времени (Гринвичскому времени). Поддерживается три ти­па полей даты/времени:

DATE

TIME [time__precislon] [WITH TIME ZONE]

TIMESTAMP [time__precislon] [WITH TIME ZONE]

Тип данных DATE используется для хранения календарных дат, включающих поля YEAR, MONTH и DAY. Тип данных TIME используется для хранения отметок времени, включающих поля HOUR, MINUTE и SECOND. Тип данных TIMESTAMP используется для со­вместного хранения даты и момента времени. Параметр time precision задает коли­чество дробных десятичных знаков, определяющих точность сохранения значения в поле SECOND. Если этот параметр опускается, по умолчанию его значение для столбцов типа TIME принимается равным нулю (т.е. сохраняются целые секунды), тогда как для полей типа TIMESTAMP он принимается равным 6 (т.е. отметки времени сохраня­ются с точностью до миллисекунд). Наличие ключевого слова WITH TIME ZONE опреде­ляет использование полей TIMEZONE HOUR и TIMEZONE MINUTE.

Данные типа interval

Данные с типом интервала используются для представления периодов времени. Любой интервальный тип данных состоит из набора отдельных полей: YEAR, MONTH, DAY, HOUR, MINUTE и SECOND. Существует два класса данных с интервальным типом: ин­тервалы год-месяц и интервалы день-время. В первом случае данные включают только два поля - YEAR и/или MONTH. Данные второго типа могут состоять из произ­вольной последовательности полей DAY, HOUR, MINUTE, SECOND. Данные интервального типа определяются следующим образом:

INTERVAL {{start_field TO end_field} single_datetime_field} start__ field = YEAR | MONTH | DAY [ HOUR | MINUTE

[(interval leading field precision)] end__field = YEAR [ MONTH | DAY | HOUR | MINUTE | SECOND

[ (fractional seconds precision)] single__datetlme_field = start_field | SECOND

[(interval leading field precision

[f fractional seconds precision])]

Во всех случаях для параметра start_field необходимо указать размерность пер­вого поля (interval leading field precision), которая по умолчанию принимается равной двум. Например:

INTERVAL YEAR(2) ТО MONTH

Это объявление описывает интервал времени, значение которого может находить­ся между 0 годом, 0 месяцем и 99 годом, 11 месяцем. Еще один пример:

INTERVAL HOUR TO SECOND(4)

Это объявление описывает интервал времени, значение которого может меняться от 0 часов, 0 минут, 0 секунд до 99 часов, 59 минут 59.9999 секунды. (Значность первого поля по умолчанию устанавливается равной 2, а число дробных десятичных знаков для секунд явно задано равным 4.)

 




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 970; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.