Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен / Ответы ВСЕ.docx
Скачиваний:
41
Добавлен:
11.06.2015
Размер:
670.56 Кб
Скачать

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

Квадратные скобки ( [ ] ) указывают части, которые могут не использоваться, а многоточия (...) указывают, что всё предшествующее может повторяться любое число раз.

Операторы SQL для управления соединениями. В эту группу входят операторы CONNECT, SET CONNECTION и DISCONNECT.

Оператор CONNECT определяется следующими синтаксическими правилами:

CONNECT TO connection_target

connection_target ::= SQL_server_name

[ AS connection_name ]

[ USER connection_user_name ]

DEFAULT

Здесь SQL_server_name - это литерально заданная символьная строка, идентифицирующая сервер, к которому требуется подключиться. В необязательном разделе AS указываемое имя (connection_name) выступает в роли временного имени соединения, которое впоследствии может быть использовано в операторах SET CONNECTION и DISCONNECT. Если в операторе CONNECT раздел AS не содержится, то по умолчанию connection_name совпадает с SQL_server_name.

В необязательном разделе USER указываемое имя (connection_user_name) идентифицирующее пользователя, от имени которого устанавливается соединение. При отсутствии раздела USER в качестве connection_user_name по умолчанию принимается текущий authID. Допускается, что реализация может ограничить возможные значения connection_user_name (например, потребовать, чтобы это имя всегда совпадало с текущим authID).

Определение схемы:

Create Schema <DDD>

Authorization - <Name>

Определение таблиц включает:

присвоение имени;

определение типа данных (Integer - целое; Numeric - число; Decimal - десятичное; Real - действительное; Float - с плавающей запятой; Character; Character varying - символьное; Bit - двоичное; Date - дата);

определение полей с ограничительными условиями;

определение ограничительных условий на таблицу.

Создание таблицы:

Create TABLE Name_table1 (

Worker_ID Int (5) Primary key

Worker_name Character (12)

City Character (12)

birth_day Date

)

Create TABLE Name_table2 (……)

Команда SELECT – выборка, самая часто используемая команда, с помощью её идет выбор данных из таблицы. Запроса с применением SELECT выглядит с.о.:

SELECT Worker_ID, Worker_name, city, birth_day FROM Name_table1;

Такой запрос выведет из таблицы Name_table1 все значения столбцов указанных через запятую после команды SELECT. Также, можно выводить все столбцы одним символом - (*), т.е. запрос SELECT * FROM Name_table1; выведет все данные из таблицы.

Структура команды SELECT следующая:

SELECT {Имена столбцов, которые необходимо вывести в запросе, записываются через запятую} FROM {имя таблицы в базе данных} - это простейший вид запроса. Существуют дополнительные команды для удобства извлечения данных.

SELECT name_1 FROM Name_table1 WHERE name_2 = 'XXXX'

Операторы сравнения: =, >, <, <=, >=

Булевы операции: AND, OR, NOT

WERE name_3 BETWEEN 10 and 15

WERE name_4 LIKE (''AAA%')

N_date + interval '14' DAY

N_date + interval '7' * Num_weeks (дата = текущая дата плюс 7 умноженное на число недель)

Многотабличные запросы:

SELECT name_поля FROM Name_table1, Name_table2 WHERE Name_table1.Worker_ID = Name_table2.Worker_ID Name_Id=435

Результат: объединение полей двух таблиц при условии Name_Id = 435.

Встроенные функции: SUM, AVG, COUNT, MAX, МIN

SELECT max (Name_1), Min (Name_2)

From Name_table1

Where Name_3=15

Подзапросы:

SELECT Name_1 FROM Name_table1 WHERE Name_3 = or >

(SELECT max (Name_2)

From Name_table1)

Операции реляционной алгебры:

UNION – объединение таблиц,

INTERSECT - пересечение,

EXCEPT - разница.

Применяются для двух таблиц, которые должны быть совместимы (одинаковые число столбцов и типы данных в них).

(SELECT * FROM (TABLE Name_table1 UNION TABLE Name_table2)

Операции изменения данных:

Значения могут быть помещены и удалены из полей, тремя командами языка манипулирования данными:

INSERT – вставка;

UPDATE - обновление, модификация;

DELETE – удаление.

INSERT INTO users_base (user_name, city, birth_day) VALUES (‘Александр’, ‘Ростов’, ’20.06.1991’);

Команду INSERT можно использовать для вставки данных из другой таблицы:

INSERT INTO Name_Table_2

SELECT Name_1, Name_3, Name_4

From Name_Table_1

WERE Name_5=3

UPDATE users_base SET user_name = ‘Алексей’;

Кавычки в значении редактируемого атрибута ставятся в том случае если значение имеет string формат, если это числовое значение и столбец не привязан к типу данных varchar и любых других строковых типов, то кавычки не имеют смысла.

DELETE FROM users_base WHERE user_name = ‘Василий’;

Команда DELETE удаляет строку целиком, определяет строку по ключевому слову WHERE. Этот запрос удалит все строки, в которых значение столбца user_name=Василий.

Совместное использование SQL c традиционными языками программирования (Си, Паскаль, др.)

OPEN File_1

EXEC SQL

DECLARE File_1

FOR

SELECT *

FROM Table_1

WERE Name_2= nn

END-EXEC

CLOSE File_1

Выполнение запроса можно разделить на три фазы. Первая фаза это компиляция или разбор (parse) запроса, вторая - подстановка значений переменных (bind), и третья выборка результатов (fetch). Во время компиляции SQL запрос преобразуется во внутреннее представление в те коды, которые воспринимаются СУБД. СУБД выполняет следующие действия:

просматривает словарь данных и выполняет проверку прав доступа. Для этого СУБД генерирует несколько SQL запросов, которые называются рекурсивными запросами (recursive queries), с помощью который проверяет, имеет ли данный пользователь право доступа к указанному столбцу и т.д.

оптимизирует запрос. Здесь выполняется та оптимизация, которая вызвана обращением к представлениям (view) и выполнением подзапросов.

Поскольку вышеперечисленные операции занимают определенное время и требуют ресурсов процессора, то заставлять СУБД выполнять их нужно как можно реже.

Вторая фаза, фаза подстановки (bind), выполняется после компиляции запроса. Во время этой фазы выполняется подстановка значения переменных в запрос. Например, при обработке запроса:

SELECT 'x' FROM person WHERE name = :1

значение некоей переменной 1 будет подставлено в запрос по адресу, зарезервированному указателем :1.

Определения представления данных - окно, через которое видна часть БД (из одной или нескольких таблиц)

CREATE VIEW Table_V

AS SELECT Name_2, Name_3, Name_4, Name_5

FROM Table_1

Критерии, функции, условия

WHERE- предложение команды SELECT и других команд, которое позволяет устанавливать предикаты, условие которых может быть или верным или неверным для любой строки таблицы. Команда извлекает только те строки из таблицы, для которых такое утверждение верно. Пример:

SELECT id, city, birth_day FROM users_base WHERE user_name = ‘Алексей’;

такой запрос выведет только те строки, которые будут соответствовать условию WHERE.

ORDER BY - условие для сортировки выбранных строк. Имеет два критерия ASC и DESC. ASC (сортировка от А до Я или от 0 до 9). DESC (противоположно от ASC). Пример:

SELECT id, city, birth_day FROM users_base ORDER BY user_name ASC;

Это условие можно использовать совместно с условием WHERE. Пример:

SELECT id, city, birth_day FROM users_base WHERE user_name = ‘Алексей’ ORDER BY id ASC;

DISTINCT - аргумент, который устраняет двойные значения из предложения SELECT. То есть если имеются повторяющиеся значения в столбце, допустим, user_name, то DISTINCT выведет только одно, например, если в БД есть два человека по имени ‘Алексей’, то запрос с использованием функции DISTINCT выведет только одно значение, которое встретит первым. Пример:

SELECT DISTINCT user_name FROM users_base;

AND - берет два Буля (в форме A AND B) как аргументы и оценивает их по отношению к истине, верны ли они оба. Пример:

SELECT * FROM users_base WHERE city = ‘Ростов’ AND user_name = ‘Александр’;

OR - берет два Буля (в форме A OR B) как аргументы и оценивает на правильность, верен ли один из них. Пример:

SELECT * FROM users_base WHERE city = ‘Ростов’ OR user_name = ‘Александр’;

NOT - берет одиночный Булев (в форме NOT A) как аргументы и заменяет его значение с неверного на верное или верное на неверное. Пример:

SELECT * FROM users_base WHERE city = ‘Ростов’ OR NOT user_name = ‘Александр’;

IN - определяет набор значений, в которое данное значение может или не может быть включено. Пример:

Соседние файлы в папке Экзамен