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

Просмотр только определенного столбца таблицы

Команда SELECT способна извлечь строго определенную информацию из таблицы. Сначала, мы можем предоставить возможность увидеть только определенные столбцы таблицы. Это выполняется легко, простым исключением столбцов которые вы не хотите видеть, из части команды SELECT. Например, запрос

SELECT sname, comm

FROM Salespeople;

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

| sname comm |

| ------------- --------- |

| Peel 0.12 |

| Serres 0.13 |

| Motika 0.11 |

| Rifkin 0.15 |

| Axelrod 0.10 |

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

Переупорядочение столбца

Даже если столбцы таблицы, по определению, упорядочены, это не означает что вы будете восстанавливать их в том же порядке. Конечно, звездочка (*) покажет все столбцы в их естественном порядке, но если вы укажете столбцы отдельно, вы можете получить их в том порядке, котором хотите. Давайте рассмотрим таблицу Заказов, содержащую дату приобретения (odate), номер продавца (snum), номер заказа (onum), и суммы приобретения (amt):

SELECT odate, snum, onum, amt

FROM Orders;

| ------------------------------------------------|

| odate snum onum amt |

| ----------- ------- ------ --------- |

| 10/03/1990 1007 3001 18.69 |

| 10/03/1990 1001 3003 767.19 |

| 10/03/1990 1004 3002 1900.10 |

| 10/03/1990 1002 3005 5160.45 |

| 10/03/1990 1007 3006 1098.16 |

| 10/04/1990 1003 3009 1713.23 |

| 10/04/1990 1002 3007 75.75 |

| 10/05/1990 1001 3008 4723.00 |

| 10/06/1990 1002 3010 1309.95 |

| 10/06/1990 1001 3011 9891.88 |

| |

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

Как вы можете видеть, структура информации в таблицах - это просто основа для активной перестройки структуры в SQL.

Удаление избыточных данных

DISTINCT (ОТЛИЧИЕ) - аргумент который обеспечивает Вас способом устранять двойные значения из вашего предложения SELECT. Предположим что вы хотите знать какие продавцы в настоящее время имеют свои заказы в таблице Заказов. Под заказом (здесь и далее) будет пониматься запись в таблицу Заказов, регистрирующую приобретения сделанные в определенный день определенным заказчиком у определенного продавца на определенную сумму). Вам не нужно знать, сколько заказов имеет каждый; вам нужен только список номеров продавцов (snum). Поэтому Вы можете ввести:

SELECT snum

FROM Orders;

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

SELECT DISTINCT snum

FROM Orders;

Другими словами, DISTINCT следит за тем, какие значения были ранее, так, что бы они не были продублированы в списке. Это - полезный способ избежать избыточности данных, но важно что бы при этом вы понимали, что вы делаете.

Если вы не хотите потерять некоторые данные, вы не должны безоглядно использовать DISTINCT, потому что это может скрыть какую-то проблему или какие-то важные данные. Например, вы могли бы предположить что имена всех ваших заказчиков различны. Если кто-то помещает второго Clemens в таблицу Заказчиков, а вы используете SELECT DISTINCT cname, вы не будете даже знать о существовании двойника. Вы можете получить не того Clemens и даже не знать об этом. Так как вы не ожидаете избыточности, в этом случае вы не должны использовать DISTINCT.

DISTINCT может указываться только один раз в данном предложении SELECT. Если предложение выбирает многочисленные поля, DISTINCT опускает строки где все выбранные поля идентичны. Строки в которых некоторые значения одинаковы а некоторые различны - будут сохранены. DISTINCT, фактически, приводит к показу всей строки вывода, не указывая полей (за исключением, когда он используется внутри агрегатных функций), так что нет никакого смысла чтобы его повторять.

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

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