Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD.doc
Скачиваний:
4
Добавлен:
28.10.2018
Размер:
483.84 Кб
Скачать

Типы данных

CHAR(n) - строковый тип постоянной длины, где n - длина.

VARCHAR(n) - строковый тип переменной длины.

INT - целый.

SMALLINT - укороченный целый.

NUMERIC(a,b) - масштабируемый целый, где а - степень, b - точность.

DECIMAL(a,b) - масштабируемый десятичный.

FLOAT(a), REAL(a) - числа с плавающей точкой.

DOUBLEPRECISION - с удвоенной точностью.

TIME - время/дата.

TIMESTAMP - время/дата с точностью до секунд.

INTERVAL - интервальный тип.

BIT(n) - битовый тип.

Три формата даты: mm/dd/yyyy - американский; dd.mm.yyyy – европейский; yyyy_mm_dd – японский.

11. Структура запитів мови sql.

Запросы с условием. Условие формируется в фразе WHERE и содержит имена полей. Причем поля не обязательно должны присутствовать в фразе SELECT. В условии могут оспользоваться операторы сравнения:

  1. =, !=, (, <, >, ), >=, <= ; 2) AND, OR, NOT ; 3)IN, BETWEEN, LIKE, IS NULL (NOT IS NULL).

LIKE позволяет указывать приближенные значения (CHAR и VARCHAR). Применяется для поиска подстрок. При этом два символа имеют специальное назначение: 1) % - замещение любого количества символов, в том числе и нулевого; 2) _ - замещение одного символа.

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

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

COUNT() - подсчитывает количество строк с непустым (не NULL) значением указанной колонки;

COUNT(*) - подсчитывает общее количество строк, удовлетворяющих условию, включая пустые (NULL);

SUM() - суммирует все значения в указанной колонке;

AVG() - вычисляет среднее значение для указанной колонки;

MAX() - находит максимальное значение в указанной колонке;

MIN() - находит минимальное значение в указанной колонке.

Агрегатные функции записываются в фразе SELECT.

Запросы с группировкой. Записи данных могут быть сгруппированы по некоторому признаку. Группу образуют записи с одинаковыми значениями в полях, перечисленных в выражении GROUP BY. При группировании записей их проще анализировать и обрабатывать, например, с помощью статистических (агрегатных) функций. C условием группировки: HAVING. Условие HAVING выполняется для всей группы в целом.

Сортировка (упорядочивание) выходных полей. Сортировка представляет собой упорядочивание записей по возрастанию или убыванию значений полей. Список полей, по которым выполняется сортировка, указывается в выражении ORDER BY. Порядок полей в этом выражении определяет порядок сортировки. Поля в списке обозначаются именами или номерами. По умолчанию сортировка происходит в порядке возрастания значений полей. Для обратного порядка сортировки нужно указать описатель DESC. Поле, по которому выполняется сортировка должно быть указано в SELECT, т.е. закрытой сортировки не должно быть.

Объединение таблиц (команда UNION). С помощью раздела UNION можно выполнять объединение данных из нескольких таблиц. Структура раздела UNION следующая:

{< query specification > | (< query expression >)} UNION [ALL]

{< query specification > | (< query expression >)}

12. Формування вкладених запитів в sql.

При определении условия выборки можно применять вложенные запросы. Например, определить какие продажи выполнены продавцом с фамилией 'Яковлев'

SELECT *

FROM O WHERE NПродавца = (SELECT DISTINCT Nпродавца FROM S WHERE ИмяПродавца = 'Яковлев')

Использование кванторов в подзапросах.

В SQL предусмотрены следующие кванторы:

1) EXISTS - квантор существования; 2) ANY - любой; 3) SOME - некоторый; 4) ALL - все.

Квантор существования определяет будет ли подзапрос генерировать выходные данные и выдает булевое значение ИСТИНА или ЛОЖЬ. Квантор NOT EXISTS работает с точностью до "наоборот": ИСТИНА если результат подзапроса пуст, и ЛОЖЬ в противном случае. Например, выдать записи, если существует покупатель из города Запорожье

SELECT NПокупателя, ИмяПокупателя, ГородПокупателя

FROM C

WHERE EXISTS (SELECT * FROM C WHERE ГородПокупателя = 'Запорожье')

Кванторы ANY, SOME и ALL применяются в сочетании с =>, <, <=, >=, <>

Например, Выдать тех покупателей, рейтинг которых больше рейтинга хотя бы одного покупателя из города Запорожье.

SELECT *

FROM C

WHERE Рейтинг > ANY(SELECT c1.Рейтинг FROM C c1 WHERE c1.ГородПокупателя = 'Запорожье')

[UNION [ALL] < query specification > | (< query expression >)[..n] ]

 Конструкция UNION вставляется между двумя запросами, возвращающими одинаковый набор колонок. В результат будут включены колонки как из первой, так и из второй таблицы. Указание ключевого слова ALL предписывает включать в результат дублирующиеся строки. По умолчанию дублирующиеся строки в результат не включаются. Запросы с несколькими таблицами (операция СОЕДИНЕНИЕ в реляционной алгебре).

В запросе поля ставятся с префиксом через точку. Префиксом является имя таблицы.

<владелец_таблицы>.<имя_таблицы>.<поле>

Различают внутреннее и внешнее соединения. Внутреннее соединение представляет собой простейший случай, когда после слова SELECT перечисляются поля разных таблиц. В фразе WHERE указываются условия соединения. Если WHERE не указано, то получается декартовое произведение.

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

FROM <имя_таблицы_A> {INNER|FULL|LEFT|RIGHT|CROSS}[OUTER] JOIN <имя_таблицы_B> {ON|USING}(улсовие)

JOIN ON - соединение выполняется с условием. JOIN USING - выполняется при условии равенства (в скобках перечисляются общие столбцы). INNER - выполняется по умолчанию. LEFT - левое внешнее соединение включает все строки из левой таблицы и те строки из правой таблицы, для которых вып-ся условие. Для тех строк из таблицы А, для которых не выполняется условие, в столбцы из таблицы В заносится NULL. Правое внешнее соединение (RIGHT) наоборот включает все строки из правой таблицы. Полное соединение (FULL) включает все строки из 2-х таблиц. Причем для тех строк, для которых выполняется условие заполнение реальными данными, а для остальных как левое и правое вместе (NULL). CROSS - декартовое произведение. В результате выдаются всевозможные сочетания строк левой и правой таблиц.

MONEY - денежная единица.

Структура языка SQL

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

Язык SQL является реляционно-полным. Это означает, что любой оператор реляционной алгебры может быть выражен подходящим оператором SQL.

CREATE(DROP)(ALTER) TABLE;CREATE (ALTER) VIEW; DROP VIEW; CREATE(DROP) INDEX; DELETE;

INSERT; UPDATE .

предикату L. Если через А и В - обозначить множество атрибутов. Если соединение выполняется только при равенстве двух атрибутов, то это экви - соединение. Соединение таблиц по равенству атрибутов.

2.2. Естественное.  Оно выполняется при условии, что в отношениях R и S есть одинаковые атрибуты. Тогда естественное соединение это экви-с-ние для одинаковых атрибутов, причем в резул-щую таблицу - один раз.

2.3. Полу соединение. В полу соединение входят только условия одного отношения, но условие соединения - выполняется. Условия выполняются, но атрибуты берутся только из одного соотношения

2.4. Внешние соединения.  Часто бывает, когда нужно выдать данные из одной таблицы и только те данные из другой таблицы, для которых выполняются левые соединения. В результирующую таблицу попадают все кортежи левого отношения и только те кортежи правого отношения, которые удовлетворяют логическому предикату. Если в правом отношении нет соответствующих кортежей, то они заменяются неопределенными значениями (NULL).

3. Деление. Для того чтобы можно было выполнить деление, нужно чтобы мн-во атр-тов делителя входило в мн-во атрибутов делимого.

R÷S - В результате деления двух отношений получим отношение, которое содержит те атрибуты R, которых нет в S и те кортежи S, которые содержаться в R

R (A1, A2, … An, B1, B2,…, Bn)

S (B1, B2, …, Bn)

1) Q = ; 2) P1 = Q×S ; 3) P2 = P1 – R; 4) P3 = ; 5) P4 = Q – P3

R (x,y), S(y)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]