Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу ИСиТ.docx
Скачиваний:
6
Добавлен:
07.02.2024
Размер:
1.07 Mб
Скачать

Функции даты (времени)

Таблица 5

Часть даты

Аббревиатура

Значения

1) год

1) yy

1) 17539999

2) квартал

2) qq

2) 14

3) месяц

3) mm

3) 112

4) день года

4) dy

4) 1366

5) день

5) dd

5) 131

6) неделя

6) wk

6) 154

7) день недели

7) dw

7) 17 (1-Sunday)

8) час

8) hh

8) 023

9) минута

9) mi

9) 059

10) секунда

10) ss

10) 059

11) миллисекунда

11) ms

11) 0999

Таблица 6

Функция

Аргумент(ы)

Результат

1) getdate

( )

Текущая системная дата и время

2) datename

(datepart, date)

часть даты как строка ASCII

3) datepart

(datepart, date)

часть даты как целое число

4) datediff

(datepart, date, date)

количество времени между 2-мя датами в частях даты

5) dateadd

(datepart, number, date)

дата, получаемая прибавлением частей даты к другой дате

Примеры:

  1. select getdate();

  2. select datediff(month, pubdate, ”Nov 30 1985”) from titles;

  3. select dateadd(day, 3, pubdate) from titles

Функции преобразования одних типов данных в другие и форматирование дат

SQL-сервер поддерживает три функции преобразования типов:

  1. convert;

  2. inttohex;

  3. hextoint.

Синтаксис функции convert:

convert (<тип данных>, <выражение> [, <стиль>])

Пример:

select title, convert(char(5), total_sales) from titles

Правила преобразования:

1) преобразование данных типов character в данные типов money, date/time, всех типов numeric и approx_numeric осуществляется только в том случае, если все символы в строке допустимы в новом типе;

2) при преобразовании целых типов данных в тип character необходимо указывать соответствующую длину строки символов;

  1. функцию convert можно использовать при преобразовании типов money, date/time, всех типов numeric, integer, binary и image.

Функции inttohex и hextoint служат для преобразования целых чисел в шестнадцатиричные и наоборот.

Операция Join (соединения таблиц).

Для выполнения операции соединения нескольких таблиц в предложении SELECT необходимо соблюдать три условия:

1) В списке выборки имена колонок указываются с именами таблиц, в которые входят эти колонки.

2) В предложении from указываются через запятую имена всех таблиц, участвующих в соединении, причем на первом месте указывается таблица, в которой осуществляется выборка данных.

3) В предложении where указываются все связи таблиц, где каждая таблица соединяется с другой по полям, определенным на одинаковых доменах, с помощью операций сравнения: =, >, >=, <, <=, !=, !>, !<.

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

1) *= - включаются все записи из первой названной таблицы;

  1. =* - включаются все записи из второй названной таблицы.

При этом, если указывается операция “*=”, то в отчет включаются все записи из первой таблицы, а в колонках, принадлежащих второй таблице, в записях, не удовлетворяющих условию соединения, ставятся null значения. Аналогично, если указывается операция “=*”, то в отчет включаются все записи из второй таблицы, а в колонках, принадлежащих первой таблице, в записях, не удовлетворяющих условию соединения, ставятся null значения.

Пример:

select au_fname, au_lname, pub_name from authors, publishers

where authors.city *= publishers.city

Подзапросы

Подзапрос - это select - предложение, вложенное в другое select-, insert-, update- или delete-предложение или в другой подзапрос.

Предложения, которые включают подзапрос, обычно имеют один из следующих форматов:

1) where <выражение> [not] in (<подзапрос>)

2) where <выражение> <операция сравнения> [any|all] (<подзапрос>)

  1. where [not] exists (<подзапрос>)

Подмножества

Подмножество - это порождение (представление) данных, строящееся на основе одной или нескольких таблиц БД, называемых базовыми. Кроме этого, представление может быть построено на основе другого представления.

Представления используются для:

  1. предоставления пользователю только интересующих его данных;

  2. упрощения манипулирования данными (представления определяются сложными операциями выборки, проекции и соединения);

  3. предоставления различным пользователям видеть одни и те же данные по-разному;

  4. обеспечения механизма секретности данных;

  5. поддержки логической независимости данных.

Механизм секретности данных осуществляется командами grant и revoke, примененным к представлениям. При этом пользователи получают доступ к различным подмножествам данных:

  1. доступ к подмножеству записей базовой таблицы;

  2. доступ к подмножеству колонок базовой таблицы;

  3. доступ к подмножеству записей и колонок базовой таблицы;

  4. доступ к записям, получаемых путем соединения двух и более базовых таблиц;

  5. доступ к статистическим итогам данных в базовой таблице;

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

В основе команды создания представления лежит оператор select. Синтаксис команды:

create view [[<имя БД>.] <владелец>.] <имя представления>

[(<имя колонки> [, <имя колонки>]…)]

as <select-предложение>

[with check option]

Пример:

create view pub_view (publisher, city, state)

as select pub_name, city, state from publishers

Существует несколько ограничений на использование select-предложения в создании представления:

  1. нельзя использовать структуры order by и compute;

  2. нельзя использовать слово into;

  3. нельзя ссылаться на временную таблицу.

Структура with check option используется в тех случаях, когда данное представление будет использоваться командами insert и update. При этом будут контролироваться вводимые и обновляемые записи на соответствие select-предложению в представлении.

Существуют ограничения применения операторов изменения данных (update, insert и delete рассматриваются в следующем разделе) к представлениям:

  1. нельзя применять эти операторы к колонкам представления, значения которых подсчитываются с помощью агрегатных или встроенных функций;

  2. нельзя применять эти операторы к представлениям, использующим агрегатные функции и структуру group by;

  3. нельзя применять эти операторы к представлениям, использующим distinct;

  4. нельзя использовать insert для представлений, построенных на таблицах с колонками not null, когда в эти колонки попадают null значения;

  5. нельзя использовать delete для представлений, построенных на нескольких таблицах;

  6. нельзя использовать insert для представлений, построенных на нескольких таблицах с опцией with check option;

  7. нельзя применять insert и update в представлении, построенном на нескольких таблицах с опцией distinct;

  8. нельзя использовать update для колонки identity.

Удаление представлений осуществляется командой drop view:

drop view [[<имя БД>.] <владелец>.] <имя представления>

[, [[<имя БД>.] <владелец>.] <имя представления>]…

Пример:

drop view pub_view

Соседние файлы в предмете Информатика