Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

merged

.pdf
Скачиваний:
10
Добавлен:
01.03.2016
Размер:
10.39 Mб
Скачать

Операція вибірки SELECT. Виключення дублікатів.

Выборка записей осуществляется с помощью команды SELECT. Давайте рассмотрим пример её использования:

SELECT id, login FROM users

В результате, будет возвращён result_set, который содержит все записи

таблицы users. Обратите внимание, что мы указали только поля: "id" и "login". Если нам нужны значения всех полей, то тогда надо использовать такой SQL-запрос:

SELECT * FROM users

В result_set будут выведены все записи таблицы users со всеми полями и их значениями.

Как правило, требуется осуществлять выборку не таблицы целиком, а только записей, удовлетворяющих определённым критериям. Эти критерии можно описать в уже знакомой Вам конструкции "WHERE".

ЕКЗАМЕНАЦІЙНИЙ БІЛЕТ № 28

Спеціальні реляційні операції.

Специальные реляционные операции: селекция, проекция, соединение, деление.

Селекцией (выборкой, ограничением) из отношения А по атрибутам Х и Y (А WHERE Х Θ Y) называется отношение, имеющее тот же заголовок, что и отношение А, и тело, состоящее из множества всех кортежей из А, таких, что истинно утверждение: Х Θ Y, где Θ – любой скалярный оператор сравнения (>, <, =, ≠, ≤, ≥).

Х и Y должны быть определены на одном домене (должны иметь одинаковый тип). Вместо атрибута Y можно указывать константу.

Соединением (JOIN) отношения А по атрибуту Х с отношением В по атрибуту Y называется отношение, имеющее заголовок, который представляет собой конкатенацию (сочетание) двух заголовков исходных отношений А и В, и телом, состоящим из множества кортежей, которые являются конкатенацией всех кортежей, принадлежащих А, с кортежами, принадлежащими В, для которых А.Х Θ В.Y принимает истинное значение. Θ – любой скалярный оператор сравнения (>, <, =, ≠, ≤, ≥).

Деление (DEVIDE BY)

Пусть отношение А – делимое, и отношение В – делитель, имеют заголовки: {X, Y} и {Y}, где атрибут Y – общий для двух отношений и определен на одних и тех же доменах, а отношение В не имеет дополнительных атрибутов.

Делением отношений А на В (А DEVIDE BY В) называется отношение с заголовком {Х} и телом, содержащим множество всех кортежей {X:x}, таких что существует кортеж {Х:х, Y:y}, который принадлежит отношению A для всех кортежей {Y:y}, принадлежащих отношению В.

Операція вибірки SELECT.

Выборка записей осуществляется с помощью команды SELECT. Давайте рассмотрим пример её использования:

SELECT id, login FROM users

В результате, будет возвращён result_set, который содержит все записи

таблицы users. Обратите внимание, что мы указали только поля: "id" и "login". Если нам нужны значения всех полей, то тогда надо использовать такой SQL-запрос:

SELECT * FROM users

В result_set будут выведены все записи таблицы users со всеми полями и их значениями.

Как правило, требуется осуществлять выборку не таблицы целиком, а только записей, удовлетворяющих определённым критериям. Эти критерии можно описать в уже знакомой Вам конструкции "WHERE".

Використання псевдонимів та обробка невизначенних значень.

Удобочитаемость инструкции SELECT может быть улучшена с помощью псевдонима таблицы, известного также как корреляционное имя или переменная диапазона. Псевдоним таблицы можно назначить с ключевым словом AS или без него:

table_name AS table alias

table_name table_alias

Вследующем примере псевдоним c назначается таблице Customer, а псевдоним s — таблице Store.

USE AdventureWorks2008R2;

GO

SELECT c.CustomerID, s.Name

FROM Sales.Customer AS c

JOIN Sales.Store AS s

ON c.CustomerID = s.BusinessEntityID ;

Обробка невизначенних значень

Концепция NULL-значения часто вводит в заблуждение новичков в SQL, которые считают, что NULL - то же, что и пустая строка "". Это ошибка! Например, следующие команды совершенно различны:

mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES ("");

Обе команды вставляют значение в столбец phone, но первая - значение NULL, а вторая - пустую строку. Смысл первого можно передать как ``номер телефона неизвестен'', смысл второго - ``у нее нет телефона''.

В SQL сравнение значения NULL с любым другим значением, даже со значением NULL, всегда ложно. Выражение, содержащее NULL, всегда дает

значение NULL, за исключением случаев, специально оговоренных в документации по операторам и функциям, присутствующим в выражении. Все столбцы в следующем примере возвращают NULL:

mysql> SELECT NULL,1+NULL,CONCAT('Invisible',NULL);

Если в столбце нужно найти значения NULL, то нельзя использовать

условие =NULL. Следующая команда не возвращает ни одной строки, поскольку для любого выражения expr = NULL ЛОЖНО:

mysql> SELECT * FROM my_table WHERE phone = NULL;

Для поиска значений NULL необходимо использовать проверку IS NULL. Ниже показано, как найти телефонный номер NULL и пустой телефонный номер:

mysql> SELECT * FROM my_table WHERE phone IS NULL; mysql> SELECT * FROM my_table WHERE phone = "";

При использовании ORDER BY значения NULL выдаются первыми. При сортировке в убывающем порядке с помощью DESC значения NULL также выдаются первыми. При использовании GROUP BY все значения NULL считаются равными.

Для обработки NULL предназначены операторы IS NULL и IS NOT NULL, а также функция IFNULL().

29

1. реляційна алгебра складається з набору операторів, що використовують відносини як операнди і повертають відносини як результат.

Основні операції над множинами

Об’єднання множин це множина, що складається з тих і тільки тих елементів, які входять або до А, або до В, або до А і В одночасно.

Перетин множин множина, яка містить елемент, які належать до А і до В одночасно.

Різниця множин множина, що складається з усіх елементів А які не належать В.

Доповнення множини множина яка визначається як різниця між універсальною множиною та множиною А.

Симетрична різниця множин множина яка визначається як різниця між об’єднанням та перетином двох множин.

2. операція вибірки SELECT перевірка на відповідність шаблону

Оператор SELECT є найбільшчасто вживаною командою мови SQL. Загальний формат інструкції SELECT має наступний вигляд:

SELECT [DISTINCT|ALL] {*| columnList, [columnExpression [AS newName]]

[,… ]}

FROM TableName [alias][,…]

[WHERE condition]

[GROUP BY columnList]

[HAVING condition]

[QRDER BY columnList]

Тут параметр columnExpression є ім'ям стовпця або виразом з декількох імен. Параметр TableName є ім'ям існуючої в базі даних таблиці (або представлення), до якої необхідно дістати доступ. Необов'язковий параметр alias — це скорочення, встановлюване для імені таблиці TableName. Обробка елементів оператора SELECT виконується в наступній послідовності:

FROM. Визначаються імена використовуваної таблиці або декількох таблиць.

WHERE. Виконується фільтрація рядків об'єкту відповідно до заданих умов.

GROUP BY. Утворюються групи рядків, що мають одне і те ж значення у вказаному стовпці.

HAVING. Фільтруються групи рядків об'єкту відповідно до вказаної умови.

SELECT. Встановлюється, які стовпці повинні бути присутнім у вихідних даних.

ORDER BY. Визначається впорядкованість результатів виконання оператора.

Порядок конструкцій в операторі SELECT не може бути змінений.

Тільки дві конструкції оператора — SELECT і FROM — є обов'язковими, вся решта конструкцій може бути пропущені.

Операція вибірки за допомогою оператора SELECT є замкненою, в тому значенні, що результат запиту до таблиці також є таблицею

У найпростішій формі SELECT використовується для

вибірки всіх даних з таблиці

SELECT *

FROM Tab1

вибірки даних з певних полів таблиці (з можливістю перестановки полів)

SELECT pole2, pole3, pole6 FROM Tab1

вибірки даних, без повторення рядків. DISTINCT використовується один раз в реченні (рядки не можуть повторюватися).

SELECT DISTINCT pole2, pole3, pole6 FROM Tab1

30

1. операція вибірки SELECT предикаты ANY(SOME)

СПЕЦИАЛЬНЫЕ ОПЕРАТОРЫ ANY ИЛИ SOME

Операторы SOME и ANY взаимозаменяемы везде, и там, где мы используем ANY, SOME будет работать точно так же. Различие в терминологии состоит в том, чтобы позволить людям использовать тот термин, который является однозначным. Это может создать проблему, поскольку, как мы это увидим, наша интуиция может иногда вводить в заблуждение.

Вот новый способ нахождения продавцов с заказчиками, размещенными в их городах (вывод для этого запроса показан на Рисунке 13.1):

SELECT *

FROM Salespeople

WHERE city = ANY

(SELECT city

FROM Customers);

Оператор ANY берёт все значения, выведенные подзапросом, (для этого случая это все значения city в таблице Заказчиков), и оценивает их как верные, если любое (ANY) из них равняется значению города текущей строки внешнего запроса.

 

 

=============== SQL Execution Log ============

 

 

| SELECT *

 

 

 

|

 

 

 

 

 

 

| FROM Salespeople

 

 

|

 

| WHERE city = ANY

 

 

|

 

| (SELECT

city

 

 

|

 

| FROM Customers);

 

 

|

 

| =============================================

|

 

|

cnum

cname

city

comm

|

 

|

-----

--------

----

--------

|

 

|

1001

Peel

London

0.12

|

 

|

1002

Serres

San Jose

0.13

|

 

 

 

 

 

 

 

|

1004

Motika

London

0.11

|

 

 

 

 

 

 

=============================================

Рисунок 13.1 Использование оператора ANY

Это означает, что подзапрос должен выбирать значения такого же типа, что и те, которые сравниваются в основном предикате. В этом его отличие от EXISTS, который просто определяет, производит ли подзапрос результаты или нет, и фактически не использует эти результаты.

2. поняття та призначення зовнішніх схем бази даних

Через зовнішній рівень користувачі та додатки отримують доступ до бази даних. Мета зовнішнього рівня - надати користувачу/додатку лише ті дані, які йому потрібні (а отже, до яких дозволений доступ) і в потрібному вигляді. Це індивідуальний рівень користувача, яким може бути кінцевий користувач, програміст чи додаток.

Зовнішня модель - це засоби зображення концептуальної моделі ПО з урахуванням інтересів конкретних користувачів або додатків. Кожна зовнішня модель подається в СКБД у вигляді зовнішньої схеми.

Зовнішня схема - фіксація зовнішньої моделі ПО засобами конкретних мов моделювання даних.

Зовнішній рівень виконує такі функції:

Забезпечує зображення даних зручним для людини або додатку способом. Ступінь незалежності зовнішнього зображення від концептуального рівня визначається потужністю засобів опису відображення «концептуальнийзовнішній».

Сприяє вирішенню проблеми безпеки (захисту) даних. Надаючи користувачу лише ті дані, що його цікавлять, ми залишаємо поза межами його доступу решту даних.

Сприяє вирішенню проблеми логічної незалежності даних Це досягається завдяки відображенню «концептуальний-зовнішній», що встановлює відповідність між концептуальною схемою і конкретною зовнішньою схемою. Потужність його засобів визначає ступінь логічної незалежності додатків від даних.

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